123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- if not minetest.global_exists("default") then default = {} end
- if not minetest.global_exists("fencelike") then fencelike = {} end
- fencelike.modpath = minetest.get_modpath("fencelike")
- local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0
- fence_collision_extra = 0 -- Ignore setting.
- --
- -- Fence registration helper
- --
- function default.register_fence(name, def)
- minetest.register_craft({
- output = name .. " 4",
- recipe = {
- { def.material, 'group:stick', def.material },
- { def.material, 'group:stick', def.material },
- }
- })
- local fence_texture = "default_fence_overlay.png^" .. def.texture ..
- "^default_fence_overlay.png^[makealpha:255,126,126"
- -- Allow almost everything to be overridden
- local default_fields = {
- paramtype = "light",
- drawtype = "nodebox",
- node_box = {
- type = "connected",
- fixed = {{-1/8, -1/2, -1/8, 1/8, 1/2, 1/8}},
- -- connect_top =
- -- connect_bottom =
- connect_front = {{-1/16,3/16,-1/2,1/16,5/16,-1/8},
- {-1/16,-5/16,-1/2,1/16,-3/16,-1/8}},
- connect_left = {{-1/2,3/16,-1/16,-1/8,5/16,1/16},
- {-1/2,-5/16,-1/16,-1/8,-3/16,1/16}},
- connect_back = {{-1/16,3/16,1/8,1/16,5/16,1/2},
- {-1/16,-5/16,1/8,1/16,-3/16,1/2}},
- connect_right = {{1/8,3/16,-1/16,1/2,5/16,1/16},
- {1/8,-5/16,-1/16,1/2,-3/16,1/16}},
- },
- collision_box = {
- type = "connected",
- fixed = {-1/8, -1/2, -1/8, 1/8, 1/2 + fence_collision_extra, 1/8},
- -- connect_top =
- -- connect_bottom =
- connect_front = {-1/8, -1/2, -1/2, 1/8, 1/2 + fence_collision_extra, -1/8},
- connect_left = {-1/2, -1/2, -1/8, -1/8, 1/2 + fence_collision_extra, 1/8},
- connect_back = {-1/8, -1/2, 1/8, 1/8, 1/2 + fence_collision_extra, 1/2},
- connect_right = { 1/8, -1/2, -1/8, 1/2, 1/2 + fence_collision_extra, 1/8}
- },
- connects_to = {"group:fence", "group:wood", "group:tree"},
- inventory_image = fence_texture,
- wield_image = fence_texture,
- tiles = {def.texture},
- sunlight_propagates = true,
- is_ground_content = false,
- groups = {},
- }
- for k, v in pairs(default_fields) do
- if not def[k] then
- def[k] = v
- end
- end
- -- Always add to the fence group, even if no group provided
- def.groups.fence = 1
- def.texture = nil
- def.material = nil
- minetest.register_node(name, def)
- end
- --
- -- Fence rail registration helper
- --
- function default.register_fence_rail(name, def)
- minetest.register_craft({
- output = name .. " 8",
- recipe = {
- { def.material, def.material },
- { "group:stick", "group:stick"},
- { def.material, def.material },
- }
- })
- local fence_rail_texture = "default_fence_rail_overlay.png^" .. def.texture ..
- "^default_fence_rail_overlay.png^[makealpha:255,126,126"
- -- Allow almost everything to be overridden
- local default_fields = {
- paramtype = "light",
- drawtype = "nodebox",
- node_box = {
- type = "connected",
- fixed = {{-1/16, 3/16, -1/16, 1/16, 5/16, 1/16},
- {-1/16, -3/16, -1/16, 1/16, -5/16, 1/16}},
- -- connect_top =
- -- connect_bottom =
- connect_front = {{-1/16, 3/16, -1/2, 1/16, 5/16, -1/16},
- {-1/16, -5/16, -1/2, 1/16, -3/16, -1/16}},
- connect_left = {{-1/2, 3/16, -1/16, -1/16, 5/16, 1/16},
- {-1/2, -5/16, -1/16, -1/16, -3/16, 1/16}},
- connect_back = {{-1/16, 3/16, 1/16, 1/16, 5/16, 1/2 },
- {-1/16, -5/16, 1/16, 1/16, -3/16, 1/2 }},
- connect_right = {{ 1/16, 3/16, -1/16, 1/2, 5/16, 1/16},
- { 1/16, -5/16, -1/16, 1/2, -3/16, 1/16}}
- },
- collision_box = {
- type = "connected",
- fixed = {-1/8, -1/2, -1/8, 1/8, 1/2 + fence_collision_extra, 1/8},
- -- connect_top =
- -- connect_bottom =
- connect_front = {-1/8, -1/2, -1/2, 1/8, 1/2 + fence_collision_extra, -1/8},
- connect_left = {-1/2, -1/2, -1/8, -1/8, 1/2 + fence_collision_extra, 1/8},
- connect_back = {-1/8, -1/2, 1/8, 1/8, 1/2 + fence_collision_extra, 1/2},
- connect_right = { 1/8, -1/2, -1/8, 1/2, 1/2 + fence_collision_extra, 1/8}
- },
- connects_to = {"group:fence", "group:wall"},
- inventory_image = fence_rail_texture,
- wield_image = fence_rail_texture,
- tiles = {def.texture},
- sunlight_propagates = true,
- is_ground_content = false,
- groups = {},
- }
- for k, v in pairs(default_fields) do
- if def[k] == nil then
- def[k] = v
- end
- end
- -- Always add to the fence group, even if no group provided
- def.groups.fence = 1
- def.texture = nil
- def.material = nil
- minetest.register_node(name, def)
- end
|