313 lines
8.6 KiB
Lua
313 lines
8.6 KiB
Lua
-- LUALOCALS < ---------------------------------------------------------
|
|
local minetest, nodecore, pairs
|
|
= minetest, nodecore, pairs
|
|
-- LUALOCALS > ---------------------------------------------------------
|
|
|
|
local modname = minetest.get_current_modname()
|
|
local wmodname = "nc_woodwork"
|
|
|
|
local side = "nc_tree_tree_side.png"
|
|
local top = wmodname.. "_plank.png"
|
|
local top_sieve = wmodname .. "_plank.png^[mask:"..modname.."_sieve.png^nc_tree_leaves.png"
|
|
|
|
local stop = "nc_terrain_stone.png"
|
|
local sside = "nc_terrain_stone.png"
|
|
local stop_sieve = "nc_terrain_stone.png^[mask:"..modname.."_sieve.png^nc_terrain_cobble.png"
|
|
|
|
function regsieve(suff,top,side,top_sieve,groups)
|
|
local mname = #suff == 0 and "Wooden" or suff:sub(1,1):upper()..suff:sub(2)
|
|
suff = #suff == 0 and suff or "_"..suff
|
|
minetest.register_node(modname .. ":table"..suff, {
|
|
description = mname.." Table",
|
|
drawtype = "nodebox",
|
|
node_box = nodecore.fixedbox(
|
|
{-0.5, 7/16, -0.5, 0.5, 0.5, 0.5},
|
|
{-0.5, -0.5, -0.5, -7/16, 7/16, -7/16},
|
|
{-0.5, -0.5, 7/16, -7/16, 7/16, 0.5},
|
|
{7/16, -0.5, -0.5, 0.5, 7/16, -7/16},
|
|
{7/16, -0.5, 7/16, 0.5, 7/16, 0.5}
|
|
),
|
|
selection_box = nodecore.fixedbox(),
|
|
collision_box = nodecore.fixedbox(),
|
|
tiles = { top, top, side },
|
|
groups = groups,
|
|
paramtype = "light",
|
|
sounds = nodecore.sounds("nc_tree_woody"),
|
|
})
|
|
|
|
minetest.register_node(modname .. ":table_broken"..suff, {
|
|
description = "Broken "..mname.." Table",
|
|
drawtype = "nodebox",
|
|
node_box = nodecore.fixedbox(
|
|
{-0.5, 7/16, -0.5, -0.5+4/16,0.5,0.5},
|
|
{0.5-4/16, 7/16, -0.5, 0.5, 0.5, 0.5},
|
|
{-8/32, 7/16, 8/32, 8/32, 0.5, 0.5},
|
|
{-8/32, 7/16, -0.5, 8/32, 0.5, -8/32},
|
|
{-0.5, -0.5, -0.5, -7/16, 7/16, -7/16},
|
|
{-0.5, -0.5, 7/16, -7/16, 7/16, 0.5},
|
|
{7/16, -0.5, -0.5, 0.5, 7/16, -7/16},
|
|
{7/16, -0.5, 7/16, 0.5, 7/16, 0.5}
|
|
),
|
|
selection_box = nodecore.fixedbox(),
|
|
collision_box = nodecore.fixedbox(),
|
|
tiles = { top, top, side },
|
|
groups = groups,
|
|
paramtype = "light",
|
|
sounds = nodecore.sounds("nc_tree_woody"),
|
|
})
|
|
minetest.register_node(modname .. ":sieve"..suff, {
|
|
description = mname.." Sieve",
|
|
drawtype = "nodebox",
|
|
use_texture_alpha = true,
|
|
node_box = nodecore.fixedbox(
|
|
{-4/16,7/16,-4/16,4/16,0.5,4/16},
|
|
{-0.5, 7/16, -0.5, -0.5+4/16,0.5,0.5},
|
|
{0.5-4/16, 7/16, -0.5, 0.5, 0.5, 0.5},
|
|
{-8/32, 7/16, 8/32, 8/32, 0.5, 0.5},
|
|
{-8/32, 7/16, -0.5, 8/32, 0.5, -8/32},
|
|
{-0.5, -0.5, -0.5, -7/16, 7/16, -7/16},
|
|
{-0.5, -0.5, 7/16, -7/16, 7/16, 0.5},
|
|
{7/16, -0.5, -0.5, 0.5, 7/16, -7/16},
|
|
{7/16, -0.5, 7/16, 0.5, 7/16, 0.5}
|
|
),
|
|
selection_box = nodecore.fixedbox(),
|
|
collision_box = nodecore.fixedbox(),
|
|
tiles = { top_sieve, top_sieve, side },
|
|
groups = groups,
|
|
paramtype = "light",
|
|
sounds = nodecore.sounds("nc_tree_woody"),
|
|
})
|
|
end
|
|
|
|
regsieve("",top,side,top_sieve,{
|
|
choppy = 1,
|
|
flammable = 2,
|
|
fire_fuel = 3,
|
|
})
|
|
|
|
regsieve("stone",stop,sside,stop_sieve,{
|
|
cracky = 2,
|
|
})
|
|
|
|
minetest.register_craftitem(modname..":random_dust",{
|
|
description = "Dust of random minerals",
|
|
inventory_image = modname.."_random_dust.png"
|
|
})
|
|
|
|
minetest.register_craftitem(modname..":super_random_dust",{
|
|
description = "Dust of very random minerals",
|
|
inventory_image = modname.."_random_dust.png"
|
|
})
|
|
|
|
nodecore.register_craft({
|
|
label = "break a wooden table",
|
|
action = "pummel",
|
|
toolgroups = {choppy = 1},
|
|
nodes = {
|
|
{match = modname .. ":table", replace = modname .. ":table_broken"}
|
|
},
|
|
})
|
|
|
|
nodecore.register_craft({
|
|
label = "break a stone table",
|
|
action = "pummel",
|
|
toolgroups = {cracky = 4},
|
|
nodes = {
|
|
{match = modname .. ":table_stone", replace = modname .. ":table_broken_stone"}
|
|
},
|
|
})
|
|
|
|
|
|
local duo = {
|
|
items={{name = modname..":random_dust", count = 1, scatter = 2}}
|
|
}
|
|
|
|
local duo2 = {
|
|
items={{name = modname..":random_dust", count = 2, scatter = 2}}
|
|
}
|
|
|
|
local duo3 = {
|
|
items={{name = modname..":super_random_dust", count = 2, scatter = 2}}
|
|
}
|
|
|
|
local duo4 = {
|
|
items={{name = modname..":super_random_dust", count = 4, scatter = 2}}
|
|
}
|
|
|
|
local dirts = {
|
|
["nc_terrain:gravel"] = duo,
|
|
["nc_terrain:gravel_loose"] = duo,
|
|
["nc_terrain:sand"] = duo2,
|
|
["nc_terrain:sand_loose"] = duo2,
|
|
["nc_tree:leaves_loose"] = {node = "nc_sky_liquids:hm_water_source"}
|
|
}
|
|
|
|
local dirtss = {
|
|
["nc_terrain:gravel"] = duo3,
|
|
["nc_terrain:gravel_loose"] = duo3,
|
|
["nc_terrain:sand"] = duo4,
|
|
["nc_terrain:sand_loose"] = duo4,
|
|
["nc_tree:leaves_loose"] = {node = "nc_sky_liquids:hm_water_source"},
|
|
}
|
|
|
|
for k,v in pairs(dirts) do
|
|
|
|
nodecore.register_craft({
|
|
label = "use a sieve with "..k,
|
|
action = "pummel",
|
|
toolgroups = {crumbly = 1},
|
|
nodes = {
|
|
{match = {name = k}, replace = v.node or "air"},
|
|
{y=-1,match = modname .. ":sieve"}
|
|
},
|
|
items = v.items
|
|
})
|
|
|
|
end
|
|
|
|
for k,v in pairs(dirtss) do
|
|
|
|
nodecore.register_craft({
|
|
label = "use a stone sieve with "..k,
|
|
action = "pummel",
|
|
toolgroups = {crumbly = 1},
|
|
nodes = {
|
|
{match = {name = k}, replace = v.node or "air"},
|
|
{y=-1,match = modname .. ":sieve_stone"}
|
|
},
|
|
items = v.items
|
|
})
|
|
|
|
end
|
|
|
|
local ores = {
|
|
["nc_lode:cobble_loose"] = 10,
|
|
["nc_lux:cobble1_loose"] = 1,
|
|
["nc_sponge:sponge_living"]=1
|
|
}
|
|
|
|
local sores = {
|
|
["nc_lode:cobble_loose"] = 50,
|
|
["nc_lux:cobble1_loose"] = 5,
|
|
["nc_sponge:sponge_living"]=5,
|
|
["rdust"]=1
|
|
}
|
|
|
|
nodecore.register_craft({
|
|
label = "pack random dust into cobble",
|
|
action = "pummel",
|
|
toolgroups = {thumpy = 2},
|
|
nodes = {
|
|
{match = {name = modname..":random_dust",count=8},replace = "nc_terrain:cobble"}
|
|
},
|
|
after = function(pos)
|
|
local chances = {}
|
|
local mc = 1
|
|
for k,v in pairs(ores) do
|
|
for n=mc,mc-1+v do
|
|
chances[n] = k
|
|
end
|
|
mc=mc+v
|
|
end
|
|
local ore = chances[math.random(1,mc-1)]
|
|
minetest.set_node(pos,{name=ore})
|
|
end
|
|
})
|
|
nodecore.register_craft({
|
|
label = "pack very random dust into cobble",
|
|
action = "pummel",
|
|
toolgroups = {thumpy = 2},
|
|
nodes = {
|
|
{match = {name = modname..":super_random_dust",count=8},replace = "nc_terrain:cobble"}
|
|
},
|
|
after = function(pos)
|
|
local chances = {}
|
|
local mc = 1
|
|
for k,v in pairs(sores) do
|
|
for n=mc,mc-1+v do
|
|
chances[n] = k
|
|
end
|
|
mc=mc+v
|
|
end
|
|
local ore = chances[math.random(1,mc-1)]
|
|
if ore == "rdust" then
|
|
nodecore.item_eject(pos,modname..":super_random_dust",5,10)
|
|
else
|
|
minetest.set_node(pos,{name=ore})
|
|
end
|
|
end
|
|
})
|
|
|
|
nodecore.register_craft({
|
|
label = "assemble wood sieve",
|
|
norotate = true,
|
|
nodes = {
|
|
{y = -1, match = modname .. ":table_broken", replace = modname .. ":sieve"},
|
|
{match = "nc_tree:leaves_loose", replace = "air"},
|
|
}
|
|
})
|
|
|
|
nodecore.register_craft({
|
|
label = "assemble stone sieve",
|
|
norotate = true,
|
|
nodes = {
|
|
{y = -1, match = modname .. ":table_broken_stone", replace = modname .. ":sieve_stone"},
|
|
{match = "nc_terrain:cobble_loose", replace = "air"},
|
|
}
|
|
})
|
|
|
|
nodecore.register_craft({
|
|
label = "assemble wood table",
|
|
norotate = true,
|
|
nodes = {
|
|
{match = wmodname .. ":plank", replace = modname .. ":table"},
|
|
{x = -1, z = -1, match = wmodname .. ":staff", replace = "air"},
|
|
{x = 1, z = -1, match = wmodname .. ":staff", replace = "air"},
|
|
{x = -1, z = 1, match = wmodname .. ":staff", replace = "air"},
|
|
{x = 1, z = 1, match = wmodname .. ":staff", replace = "air"},
|
|
}
|
|
})
|
|
|
|
nodecore.register_craft({
|
|
label = "assemble wood table",
|
|
norotate = true,
|
|
nodes = {
|
|
{match = wmodname .. ":plank", replace = modname .. ":table"},
|
|
{x = 0, z = -1, match = wmodname .. ":staff", replace = "air"},
|
|
{x = 0, z = 1, match = wmodname .. ":staff", replace = "air"},
|
|
{x = -1, z = 0, match = wmodname .. ":staff", replace = "air"},
|
|
{x = 1, z = 0, match = wmodname .. ":staff", replace = "air"},
|
|
}
|
|
})
|
|
|
|
|
|
nodecore.register_craft({
|
|
label = "assemble stone table",
|
|
action = "pummel",
|
|
toolgroups = {thumpy = 4},
|
|
priority = 1,
|
|
norotate = true,
|
|
nodes = {
|
|
{match = "nc_terrain:cobble_loose", replace = modname .. ":table_stone"},
|
|
{x = -1, z = -1, match = "nc_lode:rod_annealed", replace = "air"},
|
|
{x = 1, z = -1, match = "nc_lode:rod_annealed", replace = "air"},
|
|
{x = -1, z = 1, match = "nc_lode:rod_annealed", replace = "air"},
|
|
{x = 1, z = 1, match = "nc_lode:rod_annealed", replace = "air"},
|
|
}
|
|
})
|
|
|
|
nodecore.register_craft({
|
|
label = "assemble stone table",
|
|
action = "pummel",
|
|
toolgroups = {thumpy = 4},
|
|
priority = 1,
|
|
norotate = true,
|
|
nodes = {
|
|
{match = "nc_terrain:cobble_loose", replace = modname .. ":table_stone"},
|
|
{x = 0, z = -1, match = "nc_lode:rod_annealed", replace = "air"},
|
|
{x = 0, z = 1, match = "nc_lode:rod_annealed", replace = "air"},
|
|
{x = -1, z = 0, match = "nc_lode:rod_annealed", replace = "air"},
|
|
{x = 1, z = 0, match = "nc_lode:rod_annealed", replace = "air"},
|
|
}
|
|
})
|