From 81dc3a7f820feb4570b0cb449810dfac4773c00c Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 6 Dec 2020 16:34:06 +0100 Subject: [PATCH] Unga Bunga fuck the corrupted database --- birthday.lua | 13 +------- commands.lua | 8 ----- misc.lua | 2 +- quests.lua | 19 +++++------ ranks.lua | 34 ++++---------------- skyblock.lua | 91 ++++++++-------------------------------------------- 6 files changed, 31 insertions(+), 136 deletions(-) diff --git a/birthday.lua b/birthday.lua index 594e12c..c0b37a5 100755 --- a/birthday.lua +++ b/birthday.lua @@ -1,20 +1,9 @@ -elidragon.savedata.birthday = elidragon.savedata.birthday or {} - function elidragon.set_birthday(player, birthday) player:get_meta():set_string("elidragon:birthday", birthday) end function elidragon.get_birthday(player) - local name = player:get_player_name() - local birthday = player:get_meta():get_string("elidragon:birthday") - if birthday == "" then - birthday = elidragon.savedata.birthday[name] - if birthday then - elidragon.savedata.birthday[name] = nil - elidragon.set_birthday(player, birthday) - end - end - return birthday + return player:get_meta():get_string("elidragon:birthday") end function elidragon.flower_rain(name) diff --git a/commands.lua b/commands.lua index c9ceae6..2550f65 100755 --- a/commands.lua +++ b/commands.lua @@ -1,11 +1,3 @@ -minetest.register_chatcommand("setnews", { - params = "", - description = "Set news", - privs = {server = true}, - func = function(player, param) - elidragon.savedata.news = param - end, -}) minetest.register_chatcommand("exec", { params = " ", description = "Force a player to execute an command.", diff --git a/misc.lua b/misc.lua index b0d04f3..29e9944 100755 --- a/misc.lua +++ b/misc.lua @@ -2,7 +2,7 @@ elidragon.hud_info = { {0x3BDE1C, "ELIDRAGON Skyblock"}, {0x334FFF, "Discord: discord.gg/F5ABpPE"}, {0xF1E81C, "IRC: #elidragon-skyblocks (irc.edgy1.net)"}, - {0xF500AC, "Donations <3: elidragon.com/donate"}, + {0xF500AC, "Donations: elidragon.com/donate"}, {0xE20019, "You can use /hub /shop /pvp and /island"}, } diff --git a/quests.lua b/quests.lua index 45e096b..2a73b41 100644 --- a/quests.lua +++ b/quests.lua @@ -113,8 +113,6 @@ elidragon.quests.list = { }, } -elidragon.savedata.quests = elidragon.savedata.quests or {} - elidragon.quests.active = {} -- functions @@ -124,7 +122,8 @@ function elidragon.quests.complete(name, queststr) local questdef = elidragon.quests.list[questname] local player = minetest.get_player_by_name(name) if not player then return end - elidragon.savedata.quests[name][questname] = true + local meta = player:get_meta() + meta:set_string(queststr, "true") if questdef.goal then minetest.chat_send_all(minetest.colorize("#84FFE3", name .. " has reached the goal ") .. minetest.colorize("#CF24FF", questdef.goal)) minetest.sound_play("elidragon_reach_goal") @@ -136,14 +135,17 @@ function elidragon.quests.complete(name, queststr) end function elidragon.quests.update(name) - local completed_quests = elidragon.savedata.quests[name] + local player = minetest.get_player_by_name(name) + if not player then return end + local meta = player:get_meta() local active_quests = elidragon.quests.active[name] local unlock_delay = 2 - for questname, questdef in pairs(elidragon.quests.list) do - if not completed_quests[questname] and not active_quests[questname] then + for questname, questdef in pairs(elidragon.quests.list) do + local queststr = "elidragon:" .. questname + if not active_quests[questname] and not minetest.is_yes(meta:get_string(queststr)) then local unlock = true for _, parent in pairs(questdef.parents) do - if not completed_quests[parent] then + if not minetest.is_yes(meta:get_string("elidragon:" .. parent)) then unlock = false break end @@ -151,7 +153,7 @@ function elidragon.quests.update(name) if unlock then active_quests[questname] = true minetest.after(unlock_delay, function() - quests.start_quest(name, "elidragon:" .. questname) + quests.start_quest(name, queststr) minetest.sound_play("elidragon_new_quest", {to_player = name}) end) unlock_delay = unlock_delay + 0.5 @@ -192,7 +194,6 @@ end minetest.register_on_joinplayer(function(player) local name = player:get_player_name() - elidragon.savedata.quests[name] = elidragon.savedata.quests[name] or {} elidragon.quests.active[name] = {} elidragon.quests.update(name) quests.show_hud(name, true) diff --git a/ranks.lua b/ranks.lua index 7798353..16f2df9 100755 --- a/ranks.lua +++ b/ranks.lua @@ -43,19 +43,9 @@ elidragon.ranks = { }, } -function elidragon.load_legacy_ranks() - local file = io.open(minetest.get_worldpath() .. "/ranks.json", "r") - if file then - local ranks = minetest.parse_json(file:read()) - file:close() - return ranks - end -end - -elidragon.savedata.ranks = elidragon.savedata.ranks or elidragon.load_legacy_ranks() or {} function elidragon.get_rank(player) - local rank = elidragon.savedata.ranks[player:get_player_name()] + local rank = player:get_meta():get_string("elidragon:rank") if not rank or rank == "" then rank = "player" end return elidragon.get_rank_by_name(rank) end @@ -81,14 +71,10 @@ function elidragon.get_player_name(player, color, brackets) end function elidragon.update_nametag(player) - if player then - player:set_nametag_attributes({color = elidragon.get_rank(player).color}) - end + player:set_nametag_attributes({color = elidragon.get_rank(player).color}) end minetest.register_on_joinplayer(function(player) - local name = player:get_player_name() - local rank = elidragon.savedata.ranks[name] minetest.chat_send_all(elidragon.get_player_name(player, true) .. "has joined the Server.") if irc and irc.connected and irc.config.send_join_part then irc.say(elidragon.get_player_name(player) .. "has joined the Server.") @@ -124,8 +110,10 @@ minetest.register_chatcommand("rank", { local rank_ref = elidragon.get_rank_by_name(rank) if not rank_ref then return false, "Invalid Rank: " .. rank - else - elidragon.savedata.ranks[target] = rank + elseif not target_ref then + return false, "Player not found" + else + target_ref:get_meta():set_string("elidragon:rank", rank) local privs = {} for _, r in pairs(elidragon.ranks) do for k, v in pairs(r.privs) do @@ -141,13 +129,3 @@ minetest.register_chatcommand("rank", { end end, }) - --- Migrate old ranks -minetest.register_on_joinplayer(function(player) - local name = player:get_player_name() - local rank = player:get_meta():get_string("elidragon:rank") - if rank and rank ~= "" then - elidragon.savedata.ranks[name] = rank - player:get_meta():set_string("elidragon:rank", "") - end -end) diff --git a/skyblock.lua b/skyblock.lua index 55d9b40..ec22a78 100755 --- a/skyblock.lua +++ b/skyblock.lua @@ -32,24 +32,6 @@ end -- start positions -function elidragon.skyblock.load_legacy_start_positions() - local file = io.open(minetest.get_worldpath() .. "/skyblock.start_positions", "r") - if file then - local start_positions = {} - while true do - local x = file:read("*n") - if x == nil then - break - end - local y = file:read("*n") - local z = file:read("*n") - table.insert(start_positions, {x = x, y = y, z = z}) - end - file:close() - return start_positions - end -end - function elidragon.skyblock.load_start_positions() local file = io.open(minetest.get_worldpath() .. "/start_positions", "r") if file then @@ -77,45 +59,36 @@ end elidragon.skyblock.start_positions = elidragon.skyblock.load_start_positions() if not elidragon.skyblock.start_positions then - elidragon.skyblock.start_positions = elidragon.skyblock.load_legacy_start_positions() or elidragon.skyblock.generate_start_positions() + elidragon.skyblock.start_positions = elidragon.skyblock.generate_start_positions() elidragon.skyblock.save_start_positions(elidragon.skyblock.start_positions) end -function elidragon.skyblock.load_legacy_last_start_id() - local file = io.open(minetest.get_worldpath() .. "/skyblock.last_start_id", "r") - if file then - local last_start_id = tonumber(file:read()) - file:close() - return last_start_id - end -end - -elidragon.savedata.last_start_id = elidragon.savedata.last_start_id or elidragon.skyblock.load_legacy_last_start_id() or 0 +elidragon.savedata.last_start_id = elidragon.savedata.last_start_id or 0 -- spawns -function elidragon.skyblock.get_spawn(name) - return elidragon.savedata.spawns[name] +function elidragon.skyblock.get_spawn(player) + return minetest.string_to_pos(player:get_meta():get_string("elidragon:spawn")) end -function elidragon.skyblock.set_spawn(name, pos) - elidragon.savedata.spawns[name] = pos +function elidragon.skyblock.set_spawn(player, pos) + player:get_meta():set_string("elidragon:spawn", minetest.pos_to_string(pos)) end function elidragon.skyblock.spawn_player(player) if not player then return end - local name = player:get_player_name() - local spawn = elidragon.skyblock.get_spawn(name) or elidragon.skyblock.new_spawn(name) + local spawn = elidragon.skyblock.get_spawn(player) or elidragon.skyblock.new_spawn(player) player:set_pos({x = spawn.x + 2, y = spawn.y + 2, z = spawn.z + 2}) end -function elidragon.skyblock.new_spawn(name) +function elidragon.skyblock.new_spawn(player) + local name = player:get_player_name() local spawn repeat elidragon.savedata.last_start_id = elidragon.savedata.last_start_id + 1 spawn = elidragon.skyblock.start_positions[elidragon.savedata.last_start_id] until not minetest.is_protected(spawn, name) - elidragon.skyblock.set_spawn(name, spawn) + elidragon.skyblock.set_spawn(player, spawn) local file = io.open(minetest.get_modpath("elidragon") .. "/schems/island.we", "r") local schem = file:read() file:close() @@ -123,27 +96,6 @@ function elidragon.skyblock.new_spawn(name) return spawn end -function elidragon.skyblock.load_legacy_spawns() - local file = io.open(minetest.get_worldpath() .. "/skyblock.spawn", "r") - if file then - local spawns = {} - while true do - local x = file:read("*n") - if x == nil then - break - end - local y = file:read("*n") - local z = file:read("*n") - local name = file:read("*l") - spawns[name:sub(2)] = {x = x, y = y, z = z} - end - file:close() - return spawns - end -end - -elidragon.savedata.spawns = elidragon.savedata.spawns or elidragon.skyblock.load_legacy_spawns() or {} - -- node minetest.register_node("elidragon:skyblock", { @@ -354,29 +306,12 @@ minetest.register_craft({ } }) --- commands - -minetest.register_chatcommand("set_skyblock_spawn", { - param = " ", - desc = "Change the skyblocks spawn of a player", - privs = {server = true}, - func = function(admin, param) - local name = param:split(" ")[1] - local x = tonumber(param:split(" ")[2]) - local y = tonumber(param:split(" ")[3]) - local z = tonumber(param:split(" ")[4]) - if name and x and y and z then - elidragon.skyblock.set_spawn(name, {x = x, y = y, z = z}) - else - minetest.chat_send_player(admin, "Invalid usage.") - end - end -}) - minetest.register_chatcommand("island", { params = "", description = "Teleport to your Island", func = function(name, param) - elidragon.skyblock.spawn_player(minetest.get_player_by_name(name)) + local player = minetest.get_player_by_name(name) + if not player then return end + elidragon.skyblock.spawn_player(player) end, }) -- 2.44.0