ore config by txt file

master
A. Demant 2018-11-13 06:33:48 +01:00
parent e94bf8a6bb
commit 1998294fd6
8 changed files with 158 additions and 6 deletions

28
api.lua Normal file
View File

@ -0,0 +1,28 @@
local local_ore_register = function(modname,stonename,element,crack,itemname)
if itemname == nil then
itemname = modname..":"..stonename.."_with_"..element
end
print(itemname)
minetest.register_node(itemname, {
-- description = S(element.." ore"),
description = element.." ore",
tiles = {"default_"..stonename:gsub("desert","desert_")..".png^minerdream_"..element.."_ore.png"},
groups = {cracky = crack},
drop = modname:gsub(":","")..':'..element..'_lump',
sounds = default.node_sound_stone_defaults(),
})
end
function minerdream.ore_register(tdef)
if tdef.overrides == nil then
local_ore_register(minetest.get_current_modname(),"stone",tdef.name,tdef.crack)
if tdef.groups.in_desert ~= nil then
local_ore_register(minetest.get_current_modname(),"desertstone",tdef.name,tdef.crack)
end
else
local modname = ":"..string.split(tdef.overrides,":")[1]
print(modname)
local_ore_register(modname,"stone",tdef.name,tdef.crack,":"..tdef.overrides)
end
end

View File

@ -151,7 +151,7 @@ minetest.register_node("minerdream:stone_with_"..element, {
sounds = default.node_sound_stone_defaults(),
})
end
..[[
ore_register("rhodium",5,true,true)
ore_register("calcium",5,true,true)
ore_register("tantalum",5,true,true)
@ -206,7 +206,7 @@ stone_register("garnet",4)
stone_register("bituminous_coal",4)
stone_register("jade",4)
stone_register("amethyst",4)
]]
-----------------desert ores-----------------
minetest.register_node("minerdream:desertstone_with_richiron", {
description = "Rich desert iron ore",

60
functions.lua Normal file
View File

@ -0,0 +1,60 @@
minerdream.has_value = function(tab, val)
-- test if val is in tab
for index, value in ipairs(tab) do
if value == val then
return true
end
end
return false
end
local has_value=minerdream.has_value
-- read table "infile" where in "def" is defined, which cols are numbers and which belongs to a group
minerdream.import_csv = function(infile,def)
local file = io.open(infile, "r")
local outdata = {}
-- reading header with column names
local splitchar=","
if def.seperator then
splitchar=def.seperator
end
local header = file:read():gsub("\r",""):split(splitchar,true)
-- read each line, split in separat fields and stores in array
-- by header the value is stored as numeric, in the group environment or as text
for line in file:lines() do
local attribs = line:gsub("\r",""):split(splitchar,true)
local nrow={groups={}}
for i,d in ipairs(attribs) do
if d ~= "" then
local th=header[i]
local dsaved = false
if def.col_num then
if has_value(def.col_num,th) then
nrow[th] = tonumber(d)
dsaved = true
end
end
if def.groups_num then
if has_value(def.groups_num,th) then
nrow.groups[th]=tonumber(d)
dsaved = true
end
end
if not dsaved then
nrow[th]=d
end
end
end
if nrow.name then
outdata[nrow.name] = nrow
else
outdata[#outdata+1] = nrow
end
end
file:close()
return outdata
end

View File

@ -1,6 +1,9 @@
minerdream = {}
minerdream.path = minetest.get_modpath("minerdream")
dofile(minerdream.path .. "/functions.lua")
dofile(minerdream.path .. "/api.lua")
dofile(minerdream.path .. "/read_config.lua")
dofile(minerdream.path .. "/items.lua")
dofile(minerdream.path .. "/tools.lua")
dofile(minerdream.path .. "/overrides.lua")
@ -11,5 +14,5 @@ dofile(minerdream.path .. "/weapons.lua")
dofile(minerdream.path .. "/armor.lua")
dofile(minerdream.path .. "/treasure.lua")
dofile(minerdream.path .. "/experiments.lua")
dofile(minerdream.path .. "/mobs.lua")
dofile(minerdream.path .. "/awards.lua")
--dofile(minerdream.path .. "/mobs.lua")
dofile(minerdream.path .. "/awards.lua")

View File

@ -47,7 +47,7 @@ mobs:register_mob("minerdream:slime_green", {
},
})
--[[
mobs:spawn({
name = "minerdream:slime_green",
nodes = {"default:stone"},
@ -55,7 +55,7 @@ mobs:spawn({
chance = 1000,
max_height = 0,
})
]]
minetest.register_craftitem("minerdream:slime_green_egg", {
description = "Green slime spawnegg",

0
nohup.out Normal file
View File

23
ores.txt Normal file
View File

@ -0,0 +1,23 @@
name,crack,has_dust,has_block,in_desert,overrides
default,1,,,,
rhodium,5,1,1,,
calcium,5,1,1,,
tantalum,5,1,1,,
ruthenium,4,1,1,,
cobalt,4,1,1,,
platinum,1,1,1,,
aluminium,1,1,1,,aluminum:aluminum
zinc,1,1,1,,
lead,2,1,1,,technic:mineral_lead
silver,2,1,1,,moreores:mineral_silver
potassium,3,1,1,,
nickel,2,1,1,,
coal,2,1,1,1,
sulfur,3,1,,1,
lapislazuli,3,,,1,
saltpeter,3,1,1,1,
spinel,5,,,,
garnet,4,,,,
bituminous_coal,4,,,,
jade,4,,,,
amethyst,4,,,,

38
read_config.lua Normal file
View File

@ -0,0 +1,38 @@
local has_value = minerdream.has_value
local ore_cols={
col_num={"crack"},
groups_num={"has_dust","has_block","in_desert"}}
local miner_definition = minerdream.import_csv(minerdream.path.."/ores.txt",ore_cols)
if miner_definition["default"] ~= nil then
default_ore = miner_definition["default"]
local test_values = {}
-- check, which numeric columns exist in default entry
for i,d in pairs(ore_cols.col_num) do
if default_ore[d] ~= nil then
table.insert(test_values,1,d)
end
end
-- check for each crop, if value can be copied from default entry
for i,tdef in pairs(miner_definition) do
if tdef.name ~= default_ore.name then
for j,colu in pairs(test_values) do
if tdef[colu] == nil then
miner_definition[tdef.name][colu] = default_ore[colu]
end
end
end
end
end
for i,tdef in pairs(miner_definition) do
if i ~= "default" then
if tdef.crack ~= nil then
minerdream.ore_register(tdef)
end
end
end