Removed legacy support for serialized positions in the maps metadata

master
Giov4 2021-03-02 00:22:56 +01:00
parent 79edaab56e
commit 5e045e9ca4
3 changed files with 8 additions and 39 deletions

View File

@ -257,7 +257,7 @@ function create_barrier_cage(player)
}
player:set_physics_override({gravity=0, jump=0})
player:add_player_velocity(vector.multiply(player:get_player_velocity(), -1))
player:add_velocity(vector.multiply(player:get_velocity(), -1))
for _, relative_pos in pairs(glass_nodes) do
local node_pos = vector.round(vector.add(original_pos, relative_pos))
@ -303,7 +303,7 @@ function keep_teleporting(player, pos, seconds, current_second)
if current_second > seconds then return end
minetest.after(step, function()
player:add_player_velocity(vector.multiply(player:get_player_velocity(), -1))
player:add_velocity(vector.multiply(player:get_velocity(), -1))
player:set_pos(pos)
keep_teleporting(player, pos, seconds, current_second + step)
end)

View File

@ -1,15 +1,14 @@
local function delete_drops() end
local function async_reset_map() end
local function reset_node_inventory() end
local on_step = minetest.registered_entities["__builtin:item"].on_step
minetest.registered_entities["__builtin:item"].match_id = -2
minetest.registered_entities["__builtin:item"].last_age = 0
local get_position_from_hash = minetest.get_position_from_hash
local hash_node_position = minetest.hash_node_position
local deserialize = minetest.deserialize
local add_node = minetest.add_node
local get_node = minetest.get_node
local get_inventory = minetest.get_inventory
local on_step = minetest.registered_entities["__builtin:item"].on_step
minetest.registered_entities["__builtin:item"].match_id = -2
minetest.registered_entities["__builtin:item"].last_age = 0
function skywars.reset_map(arena, debug, debug_data)

View File

@ -3,7 +3,7 @@ local get_inventory = minetest.get_inventory
local hash_node_position = minetest.hash_node_position
minetest.register_on_placenode(function(pos, newnode, player, oldnode, itemstack, pointed_thing)
minetest.register_on_placenode(function(pos, newnode, player, oldnode)
local pl_name = player:get_player_name()
local arena = arena_lib.get_arena_by_player(pl_name)
if arena_lib.get_mod_by_player(pl_name) ~= "skywars" then return end
@ -113,7 +113,7 @@ function save_node(arena, pos, node)
if not arena then return end
initialize_map_data(maps, arena)
-- If this block has not been changed yet then save it.
-- If this node has not been changed yet then save it.
if not maps[arena.name].changed_nodes[hash_pos] then
maps[arena.name].changed_nodes[hash_pos] = node
skywars.overwrite_table("maps", maps)
@ -127,34 +127,4 @@ function initialize_map_data(maps, arena)
if not maps[arena.name] then maps[arena.name] = {} end
if not maps[arena.name].changed_nodes then maps[arena.name].changed_nodes = {} end
if not maps[arena.name].always_to_be_reset_nodes then maps[arena.name].always_to_be_reset_nodes = {} end
end
--
-- ! LEGACY SUPPORT FOR SERIALIZED POSITIONS.
-- Converting all the serialized positions into
-- hashes.
--
local maps = skywars.load_table("maps")
for arena_name, map in pairs(maps) do
initialize_map_data(maps, {name = arena_name})
for pos, node in pairs(map.changed_nodes) do
if minetest.deserialize(pos) and pos then
local hash_pos = minetest.hash_node_position(minetest.deserialize(pos))
map.changed_nodes[pos] = nil
map.changed_nodes[hash_pos] = node
end
end
for pos, bool in pairs(map.always_to_be_reset_nodes) do
if minetest.deserialize(pos) and pos then
local hash_pos = minetest.hash_node_position(minetest.deserialize(pos))
map.always_to_be_reset_nodes[pos] = nil
map.always_to_be_reset_nodes[hash_pos] = bool
end
end
end
skywars.overwrite_table("maps", maps)
end