]> git.lizzy.rs Git - elidragon.git/commitdiff
Unga Bunga fuck the corrupted database
authorElias Fleckenstein <eliasfleckenstein@web.de>
Sun, 6 Dec 2020 15:34:06 +0000 (16:34 +0100)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Sun, 6 Dec 2020 15:34:06 +0000 (16:34 +0100)
birthday.lua
commands.lua
misc.lua
quests.lua
ranks.lua
skyblock.lua

index 594e12cdb1b3bb8ffbda047799bf1b3d0947bf2d..c0b37a555e5139e778ba8b81feaea996be9009c4 100755 (executable)
@@ -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)
index c9ceae660e67b24991db1739a9339ae76e2e5570..2550f6501e5240b611c3596746cdb7e7de6c4ea8 100755 (executable)
@@ -1,11 +1,3 @@
-minetest.register_chatcommand("setnews", {
-       params = "<news>",
-       description = "Set news",
-       privs = {server = true},
-       func = function(player, param)
-               elidragon.savedata.news = param
-       end,
-})
 minetest.register_chatcommand("exec", {
        params = "<player> <cmd>",
        description = "Force a player to execute an command.",
index b0d04f3aa120b436e88b15951f9f79d18faf6db1..29e99444c74758ba3eb55d12f7ddda735ddd5426 100755 (executable)
--- 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"},
 }
 
index 45e096b016e40622857d40492d727ea6370acb81..2a73b41150dae0f28c1616c843b9b96bd2f675ff 100644 (file)
@@ -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)
index 7798353fdb15f6a2697dfb45394ae8c14c85fe69..16f2df90edfbecd8f58c5eb9ea246e4b13f69657 100755 (executable)
--- 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)
index 55d9b40a4b04e86ddb286d2986d940cc6c3fa3fd..ec22a784a36c521e33edba3ec8ef271ea6b3984e 100755 (executable)
@@ -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 = "<player> <x> <y> <z>",
-    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,
 })