87 lines
3.3 KiB
Java
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;
|
|
}
|
|
}
|