Use new Minetest Game fences API

master
Wuzzy 2017-12-22 04:06:22 +01:00
parent 3c9e3fdca6
commit e461a62783
4 changed files with 67 additions and 32 deletions

View File

@ -126,6 +126,64 @@ function default.node_sound_lava_defaults(table)
return table
end
function default.register_fence(name, def)
if def.material then
minetest.register_craft({
output = name .. " 4",
recipe = {
{ def.material, 'group:stick', def.material },
{ def.material, 'group:stick', def.material },
}
})
end
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}},
},
connects_to = {"group:fence_wood", "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 def[k] == nil then
def[k] = v
end
end
-- Always add to the fence group, even if no group provided
def.groups.fence = 1
-- Always connect to fence gates regardless of type
table.insert(def.connects_to, "group:fence_gate")
def.texture = nil
def.material = nil
minetest.register_node(name, def)
end
--
-- Legacy
--

View File

@ -1034,24 +1034,8 @@ minetest.register_node("default:glass", {
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("default:fence_rusty", {
description = "Rusty Fence",
drawtype = "fencelike",
tiles = {"default_rusty.png"},
inventory_image = "default_fence_rusty.png",
wield_image = "default_fence_rusty.png",
paramtype = "light",
is_ground_content = false,
selection_box = {
type = "fixed",
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
},
groups = {cracky=3, fence=1},
sounds = default.node_sound_metal_defaults(),
})
local fences = {
{ "rusty", "Rusty Fence", "default_rusty.png", {cracky=3}, default.node_sound_metal_defaults() },
{ "rusty", "Rusty Fence", "default_rusty.png", {cracky=3, fence_metal=1}, {"group:fence_metal"}, default.node_sound_metal_defaults() },
{ "wood", "Common Wood Fence", "default_wood.png" },
{ "pale_wood", "Pale Wood Fence", "default_palewood.png" },
{ "jungle_wood", "Jungle Wood Fence", "default_junglewood.png" },
@ -1073,29 +1057,21 @@ local fences = {
}
for i=1, #fences do
local groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, woodfence=1}
local groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, fence_wood=1}
local sounds = default.node_sound_wood_defaults()
if fences[i][4] then
groups = fences[i][4]
end
groups.fence = 1
if fences[i][5] then
sounds = fences[i][5]
local connects_to = fences[i][5]
if fences[i][6] then
sounds = fences[i][6]
end
minetest.register_node("default:fence_"..fences[i][1], {
default.register_fence("default:fence_"..fences[i][1], {
description = fences[i][2],
drawtype = "fencelike",
tiles = {fences[i][3]},
inventory_image = "default_fence_mask.png^" .. fences[i][3] .. "^default_fence_mask.png^[makealpha:255,126,126",
wield_image = "default_fence_mask.png^" .. fences[i][3] .. "^default_fence_mask.png^[makealpha:255,126,126",
paramtype = "light",
is_ground_content = false,
selection_box = {
type = "fixed",
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
},
texture = fences[i][3],
groups = groups,
sounds = sounds,
connects_to = connects_to,
})
end

View File

Before

Width:  |  Height:  |  Size: 112 B

After

Width:  |  Height:  |  Size: 112 B

View File

@ -661,6 +661,7 @@ function doors.register_fencegate(name, def)
end
fence.groups.fence = 1
fence.groups.fence_gate = 1
local fence_closed = table.copy(fence)
fence_closed.mesh = "doors_fencegate_closed.obj"