aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeha <shacknetisp@mail.com>2017-03-09 09:55:38 -0500
committerBeha <shacknetisp@mail.com>2017-03-09 09:55:38 -0500
commit09b26fd0bba9a93bdd40d08ab4bd7f64fe2280e9 (patch)
tree028d8a3909260b64a2f36eb91dcb525ee2a645e7
parent8671195ada71dacb579731d0351d955e1303aa84 (diff)
downloadelevator-09b26fd0bba9a93bdd40d08ab4bd7f64fe2280e9.tar.gz
elevator-09b26fd0bba9a93bdd40d08ab4bd7f64fe2280e9.tar.bz2
elevator-09b26fd0bba9a93bdd40d08ab4bd7f64fe2280e9.zip
failsafes
-rw-r--r--init.lua21
1 files changed, 19 insertions, 2 deletions
diff --git a/init.lua b/init.lua
index 5d7a1db..d08d18d 100644
--- a/init.lua
+++ b/init.lua
@@ -21,6 +21,19 @@ minetest.register_globalstep(function(dtime)
lastpp[p:get_player_name()] = pos
end
end
+ for motor,obj in pairs(boxes) do
+ local keep = false
+ local pos = obj:getpos()
+ for _,object in ipairs(minetest.get_objects_inside_radius(pos, 4)) do
+ if object.is_player and object:is_player() then
+ keep = true
+ break
+ end
+ end
+ if not keep then
+ boxes[motor] = false
+ end
+ end
end)
minetest.register_on_leaveplayer(function(player)
if lastpp[player:get_player_name()] and vector.distance(lastpp[player:get_player_name()], player:getpos()) < 20 then
@@ -137,14 +150,17 @@ local function unbuild(pos, add)
end
end
end
- minetest.after(0.01, function(p2)
+ minetest.after(0.01, function(p2, add)
+ if not p2 or not add then
+ return
+ end
p2.y = p2.y + add
local motorhash = locate_motor(p2)
build_motor(motorhash)
if boxes[motorhash] and p2.y >= boxes[motorhash]:getpos().y then
boxes[motorhash] = nil
end
- end, table.copy(pos))
+ end, table.copy(pos), add)
end
minetest.register_node("elevator:motor", {
@@ -552,6 +568,7 @@ local box_entity = {
if not boxes[self.motor] then
minetest.get_player_by_name(self.attached):set_eye_offset({x=0, y=0, z=0},{x=0, y=0, z=0})
self.object:remove()
+ boxes[self.motor] = nil
return
end
local pos = self.object:getpos()