Skip to content

Commit a2ecc51

Browse files
Rui914paramat
Rui914
authored andcommittedMar 21, 2016
Create API for registration of fence gate.
1 parent d90a081 commit a2ecc51

File tree

2 files changed

+104
-48
lines changed

2 files changed

+104
-48
lines changed
 

Diff for: ‎game_api.txt

+14
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@ The doors mod allows modders to register custom doors and trapdoors.
7878
* `name` Name for trapdoor
7979
* `def` See [#Trapdoor definition]
8080

81+
`doors.register_fencegate(name, def)`
82+
83+
* Registers new fence gate
84+
* `name` Name for fence gate
85+
* `def` See [#Fence gate definition]
86+
8187
`doors.get(pos)`
8288

8389
* `pos` A position as a table, e.g `{x = 1, y = 1, z = 1}`
@@ -119,6 +125,14 @@ The doors mod allows modders to register custom doors and trapdoors.
119125
sound_close = sound play for close door, -- optional
120126
protected = false, -- If true, only placer can open the door (locked for others)
121127

128+
###Fence gate definition
129+
130+
description = "Wooden Fence Gate",
131+
texture = "default_wood.png",
132+
material = "default:wood",
133+
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
134+
sounds = default.node_sound_wood_defaults(), -- optional
135+
122136
Fence API
123137
---------
124138
Allows creation of new fences with "fencelike" drawtype.

Diff for: ‎mods/doors/init.lua

+90-48
Original file line numberDiff line numberDiff line change
@@ -658,59 +658,101 @@ minetest.register_craft({
658658

659659
----fence gate----
660660

661-
local fence = {
662-
description = "Fence Gate",
663-
drawtype = "mesh",
664-
tiles = {"default_wood.png"},
665-
paramtype = "light",
666-
paramtype2 = "facedir",
667-
sunlight_propagates = true,
668-
is_ground_content = false,
669-
drop = "doors:gate_closed",
670-
connect_sides = { "left", "right" },
671-
groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2,
672-
flammable = 2, fence = 1},
673-
on_rightclick = function(pos, clicker)
674-
local node = minetest.get_node(pos)
675-
local def = minetest.registered_nodes[node.name]
676-
minetest.swap_node(pos, {name = def.gate, param2 = node.param2})
677-
minetest.sound_play(def.sound, {pos = pos, gain = 0.3,
678-
max_hear_distance = 8})
679-
end,
680-
selection_box = {
661+
function doors.register_fencegate(name, def)
662+
local fence = {
663+
description = def.description,
664+
drawtype = "mesh",
665+
tiles = { def.texture },
666+
paramtype = "light",
667+
paramtype2 = "facedir",
668+
sunlight_propagates = true,
669+
is_ground_content = false,
670+
drop = name .. "_closed",
671+
connect_sides = { "left", "right" },
672+
groups = def.groups,
673+
sounds = def.sounds,
674+
on_rightclick = function(pos, clicker)
675+
local node = minetest.get_node(pos)
676+
local node_def = minetest.registered_nodes[node.name]
677+
minetest.swap_node(pos, {name = node_def.gate, param2 = node.param2})
678+
minetest.sound_play(node_def.sound, {pos = pos, gain = 0.3,
679+
max_hear_distance = 8})
680+
end,
681+
selection_box = {
682+
type = "fixed",
683+
fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4},
684+
},
685+
}
686+
687+
if not fence.sounds then
688+
fence.sounds = default.node_sound_wood_defaults()
689+
end
690+
691+
fence.groups.fence = 1
692+
693+
local fence_closed = table.copy(fence)
694+
fence_closed.mesh = "doors_fencegate_closed.obj"
695+
fence_closed.gate = name .. "_open"
696+
fence_closed.sound = "doors_fencegate_open"
697+
fence_closed.collision_box = {
681698
type = "fixed",
682699
fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4},
683-
},
684-
}
700+
}
685701

686-
local fence_closed = table.copy(fence)
687-
fence_closed.mesh = "doors_fencegate_closed.obj"
688-
fence_closed.gate = "doors:gate_open"
689-
fence_closed.sound = "doors_fencegate_open"
690-
fence_closed.collision_box = {
691-
type = "fixed",
692-
fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4},
693-
}
702+
local fence_open = table.copy(fence)
703+
fence_open.mesh = "doors_fencegate_open.obj"
704+
fence_open.gate = name .. "_closed"
705+
fence_open.sound = "doors_fencegate_close"
706+
fence_open.groups.not_in_creative_inventory = 1
707+
fence_open.collision_box = {
708+
type = "fixed",
709+
fixed = {{-1/2, -1/2, -1/4, -3/8, 1/2, 1/4},
710+
{-5/8, -3/8, -14/16, -3/8, 3/8, 0}},
711+
}
694712

695-
local fence_open = table.copy(fence)
696-
fence_open.mesh = "doors_fencegate_open.obj"
697-
fence_open.gate = "doors:gate_closed"
698-
fence_open.sound = "doors_fencegate_close"
699-
fence_open.groups.not_in_creative_inventory = 1
700-
fence_open.collision_box = {
701-
type = "fixed",
702-
fixed = {{-1/2, -1/2, -1/4, -3/8, 1/2, 1/4},
703-
{-5/8, -3/8, -14/16, -3/8, 3/8, 0}},
704-
}
713+
minetest.register_node(":" .. name .. "_closed", fence_closed)
714+
minetest.register_node(":" .. name .. "_open", fence_open)
705715

706-
minetest.register_node("doors:gate_closed", fence_closed)
707-
minetest.register_node("doors:gate_open", fence_open)
716+
minetest.register_craft({
717+
output = name .. "_closed",
718+
recipe = {
719+
{"default:stick", def.material, "default:stick"},
720+
{"default:stick", def.material, "default:stick"}
721+
}
722+
})
723+
end
708724

709-
minetest.register_craft({
710-
output = "doors:gate_closed",
711-
recipe = {
712-
{"default:stick", "group:wood", "default:stick"},
713-
{"default:stick", "group:wood", "default:stick"},
714-
},
725+
doors.register_fencegate("doors:gate_wood", {
726+
description = "Wooden Fence Gate",
727+
texture = "default_wood.png",
728+
material = "default:wood",
729+
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
715730
})
716731

732+
doors.register_fencegate("doors:gate_acacia_wood", {
733+
description = "Acacia Fence Gate",
734+
texture = "default_acacia_wood.png",
735+
material = "default:acacia_wood",
736+
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
737+
})
738+
739+
doors.register_fencegate("doors:gate_junglewood", {
740+
description = "Junglewood Fence Gate",
741+
texture = "default_junglewood.png",
742+
material = "default:junglewood",
743+
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
744+
})
745+
746+
doors.register_fencegate("doors:gate_pine_wood", {
747+
description = "Pine Fence Gate",
748+
texture = "default_pine_wood.png",
749+
material = "default:pine_wood",
750+
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
751+
})
752+
753+
doors.register_fencegate("doors:gate_aspen_wood", {
754+
description = "Aspen Fence Gate",
755+
texture = "default_aspen_wood.png",
756+
material = "default:aspen_wood",
757+
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
758+
})

0 commit comments

Comments
 (0)
Please sign in to comment.