Skip to content

Commit

Permalink
fix #46
Browse files Browse the repository at this point in the history
  • Loading branch information
BuckarooBanzay authored and BuckarooBanzay committed Jan 31, 2020
1 parent b37d9bb commit f7743c6
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 3 deletions.
3 changes: 2 additions & 1 deletion .luacheckrc
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,6 @@ read_globals = {
"areas",
"ropes",
"sethome",
"drawers"
"drawers",
"player_monoids"
}
2 changes: 1 addition & 1 deletion mod.conf
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
name = jumpdrive
optional_depends = mesecons, travelnet, telemosaic, elevator, vacuum, locator, areas, protector, digilines, display_api, pipeworks, monitoring, beds, ropes, sethome, default, technic, drawers, textline
optional_depends = mesecons, travelnet, telemosaic, elevator, vacuum, locator, areas, protector, digilines, display_api, pipeworks, monitoring, beds, ropes, sethome, default, technic, drawers, textline, player_monoids
20 changes: 19 additions & 1 deletion move.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@


local use_player_monoids = minetest.global_exists("player_monoids")
local c_air = minetest.get_content_id("air")


Expand Down Expand Up @@ -99,13 +99,31 @@ jumpdrive.move = function(source_pos1, source_pos2, target_pos1, target_pos2)
-- move players
for _,player in ipairs(minetest.get_connected_players()) do
local playerPos = player:get_pos()
local player_name = player:get_player_name()

local xMatch = playerPos.x >= (source_pos1.x-0.5) and playerPos.x <= (source_pos2.x+0.5)
local yMatch = playerPos.y >= (source_pos1.y-0.5) and playerPos.y <= (source_pos2.y+0.5)
local zMatch = playerPos.z >= (source_pos1.z-0.5) and playerPos.z <= (source_pos2.z+0.5)

if xMatch and yMatch and zMatch and player:is_player() then
minetest.log("action", "[jumpdrive] moving player: " .. player:get_player_name())

-- override gravity if "player_monoids" is available
-- *should* execute before the player get moved
-- to prevent falling through not yet loaded blocks
if use_player_monoids then
-- modify gravity
player_monoids.gravity:add_change(player, 0.01, "jumpdrive:gravity")

minetest.after(3.0, function()
-- restore gravity
local player_deferred = minetest.get_player_by_name(player_name)
if player_deferred then
player_monoids.gravity:del_change(player_deferred, "jumpdrive:gravity")
end
end)
end

local new_player_pos = vector.add(playerPos, delta_vector)
player:set_pos( new_player_pos );

Expand Down

0 comments on commit f7743c6

Please sign in to comment.