Actualiser init.lua

This commit is contained in:
neocraft1293 2024-07-07 09:19:45 +00:00
parent 17fcecc54d
commit dd089f2c81

125
init.lua
View File

@ -10,6 +10,71 @@ local events = {}
local events_backup = {}
-- Fonction pour vérifier si la base de données n'est pas corrompue
function blockwatch.check_database_integrity()
local json_file, err = io.open(events_json_file_path, "r")
if not json_file then
return false, "[blockwatch] Erreur d'ouverture du fichier: " .. (err or "inconnue")
end
local content = json_file:read("*all")
json_file:close()
if not content or content == "" then
--apelle la fonction pour sauvegarder et vidée la base de données
blockwatch.recovery_data()
return false, "[blockwatch] Le fichier de la base de données est vide ou non lisible. la base de données est corrompuee et va etre sauvegardée et vidée."
end
local success, data = pcall(minetest.deserialize, content)
if not success then
--apelle la fonction pour sauvegarder et vidée la base de données
blockwatch.recovery_data()
return false, "[blockwatch] Erreur de désérialisation du contenu de la base de données. la base de données est corrompuee et va etre sauvegardée et vidée."
end
if type(data) ~= "table" then
--apelle la fonction pour sauvegarder et vidée la base de données
blockwatch.recovery_data()
return false, "[blockwatch] Le contenu désérialisé de la base de données n'est pas du type attendu. la base de données est corrompuee et va etre sauvegardée et vidée."
end
return true, "[blockwatch] La base de données est intègre."
end
-- Commande pour vérifier l'intégrité de la base de données
minetest.register_chatcommand("blockwatch_check_db", {
privs = {blockwatch_perm},
description = S("Vérifie si la base de données n'est pas corrompue."),
func = function(name, param)
local success, message = blockwatch.check_database_integrity()
return success, message
end,
})
-- au demarage de minetest vérifie si la base de données est corrompue
minetest.register_on_mods_loaded(function()
local success, message = blockwatch.check_database_integrity()
--si la base a ete corrompue alors envoie un message dans les logs
if not success then
minetest.log("error", message)
else
minetest.log("action", message)
blockwatch.load_events_database()
end
minetest.log("action", message)
end)
--fonction pour supprimer les bases de données actuelles et la met dans blockwatch_recovery_data.json
function blockwatch.recovery_data()
-- renome le fichier de la base de donner en blockwatch_recovery_data.json
@ -294,10 +359,6 @@ minetest.register_chatcommand("reload_events", {
end,
})
-- Enregistrez la fonction de chargement de la base de données au démarrage
minetest.register_on_mods_loaded(function()
blockwatch.load_events_database()
end)
-- commande pour rechercher les event en fonction des filtre choisi
@ -623,59 +684,3 @@ minetest.register_craftitem("blockwatch:block_data_checker_backup", {
inventory_image = "blockwatch_backup.png",
on_use = check_block_data_item_backup,
})