forked from minetest/minetest_game
Add option for non-jumpable fences and walls
Add an option, default disabled, to extend the collision boxes upwards.
This commit is contained in:
parent
1f7ea89cb6
commit
c42a525ce8
@ -60,6 +60,9 @@ default:torch 99,default:cobble 99
|
|||||||
# Default value is true.
|
# Default value is true.
|
||||||
#enable_bed_night_skip = true
|
#enable_bed_night_skip = true
|
||||||
|
|
||||||
|
# If enabled, fences and walls cannot be jumped over.
|
||||||
|
#enable_fence_tall = false
|
||||||
|
|
||||||
# Whether the engine's spawn search, which does not check for a suitable
|
# Whether the engine's spawn search, which does not check for a suitable
|
||||||
# starting biome, is used.
|
# starting biome, is used.
|
||||||
# Default value is false.
|
# Default value is false.
|
||||||
|
@ -273,6 +273,7 @@ end
|
|||||||
--
|
--
|
||||||
-- Fence registration helper
|
-- Fence registration helper
|
||||||
--
|
--
|
||||||
|
local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0
|
||||||
|
|
||||||
function default.register_fence(name, def)
|
function default.register_fence(name, def)
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
@ -291,17 +292,27 @@ function default.register_fence(name, def)
|
|||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "connected",
|
type = "connected",
|
||||||
fixed = {{-1/8, -1/2, -1/8, 1/8, 1/2, 1/8}},
|
fixed = {-1/8, -1/2, -1/8, 1/8, 1/2, 1/8},
|
||||||
-- connect_top =
|
-- connect_top =
|
||||||
-- connect_bottom =
|
-- connect_bottom =
|
||||||
connect_front = {{-1/16,3/16,-1/2,1/16,5/16,-1/8},
|
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}},
|
{-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},
|
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}},
|
{-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},
|
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}},
|
{-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},
|
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}},
|
{ 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", "group:wall"},
|
connects_to = {"group:fence", "group:wood", "group:tree", "group:wall"},
|
||||||
inventory_image = fence_texture,
|
inventory_image = fence_texture,
|
||||||
@ -349,24 +360,28 @@ function default.register_fence_rail(name, def)
|
|||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "connected",
|
type = "connected",
|
||||||
fixed = {
|
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},
|
{-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_top =
|
||||||
-- connect_bottom =
|
-- connect_bottom =
|
||||||
connect_front = {
|
connect_front = {{-1/16, 3/16, -1/2, 1/16, 5/16, -1/16},
|
||||||
{-1/16, 3/16, -1/2, 1/16, 5/16, -1/16},
|
|
||||||
{-1/16, -5/16, -1/2, 1/16, -3/16, -1/16}},
|
{-1/16, -5/16, -1/2, 1/16, -3/16, -1/16}},
|
||||||
connect_left = {
|
connect_left = {{-1/2, 3/16, -1/16, -1/16, 5/16, 1/16},
|
||||||
{-1/2, 3/16, -1/16, -1/16, 5/16, 1/16},
|
|
||||||
{-1/2, -5/16, -1/16, -1/16, -3/16, 1/16}},
|
{-1/2, -5/16, -1/16, -1/16, -3/16, 1/16}},
|
||||||
connect_back = {
|
connect_back = {{-1/16, 3/16, 1/16, 1/16, 5/16, 1/2 },
|
||||||
{-1/16, 3/16, 1/16, 1/16, 5/16, 1/2},
|
{-1/16, -5/16, 1/16, 1/16, -3/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},
|
||||||
connect_right = {
|
{ 1/16, -5/16, -1/16, 1/2, -3/16, 1/16}}
|
||||||
{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"},
|
connects_to = {"group:fence", "group:wall"},
|
||||||
inventory_image = fence_rail_texture,
|
inventory_image = fence_rail_texture,
|
||||||
|
@ -725,6 +725,7 @@ minetest.register_craft({
|
|||||||
|
|
||||||
|
|
||||||
----fence gate----
|
----fence gate----
|
||||||
|
local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0
|
||||||
|
|
||||||
function doors.register_fencegate(name, def)
|
function doors.register_fencegate(name, def)
|
||||||
local fence = {
|
local fence = {
|
||||||
@ -748,7 +749,7 @@ function doors.register_fencegate(name, def)
|
|||||||
end,
|
end,
|
||||||
selection_box = {
|
selection_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4},
|
fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -774,7 +775,7 @@ function doors.register_fencegate(name, def)
|
|||||||
fence_closed.sound = "doors_fencegate_open"
|
fence_closed.sound = "doors_fencegate_open"
|
||||||
fence_closed.collision_box = {
|
fence_closed.collision_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4},
|
fixed = {-1/2, -1/2, -1/8, 1/2, 1/2 + fence_collision_extra, 1/8}
|
||||||
}
|
}
|
||||||
|
|
||||||
local fence_open = table.copy(fence)
|
local fence_open = table.copy(fence)
|
||||||
@ -784,8 +785,8 @@ function doors.register_fencegate(name, def)
|
|||||||
fence_open.groups.not_in_creative_inventory = 1
|
fence_open.groups.not_in_creative_inventory = 1
|
||||||
fence_open.collision_box = {
|
fence_open.collision_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {{-1/2, -1/2, -1/4, -3/8, 1/2, 1/4},
|
fixed = {{-1/2, -1/2, -1/8, -3/8, 1/2 + fence_collision_extra, 1/8},
|
||||||
{-1/2, -3/8, -1/2, -3/8, 3/8, 0}},
|
{-1/2, -3/8, -1/2, -3/8, 3/8, 0 }}
|
||||||
}
|
}
|
||||||
|
|
||||||
minetest.register_node(":" .. name .. "_closed", fence_closed)
|
minetest.register_node(":" .. name .. "_closed", fence_closed)
|
||||||
|
@ -2,10 +2,11 @@
|
|||||||
|
|
||||||
walls = {}
|
walls = {}
|
||||||
|
|
||||||
|
local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0
|
||||||
|
|
||||||
-- Load support for MT game translation.
|
-- Load support for MT game translation.
|
||||||
local S = minetest.get_translator("walls")
|
local S = minetest.get_translator("walls")
|
||||||
|
|
||||||
|
|
||||||
walls.register = function(wall_name, wall_desc, wall_texture_table, wall_mat, wall_sounds)
|
walls.register = function(wall_name, wall_desc, wall_texture_table, wall_mat, wall_sounds)
|
||||||
--make wall_texture_table paramenter backwards compatible for mods passing single texture
|
--make wall_texture_table paramenter backwards compatible for mods passing single texture
|
||||||
if type(wall_texture_table) ~= "table" then
|
if type(wall_texture_table) ~= "table" then
|
||||||
@ -17,12 +18,22 @@ walls.register = function(wall_name, wall_desc, wall_texture_table, wall_mat, wa
|
|||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "connected",
|
type = "connected",
|
||||||
fixed = {{-1/4, -1/2, -1/4, 1/4, 1/2, 1/4}},
|
fixed = {-1/4, -1/2, -1/4, 1/4, 1/2, 1/4},
|
||||||
-- connect_bottom =
|
-- connect_bottom =
|
||||||
connect_front = {{-3/16, -1/2, -1/2, 3/16, 3/8, -1/4}},
|
connect_front = {-3/16, -1/2, -1/2, 3/16, 3/8, -1/4},
|
||||||
connect_left = {{-1/2, -1/2, -3/16, -1/4, 3/8, 3/16}},
|
connect_left = {-1/2, -1/2, -3/16, -1/4, 3/8, 3/16},
|
||||||
connect_back = {{-3/16, -1/2, 1/4, 3/16, 3/8, 1/2}},
|
connect_back = {-3/16, -1/2, 1/4, 3/16, 3/8, 1/2},
|
||||||
connect_right = {{ 1/4, -1/2, -3/16, 1/2, 3/8, 3/16}},
|
connect_right = { 1/4, -1/2, -3/16, 1/2, 3/8, 3/16},
|
||||||
|
},
|
||||||
|
collision_box = {
|
||||||
|
type = "connected",
|
||||||
|
fixed = {-1/4, -1/2, -1/4, 1/4, 1/2 + fence_collision_extra, 1/4},
|
||||||
|
-- connect_top =
|
||||||
|
-- connect_bottom =
|
||||||
|
connect_front = {-1/4,-1/2,-1/2,1/4,1/2 + fence_collision_extra,-1/4},
|
||||||
|
connect_left = {-1/2,-1/2,-1/4,-1/4,1/2 + fence_collision_extra,1/4},
|
||||||
|
connect_back = {-1/4,-1/2,1/4,1/4,1/2 + fence_collision_extra,1/2},
|
||||||
|
connect_right = {1/4,-1/2,-1/4,1/2,1/2 + fence_collision_extra,1/4},
|
||||||
},
|
},
|
||||||
connects_to = { "group:wall", "group:stone", "group:fence" },
|
connects_to = { "group:wall", "group:stone", "group:fence" },
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
|
@ -32,6 +32,9 @@ enable_bed_respawn (Respawn at bed) bool true
|
|||||||
# in beds.
|
# in beds.
|
||||||
enable_bed_night_skip (Skip night when sleeping) bool true
|
enable_bed_night_skip (Skip night when sleeping) bool true
|
||||||
|
|
||||||
|
# If enabled, fences and walls cannot be jumped over.
|
||||||
|
enable_fence_tall (Tall fences and walls) bool false
|
||||||
|
|
||||||
# When TNT explodes, it destroys nearby nodes and damages nearby players.
|
# When TNT explodes, it destroys nearby nodes and damages nearby players.
|
||||||
# This setting is disabled by default on servers.
|
# This setting is disabled by default on servers.
|
||||||
enable_tnt (TNT) bool true
|
enable_tnt (TNT) bool true
|
||||||
|
Loading…
Reference in New Issue
Block a user