Skip to content

Commit

Permalink
Fix travelnet removal issue and cleanup removal code (#58)
Browse files Browse the repository at this point in the history
  • Loading branch information
oversword committed Aug 21, 2022
1 parent 956d2ad commit 20e77d5
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 19 deletions.
7 changes: 6 additions & 1 deletion actions/transport_player.lua
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,12 @@ return function (node_info, fields, player)
}
}

travelnet.remove_box(target_pos, nil, oldmetadata, player)
local success, reason = travelnet.remove_box_action(oldmetadata)
if not success then
return false, reason
end

travelnet.remove_box_message(oldmetadata, player)
else
player:move_to(vector.add(target_pos, player_model_vec), false)
travelnet.rotate_player(target_pos, player)
Expand Down
45 changes: 27 additions & 18 deletions functions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -303,41 +303,50 @@ travelnet.rotate_player = function(target_pos, player)
end


travelnet.remove_box = function(_, _, oldmetadata, digger)
travelnet.remove_box_action = function(oldmetadata)
if not oldmetadata or oldmetadata == "nil" or not oldmetadata.fields then
minetest.chat_send_player(digger:get_player_name(), S("Error") .. ": " ..
S("Could not find information about the station that is to be removed."))
return
return false, S("Could not find information about the station that is to be removed.")
end

local owner_name = oldmetadata.fields["owner_name"]
local owner_name = oldmetadata.fields["owner"]
local station_name = oldmetadata.fields["station_name"]
local station_network = oldmetadata.fields["station_network"]

-- station is not known? then just remove it
if not (owner_name and station_network and station_name)
or not travelnet.get_station(owner_name, station_network, station_name)
then
minetest.chat_send_player(digger:get_player_name(), S("Error") .. ": " ..
S("Could not find the station that is to be removed."))
return
return false, S("Could not find the station that is to be removed.")
end

travelnet.targets[owner_name][station_network][station_name] = nil

-- inform the owner
minetest.chat_send_player(owner_name,
S("Station '@1'" .. " " ..
"has been REMOVED from the network '@2'.", station_name, station_network))
-- save the updated network data in a savefile over server restart
travelnet.save_data()

if digger and owner_name ~= digger:get_player_name() then
minetest.chat_send_player(digger:get_player_name(),
S("Station '@1'" .. " " ..
"has been REMOVED from the network '@2'.", station_name, station_network))
return true
end
travelnet.remove_box_message = function(oldmetadata, digger)
local removal_message = S(
"Station '@1'" .. " " .. "has been REMOVED from the network '@2'.",
oldmetadata.fields["station_name"],
oldmetadata.fields["station_network"]
)
local owner_name = oldmetadata.fields["owner"]
minetest.chat_send_player(owner_name, removal_message)
local digger_name = digger and digger:get_player_name()
if digger and owner_name ~= digger_name then
minetest.chat_send_player(digger_name, removal_message)
end
end
travelnet.remove_box = function(_, _, oldmetadata, digger)
local success, reason = travelnet.remove_box_action(oldmetadata)

-- save the updated network data in a savefile over server restart
travelnet.save_data()
if success then
travelnet.remove_box_message(oldmetadata, digger)
else
minetest.chat_send_player(digger:get_player_name(), S("Error") .. ": " ..reason)
end
end

-- privs of player are already checked by on_receive_fields before sending
Expand Down

0 comments on commit 20e77d5

Please sign in to comment.