Cleanup + put commands in class
This commit is contained in:
parent
66e8fb46cb
commit
61e8e2de05
@ -1,15 +1,13 @@
|
|||||||
package fr.molzonas.painfulloss;
|
package fr.molzonas.painfulloss;
|
||||||
|
|
||||||
|
import fr.molzonas.painfulloss.commands.PainfulLossCommand;
|
||||||
import fr.molzonas.painfulloss.enums.PropertiesEnum;
|
import fr.molzonas.painfulloss.enums.PropertiesEnum;
|
||||||
import fr.molzonas.painfulloss.listeners.DeathListener;
|
import fr.molzonas.painfulloss.listeners.DeathListener;
|
||||||
import fr.molzonas.painfulloss.utils.Message;
|
import fr.molzonas.painfulloss.utils.Message;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.PluginCommand;
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
@ -24,6 +22,7 @@ public final class PainfulLoss extends JavaPlugin {
|
|||||||
Message.init(DEFAULT_LOCALE);
|
Message.init(DEFAULT_LOCALE);
|
||||||
configurationInit();
|
configurationInit();
|
||||||
langInit();
|
langInit();
|
||||||
|
registerCommands();
|
||||||
registerListeners();
|
registerListeners();
|
||||||
Bukkit.getLogger().info("[PainfulLoss] Plugin has been enabled!");
|
Bukkit.getLogger().info("[PainfulLoss] Plugin has been enabled!");
|
||||||
}
|
}
|
||||||
@ -44,57 +43,22 @@ public final class PainfulLoss extends JavaPlugin {
|
|||||||
Message.init(locale);
|
Message.init(locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void registerCommands() {
|
||||||
|
PluginCommand command = getCommand("painfulloss");
|
||||||
|
if (command != null) {
|
||||||
|
PainfulLossCommand exec = new PainfulLossCommand();
|
||||||
|
command.setExecutor(exec);
|
||||||
|
command.setTabCompleter(exec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void registerListeners() {
|
private void registerListeners() {
|
||||||
Bukkit.getPluginManager().registerEvents(new DeathListener(), this);
|
Bukkit.getPluginManager().registerEvents(new DeathListener(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void reload() {
|
||||||
public boolean onCommand(@NotNull CommandSender sender, Command command, @NotNull String label, String[] args) {
|
|
||||||
return switch (command.getName()) {
|
|
||||||
case "painfulloss" -> defaultCommand(sender, args);
|
|
||||||
case "itesten" -> commandLang(sender, Locale.ENGLISH);
|
|
||||||
case "itestfr" -> commandLang(sender, Locale.FRENCH);
|
|
||||||
default -> false;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean commandLang(CommandSender sender, Locale locale) {
|
|
||||||
if (sender 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);
|
|
||||||
sender.sendMessage(text);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean defaultCommand(@NotNull CommandSender sender, String[] args) {
|
|
||||||
if (args.length > 0) {
|
|
||||||
return switch (args[0]) {
|
|
||||||
case "help" -> commandHelp(sender);
|
|
||||||
case "reload" -> commandReload(sender);
|
|
||||||
default -> commandUnknown(sender);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean commandHelp(CommandSender sender) {
|
|
||||||
sender.sendMessage("&f&lGit gud");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean commandReload(CommandSender sender) {
|
|
||||||
reloadConfig();
|
reloadConfig();
|
||||||
Message.clearCache();
|
Message.clearCache();
|
||||||
langInit();
|
langInit();
|
||||||
sender.sendMessage(Message.of("plugin.reload"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean commandUnknown(CommandSender sender) {
|
|
||||||
sender.sendMessage(Message.of("plugin.unknown"));
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,86 @@
|
|||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,10 +1,7 @@
|
|||||||
package fr.molzonas.painfulloss.utils;
|
package fr.molzonas.painfulloss.utils;
|
||||||
|
|
||||||
import fr.molzonas.painfulloss.PainfulLoss;
|
import fr.molzonas.painfulloss.PainfulLoss;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
@ -24,7 +21,6 @@ public class Message {
|
|||||||
|
|
||||||
public static void init(Locale locale) {
|
public static void init(Locale locale) {
|
||||||
if (locale == null) locale = PainfulLoss.DEFAULT_LOCALE;
|
if (locale == null) locale = PainfulLoss.DEFAULT_LOCALE;
|
||||||
Bukkit.getLogger().info("[Painfullost] Locale used : " + locale.getDisplayName());
|
|
||||||
Message.currentLocale = locale;
|
Message.currentLocale = locale;
|
||||||
clearCache();
|
clearCache();
|
||||||
}
|
}
|
||||||
@ -33,14 +29,6 @@ public class Message {
|
|||||||
return of(key, currentLocale, args);
|
return of(key, currentLocale, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String of(CommandSender sender, String key, Object... args) {
|
|
||||||
return of(key, senderLocale(sender), args);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void send(CommandSender sender, String key, Object... args) {
|
|
||||||
sender.sendMessage(of(sender, key, args));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String of(String key, Locale locale, Object... args) {
|
public static String of(String key, Locale locale, Object... args) {
|
||||||
Locale loc = (locale != null) ? locale : currentLocale;
|
Locale loc = (locale != null) ? locale : currentLocale;
|
||||||
ResourceBundle bundle = getBundle(loc);
|
ResourceBundle bundle = getBundle(loc);
|
||||||
@ -50,30 +38,11 @@ public class Message {
|
|||||||
return ChatColor.translateAlternateColorCodes('&', formatted);
|
return ChatColor.translateAlternateColorCodes('&', formatted);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Locale senderLocale(CommandSender sender) {
|
|
||||||
if (sender instanceof Player p) {
|
|
||||||
String r = p.getLocale();
|
|
||||||
if (!r.isEmpty()) {
|
|
||||||
return fromMinecraftLocale(r);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return PainfulLoss.DEFAULT_LOCALE;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void clearCache() {
|
public static void clearCache() {
|
||||||
CACHE.clear();
|
CACHE.clear();
|
||||||
ResourceBundle.clearCache(Message.class.getClassLoader());
|
ResourceBundle.clearCache(Message.class.getClassLoader());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Locale fromMinecraftLocale(String mc) {
|
|
||||||
String tag = mc.replace('_', '-');
|
|
||||||
try {
|
|
||||||
return Locale.forLanguageTag(tag);
|
|
||||||
} catch (Exception ignored) {
|
|
||||||
return PainfulLoss.DEFAULT_LOCALE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static ResourceBundle getBundle(Locale loc) {
|
private static ResourceBundle getBundle(Locale loc) {
|
||||||
return CACHE.computeIfAbsent(loc, l ->
|
return CACHE.computeIfAbsent(loc, l ->
|
||||||
ResourceBundle.getBundle(BUNDLE_NAME, l, new Utf8Control()));
|
ResourceBundle.getBundle(BUNDLE_NAME, l, new Utf8Control()));
|
||||||
|
|||||||
@ -4,12 +4,10 @@ main: fr.molzonas.painfulloss.PainfulLoss
|
|||||||
api-version: '1.20'
|
api-version: '1.20'
|
||||||
author: Molzonas
|
author: Molzonas
|
||||||
commands:
|
commands:
|
||||||
itestfr:
|
|
||||||
description: Test i18n
|
|
||||||
usage: /itestfr
|
|
||||||
itesten:
|
|
||||||
description: Test i18n
|
|
||||||
usage: /itesten
|
|
||||||
painfulloss:
|
painfulloss:
|
||||||
description: Base command for Painfulloss
|
description: Base command for Painfulloss
|
||||||
usage: /painfulloss
|
usage: /painfulloss
|
||||||
|
permissions:
|
||||||
|
painfulloss.admin:
|
||||||
|
description: Access to PainfulLoss admin commands
|
||||||
|
default: op
|
||||||
Loading…
x
Reference in New Issue
Block a user