From 36a3563cd606f188d334ec74408497158abaf118 Mon Sep 17 00:00:00 2001 From: FX Date: Wed, 11 Feb 2026 20:52:33 +0100 Subject: [PATCH 01/15] =?UTF-8?q?Ajout=C3=A9=20un=20message=20de=20d=C3=A9?= =?UTF-8?q?marrage=20au=20plugin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +++++- src/main/java/fr/revivemc/Main.java | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 3477929..ef67579 100644 --- a/pom.xml +++ b/pom.xml @@ -33,13 +33,17 @@ spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + sonatype + https://oss.sonatype.org/groups/public/ + org.spigotmc - spigot + spigot-api 1.8.8-R0.1-SNAPSHOT provided diff --git a/src/main/java/fr/revivemc/Main.java b/src/main/java/fr/revivemc/Main.java index 521e16b..ca5d868 100644 --- a/src/main/java/fr/revivemc/Main.java +++ b/src/main/java/fr/revivemc/Main.java @@ -5,7 +5,9 @@ public class Main extends JavaPlugin { @Override - public void onEnable() {} + public void onEnable() { + System.out.print("Le plugin a démarré avec succès"); + } @Override public void onDisable() {} From b9734bc1028e0b224314f4d6942ede84f5d053a3 Mon Sep 17 00:00:00 2001 From: FX Date: Wed, 11 Feb 2026 21:18:02 +0100 Subject: [PATCH 02/15] =?UTF-8?q?Ajout=C3=A9=20une=20commande?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/fr/revivemc/Main.java | 2 ++ .../fr/revivemc/commands/PlayeriaCom.java | 19 +++++++++++++++++++ src/main/resources/plugin.yml | 7 ++++++- 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/main/java/fr/revivemc/commands/PlayeriaCom.java diff --git a/src/main/java/fr/revivemc/Main.java b/src/main/java/fr/revivemc/Main.java index ca5d868..c948c0e 100644 --- a/src/main/java/fr/revivemc/Main.java +++ b/src/main/java/fr/revivemc/Main.java @@ -1,5 +1,6 @@ package fr.revivemc; +import fr.revivemc.commands.PlayeriaCom; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin { @@ -7,6 +8,7 @@ public class Main extends JavaPlugin { @Override public void onEnable() { System.out.print("Le plugin a démarré avec succès"); + getCommand("playeria").setExecutor(new PlayeriaCom()); } @Override diff --git a/src/main/java/fr/revivemc/commands/PlayeriaCom.java b/src/main/java/fr/revivemc/commands/PlayeriaCom.java new file mode 100644 index 0000000..c67cc14 --- /dev/null +++ b/src/main/java/fr/revivemc/commands/PlayeriaCom.java @@ -0,0 +1,19 @@ +package fr.revivemc.commands; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; + +public class PlayeriaCom implements CommandExecutor { + @Override + public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) { +// if (args[1].equals("help")) { +// commandSender.sendMessage("La liste des commandes disponibles : \n - help"); +// } +// else { +// commandSender.sendMessage("§4Mauvaise commande. \n Liste des commandes disponibles avec /playeria : \n - /playeria help"); +// } + commandSender.sendMessage("BRUH \n s"); + return false; + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 6606242..5b3dfe7 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,4 +1,9 @@ name: ReviveTechnicalTest version: '${project.version}' main: fr.revivemc.Main -author: ReviveMC \ No newline at end of file +author: ReviveMC + +commands : + playeria : + description : La commande principale de l'échosystème du plugin + permission : test.use \ No newline at end of file From d73cf37ec4239f1ba8ec58b6475b66e268e6319f Mon Sep 17 00:00:00 2001 From: FX Date: Tue, 17 Feb 2026 14:24:59 +0100 Subject: [PATCH 03/15] fix bug --- src/main/java/fr/revivemc/commands/PlayeriaCom.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/fr/revivemc/commands/PlayeriaCom.java b/src/main/java/fr/revivemc/commands/PlayeriaCom.java index c67cc14..1123142 100644 --- a/src/main/java/fr/revivemc/commands/PlayeriaCom.java +++ b/src/main/java/fr/revivemc/commands/PlayeriaCom.java @@ -7,12 +7,12 @@ public class PlayeriaCom implements CommandExecutor { @Override public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) { -// if (args[1].equals("help")) { -// commandSender.sendMessage("La liste des commandes disponibles : \n - help"); -// } -// else { -// commandSender.sendMessage("§4Mauvaise commande. \n Liste des commandes disponibles avec /playeria : \n - /playeria help"); -// } + if (args[0].equals("help")) { + commandSender.sendMessage("La liste des commandes disponibles : \n - help"); + } + else { + commandSender.sendMessage("§4Mauvaise commande. \n Liste des commandes disponibles avec /playeria : \n - /playeria help"); + } commandSender.sendMessage("BRUH \n s"); return false; } From 55a83aff7f6868039a7fd7db49bbf1d7e521b20c Mon Sep 17 00:00:00 2001 From: FX Date: Wed, 18 Feb 2026 14:26:38 +0100 Subject: [PATCH 04/15] =?UTF-8?q?Am=C3=A9lior=C3=A9=20la=20commande=20pour?= =?UTF-8?q?=20qu'il=20n'y=20ait=20plus=20d'erreur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/fr/revivemc/commands/PlayeriaCom.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/fr/revivemc/commands/PlayeriaCom.java b/src/main/java/fr/revivemc/commands/PlayeriaCom.java index c67cc14..335ecf3 100644 --- a/src/main/java/fr/revivemc/commands/PlayeriaCom.java +++ b/src/main/java/fr/revivemc/commands/PlayeriaCom.java @@ -7,13 +7,15 @@ public class PlayeriaCom implements CommandExecutor { @Override public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) { -// if (args[1].equals("help")) { -// commandSender.sendMessage("La liste des commandes disponibles : \n - help"); -// } -// else { -// commandSender.sendMessage("§4Mauvaise commande. \n Liste des commandes disponibles avec /playeria : \n - /playeria help"); -// } - commandSender.sendMessage("BRUH \n s"); + try { + if (args[0].equals("help")) { + commandSender.sendMessage("La liste des commandes disponibles : \n - help"); + } else { + commandSender.sendMessage("§4Mauvaise commande. \nListe des commandes disponibles avec /playeria : \n - /playeria help"); + } + } catch (Exception e){ + commandSender.sendMessage("§4Commande mal exécutée. \nFaite /playeria help pour plus d'info"); + } return false; } } From e17bcf1265907a0a0f376d81ff3cb6321d52915f Mon Sep 17 00:00:00 2001 From: FX Date: Wed, 18 Feb 2026 15:00:28 +0100 Subject: [PATCH 05/15] BreadListener --- src/main/java/fr/revivemc/Main.java | 2 ++ .../fr/revivemc/commands/BreadListener.java | 24 +++++++++++++++++++ .../fr/revivemc/commands/PlayeriaCom.java | 12 +++++++++- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/main/java/fr/revivemc/commands/BreadListener.java diff --git a/src/main/java/fr/revivemc/Main.java b/src/main/java/fr/revivemc/Main.java index c948c0e..535cc99 100644 --- a/src/main/java/fr/revivemc/Main.java +++ b/src/main/java/fr/revivemc/Main.java @@ -1,5 +1,6 @@ package fr.revivemc; +import fr.revivemc.commands.BreadListener; import fr.revivemc.commands.PlayeriaCom; import org.bukkit.plugin.java.JavaPlugin; @@ -9,6 +10,7 @@ public class Main extends JavaPlugin { public void onEnable() { System.out.print("Le plugin a démarré avec succès"); getCommand("playeria").setExecutor(new PlayeriaCom()); + getServer().getPluginManager().registerEvents(new BreadListener(), this); } @Override diff --git a/src/main/java/fr/revivemc/commands/BreadListener.java b/src/main/java/fr/revivemc/commands/BreadListener.java new file mode 100644 index 0000000..15eeabc --- /dev/null +++ b/src/main/java/fr/revivemc/commands/BreadListener.java @@ -0,0 +1,24 @@ +package fr.revivemc.commands; + +import org.bukkit.Material; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerPickupItemEvent; + + + +public class BreadListener implements Listener { + + public static int nmbr_pain = 0; + + @EventHandler + public void onPickup(PlayerPickupItemEvent event) { + + if (event.getItem().getItemStack().getType() == Material.BREAD) { + nmbr_pain += event.getItem().getItemStack().getAmount(); + + + } + + } +} diff --git a/src/main/java/fr/revivemc/commands/PlayeriaCom.java b/src/main/java/fr/revivemc/commands/PlayeriaCom.java index 335ecf3..cfe1ac1 100644 --- a/src/main/java/fr/revivemc/commands/PlayeriaCom.java +++ b/src/main/java/fr/revivemc/commands/PlayeriaCom.java @@ -7,13 +7,23 @@ public class PlayeriaCom implements CommandExecutor { @Override public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) { + + BreadListener breadCount = new BreadListener(); + try { if (args[0].equals("help")) { commandSender.sendMessage("La liste des commandes disponibles : \n - help"); + } + else if (args[0].equals("bread")){ + commandSender.sendMessage("Il y a " + breadCount.nmbr_pain + " de pain récolté(s)"); + } else if (args[0].equals("clear")) { + breadCount.nmbr_pain = 0; + commandSender.sendMessage("Il y a maintenant " + breadCount.nmbr_pain + " de pain récolté(s)"); } else { commandSender.sendMessage("§4Mauvaise commande. \nListe des commandes disponibles avec /playeria : \n - /playeria help"); } - } catch (Exception e){ + } + catch (Exception e){ commandSender.sendMessage("§4Commande mal exécutée. \nFaite /playeria help pour plus d'info"); } return false; From 9310cc94529f25409ea2184f2535ad3cf4358b8f Mon Sep 17 00:00:00 2001 From: FX Date: Thu, 19 Feb 2026 19:21:55 +0100 Subject: [PATCH 06/15] =?UTF-8?q?-=20Am=C3=A9lior=C3=A9=20le=20BreadListen?= =?UTF-8?q?er.java=20pour=20qu'il=20puisse=20compter=20les=20crafts=20des?= =?UTF-8?q?=20joueurs=20en=20prenant=20compte=20du=20Shif-Click=20-=20Chan?= =?UTF-8?q?g=C3=A9=20le=20Main.java=20et=20le=20PlayeriaCom.java=20pour=20?= =?UTF-8?q?qu'il=20s'adapte=20aux=20changements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/fr/revivemc/Main.java | 2 +- .../fr/revivemc/commands/BreadListener.java | 59 ++++++++++++++++--- .../fr/revivemc/commands/PlayeriaCom.java | 33 ++++++----- 3 files changed, 69 insertions(+), 25 deletions(-) diff --git a/src/main/java/fr/revivemc/Main.java b/src/main/java/fr/revivemc/Main.java index 535cc99..af25967 100644 --- a/src/main/java/fr/revivemc/Main.java +++ b/src/main/java/fr/revivemc/Main.java @@ -10,7 +10,7 @@ public class Main extends JavaPlugin { public void onEnable() { System.out.print("Le plugin a démarré avec succès"); getCommand("playeria").setExecutor(new PlayeriaCom()); - getServer().getPluginManager().registerEvents(new BreadListener(), this); + getServer().getPluginManager().registerEvents(new BreadListener(this), this); } @Override diff --git a/src/main/java/fr/revivemc/commands/BreadListener.java b/src/main/java/fr/revivemc/commands/BreadListener.java index 15eeabc..bac53a0 100644 --- a/src/main/java/fr/revivemc/commands/BreadListener.java +++ b/src/main/java/fr/revivemc/commands/BreadListener.java @@ -1,24 +1,67 @@ package fr.revivemc.commands; +import org.bukkit.Bukkit; import org.bukkit.Material; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerPickupItemEvent; - +import org.bukkit.event.inventory.CraftItemEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.plugin.java.JavaPlugin; public class BreadListener implements Listener { - public static int nmbr_pain = 0; + + private final JavaPlugin pluginInstance; + public BreadListener(JavaPlugin pluginInstance){ + this.pluginInstance = pluginInstance; + } + + + public static int nmbrPain = 0; @EventHandler - public void onPickup(PlayerPickupItemEvent event) { + public void onCraft(CraftItemEvent event) { + if (event.getWhoClicked() instanceof Player) { - if (event.getItem().getItemStack().getType() == Material.BREAD) { - nmbr_pain += event.getItem().getItemStack().getAmount(); + Player player = (Player) event.getWhoClicked(); + if (event.getCurrentItem() != null && event.getCurrentItem().getType() == Material.BREAD) { + // Shift click traité séparément + if (event.isShiftClick()) { + int nmbrPainAvant = 0; - } + for (ItemStack item : player.getInventory().getContents()) { + if (item != null) { + if (item.getType() == Material.BREAD) { + nmbrPainAvant += item.getAmount(); + } + } + } + final int finalPainAvant = nmbrPainAvant; + + // fait le craft puis compte les objets dans l'inv après + Bukkit.getScheduler().runTask(pluginInstance, () -> { + + int nmbrPainApres = 0; + + for (ItemStack item : player.getInventory().getContents()) { + if (item != null) { + if (item.getType() == Material.BREAD) { + nmbrPainApres += item.getAmount(); + } + } + } + nmbrPain += nmbrPainApres - finalPainAvant; + + }); + + } else { + nmbrPain += event.getCurrentItem().getAmount(); + } + } + } } -} +} \ No newline at end of file diff --git a/src/main/java/fr/revivemc/commands/PlayeriaCom.java b/src/main/java/fr/revivemc/commands/PlayeriaCom.java index cfe1ac1..d8fa621 100644 --- a/src/main/java/fr/revivemc/commands/PlayeriaCom.java +++ b/src/main/java/fr/revivemc/commands/PlayeriaCom.java @@ -8,24 +8,25 @@ public class PlayeriaCom implements CommandExecutor { @Override public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) { - BreadListener breadCount = new BreadListener(); - - try { - if (args[0].equals("help")) { - commandSender.sendMessage("La liste des commandes disponibles : \n - help"); - } - else if (args[0].equals("bread")){ - commandSender.sendMessage("Il y a " + breadCount.nmbr_pain + " de pain récolté(s)"); - } else if (args[0].equals("clear")) { - breadCount.nmbr_pain = 0; - commandSender.sendMessage("Il y a maintenant " + breadCount.nmbr_pain + " de pain récolté(s)"); - } else { - commandSender.sendMessage("§4Mauvaise commande. \nListe des commandes disponibles avec /playeria : \n - /playeria help"); + if (args.length != 0) { + switch (args[0]) { + case "help": + commandSender.sendMessage("La liste des commandes disponibles : \n - help\n - bread : voir le nombre de pains craftés\n - clear : reset le compteur de pains à 0"); + break; + case "bread": + commandSender.sendMessage("Il y a " + BreadListener.nmbrPain + " de pain récolté(s)"); + break; + case "clear": + BreadListener.nmbrPain = 0; + commandSender.sendMessage("Il y a maintenant " + BreadListener.nmbrPain + " de pain récolté(s)"); + break; + default: + commandSender.sendMessage("§4Mauvaise commande. \nListe des commandes disponibles avec /playeria : \n - /playeria help"); + break; } - } - catch (Exception e){ + } else { commandSender.sendMessage("§4Commande mal exécutée. \nFaite /playeria help pour plus d'info"); } - return false; + return true; } } From 98ee71f07fe3ca65e2406ce639b988f9df4768b3 Mon Sep 17 00:00:00 2001 From: FX Date: Sat, 21 Feb 2026 20:27:04 +0100 Subject: [PATCH 07/15] =?UTF-8?q?En=20train=20de=20faire=20un=20syst=C3=A8?= =?UTF-8?q?me=20de=20sauvegarde?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/fr/revivemc/Main.java | 17 +++++++++++++++++ .../fr/revivemc/commands/BreadListener.java | 16 +++++++++++----- .../java/fr/revivemc/commands/PlayeriaCom.java | 8 +++++--- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/main/java/fr/revivemc/Main.java b/src/main/java/fr/revivemc/Main.java index af25967..d7c7183 100644 --- a/src/main/java/fr/revivemc/Main.java +++ b/src/main/java/fr/revivemc/Main.java @@ -4,6 +4,9 @@ import fr.revivemc.commands.PlayeriaCom; import org.bukkit.plugin.java.JavaPlugin; +import java.io.File; +import java.io.IOException; + public class Main extends JavaPlugin { @Override @@ -11,6 +14,20 @@ public void onEnable() { System.out.print("Le plugin a démarré avec succès"); getCommand("playeria").setExecutor(new PlayeriaCom()); getServer().getPluginManager().registerEvents(new BreadListener(this), this); + + //---------- SAUVEGARDE ---------- + File path = getDataFolder(); + File file = new File(path,"data.yml"); + + path.mkdirs(); + if (!file.exists()) { + try { + file.createNewFile(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } @Override diff --git a/src/main/java/fr/revivemc/commands/BreadListener.java b/src/main/java/fr/revivemc/commands/BreadListener.java index bac53a0..d043142 100644 --- a/src/main/java/fr/revivemc/commands/BreadListener.java +++ b/src/main/java/fr/revivemc/commands/BreadListener.java @@ -9,23 +9,25 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.java.JavaPlugin; +import java.util.HashMap; +import java.util.UUID; -public class BreadListener implements Listener { +public class BreadListener implements Listener { private final JavaPlugin pluginInstance; public BreadListener(JavaPlugin pluginInstance){ this.pluginInstance = pluginInstance; } + static HashMap nmbrPain = new HashMap<>(); - public static int nmbrPain = 0; - @EventHandler public void onCraft(CraftItemEvent event) { if (event.getWhoClicked() instanceof Player) { Player player = (Player) event.getWhoClicked(); + UUID uuid = player.getUniqueId(); if (event.getCurrentItem() != null && event.getCurrentItem().getType() == Material.BREAD) { // Shift click traité séparément @@ -54,12 +56,16 @@ public void onCraft(CraftItemEvent event) { } } } - nmbrPain += nmbrPainApres - finalPainAvant; + + int ancienScore = nmbrPain.getOrDefault(uuid, 0); + int diff = nmbrPainApres -finalPainAvant; + nmbrPain.put(uuid, ancienScore + diff); }); } else { - nmbrPain += event.getCurrentItem().getAmount(); + int ancienScore = nmbrPain.getOrDefault(uuid, 0); + nmbrPain.put(uuid, ancienScore + event.getCurrentItem().getAmount()); } } } diff --git a/src/main/java/fr/revivemc/commands/PlayeriaCom.java b/src/main/java/fr/revivemc/commands/PlayeriaCom.java index d8fa621..d984d15 100644 --- a/src/main/java/fr/revivemc/commands/PlayeriaCom.java +++ b/src/main/java/fr/revivemc/commands/PlayeriaCom.java @@ -14,11 +14,13 @@ public boolean onCommand(CommandSender commandSender, Command command, String s, commandSender.sendMessage("La liste des commandes disponibles : \n - help\n - bread : voir le nombre de pains craftés\n - clear : reset le compteur de pains à 0"); break; case "bread": - commandSender.sendMessage("Il y a " + BreadListener.nmbrPain + " de pain récolté(s)"); +// commandSender.sendMessage("Il y a " + BreadListener.nmbrPain + " de pain récolté(s)"); + commandSender.sendMessage("§4Unavailable"); break; case "clear": - BreadListener.nmbrPain = 0; - commandSender.sendMessage("Il y a maintenant " + BreadListener.nmbrPain + " de pain récolté(s)"); +// BreadListener.nmbrPain = 0; +// commandSender.sendMessage("Il y a maintenant " + BreadListener.nmbrPain + " de pain récolté(s)"); + commandSender.sendMessage("§4Unavailable"); break; default: commandSender.sendMessage("§4Mauvaise commande. \nListe des commandes disponibles avec /playeria : \n - /playeria help"); From 233e255757772d536294d8a8e2eb536bf65c65c9 Mon Sep 17 00:00:00 2001 From: FX Date: Sun, 22 Feb 2026 10:50:14 +0100 Subject: [PATCH 08/15] =?UTF-8?q?Syst=C3=A8me=20de=20sauvegarde?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/fr/revivemc/Main.java | 33 ++++++++++++++++--- .../fr/revivemc/commands/BreadListener.java | 7 +++- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/main/java/fr/revivemc/Main.java b/src/main/java/fr/revivemc/Main.java index d7c7183..d92d8fb 100644 --- a/src/main/java/fr/revivemc/Main.java +++ b/src/main/java/fr/revivemc/Main.java @@ -2,10 +2,15 @@ import fr.revivemc.commands.BreadListener; import fr.revivemc.commands.PlayeriaCom; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.java.JavaPlugin; import java.io.File; import java.io.IOException; +import java.util.Map; +import java.util.UUID; + +import static fr.revivemc.commands.BreadListener.nmbrPain; public class Main extends JavaPlugin { @@ -14,11 +19,25 @@ public void onEnable() { System.out.print("Le plugin a démarré avec succès"); getCommand("playeria").setExecutor(new PlayeriaCom()); getServer().getPluginManager().registerEvents(new BreadListener(this), this); + } + + @Override + public void onDisable() { + try { + save(); + } catch (IOException e) { + getLogger().severe("Erreur lors de la sauvegarde du fichier data.yml !"); + e.printStackTrace(); + } + } + + public void save() throws IOException { + /*-------------------- SAUVEGARDE --------------------- */ - //---------- SAUVEGARDE ---------- File path = getDataFolder(); File file = new File(path,"data.yml"); + // Sécurité au cas où path.mkdirs(); if (!file.exists()) { try { @@ -27,10 +46,16 @@ public void onEnable() { throw new RuntimeException(e); } } + // Sauvegarde + YamlConfiguration data = YamlConfiguration.loadConfiguration(file); - } + for (Map.Entry entry : nmbrPain.entrySet()) { - @Override - public void onDisable() {} + UUID uuid = entry.getKey(); + int score = entry.getValue(); + data.set("bread." + uuid, score); + } + data.save(file); + } } diff --git a/src/main/java/fr/revivemc/commands/BreadListener.java b/src/main/java/fr/revivemc/commands/BreadListener.java index d043142..83c8122 100644 --- a/src/main/java/fr/revivemc/commands/BreadListener.java +++ b/src/main/java/fr/revivemc/commands/BreadListener.java @@ -16,10 +16,13 @@ public class BreadListener implements Listener { private final JavaPlugin pluginInstance; + public BreadListener(JavaPlugin pluginInstance){ this.pluginInstance = pluginInstance; } - static HashMap nmbrPain = new HashMap<>(); + + + public static HashMap nmbrPain = new HashMap<>(); @EventHandler @@ -27,8 +30,10 @@ public void onCraft(CraftItemEvent event) { if (event.getWhoClicked() instanceof Player) { Player player = (Player) event.getWhoClicked(); + UUID uuid = player.getUniqueId(); + if (event.getCurrentItem() != null && event.getCurrentItem().getType() == Material.BREAD) { // Shift click traité séparément if (event.isShiftClick()) { From 8177aa6779b6016fa51122b578e08b14fe8b31f2 Mon Sep 17 00:00:00 2001 From: FX Date: Sun, 1 Mar 2026 16:00:15 +0100 Subject: [PATCH 09/15] =?UTF-8?q?-=20Ajout=C3=A9=20une=20m=C3=A9thode=20po?= =?UTF-8?q?ur=20lire=20le=20fichier=20data.yml=20et=20de=20l'auto-save=20c?= =?UTF-8?q?haque=205=20min.=20-=20Ajout=C3=A9=20une=20scoreboard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/fr/revivemc/Main.java | 90 ++++++++++++++++--- .../fr/revivemc/commands/PlayeriaCom.java | 31 +++++-- .../BreadListener.java | 9 +- .../fr/revivemc/ui/PlayeriaScoreboard.java | 31 +++++++ 4 files changed, 139 insertions(+), 22 deletions(-) rename src/main/java/fr/revivemc/{commands => listeners}/BreadListener.java (87%) create mode 100644 src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java diff --git a/src/main/java/fr/revivemc/Main.java b/src/main/java/fr/revivemc/Main.java index d92d8fb..123b875 100644 --- a/src/main/java/fr/revivemc/Main.java +++ b/src/main/java/fr/revivemc/Main.java @@ -1,24 +1,51 @@ package fr.revivemc; -import fr.revivemc.commands.BreadListener; +import fr.revivemc.listeners.BreadListener; import fr.revivemc.commands.PlayeriaCom; +import fr.revivemc.ui.PlayeriaScoreboard; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.scheduler.BukkitRunnable; import java.io.File; import java.io.IOException; +import java.util.AbstractMap; import java.util.Map; +import java.util.Set; import java.util.UUID; -import static fr.revivemc.commands.BreadListener.nmbrPain; +import static fr.revivemc.listeners.BreadListener.nmbrPain; public class Main extends JavaPlugin { @Override public void onEnable() { - System.out.print("Le plugin a démarré avec succès"); - getCommand("playeria").setExecutor(new PlayeriaCom()); - getServer().getPluginManager().registerEvents(new BreadListener(this), this); + getLogger().info("Le plugin a démarré avec succès"); + + PlayeriaScoreboard scoreboard = new PlayeriaScoreboard(this); + getCommand("playeria").setExecutor(new PlayeriaCom(this)); + getServer().getPluginManager().registerEvents(new BreadListener(this, scoreboard), this); + + try { + readAndWrite(); + } catch (IOException e) { + getLogger().severe("Erreur lors de la lecture du fichier data.yml !"); + e.printStackTrace(); + } + new BukkitRunnable() { + + @Override + public void run() { + try { + save(); + getLogger().info("Auto-save effectué."); + } catch (IOException e) { + getLogger().severe("Erreur lors de l'auto-save !"); + e.printStackTrace(); + } + } + + }.runTaskTimer(this, 0L,6000L ); } @Override @@ -31,24 +58,33 @@ public void onDisable() { } } + public void createDataFile() { + + File path = getDataFolder(); + File file = new File(path,"data.yml"); + + path.mkdirs(); + try { + file.createNewFile(); + } catch (IOException e) { + getLogger().severe("Erreur lors de la création du fichier data.yml !"); + e.printStackTrace(); + } + } + public void save() throws IOException { - /*-------------------- SAUVEGARDE --------------------- */ File path = getDataFolder(); File file = new File(path,"data.yml"); // Sécurité au cas où - path.mkdirs(); if (!file.exists()) { - try { - file.createNewFile(); - } catch (IOException e) { - throw new RuntimeException(e); - } + createDataFile(); } // Sauvegarde YamlConfiguration data = YamlConfiguration.loadConfiguration(file); + data.set("bread", null); for (Map.Entry entry : nmbrPain.entrySet()) { UUID uuid = entry.getKey(); @@ -58,4 +94,34 @@ public void save() throws IOException { } data.save(file); } + + public void readAndWrite() throws IOException { + + File path = getDataFolder(); + File file = new File(path,"data.yml"); + + // --- Si le fichier n'existe pas → sauvegarder puis lire --- + if (!file.exists()) { + createDataFile(); + } + + // --- Lire le fichier YML --- + YamlConfiguration data = YamlConfiguration.loadConfiguration(file); + nmbrPain.clear(); + + if (data.getConfigurationSection("bread") != null) { + + Set key = data.getConfigurationSection("bread").getKeys(false); + + for (String element : key) { + int score = data.getInt("bread." + element); + UUID uuid = UUID.fromString(element); + nmbrPain.put(uuid, score); + } + } + } + + public AbstractMap getPain() { + return nmbrPain; + } } diff --git a/src/main/java/fr/revivemc/commands/PlayeriaCom.java b/src/main/java/fr/revivemc/commands/PlayeriaCom.java index d984d15..ea9479a 100644 --- a/src/main/java/fr/revivemc/commands/PlayeriaCom.java +++ b/src/main/java/fr/revivemc/commands/PlayeriaCom.java @@ -1,10 +1,22 @@ package fr.revivemc.commands; +import fr.revivemc.Main; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import java.io.IOException; + +import static org.bukkit.Bukkit.getLogger; + public class PlayeriaCom implements CommandExecutor { + + private final Main plugin; + + public PlayeriaCom(Main plugin) { + this.plugin = plugin; + } + @Override public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) { @@ -13,14 +25,17 @@ public boolean onCommand(CommandSender commandSender, Command command, String s, case "help": commandSender.sendMessage("La liste des commandes disponibles : \n - help\n - bread : voir le nombre de pains craftés\n - clear : reset le compteur de pains à 0"); break; - case "bread": -// commandSender.sendMessage("Il y a " + BreadListener.nmbrPain + " de pain récolté(s)"); - commandSender.sendMessage("§4Unavailable"); - break; - case "clear": -// BreadListener.nmbrPain = 0; -// commandSender.sendMessage("Il y a maintenant " + BreadListener.nmbrPain + " de pain récolté(s)"); - commandSender.sendMessage("§4Unavailable"); + case "save": + try { + plugin.save(); + commandSender.sendMessage("§2Sauvegarde réussie"); + getLogger().info("Sauvegarde par le joueur."); + } catch (IOException e) { + commandSender.sendMessage("§4Erreur lors de la sauvegarde du fichier data.yml, voir les logs pour plus de détail !"); + + getLogger().severe("Erreur lors de la sauvegarde du fichier data.yml !"); + e.printStackTrace(); + } break; default: commandSender.sendMessage("§4Mauvaise commande. \nListe des commandes disponibles avec /playeria : \n - /playeria help"); diff --git a/src/main/java/fr/revivemc/commands/BreadListener.java b/src/main/java/fr/revivemc/listeners/BreadListener.java similarity index 87% rename from src/main/java/fr/revivemc/commands/BreadListener.java rename to src/main/java/fr/revivemc/listeners/BreadListener.java index 83c8122..e9a6b26 100644 --- a/src/main/java/fr/revivemc/commands/BreadListener.java +++ b/src/main/java/fr/revivemc/listeners/BreadListener.java @@ -1,5 +1,6 @@ -package fr.revivemc.commands; +package fr.revivemc.listeners; +import fr.revivemc.ui.PlayeriaScoreboard; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -16,9 +17,11 @@ public class BreadListener implements Listener { private final JavaPlugin pluginInstance; + private final PlayeriaScoreboard scoreboard; - public BreadListener(JavaPlugin pluginInstance){ + public BreadListener(JavaPlugin pluginInstance, PlayeriaScoreboard scoreboard){ this.pluginInstance = pluginInstance; + this.scoreboard = scoreboard; } @@ -65,12 +68,14 @@ public void onCraft(CraftItemEvent event) { int ancienScore = nmbrPain.getOrDefault(uuid, 0); int diff = nmbrPainApres -finalPainAvant; nmbrPain.put(uuid, ancienScore + diff); + scoreboard.update(player); }); } else { int ancienScore = nmbrPain.getOrDefault(uuid, 0); nmbrPain.put(uuid, ancienScore + event.getCurrentItem().getAmount()); + scoreboard.update(player); } } } diff --git a/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java b/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java new file mode 100644 index 0000000..f590f28 --- /dev/null +++ b/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java @@ -0,0 +1,31 @@ +package fr.revivemc.ui; + +import fr.revivemc.Main; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.scoreboard.*; + + +public class PlayeriaScoreboard { + + private final Main plugin; + + public PlayeriaScoreboard(Main plugin) { + this.plugin = plugin; + } + + public void update(Player player) { + ScoreboardManager manager = Bukkit.getScoreboardManager(); + Scoreboard scoreboard = manager.getNewScoreboard(); + + Objective objective = scoreboard.registerNewObjective("playeriaSc", "dummy"); + + objective.setDisplaySlot(DisplaySlot.SIDEBAR); + objective.setDisplayName("§l§bPlayeria"); + + Score pain = objective.getScore("Pains : " + plugin.getPain().getOrDefault(player.getUniqueId(), 0)); + pain.setScore(1); + + player.setScoreboard(scoreboard); + } +} From 4ac196a2098c6e8f7e16587af9a7bcd528693008 Mon Sep 17 00:00:00 2001 From: FX Date: Mon, 2 Mar 2026 16:32:03 +0100 Subject: [PATCH 10/15] Mise en forme --- src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java b/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java index f590f28..68e7489 100644 --- a/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java +++ b/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java @@ -21,7 +21,7 @@ public void update(Player player) { Objective objective = scoreboard.registerNewObjective("playeriaSc", "dummy"); objective.setDisplaySlot(DisplaySlot.SIDEBAR); - objective.setDisplayName("§l§bPlayeria"); + objective.setDisplayName(" §b§lPlayeria"); Score pain = objective.getScore("Pains : " + plugin.getPain().getOrDefault(player.getUniqueId(), 0)); pain.setScore(1); From 0c44d7f84c8c1c01a6bd8f6c4c63a1caf6107b54 Mon Sep 17 00:00:00 2001 From: FX Date: Wed, 4 Mar 2026 21:20:09 +0100 Subject: [PATCH 11/15] =?UTF-8?q?Ajout=C3=A9=20les=20vies=20et=20le=20joue?= =?UTF-8?q?ur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/fr/revivemc/Main.java | 5 +++ .../revivemc/listeners/ConnectListener.java | 21 ++++++++++ .../fr/revivemc/listeners/HealthListener.java | 42 +++++++++++++++++++ .../fr/revivemc/ui/PlayeriaScoreboard.java | 9 ++-- 4 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 src/main/java/fr/revivemc/listeners/ConnectListener.java create mode 100644 src/main/java/fr/revivemc/listeners/HealthListener.java diff --git a/src/main/java/fr/revivemc/Main.java b/src/main/java/fr/revivemc/Main.java index 123b875..613e046 100644 --- a/src/main/java/fr/revivemc/Main.java +++ b/src/main/java/fr/revivemc/Main.java @@ -2,8 +2,11 @@ import fr.revivemc.listeners.BreadListener; import fr.revivemc.commands.PlayeriaCom; +import fr.revivemc.listeners.ConnectListener; +import fr.revivemc.listeners.HealthListener; import fr.revivemc.ui.PlayeriaScoreboard; import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitRunnable; @@ -25,6 +28,8 @@ public void onEnable() { PlayeriaScoreboard scoreboard = new PlayeriaScoreboard(this); getCommand("playeria").setExecutor(new PlayeriaCom(this)); getServer().getPluginManager().registerEvents(new BreadListener(this, scoreboard), this); + getServer().getPluginManager().registerEvents(new ConnectListener(scoreboard), this); + getServer().getPluginManager().registerEvents(new HealthListener(this, scoreboard), this); try { readAndWrite(); diff --git a/src/main/java/fr/revivemc/listeners/ConnectListener.java b/src/main/java/fr/revivemc/listeners/ConnectListener.java new file mode 100644 index 0000000..57e7596 --- /dev/null +++ b/src/main/java/fr/revivemc/listeners/ConnectListener.java @@ -0,0 +1,21 @@ +package fr.revivemc.listeners; + +import fr.revivemc.ui.PlayeriaScoreboard; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerLoginEvent; + +public class ConnectListener implements Listener { + + private final PlayeriaScoreboard scoreboard; + + public ConnectListener(PlayeriaScoreboard scoreboard) { + this.scoreboard = scoreboard; + } + + @EventHandler + public void onConnection(PlayerJoinEvent event) { + scoreboard.update(event.getPlayer()); + } +} diff --git a/src/main/java/fr/revivemc/listeners/HealthListener.java b/src/main/java/fr/revivemc/listeners/HealthListener.java new file mode 100644 index 0000000..28d1525 --- /dev/null +++ b/src/main/java/fr/revivemc/listeners/HealthListener.java @@ -0,0 +1,42 @@ +package fr.revivemc.listeners; + +import fr.revivemc.ui.PlayeriaScoreboard; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityRegainHealthEvent; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.PlayerRespawnEvent; +import org.bukkit.plugin.java.JavaPlugin; + +public class HealthListener implements Listener { + + private final PlayeriaScoreboard scoreboard; + private final JavaPlugin plugin; + + public HealthListener(JavaPlugin plugin, PlayeriaScoreboard scoreboard) { + this.scoreboard = scoreboard; + this.plugin = plugin; + } + + @EventHandler + public void onDamage(EntityDamageEvent event) { + if (event.getEntity() instanceof Player) { + Bukkit.getScheduler().runTask(plugin, () -> scoreboard.update((Player) event.getEntity())); + } + } + + @EventHandler + public void onHeal(EntityRegainHealthEvent event) { + if (event.getEntity() instanceof Player) { + Bukkit.getScheduler().runTask(plugin, () -> scoreboard.update((Player) event.getEntity())); + } + } + + @EventHandler + public void onRespawn(PlayerRespawnEvent event) { + Bukkit.getScheduler().runTask(plugin, () -> scoreboard.update(event.getPlayer())); + } +} diff --git a/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java b/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java index 68e7489..ba2f91b 100644 --- a/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java +++ b/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java @@ -21,10 +21,13 @@ public void update(Player player) { Objective objective = scoreboard.registerNewObjective("playeriaSc", "dummy"); objective.setDisplaySlot(DisplaySlot.SIDEBAR); - objective.setDisplayName(" §b§lPlayeria"); + objective.setDisplayName(" §b§lPlayeria "); - Score pain = objective.getScore("Pains : " + plugin.getPain().getOrDefault(player.getUniqueId(), 0)); - pain.setScore(1); + + objective.getScore("-------------------").setScore(4); + objective.getScore("Pseudo : §f" + player.getName()).setScore(3); + objective.getScore("Vie : §c" + (int) player.getHealth() + " ❤").setScore(2); + objective.getScore("Pains : " + plugin.getPain().getOrDefault(player.getUniqueId(), 0)).setScore(1); player.setScoreboard(scoreboard); } From 88013cfdb9a29c99ec629db2045a14d113843ee4 Mon Sep 17 00:00:00 2001 From: FX Date: Thu, 5 Mar 2026 21:28:35 +0100 Subject: [PATCH 12/15] =?UTF-8?q?Ajout=C3=A9=20le=20compteur=20de=20creepe?= =?UTF-8?q?rs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/fr/revivemc/Main.java | 29 ++++++++++++++- .../revivemc/listeners/CreeperListener.java | 36 +++++++++++++++++++ .../fr/revivemc/ui/PlayeriaScoreboard.java | 7 ++-- 3 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 src/main/java/fr/revivemc/listeners/CreeperListener.java diff --git a/src/main/java/fr/revivemc/Main.java b/src/main/java/fr/revivemc/Main.java index 613e046..dfc2bd2 100644 --- a/src/main/java/fr/revivemc/Main.java +++ b/src/main/java/fr/revivemc/Main.java @@ -3,9 +3,11 @@ import fr.revivemc.listeners.BreadListener; import fr.revivemc.commands.PlayeriaCom; import fr.revivemc.listeners.ConnectListener; +import fr.revivemc.listeners.CreeperListener; import fr.revivemc.listeners.HealthListener; import fr.revivemc.ui.PlayeriaScoreboard; import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Creeper; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitRunnable; @@ -18,6 +20,7 @@ import java.util.UUID; import static fr.revivemc.listeners.BreadListener.nmbrPain; +import static fr.revivemc.listeners.CreeperListener.nmbrCreeper; public class Main extends JavaPlugin { @@ -30,6 +33,7 @@ public void onEnable() { getServer().getPluginManager().registerEvents(new BreadListener(this, scoreboard), this); getServer().getPluginManager().registerEvents(new ConnectListener(scoreboard), this); getServer().getPluginManager().registerEvents(new HealthListener(this, scoreboard), this); + getServer().getPluginManager().registerEvents(new CreeperListener(scoreboard), this); try { readAndWrite(); @@ -90,6 +94,7 @@ public void save() throws IOException { YamlConfiguration data = YamlConfiguration.loadConfiguration(file); data.set("bread", null); + data.set("creeper", null); for (Map.Entry entry : nmbrPain.entrySet()) { UUID uuid = entry.getKey(); @@ -97,6 +102,13 @@ public void save() throws IOException { data.set("bread." + uuid, score); } + for (Map.Entry entry : nmbrCreeper.entrySet()) { + + UUID uuid = entry.getKey(); + int score = entry.getValue(); + + data.set("creeper." + uuid, score); + } data.save(file); } @@ -113,6 +125,7 @@ public void readAndWrite() throws IOException { // --- Lire le fichier YML --- YamlConfiguration data = YamlConfiguration.loadConfiguration(file); nmbrPain.clear(); + nmbrCreeper.clear(); if (data.getConfigurationSection("bread") != null) { @@ -124,9 +137,23 @@ public void readAndWrite() throws IOException { nmbrPain.put(uuid, score); } } + if (data.getConfigurationSection("creeper") != null) { + + Set key = data.getConfigurationSection("creeper").getKeys(false); + + for (String element : key) { + int score = data.getInt("creeper." + element); + UUID uuid = UUID.fromString(element); + nmbrCreeper.put(uuid, score); + } + } } - public AbstractMap getPain() { + public Map getPain() { return nmbrPain; } + + public Map getCreeper() { + return nmbrCreeper; + } } diff --git a/src/main/java/fr/revivemc/listeners/CreeperListener.java b/src/main/java/fr/revivemc/listeners/CreeperListener.java new file mode 100644 index 0000000..6ee82a6 --- /dev/null +++ b/src/main/java/fr/revivemc/listeners/CreeperListener.java @@ -0,0 +1,36 @@ +package fr.revivemc.listeners; + +import fr.revivemc.ui.PlayeriaScoreboard; +import org.bukkit.entity.Creeper; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDeathEvent; + +import java.util.HashMap; +import java.util.UUID; + +public class CreeperListener implements Listener { + + public static HashMap nmbrCreeper = new HashMap<>(); + private final PlayeriaScoreboard scoreboard; + + public CreeperListener(PlayeriaScoreboard scoreboard) { + this.scoreboard = scoreboard; + } + + @EventHandler + public void onCreeperKill(EntityDeathEvent event) { + if (event.getEntity() instanceof Creeper) { + + Creeper creeper = (Creeper) event.getEntity(); + Player player = creeper.getKiller(); + + if (creeper.getKiller() != null) { + int ancienScore = nmbrCreeper.getOrDefault(player.getUniqueId(), 0); + nmbrCreeper.put(player.getUniqueId(), ancienScore + 1); + scoreboard.update(player); + } + } + } +} diff --git a/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java b/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java index ba2f91b..7973b49 100644 --- a/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java +++ b/src/main/java/fr/revivemc/ui/PlayeriaScoreboard.java @@ -24,9 +24,10 @@ public void update(Player player) { objective.setDisplayName(" §b§lPlayeria "); - objective.getScore("-------------------").setScore(4); - objective.getScore("Pseudo : §f" + player.getName()).setScore(3); - objective.getScore("Vie : §c" + (int) player.getHealth() + " ❤").setScore(2); + objective.getScore("-------------------").setScore(5); + objective.getScore("Pseudo : §f" + player.getName()).setScore(4); + objective.getScore("Vie : §c" + (int) player.getHealth() + " ❤").setScore(3); + objective.getScore("Creepers : §2" + plugin.getCreeper().getOrDefault(player.getUniqueId(), 0)).setScore(2); objective.getScore("Pains : " + plugin.getPain().getOrDefault(player.getUniqueId(), 0)).setScore(1); player.setScoreboard(scoreboard); From 1451c7e0b751dbdb8a6c0790ddbf187a1daefaec Mon Sep 17 00:00:00 2001 From: FX Date: Sat, 7 Mar 2026 12:01:07 +0100 Subject: [PATCH 13/15] =?UTF-8?q?Am=C3=A9lior=C3=A9=20les=20commandes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/fr/revivemc/Main.java | 12 +++-- .../fr/revivemc/commands/PlayeriaCom.java | 54 +++++++++++++++++-- 2 files changed, 59 insertions(+), 7 deletions(-) diff --git a/src/main/java/fr/revivemc/Main.java b/src/main/java/fr/revivemc/Main.java index dfc2bd2..2d1d028 100644 --- a/src/main/java/fr/revivemc/Main.java +++ b/src/main/java/fr/revivemc/Main.java @@ -6,15 +6,14 @@ import fr.revivemc.listeners.CreeperListener; import fr.revivemc.listeners.HealthListener; import fr.revivemc.ui.PlayeriaScoreboard; +import org.bukkit.Bukkit; import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.entity.Creeper; -import org.bukkit.event.Listener; +import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitRunnable; import java.io.File; import java.io.IOException; -import java.util.AbstractMap; import java.util.Map; import java.util.Set; import java.util.UUID; @@ -29,7 +28,12 @@ public void onEnable() { getLogger().info("Le plugin a démarré avec succès"); PlayeriaScoreboard scoreboard = new PlayeriaScoreboard(this); - getCommand("playeria").setExecutor(new PlayeriaCom(this)); + + for (Player player : Bukkit.getOnlinePlayers()) { + scoreboard.update(player); + } + + getCommand("playeria").setExecutor(new PlayeriaCom(this, scoreboard)); getServer().getPluginManager().registerEvents(new BreadListener(this, scoreboard), this); getServer().getPluginManager().registerEvents(new ConnectListener(scoreboard), this); getServer().getPluginManager().registerEvents(new HealthListener(this, scoreboard), this); diff --git a/src/main/java/fr/revivemc/commands/PlayeriaCom.java b/src/main/java/fr/revivemc/commands/PlayeriaCom.java index ea9479a..8caad00 100644 --- a/src/main/java/fr/revivemc/commands/PlayeriaCom.java +++ b/src/main/java/fr/revivemc/commands/PlayeriaCom.java @@ -1,20 +1,27 @@ package fr.revivemc.commands; import fr.revivemc.Main; +import fr.revivemc.ui.PlayeriaScoreboard; +import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import java.io.IOException; +import static fr.revivemc.listeners.BreadListener.nmbrPain; +import static fr.revivemc.listeners.CreeperListener.nmbrCreeper; import static org.bukkit.Bukkit.getLogger; public class PlayeriaCom implements CommandExecutor { private final Main plugin; + private final PlayeriaScoreboard scoreboard; - public PlayeriaCom(Main plugin) { + public PlayeriaCom(Main plugin, PlayeriaScoreboard scoreboard) { this.plugin = plugin; + this.scoreboard = scoreboard; } @Override @@ -23,13 +30,20 @@ public boolean onCommand(CommandSender commandSender, Command command, String s, if (args.length != 0) { switch (args[0]) { case "help": - commandSender.sendMessage("La liste des commandes disponibles : \n - help\n - bread : voir le nombre de pains craftés\n - clear : reset le compteur de pains à 0"); + commandSender.sendMessage("§6===== Playeria Commands ====="); + commandSender.sendMessage("§e/playeria help §7- affiche les commandes"); + commandSender.sendMessage("§e/playeria save §7- sauvegarde les données"); + commandSender.sendMessage("§e/playeria clear bread §7- reset le compteur de pains pour tous les joueurs"); + commandSender.sendMessage("§e/playeria clear creeper §7- reset le compteur de creepers pour tous les joueurs"); + commandSender.sendMessage("§e/playeria clear all §7- reset le compteur de creepers et de pains pour tous les joueurs"); break; case "save": try { plugin.save(); commandSender.sendMessage("§2Sauvegarde réussie"); - getLogger().info("Sauvegarde par le joueur."); + if (commandSender instanceof Player) { + getLogger().info("Sauvegarde demandée par " + commandSender.getName()); + } } catch (IOException e) { commandSender.sendMessage("§4Erreur lors de la sauvegarde du fichier data.yml, voir les logs pour plus de détail !"); @@ -37,6 +51,40 @@ public boolean onCommand(CommandSender commandSender, Command command, String s, e.printStackTrace(); } break; + case "clear" : + if (args.length >= 2) { + switch (args[1]){ + case "bread" : + nmbrPain.clear(); + for (Player player : Bukkit.getOnlinePlayers()) { + scoreboard.update(player); + } + commandSender.sendMessage("§2Le compteur de pains a été reset pour tous les joueurs !"); + + break; + case "creeper" : + nmbrCreeper.clear(); + for (Player player : Bukkit.getOnlinePlayers()) { + scoreboard.update(player); + } + commandSender.sendMessage("§2Le compteur de creepers a été reset pour tous les joueurs !"); + break; + case "all": + nmbrPain.clear(); + nmbrCreeper.clear(); + for (Player player : Bukkit.getOnlinePlayers()) { + scoreboard.update(player); + } + commandSender.sendMessage("§2Toutes les stats ont été reset pour tous les joueurs !"); + break; + default: + commandSender.sendMessage("§4Mauvaise commande. \nListe des commandes disponibles avec /playeria : \n - /playeria help"); + break; + } + } else { + commandSender.sendMessage("§4Commande mal exécutée. \nFaite /playeria help pour plus d'info"); + } + break; default: commandSender.sendMessage("§4Mauvaise commande. \nListe des commandes disponibles avec /playeria : \n - /playeria help"); break; From c697eb146e9ecaa5426201281d42e81296c9cf1c Mon Sep 17 00:00:00 2001 From: FX Date: Sat, 7 Mar 2026 12:06:14 +0100 Subject: [PATCH 14/15] Bug fix --- src/main/java/fr/revivemc/Main.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/fr/revivemc/Main.java b/src/main/java/fr/revivemc/Main.java index 2d1d028..5c16eda 100644 --- a/src/main/java/fr/revivemc/Main.java +++ b/src/main/java/fr/revivemc/Main.java @@ -25,7 +25,13 @@ public class Main extends JavaPlugin { @Override public void onEnable() { - getLogger().info("Le plugin a démarré avec succès"); + + try { + readAndWrite(); + } catch (IOException e) { + getLogger().severe("Erreur lors de la lecture du fichier data.yml !"); + e.printStackTrace(); + } PlayeriaScoreboard scoreboard = new PlayeriaScoreboard(this); @@ -38,13 +44,8 @@ public void onEnable() { getServer().getPluginManager().registerEvents(new ConnectListener(scoreboard), this); getServer().getPluginManager().registerEvents(new HealthListener(this, scoreboard), this); getServer().getPluginManager().registerEvents(new CreeperListener(scoreboard), this); + getLogger().info("Le plugin a démarré avec succès"); - try { - readAndWrite(); - } catch (IOException e) { - getLogger().severe("Erreur lors de la lecture du fichier data.yml !"); - e.printStackTrace(); - } new BukkitRunnable() { @Override From b2472adec0448f6e4ba2b089f76e07bd4ce7508f Mon Sep 17 00:00:00 2001 From: FX Date: Sat, 7 Mar 2026 12:15:43 +0100 Subject: [PATCH 15/15] Perms --- src/main/java/fr/revivemc/commands/PlayeriaCom.java | 8 ++++++++ src/main/resources/plugin.yml | 11 ++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/fr/revivemc/commands/PlayeriaCom.java b/src/main/java/fr/revivemc/commands/PlayeriaCom.java index 8caad00..fc369c5 100644 --- a/src/main/java/fr/revivemc/commands/PlayeriaCom.java +++ b/src/main/java/fr/revivemc/commands/PlayeriaCom.java @@ -38,6 +38,10 @@ public boolean onCommand(CommandSender commandSender, Command command, String s, commandSender.sendMessage("§e/playeria clear all §7- reset le compteur de creepers et de pains pour tous les joueurs"); break; case "save": + if (!commandSender.hasPermission("playeria.admin")) { + commandSender.sendMessage("§cTu n'as pas la permission pour executer cette commande !"); + return true; + } try { plugin.save(); commandSender.sendMessage("§2Sauvegarde réussie"); @@ -52,6 +56,10 @@ public boolean onCommand(CommandSender commandSender, Command command, String s, } break; case "clear" : + if (!commandSender.hasPermission("playeria.admin")) { + commandSender.sendMessage("§cTu n'as pas la permission pour executer cette commande !"); + return true; + } if (args.length >= 2) { switch (args[1]){ case "bread" : diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 5b3dfe7..afd709f 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -6,4 +6,13 @@ author: ReviveMC commands : playeria : description : La commande principale de l'échosystème du plugin - permission : test.use \ No newline at end of file + permission : playeria + +permissions: + playeria: + description: Permet d'utiliser /playeria + default: true + + playeria.admin: + description: Commandes admin Playeria + default: op \ No newline at end of file