diff options
Diffstat (limited to 'castle_gates/gate_slots.lua')
-rw-r--r-- | castle_gates/gate_slots.lua | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/castle_gates/gate_slots.lua b/castle_gates/gate_slots.lua new file mode 100644 index 0000000..8f3c095 --- /dev/null +++ b/castle_gates/gate_slots.lua @@ -0,0 +1,138 @@ +-- internationalization boilerplate +local MP = minetest.get_modpath(minetest.get_current_modname()) +local S, NS = dofile(MP.."/intllib.lua") + +-- 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 + + 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 + + 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), + _doc_items_longdesc = castle_gates.doc.gate_slot_longdesc, + _doc_items_usagehelp = castle_gates.doc.gate_slot_usagehelp, + tiles = tile, + paramtype = "light", + paramtype2 = "facedir", + groups = composition_def.groups, + sounds = composition_def.sounds, + + 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 + } + }, + + collision_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 1.5}, -- body + }, + }) + + minetest.register_node(mod_name..":"..material.name.."_gate_slot_reverse", { + drawtype = "nodebox", + description = S("@1 Gate Slot Reverse", desc), + _doc_items_longdesc = castle_gates.doc.gate_slot_reverse_longdesc, + _doc_items_usagehelp = castle_gates.doc.gate_slot_reverse_usagehelp, + tiles = tile, + paramtype = "light", + paramtype2 = "facedir", + groups = composition_def.groups, + sounds = composition_def.sounds, + + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -1.25, 0.5, 0.5, 0.5}, -- body + } + }, + + collision_box = { + type = "fixed", + fixed = {-0.5, -0.5, -1.25, 0.5, 0.5, 0.5}, -- body + }, + }) + + + minetest.register_craft({ + output = mod_name..":"..material.name.."_portcullis_slot 3", + recipe = { + {material.craft_material,"",material.craft_material}, + {material.craft_material,"",material.craft_material}, + {material.craft_material,"",material.craft_material}, + }, + }) + + minetest.register_craft({ + output = mod_name..":"..material.name.."_portcullis_slot", + type = "shapeless", + recipe = {mod_name..":"..material.name.."_portcullis_slot_reverse"}, + }) + minetest.register_craft({ + output = mod_name..":"..material.name.."_portcullis_slot_reverse", + type = "shapeless", + recipe = {mod_name..":"..material.name.."_portcullis_slot"}, + }) + + if burn_time > 0 then + minetest.register_craft({ + type = "fuel", + recipe = mod_name..":"..material.name.."_portcullis_slot", + burntime = burn_time * 2, + }) + minetest.register_craft({ + type = "fuel", + recipe = mod_name..":"..material.name.."_portcullis_slot_reverse", + burntime = burn_time * 2, + }) + 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 |