2022-04-06 20:00:47 +02:00
|
|
|
local S = minetest.get_translator("castle_gates")
|
2019-11-11 23:33:23 +01:00
|
|
|
|
2017-02-20 15:16:07 -07:00
|
|
|
|
|
|
|
-- copied from castle_masonry in case that mod is not loaded
|
|
|
|
local get_material_properties = function(material)
|
|
|
|
local composition_def
|
|
|
|
local burn_time
|
|
|
|
if material.composition_material ~= nil then
|
|
|
|
composition_def = minetest.registered_nodes[material.composition_material]
|
|
|
|
burn_time = minetest.get_craft_result({method="fuel", width=1, items={ItemStack(material.composition_material)}}).time
|
|
|
|
else
|
|
|
|
composition_def = minetest.registered_nodes[material.craft_material]
|
|
|
|
burn_time = minetest.get_craft_result({method="fuel", width=1, items={ItemStack(material.craft_materia)}}).time
|
|
|
|
end
|
2022-05-07 17:26:09 -07:00
|
|
|
|
2017-02-20 15:16:07 -07:00
|
|
|
local tiles = material.tile
|
|
|
|
if tiles == nil then
|
|
|
|
tiles = composition_def.tile
|
|
|
|
elseif type(tiles) == "string" then
|
|
|
|
tiles = {tiles}
|
|
|
|
end
|
|
|
|
|
|
|
|
local desc = material.desc
|
|
|
|
if desc == nil then
|
|
|
|
desc = composition_def.description
|
|
|
|
end
|
2022-05-07 17:26:09 -07:00
|
|
|
|
2017-02-20 15:16:07 -07:00
|
|
|
return composition_def, burn_time, tiles, desc
|
|
|
|
end
|
|
|
|
|
|
|
|
local materials
|
|
|
|
if minetest.get_modpath("castle_masonry") then
|
|
|
|
materials = castle_masonry.materials
|
|
|
|
else
|
|
|
|
materials = {{name="stonebrick", desc=S("Stonebrick"), tile="default_stone_brick.png", craft_material="default:stonebrick"}}
|
|
|
|
end
|
|
|
|
|
|
|
|
castle_gates.register_gate_slot = function(material)
|
|
|
|
local composition_def, burn_time, tile, desc = get_material_properties(material)
|
|
|
|
local mod_name = minetest.get_current_modname()
|
|
|
|
|
|
|
|
minetest.register_node(mod_name..":"..material.name.."_gate_slot", {
|
|
|
|
drawtype = "nodebox",
|
|
|
|
description = S("@1 Gate Slot", desc),
|
2017-03-01 23:33:12 -07:00
|
|
|
_doc_items_longdesc = castle_gates.doc.gate_slot_longdesc,
|
|
|
|
_doc_items_usagehelp = castle_gates.doc.gate_slot_usagehelp,
|
2017-02-20 15:16:07 -07:00
|
|
|
tiles = tile,
|
|
|
|
paramtype = "light",
|
|
|
|
paramtype2 = "facedir",
|
|
|
|
groups = composition_def.groups,
|
|
|
|
sounds = composition_def.sounds,
|
2022-05-07 17:26:09 -07:00
|
|
|
|
2017-02-20 15:16:07 -07:00
|
|
|
node_box = {
|
|
|
|
type = "fixed",
|
|
|
|
fixed = {
|
|
|
|
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- body
|
|
|
|
{-0.5, -0.5, -0.75, 0.5, 0.5, -1.5}, -- bracket
|
2022-05-07 17:26:09 -07:00
|
|
|
},
|
2017-02-20 15:16:07 -07:00
|
|
|
},
|
2022-05-07 17:26:09 -07:00
|
|
|
|
2017-02-20 15:16:07 -07:00
|
|
|
collision_box = {
|
|
|
|
type = "fixed",
|
2022-05-07 17:26:09 -07:00
|
|
|
fixed = {
|
|
|
|
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- body
|
|
|
|
{-0.5, -0.5, -0.75, 0.5, 0.5, -1.5}, -- bracket
|
|
|
|
},
|
2017-02-20 15:16:07 -07:00
|
|
|
},
|
|
|
|
})
|
2022-05-07 17:26:09 -07:00
|
|
|
|
2017-02-20 15:16:07 -07:00
|
|
|
minetest.register_node(mod_name..":"..material.name.."_gate_slot_reverse", {
|
|
|
|
drawtype = "nodebox",
|
2022-05-07 17:26:09 -07:00
|
|
|
description = S("@1 Gate Slot Reverse", desc),
|
2017-03-01 23:33:12 -07:00
|
|
|
_doc_items_longdesc = castle_gates.doc.gate_slot_reverse_longdesc,
|
|
|
|
_doc_items_usagehelp = castle_gates.doc.gate_slot_reverse_usagehelp,
|
2017-02-20 15:16:07 -07:00
|
|
|
tiles = tile,
|
|
|
|
paramtype = "light",
|
|
|
|
paramtype2 = "facedir",
|
|
|
|
groups = composition_def.groups,
|
|
|
|
sounds = composition_def.sounds,
|
2022-05-07 17:26:09 -07:00
|
|
|
|
2017-02-20 15:16:07 -07:00
|
|
|
node_box = {
|
|
|
|
type = "fixed",
|
|
|
|
fixed = {
|
|
|
|
{-0.5, -0.5, -1.25, 0.5, 0.5, 0.5}, -- body
|
|
|
|
}
|
|
|
|
},
|
2022-05-07 17:26:09 -07:00
|
|
|
|
2017-02-20 15:16:07 -07:00
|
|
|
collision_box = {
|
|
|
|
type = "fixed",
|
|
|
|
fixed = {-0.5, -0.5, -1.25, 0.5, 0.5, 0.5}, -- body
|
|
|
|
},
|
|
|
|
})
|
2022-05-07 17:26:09 -07:00
|
|
|
|
|
|
|
|
2017-02-20 15:16:07 -07:00
|
|
|
minetest.register_craft({
|
2017-09-25 21:13:43 -06:00
|
|
|
output = mod_name..":"..material.name.."_gate_slot 2",
|
2017-02-20 15:16:07 -07:00
|
|
|
recipe = {
|
|
|
|
{material.craft_material,"",material.craft_material},
|
|
|
|
{material.craft_material,"",material.craft_material},
|
|
|
|
},
|
|
|
|
})
|
2022-05-07 17:26:09 -07:00
|
|
|
|
2017-02-20 15:16:07 -07:00
|
|
|
minetest.register_craft({
|
2017-09-25 21:13:43 -06:00
|
|
|
output = mod_name..":"..material.name.."_gate_slot",
|
2017-02-20 15:16:07 -07:00
|
|
|
type = "shapeless",
|
2017-09-25 21:13:43 -06:00
|
|
|
recipe = {mod_name..":"..material.name.."_gate_slot_reverse"},
|
2017-02-20 15:16:07 -07:00
|
|
|
})
|
|
|
|
minetest.register_craft({
|
2017-09-25 21:13:43 -06:00
|
|
|
output = mod_name..":"..material.name.."_gate_slot_reverse",
|
2017-02-20 15:16:07 -07:00
|
|
|
type = "shapeless",
|
2017-09-25 21:13:43 -06:00
|
|
|
recipe = {mod_name..":"..material.name.."_gate_slot"},
|
2017-02-20 15:16:07 -07:00
|
|
|
})
|
2022-05-07 17:26:09 -07:00
|
|
|
|
2017-02-20 15:16:07 -07:00
|
|
|
if burn_time > 0 then
|
|
|
|
minetest.register_craft({
|
|
|
|
type = "fuel",
|
2017-09-25 21:13:43 -06:00
|
|
|
recipe = mod_name..":"..material.name.."_gate_slot",
|
2017-02-20 15:16:07 -07:00
|
|
|
burntime = burn_time * 2,
|
|
|
|
})
|
|
|
|
minetest.register_craft({
|
|
|
|
type = "fuel",
|
2017-09-25 21:13:43 -06:00
|
|
|
recipe = mod_name..":"..material.name.."_gate_slot_reverse",
|
2017-02-20 15:16:07 -07:00
|
|
|
burntime = burn_time * 2,
|
2022-05-07 17:26:09 -07:00
|
|
|
})
|
2017-02-20 15:16:07 -07:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
castle_gates.register_gate_slot_alias = function(old_mod_name, old_material_name, new_mod_name, new_material_name)
|
|
|
|
minetest.register_alias(old_mod_name..":"..old_material_name.."_gate_slot", new_mod_name..":"..new_material_name.."_gate_slot")
|
|
|
|
minetest.register_alias(old_mod_name..":"..old_material_name.."_gate_slot_reverse", new_mod_name..":"..new_material_name.."_gate_slot_reverse")
|
|
|
|
end
|
|
|
|
castle_gates.register_gate_slot_alias_force = function(old_mod_name, old_material_name, new_mod_name, new_material_name)
|
|
|
|
minetest.register_alias_force(old_mod_name..":"..old_material_name.."_gate_slot", new_mod_name..":"..new_material_name.."_gate_slot")
|
|
|
|
minetest.register_alias_force(old_mod_name..":"..old_material_name.."_gate_slot_reverse", new_mod_name..":"..new_material_name.."_gate_slot_reverse")
|
|
|
|
end
|
|
|
|
|
|
|
|
for _, material in pairs(materials) do
|
|
|
|
castle_gates.register_gate_slot(material)
|
|
|
|
end
|