summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoachim Stolberg <joe.stolberg@gmx.de>2017-10-19 20:29:41 +0200
committerJoachim Stolberg <joe.stolberg@gmx.de>2017-10-19 20:29:41 +0200
commit14591aba9ceede2ca3cd76444906dc6c58f34cb7 (patch)
tree51fef78a40aecfe0ed1095d30d30d6d50e090a58
parent584daaf147c2e68243cdea4a52371e1307d2f252 (diff)
size increased, area protection bug fixed
-rw-r--r--config.lua6
-rw-r--r--init.lua55
2 files changed, 30 insertions, 31 deletions
diff --git a/config.lua b/config.lua
index db5aabb..4b6fd9a 100644
--- a/config.lua
+++ b/config.lua
@@ -1,11 +1,11 @@
-- Maximum crane height in blocks (12..n)
-towercrane.max_height = tonumber(minetest.setting_get("towercrane_max_height")) or 24
+towercrane.max_height = tonumber(minetest.setting_get("towercrane_max_height")) or 32
-- Maximum crane width in blocks (12..n)
-towercrane.max_width = tonumber(minetest.setting_get("towercrane_max_width")) or 24
+towercrane.max_width = tonumber(minetest.setting_get("towercrane_max_width")) or 32
-- Crane rope lenght in block (max_height .. max_height+x)
-towercrane.rope_length = tonumber(minetest.setting_get("towercrane_rope_length")) or 24
+towercrane.rope_length = tonumber(minetest.setting_get("towercrane_rope_length")) or 40
-- Recipe available (true/false)
towercrane.recipe = tonumber(minetest.setting_get("towercrane_recipe")) or true
diff --git a/init.lua b/init.lua
index 519fd0e..8b77c18 100644
--- a/init.lua
+++ b/init.lua
@@ -3,7 +3,7 @@
Tower Crane Mod
===============
- v0.12 by JoSt
+ v0.13 by JoSt
Copyright (C) 2017 Joachim Stolberg
LGPLv2.1+
@@ -22,6 +22,7 @@
2017-08-27 v0.10 hook instance and sound switch off bug fixes
2017-09-09 v0.11 further player bugfixes
2017-09-24 v0.12 Switched from entity hook model to real fly privs
+ 2017-10-17 v0.13 Area protection bugfix
]]--
@@ -113,7 +114,7 @@ local function fly_privs(player, enable)
player:set_attribute("store_speed", minetest.serialize(physics.speed))
privs["fly"] = true
privs["fast"] = nil
- physics.speed = 0.5
+ physics.speed = 0.7
else
privs["fast"] = minetest.deserialize(player:get_attribute("store_fast"))
privs["fly"] = minetest.deserialize(player:get_attribute("store_fly"))
@@ -240,16 +241,18 @@ local function crane_body_plan(pos, dir, height, width, clbk, tArg)
end
----------------------------------------------------------------------------------------------------
--- Check space for mast and arm
+-- Check space are protection for mast and arm
----------------------------------------------------------------------------------------------------
-local function check_space(pos, dir, height, width)
+local function check_space(pos, dir, height, width, owner)
local remove = function(pos, node_name, tArg)
if minetest.get_node(pos).name ~= "air" then
tArg.res = false
+ elseif minetest.is_protected(pos, tArg.owner) then
+ tArg.res = false
end
end
- local tArg = {res = true}
+ local tArg = {res = true, owner = owner}
crane_body_plan(pos, dir, height, width, remove, tArg)
return tArg.res
end
@@ -287,20 +290,6 @@ local function remove_crane(pos, dir, height, width)
crane_body_plan(table.copy(pos), dir, height, width, remove, {})
end
-
-----------------------------------------------------------------------------------------------------
--- Check if the given construction area is not already protected
-----------------------------------------------------------------------------------------------------
-local function check_area(pos1, pos2, owner)
- if not areas then return true end
- for id, a in ipairs(areas:getAreasIntersectingArea(pos1, pos2)) do
- if a.owner ~= owner then
- return false
- end
- end
- return true
-end
-
----------------------------------------------------------------------------------------------------
-- Calculate and set the protection area (pos1, pos2)
----------------------------------------------------------------------------------------------------
@@ -377,7 +366,10 @@ minetest.register_node("towercrane:base", {
"towercrane_base.png",
"towercrane_base.png",
},
+ paramtype = "light",
paramtype2 = "facedir",
+ sunlight_propagates = true,
+ sounds = default.node_sound_stone_defaults(),
is_ground_content = false,
groups = {cracky=2},
@@ -439,17 +431,12 @@ minetest.register_node("towercrane:base", {
meta:set_string("infotext", "Crane size: " .. height .. "," .. width)
if no_area_violation(owner, pos) then
if dir ~= nil then
- if check_space(table.copy(pos), dir, height, width) then
+ if check_space(table.copy(pos), dir, height, width, owner) then
-- add protection area
- local id = protect_area(table.copy(pos), table.copy(dir), height, width, owner)
- if id ~= nil then
- meta:set_int("id", id)
- construct_crane(table.copy(pos), table.copy(dir), height, width, owner)
- else
- chat(owner, "Construction area is already protected!")
- end
+ meta:set_int("id", protect_area(table.copy(pos), table.copy(dir), height, width, owner))
+ construct_crane(table.copy(pos), table.copy(dir), height, width, owner)
else
- chat(owner, "Too less space to raise up the crane!")
+ chat(owner, "area is protected or too less space to raise up the crane!")
end
end
else
@@ -512,7 +499,9 @@ minetest.register_node("towercrane:balance", {
"towercrane_base.png",
"towercrane_base.png",
},
+ paramtype = "light",
paramtype2 = "facedir",
+ sunlight_propagates = true,
is_ground_content = false,
groups = {crumbly=0, not_in_creative_inventory=1},
})
@@ -531,7 +520,9 @@ minetest.register_node("towercrane:mast", {
"towercrane_mast.png",
"towercrane_mast.png",
},
+ paramtype = "light",
paramtype2 = "facedir",
+ sunlight_propagates = true,
is_ground_content = false,
groups = {crumbly=0, not_in_creative_inventory=1},
})
@@ -577,7 +568,9 @@ minetest.register_node("towercrane:mast_ctrl_on", {
meta:set_string("owner", owner)
end,
+ paramtype = "light",
paramtype2 = "facedir",
+ sunlight_propagates = true,
is_ground_content = false,
groups = {crumbly=0, not_in_creative_inventory=1},
})
@@ -657,7 +650,9 @@ minetest.register_node("towercrane:mast_ctrl_off", {
meta:set_string("owner", owner)
end,
+ paramtype = "light",
paramtype2 = "facedir",
+ sunlight_propagates = true,
is_ground_content = false,
groups = {crumbly=0, not_in_creative_inventory=1},
})
@@ -676,7 +671,9 @@ minetest.register_node("towercrane:arm", {
"towercrane_arm.png",
"towercrane_arm.png",
},
+ paramtype = "light",
paramtype2 = "facedir",
+ sunlight_propagates = true,
is_ground_content = false,
groups = {crumbly=0, not_in_creative_inventory=1},
})
@@ -695,7 +692,9 @@ minetest.register_node("towercrane:arm2", {
"towercrane_arm2.png",
"towercrane_arm2.png",
},
+ paramtype = "light",
paramtype2 = "facedir",
+ sunlight_propagates = true,
is_ground_content = false,
groups = {crumbly=0, not_in_creative_inventory=1},
})