forked from MineClone5/MineClone5
198 lines
6.3 KiB
Lua
198 lines
6.3 KiB
Lua
local init = os.clock()
|
|
|
|
-- Node box
|
|
local p = {-2/16, -1/2, -2/16, 2/16, 1/2, 2/16}
|
|
local x1 = {-2/16, 1/2-4/16, 1/16, -1/2, 1/2-1/16, -1/16} --oben(quer) -x
|
|
local x12 = {-2/16, -1/2+6/16, 1/16, -1/2, -1/2+9/16, -1/16} --unten(quer) -x
|
|
local x2 = {2/16, 1/2-4/16, -1/16, 1/2, 1/2-1/16, 1/16} --oben(quer) x
|
|
local x22 = {2/16, -1/2+6/16, -1/16, 1/2, -1/2+9/16, 1/16} --unten(quer) x
|
|
local z1 = {1/16, 1/2-4/16, -2/16, -1/16, 1/2-1/16, -1/2} --oben(quer) -z
|
|
local z12 = {1/16, -1/2+6/16, -2/16, -1/16, -1/2+9/16, -1/2} --unten(quer) -z
|
|
local z2 = {-1/16, 1/2-4/16, 2/16, 1/16, 1/2-1/16, 1/2} --oben(quer) z
|
|
local z22 = {-1/16, -1/2+6/16, 2/16, 1/16, -1/2+9/16, 1/2} --unten(quer) z
|
|
|
|
-- Collision box
|
|
local cp = {-2/16, -1/2, -2/16, 2/16, 1, 2/16}
|
|
local cx1 = {-2/16, -1/2+6/16, 2/16, -1/2, 1, -2/16} --unten(quer) -x
|
|
local cx2 = {2/16, -1/2+6/16, -2/16, 1/2, 1, 2/16} --unten(quer) x
|
|
local cz1 = {2/16, -1/2+6/16, -2/16, -2/16, 1, -1/2} --unten(quer) -z
|
|
local cz2 = {-2/16, -1/2+6/16, 2/16, 2/16, 1, 1/2} --unten(quer) z
|
|
|
|
minetest.register_node("mcl_fences:fence", {
|
|
description = "Oak Fence",
|
|
tiles = {"default_wood.png"},
|
|
inventory_image = "default_fence.png",
|
|
wield_image = "default_fence.png",
|
|
paramtype = "light",
|
|
is_ground_content = false,
|
|
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fence=1},
|
|
stack_max = 64,
|
|
sunlight_propagates = true,
|
|
drawtype = "nodebox",
|
|
connect_sides = { "front", "back", "left", "right" },
|
|
connects_to = { "group:solid", "group:fence" },
|
|
node_box = {
|
|
type = "connected",
|
|
fixed = {p},
|
|
connect_front = {z1,z12},
|
|
connect_back = {z2,z22,},
|
|
connect_left = {x1,x12},
|
|
connect_right = {x2,x22},
|
|
},
|
|
collision_box = {
|
|
type = "connected",
|
|
fixed = {cp},
|
|
connect_front = {cz1},
|
|
connect_back = {cz2,},
|
|
connect_left = {cx1},
|
|
connect_right = {cx2},
|
|
},
|
|
sounds = default.node_sound_wood_defaults(),
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'mcl_fences:fence 3',
|
|
recipe = {
|
|
{'default:wood', 'default:stick', 'default:wood'},
|
|
{'default:wood', 'default:stick', 'default:wood'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'mcl_fences:fence_gate',
|
|
recipe = {
|
|
{'default:stick', 'default:wood', 'default:stick'},
|
|
{'default:stick', 'default:wood', 'default:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "mcl_fences:fence",
|
|
burntime = 15,
|
|
})
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "mcl_fences:fence_gate",
|
|
burntime = 15,
|
|
})
|
|
|
|
local meta2
|
|
local state2 = 0
|
|
|
|
local function update_gate(pos, node)
|
|
minetest.set_node(pos, node)
|
|
end
|
|
|
|
local function punch_gate(pos, node)
|
|
meta2 = minetest.get_meta(pos)
|
|
state2 = meta2:get_int("state")
|
|
local tmp_node2
|
|
if state2 == 1 then
|
|
state2 = 0
|
|
minetest.sound_play("door_close", {gain = 0.3, max_hear_distance = 10})
|
|
tmp_node2 = {name="mcl_fences:fence_gate", param1=node.param1, param2=node.param2}
|
|
else
|
|
state2 = 1
|
|
minetest.sound_play("door_open", {gain = 0.3, max_hear_distance = 10})
|
|
tmp_node2 = {name="mcl_fences:fence_gate_open", param1=node.param1, param2=node.param2}
|
|
end
|
|
update_gate(pos, tmp_node2)
|
|
meta2:set_int("state", state2)
|
|
end
|
|
|
|
minetest.register_node("mcl_fences:fence_gate_open", {
|
|
tiles = {"default_wood.png"},
|
|
inventory_image = "default_fence.png",
|
|
wield_image = "default_fence.png",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
is_ground_content = false,
|
|
sunlight_propagates = true,
|
|
walkable = true,
|
|
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,fence=1,not_in_inventory=1,mesecon_effector_on=1},
|
|
drop = 'mcl_fences:fence_gate',
|
|
drawtype = "nodebox",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-1/2, -1/2+5/16, -1/16, -1/2+2/16, 1/2, 1/16}, --links abschluss
|
|
{1/2-2/16, -1/2+5/16, -1/16, 1/2, 1/2, 1/16}, --rechts abschluss
|
|
{-1/2, 1/2-4/16, 1/16, -1/2+2/16, 1/2-1/16, 1/2-2/16}, --oben-links(quer) x
|
|
{-1/2, -1/2+6/16, 1/16, -1/2+2/16, -1/2+9/16, 1/2-2/16}, --unten-links(quer) x
|
|
{1/2-2/16, 1/2-4/16, 1/16, 1/2, 1/2-1/16, 1/2}, --oben-rechts(quer) x
|
|
{1/2-2/16, -1/2+6/16, 1/16, 1/2, -1/2+9/16, 1/2}, --unten-rechts(quer) x
|
|
{-1/2, -1/2+6/16, 6/16, -1/2+2/16, 1/2-1/16, 1/2}, --mitte links
|
|
{1/2-2/16, 1/2-4/16, 1/2, 1/2, -1/2+9/16, 6/16}, --mitte rechts
|
|
}
|
|
},
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-1/2, -1/2+5/16, -1/16, 1/2, 1/2, 1/16}, --gate
|
|
}
|
|
},
|
|
--on_punch = function(pos, node, puncher)
|
|
on_rightclick = function(pos, node, clicker)
|
|
punch_gate(pos, node)
|
|
end,
|
|
mesecons = {effector = {
|
|
action_on = (function(pos, node)
|
|
punch_gate(pos, node)
|
|
end),
|
|
}},
|
|
})
|
|
|
|
minetest.register_node("mcl_fences:fence_gate", {
|
|
description = "Oak Fence Gate",
|
|
tiles = {"default_wood.png"},
|
|
inventory_image = "mcl_fences_fence_gate.png",
|
|
wield_image = "mcl_fences_fence_gate.png",
|
|
paramtype = "light",
|
|
is_ground_content = false,
|
|
stack_max = 16,
|
|
paramtype2 = "facedir",
|
|
sunlight_propagates = true,
|
|
walkable = true,
|
|
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,mesecon_effector_on=1,fence=1},
|
|
drawtype = "nodebox",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-1/2, -1/2+5/16, -1/16, -1/2+2/16, 1/2, 1/16}, --links abschluss
|
|
{1/2-2/16, -1/2+5/16, -1/16, 1/2, 1/2, 1/16}, --rechts abschluss
|
|
{-2/16, -1/2+6/16, -1/16, 0, 1/2-1/16, 1/16}, --mitte links
|
|
{0, -1/2+6/16, -1/16, 2/16, 1/2-1/16, 1/16}, --mitte rechts
|
|
{-2/16, 1/2-4/16, 1/16, -1/2, 1/2-1/16, -1/16}, --oben(quer) -z
|
|
{-2/16, -1/2+6/16, 1/16, -1/2, -1/2+9/16, -1/16}, --unten(quer) -z
|
|
{2/16, 1/2-4/16, -1/16, 1/2, 1/2-1/16, 1/16}, --oben(quer) z
|
|
{2/16, -1/2+6/16, -1/16, 1/2, -1/2+9/16, 1/16}, --unten(quer) z
|
|
p1,p2,p3,p4,p5,
|
|
bx1,bx11,bx2,bx21,
|
|
}
|
|
},
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-1/2, -1/2+5/16, -1/16, 1/2, 1/2, 1/16}, --gate
|
|
}
|
|
},
|
|
on_construct = function(pos)
|
|
me2 = minetest.get_node(pos)
|
|
meta2 = minetest.get_meta(pos)
|
|
meta2:set_int("state", 0)
|
|
state2 = 0
|
|
end,
|
|
mesecons = {effector = {
|
|
action_on = (function(pos, node)
|
|
punch_gate(pos, node)
|
|
end),
|
|
}},
|
|
on_rightclick = function(pos, node, clicker)
|
|
punch_gate(pos, node)
|
|
end,
|
|
})
|
|
|
|
local time_to_load= os.clock() - init
|
|
print(string.format("[MOD] "..minetest.get_current_modname().." loaded in %.4f s", time_to_load))
|