summaryrefslogtreecommitdiff
path: root/castle_gates/gate_slots.lua
diff options
context:
space:
mode:
Diffstat (limited to 'castle_gates/gate_slots.lua')
-rw-r--r--castle_gates/gate_slots.lua138
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