first commit
This commit is contained in:
commit
bfe1416549
5 changed files with 316 additions and 0 deletions
14
README.md
Normal file
14
README.md
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
This is a mod for Minetest.
|
||||
|
||||
It adds gates that fit well to fences and xconnected nodes.
|
||||
The passageway through the fence gate is not as slim as with other, existing
|
||||
mods. Mobs from TenPlus1' version of simple mobs cannot jump over the
|
||||
closed gate. They can walk through the open gate of course. In order to
|
||||
keep cattle loss at a minimum, the gate will auto-close using an abm after
|
||||
about 5 seconds.
|
||||
|
||||
Variants for all wood types from default are included, including default:tree.
|
||||
|
||||
Crafting:
|
||||
steel ingot - wood (or tree) - steel ingot
|
||||
(nothing) - wood (or tree) - (nothing)
|
||||
1
depends.txt
Normal file
1
depends.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
default
|
||||
161
init.lua
Normal file
161
init.lua
Normal file
|
|
@ -0,0 +1,161 @@
|
|||
-- Long Gates Mod
|
||||
-- Version: 1.0
|
||||
-- Depends: default
|
||||
-- Original Author: (Falls bekannt, hier eintragen, oder deinen Namen)
|
||||
-- Modified for 1.5 collision height by: (Dein Name/User)
|
||||
|
||||
gates_long = {}
|
||||
|
||||
gates_long.register_gate = function( type_name, desc, tiles, craft_from)
|
||||
|
||||
-- the closed version contains the string "fence" in its name - thus preventing mobs from jumping over
|
||||
minetest.register_node("gates_long:fence_gate_closed_"..type_name, {
|
||||
description = desc.." fence gate (closed)",
|
||||
drawtype = "nodebox",
|
||||
-- top, bottom, side1, side2, inner, outer
|
||||
tiles = tiles,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, fence=1}, -- HINZUGEFÜGT: fence=1
|
||||
node_box = { -- Diese Definition bleibt für das Aussehen des Tores
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
-- horizontal wood
|
||||
{ -0.85, -0.25, -0.02, -0.005, -0.05, 0.02},
|
||||
{ -0.85, 0.15, -0.02, -0.005, 0.35, 0.02},
|
||||
|
||||
{ 0.005, -0.25, -0.02, 0.85, -0.05, 0.02},
|
||||
{ 0.005, 0.15, -0.02, 0.85, 0.35, 0.02},
|
||||
|
||||
-- vertical wood
|
||||
{ -0.80, -0.05, -0.02, -0.60, 0.15, 0.02},
|
||||
{ 0.60, -0.05, -0.02, 0.80, 0.15, 0.02},
|
||||
|
||||
{ -0.25, -0.05, -0.02, -0.05, 0.15, 0.02},
|
||||
{ 0.05, -0.05, -0.02, 0.25, 0.15, 0.02},
|
||||
|
||||
-- locking mechanism (top)
|
||||
{ -0.15, 0.32, -0.01, 0.15, 0.38, 0.01},
|
||||
-- locking mechanism (bottom)
|
||||
{ -0.15, -0.28, -0.01, 0.15, -0.22, 0.01},
|
||||
|
||||
-- hinges for the horizontal wood
|
||||
{ -0.91, -0.24, -0.015, -0.84, -0.06, 0.015},
|
||||
{ -0.91, 0.16, -0.015, -0.84, 0.34, 0.015},
|
||||
|
||||
{ 0.84, -0.24, -0.015, 0.91, -0.06, 0.015},
|
||||
{ 0.84, 0.16, -0.015, 0.91, 0.34, 0.015},
|
||||
},
|
||||
},
|
||||
-- NEU: Explizite Collision_box für 1.5 Blöcke Höhe
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
-- {x1, y1, z1, x2, y2, z2}
|
||||
-- y1 = -0.5 (Boden des Nodes)
|
||||
-- y2 = 1.0 (entspricht -0.5 + 1.5 Höhe)
|
||||
-- x und z Werte basieren auf der Breite/Tiefe der originalen Selection Box / Node_Box Ausdehnung
|
||||
{ -0.85, -0.5, -0.05, 0.85, 1.0, 0.05}
|
||||
}
|
||||
},
|
||||
selection_box = { -- Angepasst, um die neue Höhe widerzuspiegeln
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
-- x und z Werte wie oben, y von -0.5 bis 1.0
|
||||
{ -0.85, -0.5, -0.1, 0.85, 1.0, 0.1},
|
||||
},
|
||||
},
|
||||
on_rightclick = function(pos, node, puncher)
|
||||
minetest.swap_node(pos, {name = "gates_long:gate_open_"..type_name, param2 = node.param2})
|
||||
end,
|
||||
is_ground_content = false,
|
||||
})
|
||||
|
||||
|
||||
-- the opened version allows cattle to pass (until it autocloses)
|
||||
minetest.register_node("gates_long:gate_open_"..type_name, {
|
||||
description = desc.." fence gate (open)",
|
||||
drawtype = "nodebox",
|
||||
-- top, bottom, side1, side2, inner, outer
|
||||
tiles = tiles,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
drop = "gates_long:fence_gate_closed_"..type_name,
|
||||
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
-- horizontal wood
|
||||
{ -0.87, -0.25, -0.02, -0.83, -0.05, 0.85},
|
||||
{ -0.87, 0.15, -0.02, -0.83, 0.35, 0.85},
|
||||
|
||||
{ 0.83, -0.25, -0.02, 0.87, -0.05, 0.85},
|
||||
{ 0.83, 0.15, -0.02, 0.87, 0.35, 0.85},
|
||||
|
||||
-- vertical wood
|
||||
{ -0.87, -0.05, 0.80, -0.83, 0.15, 0.60},
|
||||
{ -0.87, -0.05, 0.25, -0.83, 0.15, 0.05},
|
||||
|
||||
{ 0.83, -0.05, 0.80, 0.87, 0.15, 0.60},
|
||||
{ 0.83, -0.05, 0.25, 0.87, 0.15, 0.05},
|
||||
|
||||
-- locking mechanism (top) - they are only on one side
|
||||
{ -0.86, 0.32, 0.53, -0.84, 0.38, 0.83},
|
||||
-- locking mechanism (bottom) - these as well
|
||||
{ -0.86, -0.28, 0.53, -0.84, -0.22, 0.83},
|
||||
|
||||
-- hinges for the horizontal wood (they remain the same)
|
||||
{ -0.91, -0.24, -0.015, -0.84, -0.06, 0.015},
|
||||
{ -0.91, 0.16, -0.015, -0.84, 0.34, 0.015},
|
||||
|
||||
{ 0.84, -0.24, -0.015, 0.91, -0.06, 0.015},
|
||||
{ 0.84, 0.16, -0.015, 0.91, 0.34, 0.015},
|
||||
},
|
||||
},
|
||||
selection_box = { -- Diese Selection Box bleibt für das geöffnete Tor wie sie war (oder ggf. an das Aussehen anpassen)
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.90, -0.25, 0, 0.90, 0.35, 0.50},
|
||||
},
|
||||
},
|
||||
|
||||
on_rightclick = function(pos, node, puncher)
|
||||
minetest.swap_node(pos, {name = "gates_long:fence_gate_closed_"..type_name, param2 = node.param2})
|
||||
end,
|
||||
is_ground_content = false,
|
||||
})
|
||||
|
||||
|
||||
-- automaticly close the gates again to prevent cattle from escaping
|
||||
minetest.register_abm({
|
||||
nodenames = {"gates_long:gate_open_"..type_name},
|
||||
interval = 5, -- Schließt alle 5 Sekunden
|
||||
chance = 1, -- Mit einer Wahrscheinlichkeit von 1 (also immer, wenn der Check läuft)
|
||||
action = function(pos, old_node)
|
||||
minetest.swap_node(pos, {name = "gates_long:fence_gate_closed_"..type_name, param2 = old_node.param2})
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "gates_long:fence_gate_closed_"..type_name.." 2",
|
||||
recipe = {
|
||||
{ "default:steel_ingot", craft_from, "default:steel_ingot" },
|
||||
{ "", craft_from, "" },
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
-- Registrierung der verschiedenen Tortypen
|
||||
gates_long.register_gate( 'wood', 'Wooden', {'default_wood.png'}, "default:wood" )
|
||||
gates_long.register_gate( 'junglewood','Junglewood',{'default_junglewood.png'}, "default:junglewood" )
|
||||
gates_long.register_gate( 'pine', 'Pine', {'default_pine_wood.png'}, "default:pine_wood" )
|
||||
gates_long.register_gate( 'acacia', 'Acacia', {'default_acacia_wood.png'}, "default:acacia_wood" )
|
||||
-- Der 'tree' Typ hier ist etwas ungewöhnlich, da er normalerweise für Stämme verwendet wird und nicht für Bretter.
|
||||
-- Die Textur-Transformation [transformR90 deutet darauf hin, dass die Textur gedreht wird.
|
||||
-- Stelle sicher, dass "default:tree" das Material ist, das du für diesen Tortyp verwenden möchtest.
|
||||
gates_long.register_gate( 'tree', 'Tree Wood',{'default_tree.png^[transformR90'}, "default:tree" )
|
||||
|
||||
-- Optional: Nachricht beim Laden der Mod
|
||||
minetest.log("action", "[MOD] Long Gates (gates_long) with 1.5 collision height loaded.")
|
||||
|
||||
-- Ende der Datei
|
||||
135
init.lua.old
Normal file
135
init.lua.old
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
|
||||
gates_long = {}
|
||||
|
||||
gates_long.register_gate = function( type_name, desc, tiles, craft_from)
|
||||
|
||||
-- the closed version contains the string "fence" in its name - thus preventing mobs from jumping over
|
||||
minetest.register_node("gates_long:fence_gate_closed_"..type_name, {
|
||||
description = desc.." fence gate (closed)",
|
||||
drawtype = "nodebox",
|
||||
-- top, bottom, side1, side2, inner, outer
|
||||
tiles = tiles,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
-- horizontal wood
|
||||
{ -0.85, -0.25, -0.02, -0.005, -0.05, 0.02},
|
||||
{ -0.85, 0.15, -0.02, -0.005, 0.35, 0.02},
|
||||
|
||||
{ 0.005, -0.25, -0.02, 0.85, -0.05, 0.02},
|
||||
{ 0.005, 0.15, -0.02, 0.85, 0.35, 0.02},
|
||||
|
||||
-- vertical wood
|
||||
{ -0.80, -0.05, -0.02, -0.60, 0.15, 0.02},
|
||||
{ 0.60, -0.05, -0.02, 0.80, 0.15, 0.02},
|
||||
|
||||
{ -0.25, -0.05, -0.02, -0.05, 0.15, 0.02},
|
||||
{ 0.05, -0.05, -0.02, 0.25, 0.15, 0.02},
|
||||
|
||||
-- locking mechanism (top)
|
||||
{ -0.15, 0.32, -0.01, 0.15, 0.38, 0.01},
|
||||
-- locking mechanism (bottom)
|
||||
{ -0.15, -0.28, -0.01, 0.15, -0.22, 0.01},
|
||||
|
||||
-- hinges for the horizontal wood
|
||||
{ -0.91, -0.24, -0.015, -0.84, -0.06, 0.015},
|
||||
{ -0.91, 0.16, -0.015, -0.84, 0.34, 0.015},
|
||||
|
||||
{ 0.84, -0.24, -0.015, 0.91, -0.06, 0.015},
|
||||
{ 0.84, 0.16, -0.015, 0.91, 0.34, 0.015},
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.85, -0.25, -0.1, 0.85, 0.35, 0.1},
|
||||
},
|
||||
},
|
||||
on_rightclick = function(pos, node, puncher)
|
||||
minetest.swap_node(pos, {name = "gates_long:gate_open_"..type_name, param2 = node.param2})
|
||||
end,
|
||||
is_ground_content = false,
|
||||
})
|
||||
|
||||
|
||||
-- the opened version allows cattle to pass (until it autocloses)
|
||||
minetest.register_node("gates_long:gate_open_"..type_name, {
|
||||
description = desc.." fence gate (open)",
|
||||
drawtype = "nodebox",
|
||||
-- top, bottom, side1, side2, inner, outer
|
||||
tiles = tiles,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
drop = "gates_long:fence_gate_closed_"..type_name,
|
||||
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
-- horizontal wood
|
||||
{ -0.87, -0.25, -0.02, -0.83, -0.05, 0.85},
|
||||
{ -0.87, 0.15, -0.02, -0.83, 0.35, 0.85},
|
||||
|
||||
{ 0.83, -0.25, -0.02, 0.87, -0.05, 0.85},
|
||||
{ 0.83, 0.15, -0.02, 0.87, 0.35, 0.85},
|
||||
|
||||
-- vertical wood
|
||||
{ -0.87, -0.05, 0.80, -0.83, 0.15, 0.60},
|
||||
{ -0.87, -0.05, 0.25, -0.83, 0.15, 0.05},
|
||||
|
||||
{ 0.83, -0.05, 0.80, 0.87, 0.15, 0.60},
|
||||
{ 0.83, -0.05, 0.25, 0.87, 0.15, 0.05},
|
||||
|
||||
-- locking mechanism (top) - they are only on one side
|
||||
{ -0.86, 0.32, 0.53, -0.84, 0.38, 0.83},
|
||||
-- locking mechanism (bottom) - these as well
|
||||
{ -0.86, -0.28, 0.53, -0.84, -0.22, 0.83},
|
||||
|
||||
-- hinges for the horizontal wood (they remain the same)
|
||||
{ -0.91, -0.24, -0.015, -0.84, -0.06, 0.015},
|
||||
{ -0.91, 0.16, -0.015, -0.84, 0.34, 0.015},
|
||||
|
||||
{ 0.84, -0.24, -0.015, 0.91, -0.06, 0.015},
|
||||
{ 0.84, 0.16, -0.015, 0.91, 0.34, 0.015},
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.90, -0.25, 0, 0.90, 0.35, 0.50},
|
||||
},
|
||||
},
|
||||
on_rightclick = function(pos, node, puncher)
|
||||
minetest.swap_node(pos, {name = "gates_long:fence_gate_closed_"..type_name, param2 = node.param2})
|
||||
end,
|
||||
is_ground_content = false,
|
||||
})
|
||||
|
||||
|
||||
-- automaticly close the gates again to prevent cattle from escaping
|
||||
minetest.register_abm({
|
||||
nodenames = {"gates_long:gate_open_"..type_name},
|
||||
interval = 5,
|
||||
chance = 1,
|
||||
action = function(pos, old_node)
|
||||
minetest.swap_node(pos, {name = "gates_long:fence_gate_closed_"..type_name, param2 = old_node.param2})
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "gates_long:fence_gate_closed_"..type_name.." 2",
|
||||
recipe = {
|
||||
{ "default:steel_ingot", craft_from, "default:steel_ingot" },
|
||||
{ "", craft_from, "" },
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
gates_long.register_gate( 'wood', 'wooden', {'default_wood.png'}, "default:wood" )
|
||||
gates_long.register_gate( 'junglewood','junglewood',{'default_junglewood.png'}, "default:junglewood" )
|
||||
gates_long.register_gate( 'pine', 'pine', {'default_pine_wood.png'}, "default:pine_wood" )
|
||||
gates_long.register_gate( 'acacia', 'acacia', {'default_acacia_wood.png'}, "default:acacia_wood" )
|
||||
gates_long.register_gate( 'tree', 'tree', {'default_tree.png^[transformR90'}, "default:tree" )
|
||||
5
mod.conf
Normal file
5
mod.conf
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
release = 399
|
||||
author = Sokomine
|
||||
name = gates_long
|
||||
description = Wide gates for easy walking through and keeping cattle inside
|
||||
title = Gates (wider)
|
||||
Loading…
Add table
Add a link
Reference in a new issue