Update init.lua
This commit is contained in:
parent
33505b8b73
commit
2154bfdcf7
95
init.lua
95
init.lua
@ -1,11 +1,6 @@
|
||||
-- [Modname]/init.lua
|
||||
|
||||
-- Chemin vers le fichier JSON pour les événements
|
||||
local events_json_file_path = minetest.get_worldpath() .. "/eventsbw.json"
|
||||
|
||||
-- Chemin vers le fichier JSON pour les données sur le bloc pointé
|
||||
local blockwatch_data_json_file_path = minetest.get_worldpath() .. "/blockwatch_data.json"
|
||||
|
||||
-- Initialiser la variable events en dehors de load_database
|
||||
local events = {}
|
||||
|
||||
@ -34,21 +29,24 @@ local function save_events()
|
||||
end
|
||||
end
|
||||
|
||||
-- Fonction pour charger les données sur le bloc pointé depuis la base de données
|
||||
-- Charge les données depuis le fichier JSON
|
||||
local function load_blockwatch_data()
|
||||
local json_file = io.open(blockwatch_data_json_file_path, "r")
|
||||
if json_file then
|
||||
local data = minetest.deserialize(json_file:read("*all"))
|
||||
json_file:close()
|
||||
return data or {}
|
||||
else
|
||||
minetest.log("action", "[Modname] Chargement des données depuis le fichier JSON : " .. events_json_file_path)
|
||||
local file = io.open(events_json_file_path, "r")
|
||||
|
||||
if not file then
|
||||
minetest.log("action", "[Modname] Le fichier JSON n'existe pas.")
|
||||
return {}
|
||||
end
|
||||
|
||||
local data = minetest.deserialize(file:read("*a"))
|
||||
io.close(file)
|
||||
return data or {}
|
||||
end
|
||||
|
||||
-- Fonction pour sauvegarder les données sur le bloc pointé dans le fichier JSON
|
||||
local function save_blockwatch_data(data)
|
||||
local json_file = io.open(blockwatch_data_json_file_path, "w")
|
||||
local json_file = io.open(events_json_file_path, "w")
|
||||
if json_file then
|
||||
json_file:write(minetest.serialize(data))
|
||||
json_file:close()
|
||||
@ -74,7 +72,7 @@ local function log_event(pos, event_type, entity, node_name)
|
||||
save_events()
|
||||
end
|
||||
|
||||
-- enregistrez un événement lorsque le joueur casse ou place un bloc
|
||||
-- Exemple d'utilisation : enregistrez un événement lorsque le joueur casse ou place un bloc
|
||||
minetest.register_on_dignode(function(pos, oldnode, digger)
|
||||
if digger then
|
||||
local node_name = oldnode.name
|
||||
@ -89,34 +87,7 @@ minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack
|
||||
end
|
||||
end)
|
||||
|
||||
-- enregistrez un événement lorsque le joueur utilise l'outil d'information sur le bloc pointé
|
||||
minetest.register_craftitem("blockwatch:selected_block_info_tool", {
|
||||
description = "Outil d'information sur le bloc pointé",
|
||||
inventory_image = "blockwatch_selected_block_info_tool.png", -- Assurez-vous d'avoir une image valide
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if pointed_thing and pointed_thing.under then
|
||||
local player_name = user:get_player_name()
|
||||
local pos = pointed_thing.under
|
||||
|
||||
-- Charger les données depuis la base de données
|
||||
local blockwatch_data = load_blockwatch_data()
|
||||
|
||||
-- Vérifier si des données existent pour la position
|
||||
if blockwatch_data[player_name] and blockwatch_data[player_name][pos] then
|
||||
local block_data = blockwatch_data[player_name][pos]
|
||||
|
||||
-- Envoyer les informations au joueur
|
||||
minetest.chat_send_player(player_name, "Données récupérées pour le bloc à " .. minetest.pos_to_string(pos) ..
|
||||
": " .. minetest.write_json(block_data))
|
||||
else
|
||||
minetest.chat_send_player(player_name, "Aucune donnée trouvée pour le bloc à " .. minetest.pos_to_string(pos))
|
||||
end
|
||||
|
||||
-- Enregistrez les données mises à jour dans le fichier
|
||||
save_blockwatch_data(blockwatch_data)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- Fonction pour vérifier si la base de données des événements est chargée
|
||||
local function check_events_database()
|
||||
@ -147,3 +118,45 @@ minetest.register_chatcommand("check_events_database", {
|
||||
|
||||
-- Appeler la fonction load_events_database lors du chargement des mods
|
||||
minetest.register_on_mods_loaded(load_events_database)
|
||||
|
||||
-- Commande pour vérifier les données d'un bloc
|
||||
minetest.register_chatcommand("check_block_data", {
|
||||
description = "Vérifie les données d'un bloc spécifique.",
|
||||
params = "<x> <y> <z>",
|
||||
func = function(name, param)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
|
||||
if not player then
|
||||
return false, "Le joueur n'est pas trouvé."
|
||||
end
|
||||
|
||||
local x, y, z = param:match("(%S+)%s+(%S+)%s+(%S+)")
|
||||
if not x or not y or not z then
|
||||
return false, "Veuillez spécifier les coordonnées du bloc (ex. /check_block_data 10 20 30)."
|
||||
end
|
||||
|
||||
x, y, z = tonumber(x), tonumber(y), tonumber(z)
|
||||
|
||||
if not x or not y or not z then
|
||||
return false, "Les coordonnées du bloc ne sont pas valides."
|
||||
end
|
||||
|
||||
local pos = {x = x, y = y, z = z}
|
||||
local key = minetest.pos_to_string(pos)
|
||||
|
||||
local blockwatch_data = load_blockwatch_data()
|
||||
|
||||
if not next(blockwatch_data) then
|
||||
return false, "La base de données est vide."
|
||||
end
|
||||
|
||||
if blockwatch_data[key] and #blockwatch_data[key] > 0 then
|
||||
local json_data = minetest.write_json(blockwatch_data[key])
|
||||
minetest.chat_send_player(name, "Données du bloc à " .. minetest.pos_to_string(pos) .. " : " .. json_data)
|
||||
else
|
||||
minetest.chat_send_player(name, "Aucune donnée trouvée pour le bloc à " .. minetest.pos_to_string(pos))
|
||||
end
|
||||
|
||||
return true, "Vérification des données du bloc effectuée."
|
||||
end,
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user