2025-08-21 07:21:00 +02:00

87 lines
3.3 KiB
Java

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<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
List<String> 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;
}
}