package fr.molzonas.painfulloss.commands; import fr.molzonas.painfulloss.PainfulLoss; import fr.molzonas.painfulloss.utils.Message; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; import java.util.Locale; public class PainfulLossCommand implements CommandExecutor, TabCompleter { @Override public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) { if (args.length == 0) { commandSender.sendMessage(Message.of("plugin.help")); return true; } String subcommand = args[0]; return switch (subcommand) { case "reload" -> commandReload(commandSender); case "help" -> commandHelp(commandSender); case "test" -> commandTest(commandSender, args); default -> commandUnknown(commandSender); }; } private boolean commandReload(CommandSender commandSender) { if (!commandSender.hasPermission("painfulloss.admin")) return commandNotAutorised(commandSender); PainfulLoss.getInstance().reload(); commandSender.sendMessage(Message.of("plugin.reload")); return true; } private boolean commandNotAutorised(CommandSender commandSender) { commandSender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&4You don't have the permission to execute this command !")); return true; } private boolean commandHelp(CommandSender commandSender) { commandSender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&4G&3i&et &ag&co&9o&dd")); return true; } private boolean commandTest(CommandSender commandSender, String[] args) { Locale locale = PainfulLoss.DEFAULT_LOCALE; if (args.length >= 2) { locale = Locale.forLanguageTag(args[1].trim()); } if (commandSender instanceof Player p) { p.sendMessage(Message.of("death.summary", locale, p.getName(), 12345)); p.sendMessage(Message.of("death.topitem", locale, "Netherite Chestplate", 7890)); } else { var text = Message.of("death.summary.first", locale, "Console", 42); commandSender.sendMessage(text); } return true; } private boolean commandUnknown(CommandSender commandSender) { commandSender.sendMessage(Message.of("plugin.unknown")); return false; } @Override public @Nullable List onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) { List completions = new ArrayList<>(); if (args.length == 1) { completions.add("test"); completions.add("help"); if (commandSender.hasPermission("painfulloss.admin")) completions.add("reload"); } if (args.length == 2 && "test".equalsIgnoreCase(args[0])) { completions.add("fr-FR"); completions.add("en-US"); } return completions; } }