diff --git a/bukkit/src/main/java/me/confuser/banmanager/bukkit/BukkitPlayer.java b/bukkit/src/main/java/me/confuser/banmanager/bukkit/BukkitPlayer.java index 92d063378..d204b3d63 100644 --- a/bukkit/src/main/java/me/confuser/banmanager/bukkit/BukkitPlayer.java +++ b/bukkit/src/main/java/me/confuser/banmanager/bukkit/BukkitPlayer.java @@ -7,7 +7,6 @@ import me.confuser.banmanager.common.kyori.text.TextComponent; import me.confuser.banmanager.common.kyori.text.serializer.gson.GsonComponentSerializer; import me.confuser.banmanager.common.util.Message; -import me.confuser.banmanager.common.util.MessageRegistry; import me.confuser.banmanager.common.util.UUIDUtils; import net.md_5.bungee.chat.ComponentSerializer; import org.bukkit.Bukkit; @@ -126,13 +125,6 @@ public boolean isOnline() { return getPlayer() != null; } - @Override - public String getLocale() { - Player p = getPlayer(); - if (p == null) return "en"; - return MessageRegistry.normaliseLocale(p.getLocale()); - } - private Player getPlayer() { if (player != null) return player; if (isOnlineMode()) return Bukkit.getServer().getPlayer(uuid); diff --git a/bukkit/src/main/java/me/confuser/banmanager/bukkit/listeners/JoinListener.java b/bukkit/src/main/java/me/confuser/banmanager/bukkit/listeners/JoinListener.java index 94b53202a..acd283dc5 100644 --- a/bukkit/src/main/java/me/confuser/banmanager/bukkit/listeners/JoinListener.java +++ b/bukkit/src/main/java/me/confuser/banmanager/bukkit/listeners/JoinListener.java @@ -60,9 +60,8 @@ private class BanJoinHandler implements CommonJoinHandler { @Override public void handlePlayerDeny(PlayerData player, Message message) { plugin.getServer().callEvent("PlayerDeniedEvent", player, message); - String locale = player.getLocale() != null ? player.getLocale() : "en"; - event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_BANNED); - event.setKickMessage(BukkitServer.formatMessage(message.resolve(locale))); + + handleDeny(message); } @Override diff --git a/bungee/src/main/java/me/confuser/banmanager/bungee/BungeePlayer.java b/bungee/src/main/java/me/confuser/banmanager/bungee/BungeePlayer.java index 820be083b..1f8e7a381 100755 --- a/bungee/src/main/java/me/confuser/banmanager/bungee/BungeePlayer.java +++ b/bungee/src/main/java/me/confuser/banmanager/bungee/BungeePlayer.java @@ -6,7 +6,6 @@ import me.confuser.banmanager.common.data.PlayerData; import me.confuser.banmanager.common.kyori.text.TextComponent; import me.confuser.banmanager.common.util.Message; -import me.confuser.banmanager.common.util.MessageRegistry; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.chat.ComponentSerializer; @@ -111,13 +110,6 @@ public boolean canSee(CommonPlayer player) { return true; } - @Override - public String getLocale() { - java.util.Locale locale = player.getLocale(); - if (locale == null) return "en"; - return MessageRegistry.normaliseLocale(locale.toString()); - } - private ProxiedPlayer getPlayer() { return ProxyServer.getInstance().getPlayer(uuid); } diff --git a/bungee/src/main/java/me/confuser/banmanager/bungee/listeners/JoinListener.java b/bungee/src/main/java/me/confuser/banmanager/bungee/listeners/JoinListener.java index 032d2f249..3b35e4a09 100755 --- a/bungee/src/main/java/me/confuser/banmanager/bungee/listeners/JoinListener.java +++ b/bungee/src/main/java/me/confuser/banmanager/bungee/listeners/JoinListener.java @@ -58,9 +58,8 @@ private class BanJoinHandler implements CommonJoinHandler { @Override public void handlePlayerDeny(PlayerData player, Message message) { plugin.getServer().callEvent("PlayerDeniedEvent", player, message); - String locale = player.getLocale() != null ? player.getLocale() : "en"; - event.setCancelled(true); - event.setCancelReason(BungeeServer.formatMessage(message.resolve(locale))); + + handleDeny(message); } @Override diff --git a/common/src/main/java/me/confuser/banmanager/common/BanManagerPlugin.java b/common/src/main/java/me/confuser/banmanager/common/BanManagerPlugin.java index 04396fb83..ac0c8a452 100644 --- a/common/src/main/java/me/confuser/banmanager/common/BanManagerPlugin.java +++ b/common/src/main/java/me/confuser/banmanager/common/BanManagerPlugin.java @@ -14,7 +14,6 @@ import me.confuser.banmanager.common.ormlite.logger.LocalLog; import me.confuser.banmanager.common.ormlite.support.ConnectionSource; import me.confuser.banmanager.common.ormlite.support.DatabaseConnection; -import me.confuser.banmanager.common.configuration.file.YamlConfiguration; import me.confuser.banmanager.common.runnables.Runner; import me.confuser.banmanager.common.storage.*; import me.confuser.banmanager.common.storage.global.*; @@ -22,11 +21,9 @@ import me.confuser.banmanager.common.storage.mariadb.MariaDBDatabase; import me.confuser.banmanager.common.storage.mysql.MySQLDatabase; import me.confuser.banmanager.common.util.DriverManagerUtil; -import me.confuser.banmanager.common.util.Message; -import me.confuser.banmanager.common.util.MessageRegistry; -import java.io.*; -import java.nio.file.Files; +import java.io.File; +import java.io.IOException; import java.sql.SQLException; import static java.lang.Long.parseLong; @@ -156,9 +153,6 @@ public class BanManagerPlugin { @Getter private PlaceholderResolver placeholderResolver; - @Getter - private MessageRegistry messageRegistry; - public BanManagerPlugin(PluginInfo pluginInfo, CommonLogger logger, File dataFolder, CommonScheduler scheduler, CommonServer server, CommonMetrics metrics) { this.pluginInfo = pluginInfo; this.logger = logger; @@ -274,6 +268,11 @@ public final void disable() { } public void setupConfigs() { + MessagesConfig newMessagesConfig = new MessagesConfig(dataFolder, logger); + if (!newMessagesConfig.load()) { + logger.warning("Failed to reload messages.yml, keeping previous messages"); + } + config = reloadConfig(new DefaultConfig(dataFolder, logger), config, "config.yml"); consoleConfig = reloadConfig(new ConsoleConfig(dataFolder, logger), consoleConfig, "console.yml"); schedulesConfig = reloadConfig(new SchedulesConfig(dataFolder, logger), schedulesConfig, "schedules.yml"); @@ -281,119 +280,6 @@ public void setupConfigs() { reasonsConfig = reloadConfig(new ReasonsConfig(dataFolder, logger), reasonsConfig, "reasons.yml"); geoIpConfig = reloadConfig(new GeoIpConfig(dataFolder, logger), geoIpConfig, "geoip.yml"); webhookConfig = reloadConfig(new WebhookConfig(dataFolder, logger), webhookConfig, "webhooks.yml"); - - loadMessages(); - } - - private void loadMessages() { - String defaultLocale = config != null ? config.getDefaultLocale() : "en"; - MessageRegistry newRegistry = new MessageRegistry(defaultLocale); - - copyMessagesDirectory(); - - File messagesDir = new File(dataFolder, "messages"); - if (messagesDir.exists() && messagesDir.isDirectory()) { - File[] files = messagesDir.listFiles((dir, name) -> - name.startsWith("messages_") && name.endsWith(".yml")); - - if (files != null) { - for (File file : files) { - String fileName = file.getName(); - String locale = fileName.substring("messages_".length(), fileName.length() - ".yml".length()); - loadLocaleFile(newRegistry, file, locale); - } - } - } - - File legacyMessages = new File(dataFolder, "messages.yml"); - if (legacyMessages.exists()) { - loadLocaleFile(newRegistry, legacyMessages, defaultLocale); - } - - if (!newRegistry.hasAnyMessages()) { - if (messageRegistry != null) { - logger.warning("No messages loaded, keeping previous messages"); - return; - } - } - - if (messageRegistry != null) { - messageRegistry.atomicSwap(newRegistry); - } else { - messageRegistry = newRegistry; - } - - Message.init(messageRegistry, logger); - - logLocaleInfo(); - } - - private void logLocaleInfo() { - if (messageRegistry == null) return; - - java.util.Set locales = messageRegistry.getAvailableLocales(); - logger.info("Loaded " + locales.size() + " locale(s): " + String.join(", ", locales)); - - String defaultLocale = messageRegistry.getDefaultLocale(); - for (String locale : locales) { - if (locale.equals(defaultLocale)) continue; - int missing = messageRegistry.getMissingKeyCount(locale); - if (missing > 0) { - logger.info("Locale '" + locale + "' is missing " + missing + " key(s) (will fall back to '" + defaultLocale + "')"); - } - } - } - - private void loadLocaleFile(MessageRegistry registry, File file, String locale) { - try { - YamlConfiguration conf = new YamlConfiguration(); - conf.load(file); - - if (conf.getConfigurationSection("messages") == null) { - logger.warning("Messages section not found in " + file.getName() + ", skipping"); - return; - } - - java.util.Map messages = new java.util.HashMap<>(); - - for (String key : conf.getConfigurationSection("messages").getKeys(true)) { - String value = conf.getString("messages." + key); - if (value != null) { - messages.put(key, value.replace("\\n", "\n").replaceAll("(?<=\\n)(?=\\n)", " ")); - } - } - - if (!messages.isEmpty()) { - java.util.Map existing = registry.getMessages(locale); - if (!existing.isEmpty()) { - java.util.Map merged = new java.util.HashMap<>(existing); - merged.putAll(messages); - registry.loadLocale(locale, merged); - } else { - registry.loadLocale(locale, messages); - } - } - } catch (Exception e) { - logger.warning("Failed to load " + file.getName(), e); - } - } - - private void copyMessagesDirectory() { - File messagesDir = new File(dataFolder, "messages"); - if (!messagesDir.exists()) { - messagesDir.mkdirs(); - } - - File defaultMessages = new File(messagesDir, "messages_en.yml"); - if (!defaultMessages.exists()) { - try (InputStream in = getClass().getClassLoader().getResourceAsStream("messages/messages_en.yml")) { - if (in != null) { - Files.copy(in, defaultMessages.toPath()); - } - } catch (IOException e) { - logger.warning("Failed to copy default messages_en.yml", e); - } - } } /** diff --git a/common/src/main/java/me/confuser/banmanager/common/CommonPlayer.java b/common/src/main/java/me/confuser/banmanager/common/CommonPlayer.java index 0ad1fc2dc..338ffe1c3 100644 --- a/common/src/main/java/me/confuser/banmanager/common/CommonPlayer.java +++ b/common/src/main/java/me/confuser/banmanager/common/CommonPlayer.java @@ -12,10 +12,6 @@ public interface CommonPlayer extends CommonSender { void kick(String message); - default void kick(Message message) { - kick(message.resolveFor(this)); - } - void sendMessage(String message); void sendMessage(Message message); @@ -47,6 +43,4 @@ default void kick(Message message) { boolean teleport(CommonWorld world, double x, double y, double z, float pitch, float yaw); boolean canSee(CommonPlayer player); - - String getLocale(); } diff --git a/common/src/main/java/me/confuser/banmanager/common/CommonServer.java b/common/src/main/java/me/confuser/banmanager/common/CommonServer.java index 212857aef..74af21dd2 100644 --- a/common/src/main/java/me/confuser/banmanager/common/CommonServer.java +++ b/common/src/main/java/me/confuser/banmanager/common/CommonServer.java @@ -3,7 +3,6 @@ import me.confuser.banmanager.common.api.events.CommonEvent; import me.confuser.banmanager.common.commands.CommonSender; import me.confuser.banmanager.common.kyori.text.TextComponent; -import me.confuser.banmanager.common.util.Message; import java.util.UUID; @@ -18,15 +17,6 @@ public interface CommonServer { void broadcast(String message, String permission); - default void broadcast(Message message, String permission) { - for (CommonPlayer player : getOnlinePlayers()) { - if (player.hasPermission(permission)) { - player.sendMessage(message.resolveFor(player)); - } - } - getConsoleSender().sendMessage(message.toString()); - } - void broadcastJSON(TextComponent message, String permission); void broadcast(String message, String permission, CommonSender sender); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/BanCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/BanCommand.java index 33de448f7..275e28b15 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/BanCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/BanCommand.java @@ -167,7 +167,7 @@ public boolean onCommand(CommonSender sender, CommandParser parser) { if (onlinePlayer != null) { final Message finalKickMessage = kickMessage; getPlugin().getScheduler().runSync(() -> { - onlinePlayer.kick(finalKickMessage); + onlinePlayer.kick(finalKickMessage.toString()); }); } }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/BanIpCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/BanIpCommand.java index 9d663386d..f5cb640e8 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/BanIpCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/BanIpCommand.java @@ -130,7 +130,7 @@ public boolean onCommand(CommonSender sender, CommandParser parser) { for (CommonPlayer onlinePlayer : getPlugin().getServer().getOnlinePlayers()) { if (IPUtils.toIPAddress(onlinePlayer.getAddress()).equals(ip)) { - onlinePlayer.kick(kickMessage); + onlinePlayer.kick(kickMessage.toString()); } } }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/BanIpRangeCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/BanIpRangeCommand.java index 4725fb019..5c7428c73 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/BanIpRangeCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/BanIpRangeCommand.java @@ -82,7 +82,7 @@ public boolean onCommand(final CommonSender sender, CommandParser parser) { for (CommonPlayer onlinePlayer : getPlugin().getServer().getOnlinePlayers()) { if (ban.inRange(IPUtils.toIPAddress(onlinePlayer.getAddress()))) { - onlinePlayer.kick(kickMessage); + onlinePlayer.kick(kickMessage.toString()); } } }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/BanNameCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/BanNameCommand.java index abb288aad..954c2896d 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/BanNameCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/BanNameCommand.java @@ -91,7 +91,7 @@ public boolean onCommand(final CommonSender sender, CommandParser parser) { for (CommonPlayer onlinePlayer : getPlugin().getServer().getOnlinePlayers()) { if (onlinePlayer.getName().equalsIgnoreCase(name)) { - onlinePlayer.kick(kickMessage); + onlinePlayer.kick(kickMessage.toString()); } } }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/KickAllCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/KickAllCommand.java index cbe571ad9..7e937db67 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/KickAllCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/KickAllCommand.java @@ -94,14 +94,14 @@ public boolean onCommand(final CommonSender sender, CommandParser parser) { .set("playerId", player.getUniqueId().toString()) .set("actor", actor.getName()); - player.kick(kickMessage); + player.kick(kickMessage.toString()); } if (isSilent || !sender.hasPermission("bm.notify.kick")) { message.sendTo(sender); } - if (!isSilent) getPlugin().getServer().broadcast(message, "bm.notify.kick"); + if (!isSilent) getPlugin().getServer().broadcast(message.toString(), "bm.notify.kick"); }); }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/KickCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/KickCommand.java index 33cebaf20..0736fdc1a 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/KickCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/KickCommand.java @@ -82,13 +82,13 @@ public boolean onCommand(final CommonSender sender, CommandParser parser) { Message message = Message.get(reason.isEmpty() ? "kick.notify.noReason" : "kick.notify.reason"); message.set("player", player.getName()).set("actor", actor.getName()).set("reason", reason); - player.kick(kickMessage); + player.kick(kickMessage.toString()); if (isSilent || !sender.hasPermission("bm.notify.kick")) { message.sendTo(sender); } - if (!isSilent) getPlugin().getServer().broadcast(message, "bm.notify.kick"); + if (!isSilent) getPlugin().getServer().broadcast(message.toString(), "bm.notify.kick"); }); if (getPlugin().getConfig().isKickLoggingEnabled()) { diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/LoglessKickAllCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/LoglessKickAllCommand.java index 36d07e644..182fd3660 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/LoglessKickAllCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/LoglessKickAllCommand.java @@ -57,14 +57,14 @@ public boolean onCommand(final CommonSender sender, CommandParser parser) { .set("playerId", player.getUniqueId().toString()) .set("actor", actor.getName()); - player.kick(kickMessage); + player.kick(kickMessage.toString()); } if (isSilent || !sender.hasPermission("bm.notify.kick")) { message.sendTo(sender); } - if (!isSilent) getPlugin().getServer().broadcast(message, "bm.notify.kick"); + if (!isSilent) getPlugin().getServer().broadcast(message.toString(), "bm.notify.kick"); }); }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/LoglessKickCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/LoglessKickCommand.java index 666661390..699de15e9 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/LoglessKickCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/LoglessKickCommand.java @@ -79,13 +79,13 @@ public boolean onCommand(final CommonSender sender, CommandParser parser) { Message message = Message.get(reason.isEmpty() ? "kick.notify.noReason" : "kick.notify.reason"); message.set("player", player.getName()).set("actor", actor.getName()).set("reason", reason); - player.kick(kickMessage); + player.kick(kickMessage.toString()); if (isSilent || !sender.hasPermission("bm.notify.kick")) { message.sendTo(sender); } - if (!isSilent) getPlugin().getServer().broadcast(message, "bm.notify.kick"); + if (!isSilent) getPlugin().getServer().broadcast(message.toString(), "bm.notify.kick"); }); }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/TempBanCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/TempBanCommand.java index 46264416c..b7e848eab 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/TempBanCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/TempBanCommand.java @@ -190,7 +190,7 @@ public void run() { if (onlinePlayer != null) { final Message finalKickMessage = kickMessage; getPlugin().getScheduler().runSync(() -> { - onlinePlayer.kick(finalKickMessage); + onlinePlayer.kick(finalKickMessage.toString()); }); } diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/TempIpBanCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/TempIpBanCommand.java index c358e80ba..9d24ab14a 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/TempIpBanCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/TempIpBanCommand.java @@ -148,7 +148,7 @@ public boolean onCommand(final CommonSender sender, CommandParser parser) { for (CommonPlayer onlinePlayer : getPlugin().getServer().getOnlinePlayers()) { if (IPUtils.toIPAddress(onlinePlayer.getAddress()).equals(ip)) { - onlinePlayer.kick(kickMessage); + onlinePlayer.kick(kickMessage.toString()); } } }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/TempIpRangeBanCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/TempIpRangeBanCommand.java index 51831b09c..3c069e320 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/TempIpRangeBanCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/TempIpRangeBanCommand.java @@ -101,7 +101,7 @@ public boolean onCommand(final CommonSender sender, CommandParser parser) { for (CommonPlayer onlinePlayer : getPlugin().getServer().getOnlinePlayers()) { if (ban.inRange(IPUtils.toIPAddress((onlinePlayer.getAddress())))) { - onlinePlayer.kick(kickMessage); + onlinePlayer.kick(kickMessage.toString()); } } }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/TempNameBanCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/TempNameBanCommand.java index f9501f327..888c9cf4e 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/TempNameBanCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/TempNameBanCommand.java @@ -112,7 +112,7 @@ public void run() { for (CommonPlayer onlinePlayer : getPlugin().getServer().getOnlinePlayers()) { if (onlinePlayer.getName().equalsIgnoreCase(name)) { - onlinePlayer.kick(kickMessage); + onlinePlayer.kick(kickMessage.toString()); } } }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/TempWarnCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/TempWarnCommand.java index 3276a734d..ac830c16b 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/TempWarnCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/TempWarnCommand.java @@ -172,7 +172,7 @@ public boolean onCommand(final CommonSender sender, CommandParser originalParser message.sendTo(sender); } - if (!isSilent) getPlugin().getServer().broadcast(message, "bm.notify.tempwarn"); + if (!isSilent) getPlugin().getServer().broadcast(message.toString(), "bm.notify.tempwarn"); final List actionCommands; diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/UnbanCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/UnbanCommand.java index 44235e227..ce53ca001 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/UnbanCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/UnbanCommand.java @@ -106,7 +106,7 @@ public boolean onCommand(final CommonSender sender, CommandParser originalParser } if (!parser.isSilent()) { - getPlugin().getServer().broadcast(message, "bm.notify.unban"); + getPlugin().getServer().broadcast(message.toString(), "bm.notify.unban"); } }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/UnbanIpCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/UnbanIpCommand.java index 7df20c8d8..8ff8a4def 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/UnbanIpCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/UnbanIpCommand.java @@ -110,7 +110,7 @@ public boolean onCommand(final CommonSender sender, CommandParser originalParser } if (!parser.isSilent()) { - getPlugin().getServer().broadcast(message, "bm.notify.unbanip"); + getPlugin().getServer().broadcast(message.toString(), "bm.notify.unbanip"); } }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/UnbanIpRangeCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/UnbanIpRangeCommand.java index a83e72ff8..c7afb178e 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/UnbanIpRangeCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/UnbanIpRangeCommand.java @@ -98,7 +98,7 @@ public boolean onCommand(final CommonSender sender, CommandParser parser) { } if (!parser.isSilent()) { - getPlugin().getServer().broadcast(message, "bm.notify.unbaniprange"); + getPlugin().getServer().broadcast(message.toString(), "bm.notify.unbaniprange"); } }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/UnbanNameCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/UnbanNameCommand.java index 5b24ab88c..af43d9861 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/UnbanNameCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/UnbanNameCommand.java @@ -74,7 +74,7 @@ public boolean onCommand(final CommonSender sender, CommandParser parser) { } if (!parser.isSilent()) { - getPlugin().getServer().broadcast(message, "bm.notify.unbanname"); + getPlugin().getServer().broadcast(message.toString(), "bm.notify.unbanname"); } }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/UnmuteCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/UnmuteCommand.java index d2804b9bf..1d46002be 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/UnmuteCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/UnmuteCommand.java @@ -111,7 +111,7 @@ public void run() { } if (!parser.isSilent()) { - getPlugin().getServer().broadcast(message, "bm.notify.unmute"); + getPlugin().getServer().broadcast(message.toString(), "bm.notify.unmute"); } getPlugin().getScheduler().runSync(() -> { diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/UnmuteIpCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/UnmuteIpCommand.java index b2178e24f..7bd7162eb 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/UnmuteIpCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/UnmuteIpCommand.java @@ -98,7 +98,7 @@ public boolean onCommand(final CommonSender sender, CommandParser parser) { } if (!parser.isSilent()) { - getPlugin().getServer().broadcast(message, "bm.notify.unmuteip"); + getPlugin().getServer().broadcast(message.toString(), "bm.notify.unmuteip"); } }); diff --git a/common/src/main/java/me/confuser/banmanager/common/commands/WarnCommand.java b/common/src/main/java/me/confuser/banmanager/common/commands/WarnCommand.java index ecfbb9ac2..30ad696a9 100644 --- a/common/src/main/java/me/confuser/banmanager/common/commands/WarnCommand.java +++ b/common/src/main/java/me/confuser/banmanager/common/commands/WarnCommand.java @@ -151,7 +151,7 @@ public boolean onCommand(final CommonSender sender, CommandParser originalParser message.sendTo(sender); } - if (!isSilent) getPlugin().getServer().broadcast(message, "bm.notify.warn"); + if (!isSilent) getPlugin().getServer().broadcast(message.toString(), "bm.notify.warn"); final List actionCommands; diff --git a/common/src/main/java/me/confuser/banmanager/common/configs/DefaultConfig.java b/common/src/main/java/me/confuser/banmanager/common/configs/DefaultConfig.java index 926b6e4e3..ab5021310 100644 --- a/common/src/main/java/me/confuser/banmanager/common/configs/DefaultConfig.java +++ b/common/src/main/java/me/confuser/banmanager/common/configs/DefaultConfig.java @@ -76,10 +76,6 @@ public class DefaultConfig extends Config { @Getter private UUIDFetcher uuidFetcher; @Getter - private String defaultLocale; - @Getter - private boolean perPlayerLocale; - @Getter private String geyserPrefix; public DefaultConfig(File dataFolder, CommonLogger logger) { @@ -144,8 +140,6 @@ public void afterLoad() { uuidFetcher = new UUIDFetcher(idToName, nameToId); geyserPrefix = conf.getString("geyserPrefix", ""); - defaultLocale = conf.getString("locale.default", "en"); - perPlayerLocale = conf.getBoolean("locale.perPlayer", true); } public void handleBlockedCommands(BanManagerPlugin plugin, HashSet set) { diff --git a/common/src/main/java/me/confuser/banmanager/common/configs/MessagesConfig.java b/common/src/main/java/me/confuser/banmanager/common/configs/MessagesConfig.java index 995aa6e73..804f6b5f2 100644 --- a/common/src/main/java/me/confuser/banmanager/common/configs/MessagesConfig.java +++ b/common/src/main/java/me/confuser/banmanager/common/configs/MessagesConfig.java @@ -2,14 +2,10 @@ import me.confuser.banmanager.common.CommonLogger; +import me.confuser.banmanager.common.util.Message; import java.io.File; -/** - * Retained for backwards compatibility. Message loading is now handled - * by {@link me.confuser.banmanager.common.BanManagerPlugin#setupConfigs()} - * via the {@link me.confuser.banmanager.common.util.MessageRegistry}. - */ public class MessagesConfig extends Config { public MessagesConfig(File dataFolder, CommonLogger logger) { @@ -17,8 +13,11 @@ public MessagesConfig(File dataFolder, CommonLogger logger) { } public void afterLoad() { + Message.load(this); } public void onSave() { + } + } diff --git a/common/src/main/java/me/confuser/banmanager/common/data/PlayerData.java b/common/src/main/java/me/confuser/banmanager/common/data/PlayerData.java index b3c37f7b9..24802a5a1 100644 --- a/common/src/main/java/me/confuser/banmanager/common/data/PlayerData.java +++ b/common/src/main/java/me/confuser/banmanager/common/data/PlayerData.java @@ -32,11 +32,6 @@ public class PlayerData { @DatabaseField(columnDefinition = "BIGINT UNSIGNED NOT NULL") private long lastSeen = System.currentTimeMillis() / 1000L; - @DatabaseField(width = 16, columnDefinition = "VARCHAR(16)") - @Getter - @Setter - private String locale; - private UUID uuid = null; PlayerData() { diff --git a/common/src/main/java/me/confuser/banmanager/common/listeners/CommonBanListener.java b/common/src/main/java/me/confuser/banmanager/common/listeners/CommonBanListener.java index c994082db..e0e2d758e 100755 --- a/common/src/main/java/me/confuser/banmanager/common/listeners/CommonBanListener.java +++ b/common/src/main/java/me/confuser/banmanager/common/listeners/CommonBanListener.java @@ -36,7 +36,7 @@ public void notifyOnBan(PlayerBanData data, boolean silent) { .set("reason", data.getReason()); if (!silent) { - plugin.getServer().broadcast(message, broadcastPermission); + plugin.getServer().broadcast(message.toString(), broadcastPermission); } else if (plugin.getPlayerStorage().getConsole().getUUID().equals(data.getActor().getUUID())) { plugin.getServer().getConsoleSender().sendMessage(message); return; @@ -86,7 +86,7 @@ public void notifyOnBan(IpBanData data, boolean silent) { .set("players", playerNames.toString()); if (!silent) { - plugin.getServer().broadcast(message, broadcastPermission); + plugin.getServer().broadcast(message.toString(), broadcastPermission); } else if (plugin.getPlayerStorage().getConsole().getUUID().equals(data.getActor().getUUID())) { plugin.getServer().getConsoleSender().sendMessage(message); return; @@ -126,7 +126,7 @@ public void notifyOnBan(IpRangeBanData data, boolean silent) { .set("reason", data.getReason()); if (!silent) { - plugin.getServer().broadcast(message, broadcastPermission); + plugin.getServer().broadcast(message.toString(), broadcastPermission); } else if (plugin.getPlayerStorage().getConsole().getUUID().equals(data.getActor().getUUID())) { plugin.getServer().getConsoleSender().sendMessage(message); return; @@ -165,7 +165,7 @@ public void notifyOnBan(NameBanData data, boolean silent) { .set("reason", data.getReason()); if (!silent) { - plugin.getServer().broadcast(message, broadcastPermission); + plugin.getServer().broadcast(message.toString(), broadcastPermission); } else if (plugin.getPlayerStorage().getConsole().getUUID().equals(data.getActor().getUUID())) { plugin.getServer().getConsoleSender().sendMessage(message); return; diff --git a/common/src/main/java/me/confuser/banmanager/common/listeners/CommonChatListener.java b/common/src/main/java/me/confuser/banmanager/common/listeners/CommonChatListener.java index b0b49d7b1..289f72965 100755 --- a/common/src/main/java/me/confuser/banmanager/common/listeners/CommonChatListener.java +++ b/common/src/main/java/me/confuser/banmanager/common/listeners/CommonChatListener.java @@ -63,7 +63,7 @@ public boolean onPlayerChat(CommonPlayer player, CommonChatHandler handler, Stri .set("id", mute.getId()) .set("actor", mute.getActor().getName()); - plugin.getServer().broadcast(broadcast, "bm.notify.muted"); + plugin.getServer().broadcast(broadcast.toString(), "bm.notify.muted"); if (mute.isSoft()) { handler.handleSoftMute(); @@ -121,7 +121,7 @@ public boolean onIpChat(CommonPlayer player, InetAddress address, CommonChatHand .set("id", mute.getId()) .set("actor", mute.getActor().getName()); - plugin.getServer().broadcast(broadcast, "bm.notify.mutedip"); + plugin.getServer().broadcast(broadcast.toString(), "bm.notify.mutedip"); if (mute.isSoft()) { handler.handleSoftMute(); diff --git a/common/src/main/java/me/confuser/banmanager/common/listeners/CommonJoinListener.java b/common/src/main/java/me/confuser/banmanager/common/listeners/CommonJoinListener.java index c69f85655..21ce94a2c 100755 --- a/common/src/main/java/me/confuser/banmanager/common/listeners/CommonJoinListener.java +++ b/common/src/main/java/me/confuser/banmanager/common/listeners/CommonJoinListener.java @@ -216,25 +216,24 @@ public void banCheck(UUID id, String name, IPAddress address, CommonJoinHandler return; } - String locale = data.getPlayer().getLocale(); String dateTimeFormat; Message message; if (data.getExpires() == 0) { message = Message.get("ban.player.disallowed"); - dateTimeFormat = Message.getString("ban.player.dateTimeFormat", locale); + dateTimeFormat = Message.getString("ban.player.dateTimeFormat"); } else { message = Message.get("tempban.player.disallowed"); - message.set("expires", DateUtils.getDifferenceFormat(data.getExpires(), locale)); + message.set("expires", DateUtils.getDifferenceFormat(data.getExpires())); - dateTimeFormat = Message.getString("tempban.player.dateTimeFormat", locale); + dateTimeFormat = Message.getString("tempban.player.dateTimeFormat"); } message.set("id", data.getId()); message.set("player", data.getPlayer().getName()); message.set("reason", data.getReason()); message.set("actor", data.getActor().getName()); - message.set("created", DateUtils.format(dateTimeFormat != null ? dateTimeFormat : "dd-MM-yyyy kk:mm:ss", data.getCreated())); + message.set("created", DateUtils.format(dateTimeFormat, data.getCreated())); handler.handlePlayerDeny(data.getPlayer(), message); handleJoinDeny(data.getPlayer(), data.getActor(), data.getReason()); @@ -266,21 +265,6 @@ public void onJoin(final CommonPlayer player) { UUID id = player.getUniqueId(); - if (plugin.getConfig().isPerPlayerLocale()) { - try { - PlayerData playerData = plugin.getPlayerStorage().queryForId(UUIDUtils.toBytes(id)); - if (playerData != null) { - String locale = player.getLocale(); - if (locale != null && !locale.equals(playerData.getLocale())) { - playerData.setLocale(locale); - plugin.getPlayerStorage().update(playerData); - } - } - } catch (SQLException e) { - plugin.getLogger().warning("Failed to update player locale", e); - } - } - PlayerMuteData mute = plugin.getPlayerMuteStorage().getMute(id); if (mute != null && mute.isOnlineOnly() && mute.isPaused()) { try { @@ -294,7 +278,7 @@ public void onJoin(final CommonPlayer player) { try { notesItr = plugin.getPlayerNoteStorage().getNotes(id); - ArrayList notes = new ArrayList<>(); + ArrayList notes = new ArrayList<>(); String dateTimeFormat = Message.getString("notes.dateTimeFormat"); while (notesItr != null && notesItr.hasNext()) { @@ -306,7 +290,7 @@ public void onJoin(final CommonPlayer player) { .set("id", note.getId()) .set("created", DateUtils.format(dateTimeFormat, note.getCreated())); - notes.add(noteMessage); + notes.add(noteMessage.toString()); } if (notes.size() != 0) { @@ -316,12 +300,13 @@ public void onJoin(final CommonPlayer player) { plugin.getServer().broadcastJSON(NotesCommand.notesAmountMessage(player.getName(), noteJoinMessage), "bm.notify.notes.joinAmount"); - Message header = Message.get("notes.header") - .set("player", player.getName()); + String header = Message.get("notes.header") + .set("player", player.getName()) + .toString(); plugin.getServer().broadcast(header, "bm.notify.notes.join"); - for (Message message : notes) { + for (String message : notes) { plugin.getServer().broadcast(message, "bm.notify.notes.join"); } @@ -479,7 +464,7 @@ public void onPlayerLogin(final CommonPlayer player, CommonJoinHandler handler) message.set("player", player.getName()); message.set("players", sb.toString()); - plugin.getServer().broadcast(message, "bm.notify.duplicateips"); + plugin.getServer().broadcast(message.toString(), "bm.notify.duplicateips"); }, Duration.ofSeconds(1)); plugin.getScheduler().runAsyncLater(() -> { @@ -513,7 +498,7 @@ public void onPlayerLogin(final CommonPlayer player, CommonJoinHandler handler) message.set("player", player.getName()); message.set("players", sb.toString()); - plugin.getServer().broadcast(message, "bm.notify.alts"); + plugin.getServer().broadcast(message.toString(), "bm.notify.alts"); }, Duration.ofSeconds(1)); } @@ -527,7 +512,7 @@ private void handleJoinDeny(PlayerData player, PlayerData actor, String reason) .set("reason", reason) .set("actor", actor.getName()); - plugin.getServer().broadcast(message, "bm.notify.denied.player"); + plugin.getServer().broadcast(message.toString(), "bm.notify.denied.player"); } private void handleJoinDeny(String ip, PlayerData actor, String reason) { @@ -539,7 +524,7 @@ private void handleJoinDeny(String ip, PlayerData actor, String reason) { .set("reason", reason) .set("actor", actor.getName()); - plugin.getServer().broadcast(message, "bm.notify.denied.ip"); + plugin.getServer().broadcast(message.toString(), "bm.notify.denied.ip"); } private void denyAlts(List duplicates, final UUID uuid) { @@ -567,7 +552,7 @@ private void denyAlts(List duplicates, final UUID uuid) { .set("id", ban.getId()) .set("actor", ban.getActor().getName()); - bukkitPlayer.kick(kickMessage); + bukkitPlayer.kick(kickMessage.toString()); }); } } @@ -608,7 +593,7 @@ private void punishAlts(List duplicates, UUID uuid) throws SQLExcept .set("id", newBan.getId()) .set("actor", newBan.getActor().getName()); - bukkitPlayer.kick(kickMessage); + bukkitPlayer.kick(kickMessage.toString()); }); } } else if (!plugin.getPlayerMuteStorage().isMuted(uuid)) { diff --git a/common/src/main/java/me/confuser/banmanager/common/listeners/CommonMuteListener.java b/common/src/main/java/me/confuser/banmanager/common/listeners/CommonMuteListener.java index c82ab19e7..a26e9a137 100755 --- a/common/src/main/java/me/confuser/banmanager/common/listeners/CommonMuteListener.java +++ b/common/src/main/java/me/confuser/banmanager/common/listeners/CommonMuteListener.java @@ -46,7 +46,7 @@ public void notifyOnMute(PlayerMuteData data, boolean silent) { .set("reason", data.getReason()); if (!silent) { - plugin.getServer().broadcast(message, broadcastPermission); + plugin.getServer().broadcast(message.toString(), broadcastPermission); } else if (plugin.getPlayerStorage().getConsole().getUUID().equals(data.getActor().getUUID())) { plugin.getServer().getConsoleSender().sendMessage(message); return; @@ -97,7 +97,7 @@ public void notifyOnMute(IpMuteData data, boolean silent) { .set("players", playerNames.toString()); if (!silent) { - plugin.getServer().broadcast(message, broadcastPermission); + plugin.getServer().broadcast(message.toString(), broadcastPermission); } else if (plugin.getPlayerStorage().getConsole().getUUID().equals(data.getActor().getUUID())) { plugin.getServer().getConsoleSender().sendMessage(message); return; diff --git a/common/src/main/java/me/confuser/banmanager/common/listeners/CommonNoteListener.java b/common/src/main/java/me/confuser/banmanager/common/listeners/CommonNoteListener.java index 2771b6c8a..43743a4eb 100755 --- a/common/src/main/java/me/confuser/banmanager/common/listeners/CommonNoteListener.java +++ b/common/src/main/java/me/confuser/banmanager/common/listeners/CommonNoteListener.java @@ -27,7 +27,7 @@ public void notifyOnNote(PlayerNoteData data, boolean silent) { .set("message", data.getMessage()); if (!silent) { - plugin.getServer().broadcast(message, broadcastPermission); + plugin.getServer().broadcast(message.toString(), broadcastPermission); } else if (plugin.getPlayerStorage().getConsole().getUUID().equals(data.getActor().getUUID())) { plugin.getServer().getConsoleSender().sendMessage(message); return; diff --git a/common/src/main/java/me/confuser/banmanager/common/listeners/CommonReportListener.java b/common/src/main/java/me/confuser/banmanager/common/listeners/CommonReportListener.java index 11c3db18f..f63a601fc 100755 --- a/common/src/main/java/me/confuser/banmanager/common/listeners/CommonReportListener.java +++ b/common/src/main/java/me/confuser/banmanager/common/listeners/CommonReportListener.java @@ -24,7 +24,7 @@ public void notifyOnReport(PlayerReportData data) { .set("reason", data.getReason()) .set("id", data.getId()); - plugin.getServer().broadcast(message, "bm.notify.report"); + plugin.getServer().broadcast(message.toString(), "bm.notify.report"); // Check if the sender is online and does not have the // broadcastPermission diff --git a/common/src/main/java/me/confuser/banmanager/common/runnables/BanSync.java b/common/src/main/java/me/confuser/banmanager/common/runnables/BanSync.java index fda566c42..eef8825e7 100644 --- a/common/src/main/java/me/confuser/banmanager/common/runnables/BanSync.java +++ b/common/src/main/java/me/confuser/banmanager/common/runnables/BanSync.java @@ -66,7 +66,7 @@ private void newBans() { .set("reason", ban.getReason()) .set("actor", ban.getActor().getName()); - bukkitPlayer.kick(kickMessage); + bukkitPlayer.kick(kickMessage.toString()); }); } diff --git a/common/src/main/java/me/confuser/banmanager/common/runnables/GlobalBanSync.java b/common/src/main/java/me/confuser/banmanager/common/runnables/GlobalBanSync.java index 02dee8cf0..1f0735934 100644 --- a/common/src/main/java/me/confuser/banmanager/common/runnables/GlobalBanSync.java +++ b/common/src/main/java/me/confuser/banmanager/common/runnables/GlobalBanSync.java @@ -91,7 +91,7 @@ private void kickPlayer(PlayerBanData globalBan) { .set("reason", globalBan.getReason()) .set("actor", globalBan.getActor().getName()); - bukkitPlayer.kick(kickMessage); + bukkitPlayer.kick(kickMessage.toString()); }); } diff --git a/common/src/main/java/me/confuser/banmanager/common/runnables/GlobalIpSync.java b/common/src/main/java/me/confuser/banmanager/common/runnables/GlobalIpSync.java index e79fd73a2..66d95681c 100644 --- a/common/src/main/java/me/confuser/banmanager/common/runnables/GlobalIpSync.java +++ b/common/src/main/java/me/confuser/banmanager/common/runnables/GlobalIpSync.java @@ -77,7 +77,7 @@ private void kickPlayers(IpBanData globalBan) { for (CommonPlayer onlinePlayer : plugin.getServer().getOnlinePlayers()) { if (IPUtils.toIPAddress(onlinePlayer.getAddress()).equals(globalBan.getIp())) { - onlinePlayer.kick(kickMessage); + onlinePlayer.kick(kickMessage.toString()); } } }); diff --git a/common/src/main/java/me/confuser/banmanager/common/runnables/NameSync.java b/common/src/main/java/me/confuser/banmanager/common/runnables/NameSync.java index 545bc3bd0..2da425b74 100644 --- a/common/src/main/java/me/confuser/banmanager/common/runnables/NameSync.java +++ b/common/src/main/java/me/confuser/banmanager/common/runnables/NameSync.java @@ -62,7 +62,7 @@ private void newBans() { .set("reason", ban.getReason()) .set("actor", ban.getActor().getName()); - bukkitPlayer.kick(kickMessage); + bukkitPlayer.kick(kickMessage.toString()); }); } diff --git a/common/src/main/java/me/confuser/banmanager/common/util/DateUtils.java b/common/src/main/java/me/confuser/banmanager/common/util/DateUtils.java index 7a3e32911..f43c50608 100644 --- a/common/src/main/java/me/confuser/banmanager/common/util/DateUtils.java +++ b/common/src/main/java/me/confuser/banmanager/common/util/DateUtils.java @@ -29,12 +29,8 @@ public class DateUtils { .compile("(?:([0-9]+)\\s*y[a-z]*[,\\s]*)?" + "(?:([0-9]+)\\s*mo[a-z]*[,\\s]*)?" + "(?:([0-9]+)\\s*w[a-z]*[,\\s]*)?" + "(?:([0-9]+)\\s*d[a-z]*[,\\s]*)?" + "(?:([0-9]+)\\s*h[a-z]*[,\\s]*)?" + "(?:([0-9]+)\\s*m[a-z]*[,\\s]*)?" + "(?:([0-9]+)\\s*(?:s[a-z]*)?)?", Pattern.CASE_INSENSITIVE); public static String formatDifference(long time) { - return formatDifference(time, null); - } - - public static String formatDifference(long time, String locale) { if (time == 0) { - return locale != null ? Message.getString("never", locale) : Message.getString("never"); + return Message.getString("never"); } StringBuilder diff = new StringBuilder(); @@ -73,32 +69,24 @@ public static String formatDifference(long time, String locale) { String key = timesString.get(i); if (duration > 1) key += "s"; - if (locale != null) { - diff.append(Message.get("time." + key).resolve(locale)); - } else { - diff.append(Message.get("time." + key)); - } + diff.append(Message.get("time." + key)); } + // Hack to avoid async error if ((field == Calendar.SECOND) && (duration == 59)) { - return formatDifference(time + 1, locale); + return formatDifference(time + 1); } } - String nowStr = locale != null ? Message.getString("time.now", locale) : Message.getString("time.now"); - return diff.length() == 0 ? nowStr : diff.toString(); + return diff.length() == 0 ? Message.getString("time.now") : diff.toString(); } public static String getDifferenceFormat(long timestamp) { return formatDifference(timestamp - (System.currentTimeMillis() / 1000L)); } - public static String getDifferenceFormat(long timestamp, String locale) { - return formatDifference(timestamp - (System.currentTimeMillis() / 1000L), locale); - } - // Copyright essentials, all credits to them for this. public static long parseDateDiff(String time, boolean future) throws Exception { // Support raw timestamps diff --git a/common/src/main/java/me/confuser/banmanager/common/util/Message.java b/common/src/main/java/me/confuser/banmanager/common/util/Message.java index e8cccd492..88b26b0cf 100644 --- a/common/src/main/java/me/confuser/banmanager/common/util/Message.java +++ b/common/src/main/java/me/confuser/banmanager/common/util/Message.java @@ -1,5 +1,6 @@ package me.confuser.banmanager.common.util; +import lombok.EqualsAndHashCode; import lombok.Getter; import me.confuser.banmanager.common.BanManagerPlugin; import me.confuser.banmanager.common.CommonLogger; @@ -9,41 +10,38 @@ import me.confuser.banmanager.common.configs.Config; import me.confuser.banmanager.common.configuration.file.YamlConfiguration; -import java.util.LinkedHashMap; -import java.util.Map; +import java.util.HashMap; +@EqualsAndHashCode public class Message { - private static volatile MessageRegistry registry; - private static volatile CommonLogger logger; + private static HashMap messages = new HashMap<>(10); + private static CommonLogger logger; @Getter private String key; - private final LinkedHashMap replacements = new LinkedHashMap<>(); + private String message; public Message(String key) { this.key = key; + this.message = messages.get(key); - if (registry != null && registry.getMessage(key) == null) { - if (logger != null) logger.warning("Missing " + key + " message"); + if (this.message == null) { + logger.warning("Missing " + key + " message"); + this.message = ""; } } public Message(String key, String message) { - this.key = key; - - if (registry != null) { - if (registry.getMessage(key) != null) { - if (logger != null) logger.warning(key + " message already exists"); - return; - } - registry.putMessage(key, message); + if (messages.containsKey(key)) { + logger.warning(key + " message already exists"); + return; } - } - public static void init(MessageRegistry messageRegistry, CommonLogger commonLogger) { - registry = messageRegistry; - logger = commonLogger; + this.key = key; + this.message = message; + messages.put(key, message); + } public static Message get(String key) { @@ -51,90 +49,67 @@ public static Message get(String key) { } public static String getString(String key) { - if (registry == null) return null; - return registry.getMessage(key); + return messages.get(key); } - public static String getString(String key, String locale) { - if (registry == null) return null; - return registry.getMessage(key, locale); - } - - /** - * @deprecated Use {@link #init(MessageRegistry, CommonLogger)} instead. - * Loads messages from the YAML config into the active registry for backwards compatibility. - */ - @Deprecated public static void load(YamlConfiguration config, CommonLogger commonLogger) { logger = commonLogger; - if (registry != null && config.getConfigurationSection("messages") != null) { - for (String key : config.getConfigurationSection("messages").getKeys(true)) { - String value = config.getString("messages." + key); - if (value != null) { - registry.putMessage(key, value.replace("\\n", "\n").replaceAll("(?<=\\n)(?=\\n)", " ")); - } + if (config.getConfigurationSection("messages") == null) { + commonLogger.warning("Messages section not found in messages.yml, keeping previous messages"); + return; + } + + HashMap newMessages = new HashMap<>(10); + for (String key : config.getConfigurationSection("messages").getKeys(true)) { + String value = config.getString("messages." + key); + if (value != null) { + newMessages.put(key, value.replace("\\n", "\n").replaceAll("(?<=\\n)(?=\\n)", " ")); } } + + if (!newMessages.isEmpty()) { + messages.clear(); + messages.putAll(newMessages); + } else { + commonLogger.warning("No messages loaded from messages.yml, keeping previous messages"); + } } - /** - * @deprecated Use {@link #init(MessageRegistry, CommonLogger)} instead. - */ - @Deprecated public static void load(Config config) { load(config.conf, config.getLogger()); } public Message replace(CharSequence oldChar, CharSequence newChar) { - replacements.put("__replace__" + replacements.size(), new String[]{oldChar.toString(), newChar.toString()}); + message = this.message.replace(oldChar, newChar); + return this; } public Message set(String token, String replace) { - replacements.put(token, new String[]{"[" + token + "]", replace}); - return this; + return replace("[" + token + "]", replace); } public Message set(String token, Integer replace) { - return set(token, replace.toString()); + return replace("[" + token + "]", replace.toString()); } public Message set(String token, Double replace) { - return set(token, replace.toString()); + return replace("[" + token + "]", replace.toString()); } public Message set(String token, Long replace) { - return set(token, replace.toString()); + return replace("[" + token + "]", replace.toString()); } public Message set(String token, Float replace) { - return set(token, replace.toString()); - } - - public String resolve(String locale) { - if (registry == null) return ""; - - String template = registry.getMessage(key, locale); - if (template == null) return ""; - - return applyReplacements(template); - } - - public String resolveFor(CommonPlayer player) { - if (player == null) return resolve(getDefaultLocale()); - - BanManagerPlugin plugin = BanManagerPlugin.getInstance(); - if (plugin != null && plugin.getConfig() != null && plugin.getConfig().isPerPlayerLocale()) { - return resolve(player.getLocale()); - } - return resolve(getDefaultLocale()); + return replace("[" + token + "]", replace.toString()); } public boolean sendTo(CommonSender sender) { if (sender == null) return false; - sender.sendMessage(resolve(getDefaultLocale())); + sender.sendMessage(message); return true; } @@ -143,10 +118,10 @@ public boolean sendTo(CommonPlayer player) { if (player == null) return false; if (!player.isOnline()) return false; - String resolved = resolveFor(player); + String resolved = message; PlaceholderResolver resolver = BanManagerPlugin.getInstance().getPlaceholderResolver(); if (resolver != null) { - resolved = resolver.resolve(player, resolved); + resolved = resolver.resolve(player, message); } player.sendMessage(resolved); @@ -160,20 +135,6 @@ public static boolean isJSONMessage(String message) { @Override public String toString() { - return resolve(getDefaultLocale()); - } - - private String applyReplacements(String template) { - String result = template; - for (Map.Entry entry : replacements.entrySet()) { - String[] pair = entry.getValue(); - result = result.replace(pair[0], pair[1]); - } - return result; - } - - private static String getDefaultLocale() { - if (registry == null) return "en"; - return registry.getDefaultLocale(); + return message; } } diff --git a/common/src/main/java/me/confuser/banmanager/common/util/MessageRegistry.java b/common/src/main/java/me/confuser/banmanager/common/util/MessageRegistry.java deleted file mode 100644 index 341946a65..000000000 --- a/common/src/main/java/me/confuser/banmanager/common/util/MessageRegistry.java +++ /dev/null @@ -1,139 +0,0 @@ -package me.confuser.banmanager.common.util; - -import java.util.*; - -public class MessageRegistry { - - private static final class Snapshot { - final String defaultLocale; - final Map> locales; - - Snapshot(String defaultLocale, Map> locales) { - this.defaultLocale = defaultLocale; - this.locales = locales; - } - } - - private volatile Snapshot snapshot; - - public MessageRegistry(String defaultLocale) { - this.snapshot = new Snapshot(normaliseLocale(defaultLocale), new HashMap<>()); - } - - public static String normaliseLocale(String locale) { - if (locale == null || locale.isEmpty()) return "en"; - return locale.toLowerCase(Locale.ROOT).replace('-', '_'); - } - - public String getDefaultLocale() { - return snapshot.defaultLocale; - } - - public void loadLocale(String locale, Map messages) { - String normalised = normaliseLocale(locale); - Snapshot s = this.snapshot; - Map> copy = new HashMap<>(s.locales); - copy.put(normalised, Collections.unmodifiableMap(new HashMap<>(messages))); - this.snapshot = new Snapshot(s.defaultLocale, copy); - } - - public String getMessage(String key, String locale) { - String normalised = normaliseLocale(locale); - Snapshot s = this.snapshot; - - String value = getFromLocale(s.locales, key, normalised); - if (value != null) return value; - - int underscore = normalised.indexOf('_'); - if (underscore > 0) { - String baseLanguage = normalised.substring(0, underscore); - value = getFromLocale(s.locales, key, baseLanguage); - if (value != null) return value; - } - - if (!normalised.equals(s.defaultLocale)) { - value = getFromLocale(s.locales, key, s.defaultLocale); - if (value != null) return value; - } - - return null; - } - - public String getMessage(String key) { - return getMessage(key, snapshot.defaultLocale); - } - - public void putMessage(String key, String message) { - putMessage(key, message, snapshot.defaultLocale); - } - - public void putMessage(String key, String message, String locale) { - String normalised = normaliseLocale(locale); - Snapshot s = this.snapshot; - Map> copy = new HashMap<>(s.locales); - Map localeMessages = copy.get(normalised); - - if (localeMessages == null) { - localeMessages = new HashMap<>(); - } else { - localeMessages = new HashMap<>(localeMessages); - } - - localeMessages.put(key, message); - copy.put(normalised, Collections.unmodifiableMap(localeMessages)); - this.snapshot = new Snapshot(s.defaultLocale, copy); - } - - public Set getAvailableLocales() { - return Collections.unmodifiableSet(new HashSet<>(snapshot.locales.keySet())); - } - - public Set getKeys(String locale) { - Map localeMessages = snapshot.locales.get(normaliseLocale(locale)); - if (localeMessages == null) return Collections.emptySet(); - return Collections.unmodifiableSet(localeMessages.keySet()); - } - - public Map getMessages(String locale) { - Map localeMessages = snapshot.locales.get(normaliseLocale(locale)); - if (localeMessages == null) return Collections.emptyMap(); - return localeMessages; - } - - public boolean hasAnyMessages() { - Snapshot s = this.snapshot; - for (Map msgs : s.locales.values()) { - if (!msgs.isEmpty()) return true; - } - return false; - } - - public int getMissingKeyCount(String locale) { - Snapshot s = this.snapshot; - Set defaultKeys = getKeysFromSnapshot(s, s.defaultLocale); - Set localeKeys = getKeysFromSnapshot(s, normaliseLocale(locale)); - int missing = 0; - - for (String key : defaultKeys) { - if (!localeKeys.contains(key)) missing++; - } - - return missing; - } - - public void atomicSwap(MessageRegistry newRegistry) { - this.snapshot = newRegistry.snapshot; - } - - private static Set getKeysFromSnapshot(Snapshot s, String locale) { - Map messages = s.locales.get(locale); - if (messages == null) return Collections.emptySet(); - return messages.keySet(); - } - - private static String getFromLocale(Map> locales, String key, String locale) { - Map messages = locales.get(locale); - if (messages == null) return null; - return messages.get(key); - } -} diff --git a/common/src/main/resources/config.yml b/common/src/main/resources/config.yml index a1de75a53..50f49665d 100644 --- a/common/src/main/resources/config.yml +++ b/common/src/main/resources/config.yml @@ -1,7 +1,3 @@ -locale: - default: en - perPlayer: true - debug: false databases: # Local Database is always required. If not enabled, plugin will disable on startup. diff --git a/common/src/main/resources/db/local/V2__add_player_locale.sql b/common/src/main/resources/db/local/V2__add_player_locale.sql deleted file mode 100644 index f725c3df5..000000000 --- a/common/src/main/resources/db/local/V2__add_player_locale.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE ${players} ADD COLUMN `locale` VARCHAR(16) NULL; diff --git a/common/src/main/resources/db/local/migrations.list b/common/src/main/resources/db/local/migrations.list index 43cde01af..a43ed9c9a 100644 --- a/common/src/main/resources/db/local/migrations.list +++ b/common/src/main/resources/db/local/migrations.list @@ -1,2 +1 @@ V1__baseline.sql lenient -V2__add_player_locale.sql lenient diff --git a/common/src/main/resources/messages/messages_en.yml b/common/src/main/resources/messages/messages_en.yml deleted file mode 100644 index 205a94c13..000000000 --- a/common/src/main/resources/messages/messages_en.yml +++ /dev/null @@ -1,448 +0,0 @@ -# Variables -# [reason] = Ban/Mute reason -# [player] = The name of the player -# [ip] = The banned ip -# [actor] = Who banned/muted -# [expires] = How long until the ban/mute ends - -messages: - duplicateIP: '&cWarning: [player] has the same IP as the following banned players:\n&6[players]' - duplicateIPAlts: '&cWarning: [player] has the same IP as the following players:\n&6[players]' - configReloaded: '&aConfiguration reloaded successfully!' - deniedNotify: - player: '&cWarning: [player] attempted to join the server but was denied due to &4[reason]' - ip: '&cWarning: [ip] attempted to join the server but was denied due to &4[reason]' - deniedMaxIp: '&cToo many players with your ip address online' - deniedMultiaccounts: '&cToo many players with your ip address logged in recently' - deniedCountry: '&cYou may not connect from your region' - - time: - now: 'now' - year: 'year' - years: 'years' - month: 'month' - months: 'months' - week: 'week' - weeks: 'weeks' - day: 'day' - days: 'days' - hour: 'hour' - hours: 'hours' - minute: 'minute' - minutes: 'minutes' - second: 'second' - seconds: 'seconds' - never: 'never' - error: - invalid: '&cYour time length is invalid' - limit: '&cYou cannot perform this action for that length of time' - - none: 'none' - # General command text - sender: - error: - notFound: '&c[player] not found, are you sure they exist?' - offline: '&c[player] is offline' - noSelf: '&cYou cannot perform that action on yourself!' - exception: '&cAn error occured whilst attempting to perform this command. Please check the console for further details.' - invalidIp: '&cInvalid IP address, expecting w.x.y.z format' - offlinePermission: '&cYou are not allowed to perform this action on an offline player' - ambiguousPlayer: '&cMultiple players match "[player]". Please use their full name.' - exempt: '&c[player] is exempt from that action' - noPermission: '&cYou do not have permission to perform that action' - invalidReason: '&c[reason] is no valid reason.' - # Commands - alts: - header: 'Possible alts found:' - - names: - header: 'Known names for [player]:' - row: '&e[name] &7(first: [firstSeen], last: [lastSeen])' - dateTimeFormat: 'dd-MM-yyyy' - none: '&7No name history found' - - export: - error: - inProgress: '&cAn export is already in progress, please wait' - player: - started: '&aPlayer ban export started' - finished: '&aPlayer ban export finished, file [file] created' - ip: - started: '&aIP ban export started' - finished: '&aIP ban export finished, file [file] created' - - import: - error: - inProgress: '&cAn import is already in progress, please wait' - player: - started: '&aPlayer ban import started' - finished: '&aPlayer ban import finished' - ip: - started: '&aIP ban import started' - finished: '&aIP ban import finished' - advancedban: - started: '&aAdvancedBan import started' - finished: '&aAdvancedBan import finished' - h2: - started: '&aH2 import started' - finished: '&aH2 import finished, please restart the server' - litebans: - started: '&aLiteBans import started' - finished: '&aLiteBans import finished' - - info: - error: - invalidIndex: '&cInvalid player option used' - indexRequired: '&cMultiple players named [name] found, please select a player by providing an index between 1 and [size], e.g. /bminfo [name] 1' - index: '&7#[index] - &6[name] - &4[uuid]' - stats: - player: '&6[player] has been banned [bans] times, muted [mutes] times, kicked [kicks] times and warned [warns] - times ([warnPoints] Points), has [notes] notes and been reported [reports] times' - ip: '&6This ip has been banned [bans] times, muted [mutes] times and range banned [rangebans] times' - connection: '&6Their last connection was with [ip] on [lastSeen]' - geoip: 'Country: [country] City: [city]' - ban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - ipban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - iprangeban: - permanent: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - ipmute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - mute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' - temporaryOnline: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires] (online time)' - temporaryOnlinePaused: '&6Currently muted for &4[reason]&6 by [actor] at [created] with [remaining] remaining (online time, paused)' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - website: - player: 'https://yourdomain.com/player/[uuid]' - ip: 'http://yourdomain.com/index.php?action=viewip&ip=[ip]&server=0' - history: - row: '&7#[id] &a[&f[type]&a] &6[actor]&f [meta] [reason] - &e[created]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' - ips: - row: '&e[ip] - &6[join] - [leave]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - - kick: - player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' - notify: - noReason: '&6[player] has been kicked by [actor]' - reason: '&6[player] has been kicked by [actor] for &4[reason]' - - kickall: - player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' - notify: - noReason: 'All players have been kicked by [actor]' - reason: 'All players have been kicked by [actor] for &4[reason]' - - ban: - player: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[player] is already banned' - cooldown: '&cThis player was banned too recently, try again later' - - banall: - notify: '&6[player] will be permanently banned by [actor] for &4[reason]' - - tempban: - player: - disallowed: '&6You have been temporarily banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been temporarily banned for [expires] by [actor] for &4[reason]' - - tempbanall: - notify: '&6[player] will be temporarily banned for [expires] by [actor] for &4[reason]' - - unban: - notify: '&6[player] has been unbanned by [actor]' - error: - noExists: '&c[player] is not banned' - notOwn: '&c[player] was not banned by you, unable to unban' - - unbanall: - notify: '&6[player] will be unbanned by [actor]' - - mute: - player: - blocked: '&cYou may not use the [command] command whilst muted!' - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[player] has been permanently muted by [actor] for &4[reason]' - error: - exists: '&c[player] is already muted' - cooldown: '&cThis player was muted too recently, try again later' - - muteip: - ip: - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[ip] ([players]) have been permanently muted by [actor] for &4[reason]' - error: - exists: '&c[ip] is already muted' - - muteall: - notify: '&6[player] will be permanently muted by [actor] for &4[reason]' - - tempmute: - player: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - disallowedOnline: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires] (online time)' - notify: '&6[player] has been temporarily muted for [expires] by [actor] for &4[reason]' - notifyOnline: '&6[player] has been temporarily muted for [expires] (online time) by [actor] for &4[reason]' - error: - exists: '&c[player] is already muted' - - tempmuteip: - ip: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[ip] ([players]) have been temporarily muted for [expires] by [actor] for &4[reason]' - error: - exists: '&c[ip] is already muted' - - tempmuteall: - notify: '&6[player] will be temporarily muted for [expires] by [actor] for &4[reason]' - - unmute: - notify: '&6[player] has been unmuted by [actor]' - player: '&6You have been unmuted by [actor]' - error: - noExists: '&c[player] is not muted' - notOwn: '&c[player] was not muted by you, unable to unmute' - - unmuteip: - notify: '&6[ip] has been unmuted by [actor]' - error: - noExists: '&c[ip] is not muted' - notOwn: '&c[ip] was not muted by you, unable to unmute' - - unmuteall: - notify: '&6[player] will be unmuted by [actor]' - - banname: - name: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&cName [name] is already banned' - - tempbanname: - name: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been temporarily banned for [expires] by [actor] for &4[reason]' - - unbanname: - notify: '&6Name [name] has been unbanned by [actor]' - error: - noExists: '&cName [name] is not banned' - - banip: - ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[ip] is already banned' - cooldown: '&cThis ip was banned too recently, try again later' - - baniprange: - error: - invalid: '&cInvalid range, please use cidr notation 192.168.0.1/16 or wildcard 192.168.*.*' - minMax: '&cRange must be lowest to highest' - exists: '&cA ban containing those ranges already exists' - ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[from] - [to] have been banned by [actor]' - - tempbaniprange: - notify: '&6[from] - [to] has been temporarily banned for [expires] by [actor]' - ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for [expires] by [actor] for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - - unbaniprange: - notify: '&6[from] - [to] has been unbanned by [actor]' - - banipall: - notify: '&6[ip] will be permanently banned by [actor] for &4[reason]' - - tempbanip: - ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been temporarily banned for [expires] by [actor] for &4[reason]' - - tempbanipall: - notify: '&6[ip] will be temporarily banned for [expires] by [actor] for &4[reason]' - - unbanip: - notify: '&6[ip] has been unbanned by [actor]' - error: - noExists: '&c[ip] is not banned' - notOwn: '&c[ip] was not banned by you, unable to unban' - - unbanipall: - notify: '&6[ip] will be unbanned by [actor]' - - warn: - player: - warned: '&6You have been warned by [actor] for &4[reason]' - disallowed: - header: '&cYou may not speak until you have accepted your most recent warning. Please type the following:' - reason: '&6[reason]' - removed: '&aThank you for your understanding, you may now speak again' - notify: '&6[player] has been warned by [actor] for &4[reason]' - error: - cooldown: '&cThis player was warned too recently, try again later' - - tempwarn: - player: - warned: '&6You have been warned for [expires] by [actor] for &4[reason]' - notify: '&6[player] has been warned for [expires] by [actor] for &4[reason]' - - dwarn: - player: - notify: '&6Your most recent warning has been deleted by &4[actor]' - notify: '&cThe most recent warning for [player] has been deleted' - error: - noWarnings: '&c[player] has no warnings to delete' - - bmclear: - notify: '&c[player] has had their [type] cleared' - error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - - bmutils: - missingplayers: - notify: '&c[amount] missing players added' - noneFound: '&a0 missing players found' - found: '&c[amount] missing player data found. Fixing...' - error: - failedLookup: '&cFailed to lookup player [uuid], check server logs' - complete: '&a[amount] players resolved, please restart your server for failed punishments to take affect' - duplicates: - lookup: - notFound: '&aNo duplicate player names found' - error: - invalidName: '&cInvalid name, must be 16 characters or less and contain only letters, numbers and an underscore' - nameExists: '&cA player with that name already exists' - success: '&aPlayer name set to [player] successfully' - - bmrollback: - notify: '&c[player] has had their [type] actions undone' - error: - invalid: '&cInvalid type [type], please choose between [types]' - - sync: - player: - started: '&aStarting force [type] synchronisation' - finished: '&aForced [type] synchronisation complete' - - update: - notify: '&6[BanManager] &aAn update is available' - - notes: - header: '&6[player] has the following notes:' - joinAmount: '&6[player] has &e[amount] &6notes, click to view them' - note: '&6[[player]] &e[message] - &e[created]' - playerNote: '&a[[player]] &6[[actor]] &e[message] - &e[created]' - dateTimeFormat: 'dd-MM-yyyy' - notify: '[player] has a new note attached by [actor]: [message]' - error: - noNotes: '&c[player] has no notes' - noOnlineNotes: '&cNo online players have notes' - - report: - notify: '&6[player] has been reported by [actor] for &4[reason]' - error: - cooldown: '&cThis player was reported too recently, try again later' - assign: - player: '&aReport [id] assigned to [player]' - notify: '&aYou have been assigned report [id] by [actor]' - unassign: - player: '&aReport [id] unassigned' - close: - notify: - closed: '&aReport [id] closed by [actor]' - command: '&aReport [id] closed by [actor] with [command]' - comment: '&aReport [id] closed by [actor] with [comment]' - dispatch: 'Executing command [command]' - list: - noResults: '&cNo reports found' - error: - invalidState: '&cReport state [state] not found' - row: - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - header: '&e-- Reports ([count]) -- Page ([page]/[maxPage])' - all: '&7#[id] &e[[state]] &6- [created] - [player]' - tp: - error: - notFound: '&cReport not found' - worldNotFound: '&cWorld [world] could not be found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - info: - error: - notFound: '&cReport not found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - - addnoteall: - notify: '&c[player] will have a new attached by [actor]: [message]' - - banlist: - header: '&6There are [bans] [type] bans:' - - bmactivity: - row: - all: '&a[&f[type]&a] &6[player]&f - &6[actor]&f - &e[created]' - player: '&a[&f[type]&a] &6[player]&f - &e[created]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' - - bmdelete: - notify: '&a[rows] rows deleted' - error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - invalidId: '&c[id] is not a valid number' - - denyalts: - player: - disallowed: '&cThe IP address you are joining from is linked to a banned player' - - reasons: - row: '[hashtag] = [reason]' diff --git a/common/src/test/java/me/confuser/banmanager/common/BasePluginTest.java b/common/src/test/java/me/confuser/banmanager/common/BasePluginTest.java index dd9aa68fc..12f50f31c 100644 --- a/common/src/test/java/me/confuser/banmanager/common/BasePluginTest.java +++ b/common/src/test/java/me/confuser/banmanager/common/BasePluginTest.java @@ -58,19 +58,6 @@ public static PluginInfo setupConfigs(TemporaryFolder folder) { } } - File messagesDir = new File(folder.getRoot(), "messages"); - messagesDir.mkdirs(); - try (InputStream in = BasePluginTest.class.getClassLoader().getResource("messages/messages_en.yml").openStream(); - OutputStream out = new FileOutputStream(new File(messagesDir, "messages_en.yml"))) { - byte[] buf = new byte[1024]; - int len; - while ((len = in.read(buf)) > 0) { - out.write(buf, 0, len); - } - } catch (IOException e) { - e.printStackTrace(); - } - // Load plugin.yml PluginInfo pluginInfo = new PluginInfo(); try (InputStream in = BasePluginTest.class.getClassLoader().getResource("plugin.yml").openStream(); diff --git a/common/src/test/java/me/confuser/banmanager/common/TestPlayer.java b/common/src/test/java/me/confuser/banmanager/common/TestPlayer.java index a8125b60d..e978bbe47 100644 --- a/common/src/test/java/me/confuser/banmanager/common/TestPlayer.java +++ b/common/src/test/java/me/confuser/banmanager/common/TestPlayer.java @@ -12,7 +12,6 @@ public class TestPlayer implements CommonPlayer { private final UUID uuid; private final String name; private final boolean onlineMode; - private String locale = "en"; public TestPlayer(UUID uuid, String name, boolean onlineMode) { this.uuid = uuid; @@ -20,15 +19,6 @@ public TestPlayer(UUID uuid, String name, boolean onlineMode) { this.onlineMode = onlineMode; } - public TestPlayer(UUID uuid, String name, boolean onlineMode, String locale) { - this(uuid, name, onlineMode); - this.locale = locale; - } - - public void setLocale(String locale) { - this.locale = locale; - } - @Override public void kick(String message) { } @@ -103,9 +93,4 @@ public boolean teleport(CommonWorld world, double x, double y, double z, float p public boolean canSee(CommonPlayer player) { return true; } - - @Override - public String getLocale() { - return locale; - } } diff --git a/common/src/test/java/me/confuser/banmanager/common/TestServer.java b/common/src/test/java/me/confuser/banmanager/common/TestServer.java index b3588c106..f90b27876 100644 --- a/common/src/test/java/me/confuser/banmanager/common/TestServer.java +++ b/common/src/test/java/me/confuser/banmanager/common/TestServer.java @@ -4,7 +4,6 @@ import me.confuser.banmanager.common.commands.CommonSender; import me.confuser.banmanager.common.data.PlayerData; import me.confuser.banmanager.common.kyori.text.TextComponent; -import me.confuser.banmanager.common.util.Message; import me.confuser.banmanager.common.util.UUIDUtils; import java.sql.SQLException; @@ -105,10 +104,6 @@ public CommonPlayer[] getOnlinePlayers() { public void broadcast(String message, String permission) { } - @Override - public void broadcast(Message message, String permission) { - } - @Override public void broadcastJSON(TextComponent message, String permission) { } diff --git a/common/src/test/java/me/confuser/banmanager/common/commands/KickAllCommandTest.java b/common/src/test/java/me/confuser/banmanager/common/commands/KickAllCommandTest.java index 5283d3700..009c408ad 100644 --- a/common/src/test/java/me/confuser/banmanager/common/commands/KickAllCommandTest.java +++ b/common/src/test/java/me/confuser/banmanager/common/commands/KickAllCommandTest.java @@ -3,12 +3,9 @@ import me.confuser.banmanager.common.BasePluginDbTest; import me.confuser.banmanager.common.CommonPlayer; import me.confuser.banmanager.common.data.PlayerData; -import me.confuser.banmanager.common.util.Message; import org.junit.Before; import org.junit.Test; -import org.mockito.ArgumentCaptor; -import static org.junit.Assert.*; import static org.mockito.Mockito.*; public class KickAllCommandTest extends BasePluginDbTest { @@ -49,10 +46,7 @@ public void shouldFailIfExempt() { assert (cmd.onCommand(sender, new CommandParser(plugin, args, 0))); verify(commonPlayer, never()).kick("&6You have been kicked"); - - ArgumentCaptor msgCaptor = ArgumentCaptor.forClass(Message.class); - verify(server).broadcast(msgCaptor.capture(), eq("bm.notify.kick")); - assertEquals("All players have been kicked by Console for &4test", msgCaptor.getValue().toString()); + verify(server).broadcast("All players have been kicked by Console for &4test", "bm.notify.kick"); } @Test @@ -68,10 +62,7 @@ public void shouldKickPlayerWithoutAReason() { assert (cmd.onCommand(sender, new CommandParser(plugin, args, 0))); verify(commonPlayer).kick("&6You have been kicked"); - - ArgumentCaptor msgCaptor = ArgumentCaptor.forClass(Message.class); - verify(server).broadcast(msgCaptor.capture(), eq("bm.notify.kick")); - assertEquals("All players have been kicked by Console", msgCaptor.getValue().toString()); + verify(server).broadcast("All players have been kicked by Console", "bm.notify.kick"); } @Test @@ -87,10 +78,7 @@ public void shouldKickPlayerWithAReason() { assert (cmd.onCommand(sender, new CommandParser(plugin, args, 0))); verify(commonPlayer).kick("&6You have been kicked for &4" + args[0]); - - ArgumentCaptor msgCaptor = ArgumentCaptor.forClass(Message.class); - verify(server).broadcast(msgCaptor.capture(), eq("bm.notify.kick")); - assertEquals("All players have been kicked by Console for &4" + args[0], msgCaptor.getValue().toString()); + verify(server).broadcast("All players have been kicked by Console for &4" + args[0], "bm.notify.kick"); } @Test @@ -106,7 +94,7 @@ public void shouldKickPlayerWithoutAReasonSilently() { assert (cmd.onCommand(sender, new CommandParser(plugin, args, 0))); verify(commonPlayer).kick("&6You have been kicked"); - verify(server, never()).broadcast(any(Message.class), eq("bm.notify.kick")); + verify(server, never()).broadcast("All players have been kicked by Console", "bm.notify.kick"); } @Test @@ -122,6 +110,6 @@ public void shouldKickPlayerWithAReasonSilently() { assert (cmd.onCommand(sender, new CommandParser(plugin, args, 0))); verify(commonPlayer).kick("&6You have been kicked for &4test reason"); - verify(server, never()).broadcast(any(Message.class), eq("bm.notify.kick")); + verify(server, never()).broadcast("All players have been kicked by Console for &4test reason", "bm.notify.kick"); } } diff --git a/common/src/test/java/me/confuser/banmanager/common/commands/KickCommandTest.java b/common/src/test/java/me/confuser/banmanager/common/commands/KickCommandTest.java index 97a0e3b2c..31c415ec6 100644 --- a/common/src/test/java/me/confuser/banmanager/common/commands/KickCommandTest.java +++ b/common/src/test/java/me/confuser/banmanager/common/commands/KickCommandTest.java @@ -3,10 +3,8 @@ import me.confuser.banmanager.common.BasePluginDbTest; import me.confuser.banmanager.common.CommonPlayer; import me.confuser.banmanager.common.data.PlayerData; -import me.confuser.banmanager.common.util.Message; import org.junit.Before; import org.junit.Test; -import org.mockito.ArgumentCaptor; import static org.junit.Assert.*; import static org.mockito.Mockito.*; @@ -89,10 +87,7 @@ public void shouldKickPlayerWithoutAReason() { assert (cmd.onCommand(sender, new CommandParser(plugin, args))); verify(commonPlayer).kick("&6You have been kicked"); - - ArgumentCaptor msgCaptor = ArgumentCaptor.forClass(Message.class); - verify(server).broadcast(msgCaptor.capture(), eq("bm.notify.kick")); - assertEquals("&6" + args[0] + " has been kicked by Console", msgCaptor.getValue().toString()); + verify(server).broadcast("&6" + args[0] + " has been kicked by Console", "bm.notify.kick"); } @Test @@ -108,10 +103,7 @@ public void shouldKickPlayerWithAReason() { assert (cmd.onCommand(sender, new CommandParser(plugin, args))); verify(commonPlayer).kick("&6You have been kicked for &4" + args[1]); - - ArgumentCaptor msgCaptor = ArgumentCaptor.forClass(Message.class); - verify(server).broadcast(msgCaptor.capture(), eq("bm.notify.kick")); - assertEquals("&6" + args[0] + " has been kicked by Console for &4" + args[1], msgCaptor.getValue().toString()); + verify(server).broadcast("&6" + args[0] + " has been kicked by Console for &4" + args[1], "bm.notify.kick"); } @Test @@ -127,7 +119,7 @@ public void shouldKickPlayerWithoutAReasonSilently() { assert (cmd.onCommand(sender, new CommandParser(plugin, args))); verify(commonPlayer).kick("&6You have been kicked"); - verify(server, never()).broadcast(any(Message.class), eq("bm.notify.kick")); + verify(server, never()).broadcast("&6" + args[0] + " has been kicked by Console", "bm.notify.kick"); } @Test @@ -143,6 +135,6 @@ public void shouldKickPlayerWithAReasonSilently() { assert (cmd.onCommand(sender, new CommandParser(plugin, args))); verify(commonPlayer).kick("&6You have been kicked for &4test reason"); - verify(server, never()).broadcast(any(Message.class), eq("bm.notify.kick")); + verify(server, never()).broadcast("&6" + args[0] + " has been kicked by Console for &4test reason", "bm.notify.kick"); } } diff --git a/common/src/test/java/me/confuser/banmanager/common/commands/LoglessKickAllCommandTest.java b/common/src/test/java/me/confuser/banmanager/common/commands/LoglessKickAllCommandTest.java index 9c09e242e..0fc23f900 100644 --- a/common/src/test/java/me/confuser/banmanager/common/commands/LoglessKickAllCommandTest.java +++ b/common/src/test/java/me/confuser/banmanager/common/commands/LoglessKickAllCommandTest.java @@ -3,12 +3,9 @@ import me.confuser.banmanager.common.BasePluginDbTest; import me.confuser.banmanager.common.CommonPlayer; import me.confuser.banmanager.common.data.PlayerData; -import me.confuser.banmanager.common.util.Message; import org.junit.Before; import org.junit.Test; -import org.mockito.ArgumentCaptor; -import static org.junit.Assert.*; import static org.mockito.Mockito.*; public class LoglessKickAllCommandTest extends BasePluginDbTest { @@ -49,10 +46,7 @@ public void shouldFailIfExempt() { assert (cmd.onCommand(sender, new CommandParser(plugin, args, 0))); verify(commonPlayer, never()).kick("&6You have been kicked"); - - ArgumentCaptor msgCaptor = ArgumentCaptor.forClass(Message.class); - verify(server).broadcast(msgCaptor.capture(), eq("bm.notify.kick")); - assertEquals("All players have been kicked by Console for &4test", msgCaptor.getValue().toString()); + verify(server).broadcast("All players have been kicked by Console for &4test", "bm.notify.kick"); } @Test @@ -68,10 +62,7 @@ public void shouldKickPlayerWithoutAReason() { assert (cmd.onCommand(sender, new CommandParser(plugin, args, 0))); verify(commonPlayer).kick("&6You have been kicked"); - - ArgumentCaptor msgCaptor = ArgumentCaptor.forClass(Message.class); - verify(server).broadcast(msgCaptor.capture(), eq("bm.notify.kick")); - assertEquals("All players have been kicked by Console", msgCaptor.getValue().toString()); + verify(server).broadcast("All players have been kicked by Console", "bm.notify.kick"); } @Test @@ -87,10 +78,7 @@ public void shouldKickPlayerWithAReason() { assert (cmd.onCommand(sender, new CommandParser(plugin, args, 0))); verify(commonPlayer).kick("&6You have been kicked for &4" + args[0]); - - ArgumentCaptor msgCaptor = ArgumentCaptor.forClass(Message.class); - verify(server).broadcast(msgCaptor.capture(), eq("bm.notify.kick")); - assertEquals("All players have been kicked by Console for &4" + args[0], msgCaptor.getValue().toString()); + verify(server).broadcast("All players have been kicked by Console for &4" + args[0], "bm.notify.kick"); } @Test @@ -106,7 +94,7 @@ public void shouldKickPlayerWithoutAReasonSilently() { assert (cmd.onCommand(sender, new CommandParser(plugin, args, 0))); verify(commonPlayer).kick("&6You have been kicked"); - verify(server, never()).broadcast(any(Message.class), eq("bm.notify.kick")); + verify(server, never()).broadcast("All players have been kicked by Console", "bm.notify.kick"); } @Test @@ -122,6 +110,6 @@ public void shouldKickPlayerWithAReasonSilently() { assert (cmd.onCommand(sender, new CommandParser(plugin, args, 0))); verify(commonPlayer).kick("&6You have been kicked for &4test reason"); - verify(server, never()).broadcast(any(Message.class), eq("bm.notify.kick")); + verify(server, never()).broadcast("All players have been kicked by Console for &4test reason", "bm.notify.kick"); } } diff --git a/common/src/test/java/me/confuser/banmanager/common/configs/ConfigReloadTest.java b/common/src/test/java/me/confuser/banmanager/common/configs/ConfigReloadTest.java index 3f42f85e8..a517027d7 100644 --- a/common/src/test/java/me/confuser/banmanager/common/configs/ConfigReloadTest.java +++ b/common/src/test/java/me/confuser/banmanager/common/configs/ConfigReloadTest.java @@ -97,21 +97,20 @@ public void setupConfigsReplacesConfigOnSuccessfulReload() throws IOException { @Test public void messagesArePreservedWhenConfigFails() throws IOException { + // Get a message that should exist String originalMessage = Message.getString("configReloaded"); assertNotNull("configReloaded message should exist", originalMessage); - // Corrupt both messages.yml and messages_en.yml + // Corrupt the messages.yml file File messagesFile = new File(temporaryFolder.getRoot(), "messages.yml"); try (FileWriter writer = new FileWriter(messagesFile)) { writer.write("invalid: yaml: [unclosed"); } - File messagesEnFile = new File(temporaryFolder.getRoot(), "messages/messages_en.yml"); - try (FileWriter writer = new FileWriter(messagesEnFile)) { - writer.write("invalid: yaml: [unclosed"); - } + // Reload configs plugin.setupConfigs(); + // Messages should still be available String afterReloadMessage = Message.getString("configReloaded"); assertEquals("Messages should be preserved after failed reload", originalMessage, afterReloadMessage); } diff --git a/common/src/test/java/me/confuser/banmanager/common/configs/MessagesConfigTest.java b/common/src/test/java/me/confuser/banmanager/common/configs/MessagesConfigTest.java index 839a76f3d..283cbf5e8 100644 --- a/common/src/test/java/me/confuser/banmanager/common/configs/MessagesConfigTest.java +++ b/common/src/test/java/me/confuser/banmanager/common/configs/MessagesConfigTest.java @@ -4,7 +4,6 @@ import me.confuser.banmanager.common.TestLogger; import me.confuser.banmanager.common.configuration.file.YamlConfiguration; import me.confuser.banmanager.common.util.Message; -import me.confuser.banmanager.common.util.MessageRegistry; import org.junit.Test; import java.io.StringReader; @@ -16,49 +15,51 @@ public class MessagesConfigTest extends BasePluginTest { @Test public void isValid() { + // @TODO test tokens for all messages assertEquals("&6Currently banned for &4abc&6 by def at 8th July which expires in 1d", Message .get("info.ban.temporary").set("reason", "abc").set("actor", "def").set("created", "8th July").set("expires", "1d").toString()); } - private void loadTestMessages(String yaml) { - YamlConfiguration config = YamlConfiguration.loadConfiguration(new StringReader(yaml)); - MessageRegistry registry = new MessageRegistry("en"); - - for (String key : config.getConfigurationSection("messages").getKeys(true)) { - String value = config.getString("messages." + key); - if (value != null) { - registry.putMessage(key, value.replace("\\n", "\n").replaceAll("(?<=\\n)(?=\\n)", " ")); - } - } - - Message.init(registry, new TestLogger()); - } - @Test public void doubleNewlineProducesNonEmptyLine() { - loadTestMessages("messages:\n test:\n greeting: 'Hello\\n\\nWorld'"); + String yaml = "messages:\n test:\n greeting: 'Hello\\n\\nWorld'"; + YamlConfiguration config = YamlConfiguration.loadConfiguration(new StringReader(yaml)); + Message.load(config, new TestLogger()); + String result = Message.get("test.greeting").toString(); + assertEquals("Hello\n \nWorld", result); } @Test public void tripleNewlineProducesNonEmptyLines() { - loadTestMessages("messages:\n test:\n greeting: 'Hello\\n\\n\\nWorld'"); + String yaml = "messages:\n test:\n greeting: 'Hello\\n\\n\\nWorld'"; + YamlConfiguration config = YamlConfiguration.loadConfiguration(new StringReader(yaml)); + Message.load(config, new TestLogger()); + String result = Message.get("test.greeting").toString(); + assertEquals("Hello\n \n \nWorld", result); } @Test public void singleNewlineIsUnchanged() { - loadTestMessages("messages:\n test:\n greeting: 'Hello\\nWorld'"); + String yaml = "messages:\n test:\n greeting: 'Hello\\nWorld'"; + YamlConfiguration config = YamlConfiguration.loadConfiguration(new StringReader(yaml)); + Message.load(config, new TestLogger()); + String result = Message.get("test.greeting").toString(); + assertEquals("Hello\nWorld", result); } @Test public void noConsecutiveEmptyLinesInLoadedMessages() { - loadTestMessages("messages:\n test:\n msg: 'Line1\\n\\nLine2\\n\\n\\nLine3'"); + String yaml = "messages:\n test:\n msg: 'Line1\\n\\nLine2\\n\\n\\nLine3'"; + YamlConfiguration config = YamlConfiguration.loadConfiguration(new StringReader(yaml)); + Message.load(config, new TestLogger()); + String result = Message.get("test.msg").toString(); for (String line : result.split("\n", -1)) { diff --git a/common/src/test/java/me/confuser/banmanager/common/listeners/CommonJoinListenerTest.java b/common/src/test/java/me/confuser/banmanager/common/listeners/CommonJoinListenerTest.java index 608e20fb8..ab22bbe51 100644 --- a/common/src/test/java/me/confuser/banmanager/common/listeners/CommonJoinListenerTest.java +++ b/common/src/test/java/me/confuser/banmanager/common/listeners/CommonJoinListenerTest.java @@ -349,9 +349,6 @@ public boolean teleport(CommonWorld world, double x, double y, double z, float p @Override public boolean canSee(CommonPlayer player) { return true; } - - @Override - public String getLocale() { return "en"; } }; } } diff --git a/common/src/test/java/me/confuser/banmanager/common/listeners/NoteListenerTest.java b/common/src/test/java/me/confuser/banmanager/common/listeners/NoteListenerTest.java index 7f03dee52..2007faa01 100755 --- a/common/src/test/java/me/confuser/banmanager/common/listeners/NoteListenerTest.java +++ b/common/src/test/java/me/confuser/banmanager/common/listeners/NoteListenerTest.java @@ -6,9 +6,7 @@ import me.confuser.banmanager.common.data.PlayerNoteData; import me.confuser.banmanager.common.util.Message; import org.junit.Test; -import org.mockito.ArgumentCaptor; -import static org.junit.Assert.*; import static org.mockito.Mockito.*; public class NoteListenerTest extends BasePluginDbTest { @@ -20,9 +18,9 @@ public void shouldBroadcast() { CommonSender sender = plugin.getServer().getConsoleSender(); PlayerNoteData data = new PlayerNoteData(player, sender.getData(), "test"); CommonPlayer testPlayer = spy(new TestPlayer(sender.getData().getUUID(), sender.getName(), false)); - Message expected = Message.get("notes.notify"); + Message message = Message.get("notes.notify"); - expected.set("player", data.getPlayer().getName()) + message.set("player", data.getPlayer().getName()) .set("playerId", data.getPlayer().getUUID().toString()) .set("actor", data.getActor().getName()) .set("message", data.getMessage()); @@ -34,12 +32,7 @@ public void shouldBroadcast() { CommonNoteListener listener = new CommonNoteListener(plugin); listener.notifyOnNote(data); - ArgumentCaptor broadcastCaptor = ArgumentCaptor.forClass(Message.class); - verify(server).broadcast(broadcastCaptor.capture(), eq("bm.notify.notes")); - assertEquals(expected.toString(), broadcastCaptor.getValue().toString()); - - ArgumentCaptor playerCaptor = ArgumentCaptor.forClass(Message.class); - verify(testPlayer).sendMessage(playerCaptor.capture()); - assertEquals(expected.toString(), playerCaptor.getValue().toString()); + verify(server).broadcast(message.toString(), "bm.notify.notes"); + verify(testPlayer).sendMessage(message); } } diff --git a/common/src/test/java/me/confuser/banmanager/common/storage/PlayerStorageTest.java b/common/src/test/java/me/confuser/banmanager/common/storage/PlayerStorageTest.java index 350fc450f..6b72639c4 100644 --- a/common/src/test/java/me/confuser/banmanager/common/storage/PlayerStorageTest.java +++ b/common/src/test/java/me/confuser/banmanager/common/storage/PlayerStorageTest.java @@ -40,51 +40,6 @@ public void shouldUpsertPlayerData() throws SQLException { assertNotNull(playerStorage.getAutoCompleteTree().getValueForExactKey("Name 2")); } - @Test - public void shouldPersistLocale() throws SQLException { - PlayerStorage playerStorage = plugin.getPlayerStorage(); - - UUID uuid = UUID.randomUUID(); - PlayerData data = new PlayerData(uuid, "LocalePlayer"); - data.setLocale("de"); - - playerStorage.upsert(data); - - PlayerData retrieved = playerStorage.retrieve("LocalePlayer", false); - assertNotNull(retrieved); - assertEquals("de", retrieved.getLocale()); - } - - @Test - public void shouldUpdateLocale() throws SQLException { - PlayerStorage playerStorage = plugin.getPlayerStorage(); - - UUID uuid = UUID.randomUUID(); - PlayerData data = new PlayerData(uuid, "LocaleUpdate"); - data.setLocale("en"); - playerStorage.upsert(data); - - data.setLocale("fr"); - playerStorage.upsert(data); - - PlayerData retrieved = playerStorage.retrieve("LocaleUpdate", false); - assertNotNull(retrieved); - assertEquals("fr", retrieved.getLocale()); - } - - @Test - public void shouldHandleNullLocale() throws SQLException { - PlayerStorage playerStorage = plugin.getPlayerStorage(); - - UUID uuid = UUID.randomUUID(); - PlayerData data = new PlayerData(uuid, "NullLocale"); - playerStorage.upsert(data); - - PlayerData retrieved = playerStorage.retrieve("NullLocale", false); - assertNotNull(retrieved); - assertNull(retrieved.getLocale()); - } - @Test public void shouldRetrievePlayerData() throws SQLException { PlayerStorage playerStorage = plugin.getPlayerStorage(); diff --git a/common/src/test/java/me/confuser/banmanager/common/storage/migration/MigrationIntegrationTest.java b/common/src/test/java/me/confuser/banmanager/common/storage/migration/MigrationIntegrationTest.java index 466deb1b5..62aa4729e 100644 --- a/common/src/test/java/me/confuser/banmanager/common/storage/migration/MigrationIntegrationTest.java +++ b/common/src/test/java/me/confuser/banmanager/common/storage/migration/MigrationIntegrationTest.java @@ -50,7 +50,7 @@ public void freshInstall_marksLatestVersion() throws Exception { for (SchemaVersion sv : versions) { if ("local".equals(sv.getScope())) { hasLocal = true; - assertEquals("Fresh install should mark at latest version", 2, sv.getVersion()); + assertEquals("Fresh install should mark at latest version", 1, sv.getVersion()); assertTrue("Description should indicate fresh install", sv.getDescription().contains("fresh install")); } } diff --git a/common/src/test/java/me/confuser/banmanager/common/util/LocaleNormalisationTest.java b/common/src/test/java/me/confuser/banmanager/common/util/LocaleNormalisationTest.java deleted file mode 100644 index e88a7a93f..000000000 --- a/common/src/test/java/me/confuser/banmanager/common/util/LocaleNormalisationTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package me.confuser.banmanager.common.util; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class LocaleNormalisationTest { - - @Test - public void enGBBecomesEnGb() { - assertEquals("en_gb", MessageRegistry.normaliseLocale("en_GB")); - } - - @Test - public void zhTWBecomesZhTw() { - assertEquals("zh_tw", MessageRegistry.normaliseLocale("zh-TW")); - } - - @Test - public void uppercaseBecomesLowercase() { - assertEquals("en", MessageRegistry.normaliseLocale("EN")); - } - - @Test - public void ptBRBecomesPtBr() { - assertEquals("pt_br", MessageRegistry.normaliseLocale("pt_BR")); - } - - @Test - public void hyphenIsReplacedWithUnderscore() { - assertEquals("en_gb", MessageRegistry.normaliseLocale("en-gb")); - } - - @Test - public void alreadyNormalisedIsUnchanged() { - assertEquals("en", MessageRegistry.normaliseLocale("en")); - } - - @Test - public void nullReturnsEn() { - assertEquals("en", MessageRegistry.normaliseLocale(null)); - } - - @Test - public void emptyStringReturnsEn() { - assertEquals("en", MessageRegistry.normaliseLocale("")); - } -} diff --git a/common/src/test/java/me/confuser/banmanager/common/util/MessageDeferredTest.java b/common/src/test/java/me/confuser/banmanager/common/util/MessageDeferredTest.java deleted file mode 100644 index a50be3c40..000000000 --- a/common/src/test/java/me/confuser/banmanager/common/util/MessageDeferredTest.java +++ /dev/null @@ -1,120 +0,0 @@ -package me.confuser.banmanager.common.util; - -import me.confuser.banmanager.common.TestLogger; -import me.confuser.banmanager.common.TestPlayer; -import org.junit.Before; -import org.junit.Test; - -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import static org.junit.Assert.*; - -public class MessageDeferredTest { - - @Before - public void setUp() { - MessageRegistry registry = new MessageRegistry("en"); - - Map en = new HashMap<>(); - en.put("ban.kick", "You are banned by [actor] for [reason]"); - en.put("greeting", "Hello [player]"); - registry.loadLocale("en", en); - - Map de = new HashMap<>(); - de.put("ban.kick", "Du wurdest von [actor] gebannt: [reason]"); - de.put("greeting", "Hallo [player]"); - registry.loadLocale("de", de); - - Message.init(registry, new TestLogger()); - } - - @Test - public void resolveWithDefaultLocale() { - String result = Message.get("ban.kick") - .set("actor", "Admin") - .set("reason", "griefing") - .resolve("en"); - - assertEquals("You are banned by Admin for griefing", result); - } - - @Test - public void resolveWithSpecificLocale() { - String result = Message.get("ban.kick") - .set("actor", "Admin") - .set("reason", "griefing") - .resolve("de"); - - assertEquals("Du wurdest von Admin gebannt: griefing", result); - } - - @Test - public void toStringUsesDefaultLocale() { - String result = Message.get("greeting") - .set("player", "Steve") - .toString(); - - assertEquals("Hello Steve", result); - } - - @Test - public void resolveWithPlayerLocale() { - TestPlayer player = new TestPlayer(UUID.randomUUID(), "Steve", true, "de"); - String result = Message.get("greeting") - .set("player", "Steve") - .resolve(player.getLocale()); - - assertEquals("Hallo Steve", result); - } - - @Test - public void resolveForFallsBackWithoutPlugin() { - TestPlayer player = new TestPlayer(UUID.randomUUID(), "Steve", true, "de"); - String result = Message.get("greeting") - .set("player", "Steve") - .resolveFor(player); - - assertEquals("Hello Steve", result); - } - - @Test - public void tokenReplacementOrderPreserved() { - MessageRegistry registry = new MessageRegistry("en"); - Map en = new HashMap<>(); - en.put("test.order", "[a] [b] [a]"); - registry.loadLocale("en", en); - Message.init(registry, new TestLogger()); - - String result = Message.get("test.order") - .set("a", "X") - .set("b", "Y") - .toString(); - - assertEquals("X Y X", result); - } - - @Test - public void missingKeyReturnsEmptyString() { - String result = Message.get("nonexistent.key").toString(); - assertEquals("", result); - } - - @Test - public void dynamicRegistrationWritesToDefaultLocale() { - new Message("custom.key", "Custom message"); - - assertEquals("Custom message", Message.getString("custom.key")); - } - - @Test - public void replaceMethodWorks() { - String result = Message.get("greeting") - .set("player", "Steve") - .replace("Hello", "Hey") - .toString(); - - assertEquals("Hey Steve", result); - } -} diff --git a/common/src/test/java/me/confuser/banmanager/common/util/MessageRegistryTest.java b/common/src/test/java/me/confuser/banmanager/common/util/MessageRegistryTest.java deleted file mode 100644 index 80a123c00..000000000 --- a/common/src/test/java/me/confuser/banmanager/common/util/MessageRegistryTest.java +++ /dev/null @@ -1,135 +0,0 @@ -package me.confuser.banmanager.common.util; - -import org.junit.Before; -import org.junit.Test; - -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import static org.junit.Assert.*; - -public class MessageRegistryTest { - - private MessageRegistry registry; - - @Before - public void setUp() { - registry = new MessageRegistry("en"); - - Map en = new HashMap<>(); - en.put("greeting", "Hello"); - en.put("farewell", "Goodbye"); - en.put("only.in.english", "English only"); - registry.loadLocale("en", en); - - Map zh = new HashMap<>(); - zh.put("greeting", "你好"); - zh.put("farewell", "再见"); - registry.loadLocale("zh", zh); - - Map zhTw = new HashMap<>(); - zhTw.put("greeting", "你好 (繁體)"); - registry.loadLocale("zh_tw", zhTw); - } - - @Test - public void cascadingFallbackExactLocale() { - assertEquals("你好 (繁體)", registry.getMessage("greeting", "zh_tw")); - } - - @Test - public void cascadingFallbackToBaseLanguage() { - assertEquals("再见", registry.getMessage("farewell", "zh_tw")); - } - - @Test - public void cascadingFallbackToDefault() { - assertEquals("English only", registry.getMessage("only.in.english", "zh_tw")); - } - - @Test - public void missingKeyFallbackToDefault() { - assertEquals("English only", registry.getMessage("only.in.english", "de")); - } - - @Test - public void unknownLocaleReturnsDefault() { - assertEquals("Hello", registry.getMessage("greeting", "fr")); - } - - @Test - public void defaultLocaleReturnsDirectly() { - assertEquals("Hello", registry.getMessage("greeting")); - } - - @Test - public void missingKeyReturnsNull() { - assertNull(registry.getMessage("nonexistent", "en")); - } - - @Test - public void availableLocales() { - Set locales = registry.getAvailableLocales(); - assertTrue(locales.contains("en")); - assertTrue(locales.contains("zh")); - assertTrue(locales.contains("zh_tw")); - assertEquals(3, locales.size()); - } - - @Test - public void missingKeyCount() { - assertEquals(1, registry.getMissingKeyCount("zh")); - assertEquals(2, registry.getMissingKeyCount("zh_tw")); - assertEquals(0, registry.getMissingKeyCount("en")); - } - - @Test - public void atomicSwapReplacesContent() { - MessageRegistry newRegistry = new MessageRegistry("de"); - Map de = new HashMap<>(); - de.put("greeting", "Hallo"); - newRegistry.loadLocale("de", de); - - registry.atomicSwap(newRegistry); - - assertEquals("de", registry.getDefaultLocale()); - assertEquals("Hallo", registry.getMessage("greeting")); - assertNull(registry.getMessage("farewell")); - } - - @Test - public void putMessageUpdatesExistingLocale() { - registry.putMessage("greeting", "Hi", "en"); - assertEquals("Hi", registry.getMessage("greeting", "en")); - } - - @Test - public void putMessageCreatesNewLocale() { - registry.putMessage("greeting", "Bonjour", "fr"); - assertEquals("Bonjour", registry.getMessage("greeting", "fr")); - assertTrue(registry.getAvailableLocales().contains("fr")); - } - - @Test - public void hasAnyMessagesReturnsTrueWhenLoaded() { - assertTrue(registry.hasAnyMessages()); - } - - @Test - public void hasAnyMessagesReturnsFalseWhenEmpty() { - MessageRegistry empty = new MessageRegistry("en"); - assertFalse(empty.hasAnyMessages()); - } - - @Test - public void defaultLocaleMismatchStillResolvesViaFallback() { - MessageRegistry reg = new MessageRegistry("en_us"); - Map en = new HashMap<>(); - en.put("test", "Hello"); - reg.loadLocale("en", en); - - assertEquals("Hello", reg.getMessage("test", "en_us")); - assertTrue(reg.hasAnyMessages()); - } -} diff --git a/e2e/platforms/bukkit/configs/config.yml b/e2e/platforms/bukkit/configs/config.yml index b8ac0e3a3..c9a784112 100644 --- a/e2e/platforms/bukkit/configs/config.yml +++ b/e2e/platforms/bukkit/configs/config.yml @@ -1,7 +1,3 @@ -locale: - default: en - perPlayer: true - debug: false databases: local: diff --git a/e2e/platforms/bukkit/configs/messages/messages_de.yml b/e2e/platforms/bukkit/configs/messages/messages_de.yml deleted file mode 100644 index d813fecbc..000000000 --- a/e2e/platforms/bukkit/configs/messages/messages_de.yml +++ /dev/null @@ -1,16 +0,0 @@ -messages: - configReloaded: '&aKonfiguration erfolgreich neu geladen!' - - ban: - player: - disallowed: '&6Du wurdest von diesem Server gebannt wegen &4[reason]' - kick: '&6Du wurdest dauerhaft gebannt wegen &4[reason]' - notify: '&6[player] wurde dauerhaft gebannt von [actor] wegen &4[reason]' - - unban: - notify: '&6[player] wurde von [actor] entbannt' - - mute: - player: - disallowed: '&6Du bist stummgeschaltet wegen &4[reason]' - notify: '&6[player] wurde dauerhaft stummgeschaltet von [actor] wegen &4[reason]' diff --git a/e2e/platforms/bukkit/configs/messages/messages_en.yml b/e2e/platforms/bukkit/configs/messages/messages_en.yml deleted file mode 100644 index 205a94c13..000000000 --- a/e2e/platforms/bukkit/configs/messages/messages_en.yml +++ /dev/null @@ -1,448 +0,0 @@ -# Variables -# [reason] = Ban/Mute reason -# [player] = The name of the player -# [ip] = The banned ip -# [actor] = Who banned/muted -# [expires] = How long until the ban/mute ends - -messages: - duplicateIP: '&cWarning: [player] has the same IP as the following banned players:\n&6[players]' - duplicateIPAlts: '&cWarning: [player] has the same IP as the following players:\n&6[players]' - configReloaded: '&aConfiguration reloaded successfully!' - deniedNotify: - player: '&cWarning: [player] attempted to join the server but was denied due to &4[reason]' - ip: '&cWarning: [ip] attempted to join the server but was denied due to &4[reason]' - deniedMaxIp: '&cToo many players with your ip address online' - deniedMultiaccounts: '&cToo many players with your ip address logged in recently' - deniedCountry: '&cYou may not connect from your region' - - time: - now: 'now' - year: 'year' - years: 'years' - month: 'month' - months: 'months' - week: 'week' - weeks: 'weeks' - day: 'day' - days: 'days' - hour: 'hour' - hours: 'hours' - minute: 'minute' - minutes: 'minutes' - second: 'second' - seconds: 'seconds' - never: 'never' - error: - invalid: '&cYour time length is invalid' - limit: '&cYou cannot perform this action for that length of time' - - none: 'none' - # General command text - sender: - error: - notFound: '&c[player] not found, are you sure they exist?' - offline: '&c[player] is offline' - noSelf: '&cYou cannot perform that action on yourself!' - exception: '&cAn error occured whilst attempting to perform this command. Please check the console for further details.' - invalidIp: '&cInvalid IP address, expecting w.x.y.z format' - offlinePermission: '&cYou are not allowed to perform this action on an offline player' - ambiguousPlayer: '&cMultiple players match "[player]". Please use their full name.' - exempt: '&c[player] is exempt from that action' - noPermission: '&cYou do not have permission to perform that action' - invalidReason: '&c[reason] is no valid reason.' - # Commands - alts: - header: 'Possible alts found:' - - names: - header: 'Known names for [player]:' - row: '&e[name] &7(first: [firstSeen], last: [lastSeen])' - dateTimeFormat: 'dd-MM-yyyy' - none: '&7No name history found' - - export: - error: - inProgress: '&cAn export is already in progress, please wait' - player: - started: '&aPlayer ban export started' - finished: '&aPlayer ban export finished, file [file] created' - ip: - started: '&aIP ban export started' - finished: '&aIP ban export finished, file [file] created' - - import: - error: - inProgress: '&cAn import is already in progress, please wait' - player: - started: '&aPlayer ban import started' - finished: '&aPlayer ban import finished' - ip: - started: '&aIP ban import started' - finished: '&aIP ban import finished' - advancedban: - started: '&aAdvancedBan import started' - finished: '&aAdvancedBan import finished' - h2: - started: '&aH2 import started' - finished: '&aH2 import finished, please restart the server' - litebans: - started: '&aLiteBans import started' - finished: '&aLiteBans import finished' - - info: - error: - invalidIndex: '&cInvalid player option used' - indexRequired: '&cMultiple players named [name] found, please select a player by providing an index between 1 and [size], e.g. /bminfo [name] 1' - index: '&7#[index] - &6[name] - &4[uuid]' - stats: - player: '&6[player] has been banned [bans] times, muted [mutes] times, kicked [kicks] times and warned [warns] - times ([warnPoints] Points), has [notes] notes and been reported [reports] times' - ip: '&6This ip has been banned [bans] times, muted [mutes] times and range banned [rangebans] times' - connection: '&6Their last connection was with [ip] on [lastSeen]' - geoip: 'Country: [country] City: [city]' - ban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - ipban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - iprangeban: - permanent: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - ipmute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - mute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' - temporaryOnline: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires] (online time)' - temporaryOnlinePaused: '&6Currently muted for &4[reason]&6 by [actor] at [created] with [remaining] remaining (online time, paused)' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - website: - player: 'https://yourdomain.com/player/[uuid]' - ip: 'http://yourdomain.com/index.php?action=viewip&ip=[ip]&server=0' - history: - row: '&7#[id] &a[&f[type]&a] &6[actor]&f [meta] [reason] - &e[created]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' - ips: - row: '&e[ip] - &6[join] - [leave]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - - kick: - player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' - notify: - noReason: '&6[player] has been kicked by [actor]' - reason: '&6[player] has been kicked by [actor] for &4[reason]' - - kickall: - player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' - notify: - noReason: 'All players have been kicked by [actor]' - reason: 'All players have been kicked by [actor] for &4[reason]' - - ban: - player: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[player] is already banned' - cooldown: '&cThis player was banned too recently, try again later' - - banall: - notify: '&6[player] will be permanently banned by [actor] for &4[reason]' - - tempban: - player: - disallowed: '&6You have been temporarily banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been temporarily banned for [expires] by [actor] for &4[reason]' - - tempbanall: - notify: '&6[player] will be temporarily banned for [expires] by [actor] for &4[reason]' - - unban: - notify: '&6[player] has been unbanned by [actor]' - error: - noExists: '&c[player] is not banned' - notOwn: '&c[player] was not banned by you, unable to unban' - - unbanall: - notify: '&6[player] will be unbanned by [actor]' - - mute: - player: - blocked: '&cYou may not use the [command] command whilst muted!' - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[player] has been permanently muted by [actor] for &4[reason]' - error: - exists: '&c[player] is already muted' - cooldown: '&cThis player was muted too recently, try again later' - - muteip: - ip: - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[ip] ([players]) have been permanently muted by [actor] for &4[reason]' - error: - exists: '&c[ip] is already muted' - - muteall: - notify: '&6[player] will be permanently muted by [actor] for &4[reason]' - - tempmute: - player: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - disallowedOnline: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires] (online time)' - notify: '&6[player] has been temporarily muted for [expires] by [actor] for &4[reason]' - notifyOnline: '&6[player] has been temporarily muted for [expires] (online time) by [actor] for &4[reason]' - error: - exists: '&c[player] is already muted' - - tempmuteip: - ip: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[ip] ([players]) have been temporarily muted for [expires] by [actor] for &4[reason]' - error: - exists: '&c[ip] is already muted' - - tempmuteall: - notify: '&6[player] will be temporarily muted for [expires] by [actor] for &4[reason]' - - unmute: - notify: '&6[player] has been unmuted by [actor]' - player: '&6You have been unmuted by [actor]' - error: - noExists: '&c[player] is not muted' - notOwn: '&c[player] was not muted by you, unable to unmute' - - unmuteip: - notify: '&6[ip] has been unmuted by [actor]' - error: - noExists: '&c[ip] is not muted' - notOwn: '&c[ip] was not muted by you, unable to unmute' - - unmuteall: - notify: '&6[player] will be unmuted by [actor]' - - banname: - name: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&cName [name] is already banned' - - tempbanname: - name: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been temporarily banned for [expires] by [actor] for &4[reason]' - - unbanname: - notify: '&6Name [name] has been unbanned by [actor]' - error: - noExists: '&cName [name] is not banned' - - banip: - ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[ip] is already banned' - cooldown: '&cThis ip was banned too recently, try again later' - - baniprange: - error: - invalid: '&cInvalid range, please use cidr notation 192.168.0.1/16 or wildcard 192.168.*.*' - minMax: '&cRange must be lowest to highest' - exists: '&cA ban containing those ranges already exists' - ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[from] - [to] have been banned by [actor]' - - tempbaniprange: - notify: '&6[from] - [to] has been temporarily banned for [expires] by [actor]' - ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for [expires] by [actor] for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - - unbaniprange: - notify: '&6[from] - [to] has been unbanned by [actor]' - - banipall: - notify: '&6[ip] will be permanently banned by [actor] for &4[reason]' - - tempbanip: - ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been temporarily banned for [expires] by [actor] for &4[reason]' - - tempbanipall: - notify: '&6[ip] will be temporarily banned for [expires] by [actor] for &4[reason]' - - unbanip: - notify: '&6[ip] has been unbanned by [actor]' - error: - noExists: '&c[ip] is not banned' - notOwn: '&c[ip] was not banned by you, unable to unban' - - unbanipall: - notify: '&6[ip] will be unbanned by [actor]' - - warn: - player: - warned: '&6You have been warned by [actor] for &4[reason]' - disallowed: - header: '&cYou may not speak until you have accepted your most recent warning. Please type the following:' - reason: '&6[reason]' - removed: '&aThank you for your understanding, you may now speak again' - notify: '&6[player] has been warned by [actor] for &4[reason]' - error: - cooldown: '&cThis player was warned too recently, try again later' - - tempwarn: - player: - warned: '&6You have been warned for [expires] by [actor] for &4[reason]' - notify: '&6[player] has been warned for [expires] by [actor] for &4[reason]' - - dwarn: - player: - notify: '&6Your most recent warning has been deleted by &4[actor]' - notify: '&cThe most recent warning for [player] has been deleted' - error: - noWarnings: '&c[player] has no warnings to delete' - - bmclear: - notify: '&c[player] has had their [type] cleared' - error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - - bmutils: - missingplayers: - notify: '&c[amount] missing players added' - noneFound: '&a0 missing players found' - found: '&c[amount] missing player data found. Fixing...' - error: - failedLookup: '&cFailed to lookup player [uuid], check server logs' - complete: '&a[amount] players resolved, please restart your server for failed punishments to take affect' - duplicates: - lookup: - notFound: '&aNo duplicate player names found' - error: - invalidName: '&cInvalid name, must be 16 characters or less and contain only letters, numbers and an underscore' - nameExists: '&cA player with that name already exists' - success: '&aPlayer name set to [player] successfully' - - bmrollback: - notify: '&c[player] has had their [type] actions undone' - error: - invalid: '&cInvalid type [type], please choose between [types]' - - sync: - player: - started: '&aStarting force [type] synchronisation' - finished: '&aForced [type] synchronisation complete' - - update: - notify: '&6[BanManager] &aAn update is available' - - notes: - header: '&6[player] has the following notes:' - joinAmount: '&6[player] has &e[amount] &6notes, click to view them' - note: '&6[[player]] &e[message] - &e[created]' - playerNote: '&a[[player]] &6[[actor]] &e[message] - &e[created]' - dateTimeFormat: 'dd-MM-yyyy' - notify: '[player] has a new note attached by [actor]: [message]' - error: - noNotes: '&c[player] has no notes' - noOnlineNotes: '&cNo online players have notes' - - report: - notify: '&6[player] has been reported by [actor] for &4[reason]' - error: - cooldown: '&cThis player was reported too recently, try again later' - assign: - player: '&aReport [id] assigned to [player]' - notify: '&aYou have been assigned report [id] by [actor]' - unassign: - player: '&aReport [id] unassigned' - close: - notify: - closed: '&aReport [id] closed by [actor]' - command: '&aReport [id] closed by [actor] with [command]' - comment: '&aReport [id] closed by [actor] with [comment]' - dispatch: 'Executing command [command]' - list: - noResults: '&cNo reports found' - error: - invalidState: '&cReport state [state] not found' - row: - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - header: '&e-- Reports ([count]) -- Page ([page]/[maxPage])' - all: '&7#[id] &e[[state]] &6- [created] - [player]' - tp: - error: - notFound: '&cReport not found' - worldNotFound: '&cWorld [world] could not be found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - info: - error: - notFound: '&cReport not found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - - addnoteall: - notify: '&c[player] will have a new attached by [actor]: [message]' - - banlist: - header: '&6There are [bans] [type] bans:' - - bmactivity: - row: - all: '&a[&f[type]&a] &6[player]&f - &6[actor]&f - &e[created]' - player: '&a[&f[type]&a] &6[player]&f - &e[created]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' - - bmdelete: - notify: '&a[rows] rows deleted' - error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - invalidId: '&c[id] is not a valid number' - - denyalts: - player: - disallowed: '&cThe IP address you are joining from is linked to a banned player' - - reasons: - row: '[hashtag] = [reason]' diff --git a/e2e/platforms/bungee/configs/banmanager/config.yml b/e2e/platforms/bungee/configs/banmanager/config.yml index 4c59ef67e..8581b02e3 100644 --- a/e2e/platforms/bungee/configs/banmanager/config.yml +++ b/e2e/platforms/bungee/configs/banmanager/config.yml @@ -1,9 +1,5 @@ # # Aliases will be found and blocked automatically, e.g. msg will block tell -locale: - default: en - perPlayer: true - debug: false databases: local: diff --git a/e2e/platforms/bungee/configs/banmanager/messages/messages_de.yml b/e2e/platforms/bungee/configs/banmanager/messages/messages_de.yml deleted file mode 100644 index d813fecbc..000000000 --- a/e2e/platforms/bungee/configs/banmanager/messages/messages_de.yml +++ /dev/null @@ -1,16 +0,0 @@ -messages: - configReloaded: '&aKonfiguration erfolgreich neu geladen!' - - ban: - player: - disallowed: '&6Du wurdest von diesem Server gebannt wegen &4[reason]' - kick: '&6Du wurdest dauerhaft gebannt wegen &4[reason]' - notify: '&6[player] wurde dauerhaft gebannt von [actor] wegen &4[reason]' - - unban: - notify: '&6[player] wurde von [actor] entbannt' - - mute: - player: - disallowed: '&6Du bist stummgeschaltet wegen &4[reason]' - notify: '&6[player] wurde dauerhaft stummgeschaltet von [actor] wegen &4[reason]' diff --git a/e2e/platforms/bungee/configs/banmanager/messages/messages_en.yml b/e2e/platforms/bungee/configs/banmanager/messages/messages_en.yml deleted file mode 100644 index 205a94c13..000000000 --- a/e2e/platforms/bungee/configs/banmanager/messages/messages_en.yml +++ /dev/null @@ -1,448 +0,0 @@ -# Variables -# [reason] = Ban/Mute reason -# [player] = The name of the player -# [ip] = The banned ip -# [actor] = Who banned/muted -# [expires] = How long until the ban/mute ends - -messages: - duplicateIP: '&cWarning: [player] has the same IP as the following banned players:\n&6[players]' - duplicateIPAlts: '&cWarning: [player] has the same IP as the following players:\n&6[players]' - configReloaded: '&aConfiguration reloaded successfully!' - deniedNotify: - player: '&cWarning: [player] attempted to join the server but was denied due to &4[reason]' - ip: '&cWarning: [ip] attempted to join the server but was denied due to &4[reason]' - deniedMaxIp: '&cToo many players with your ip address online' - deniedMultiaccounts: '&cToo many players with your ip address logged in recently' - deniedCountry: '&cYou may not connect from your region' - - time: - now: 'now' - year: 'year' - years: 'years' - month: 'month' - months: 'months' - week: 'week' - weeks: 'weeks' - day: 'day' - days: 'days' - hour: 'hour' - hours: 'hours' - minute: 'minute' - minutes: 'minutes' - second: 'second' - seconds: 'seconds' - never: 'never' - error: - invalid: '&cYour time length is invalid' - limit: '&cYou cannot perform this action for that length of time' - - none: 'none' - # General command text - sender: - error: - notFound: '&c[player] not found, are you sure they exist?' - offline: '&c[player] is offline' - noSelf: '&cYou cannot perform that action on yourself!' - exception: '&cAn error occured whilst attempting to perform this command. Please check the console for further details.' - invalidIp: '&cInvalid IP address, expecting w.x.y.z format' - offlinePermission: '&cYou are not allowed to perform this action on an offline player' - ambiguousPlayer: '&cMultiple players match "[player]". Please use their full name.' - exempt: '&c[player] is exempt from that action' - noPermission: '&cYou do not have permission to perform that action' - invalidReason: '&c[reason] is no valid reason.' - # Commands - alts: - header: 'Possible alts found:' - - names: - header: 'Known names for [player]:' - row: '&e[name] &7(first: [firstSeen], last: [lastSeen])' - dateTimeFormat: 'dd-MM-yyyy' - none: '&7No name history found' - - export: - error: - inProgress: '&cAn export is already in progress, please wait' - player: - started: '&aPlayer ban export started' - finished: '&aPlayer ban export finished, file [file] created' - ip: - started: '&aIP ban export started' - finished: '&aIP ban export finished, file [file] created' - - import: - error: - inProgress: '&cAn import is already in progress, please wait' - player: - started: '&aPlayer ban import started' - finished: '&aPlayer ban import finished' - ip: - started: '&aIP ban import started' - finished: '&aIP ban import finished' - advancedban: - started: '&aAdvancedBan import started' - finished: '&aAdvancedBan import finished' - h2: - started: '&aH2 import started' - finished: '&aH2 import finished, please restart the server' - litebans: - started: '&aLiteBans import started' - finished: '&aLiteBans import finished' - - info: - error: - invalidIndex: '&cInvalid player option used' - indexRequired: '&cMultiple players named [name] found, please select a player by providing an index between 1 and [size], e.g. /bminfo [name] 1' - index: '&7#[index] - &6[name] - &4[uuid]' - stats: - player: '&6[player] has been banned [bans] times, muted [mutes] times, kicked [kicks] times and warned [warns] - times ([warnPoints] Points), has [notes] notes and been reported [reports] times' - ip: '&6This ip has been banned [bans] times, muted [mutes] times and range banned [rangebans] times' - connection: '&6Their last connection was with [ip] on [lastSeen]' - geoip: 'Country: [country] City: [city]' - ban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - ipban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - iprangeban: - permanent: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - ipmute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - mute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' - temporaryOnline: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires] (online time)' - temporaryOnlinePaused: '&6Currently muted for &4[reason]&6 by [actor] at [created] with [remaining] remaining (online time, paused)' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - website: - player: 'https://yourdomain.com/player/[uuid]' - ip: 'http://yourdomain.com/index.php?action=viewip&ip=[ip]&server=0' - history: - row: '&7#[id] &a[&f[type]&a] &6[actor]&f [meta] [reason] - &e[created]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' - ips: - row: '&e[ip] - &6[join] - [leave]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - - kick: - player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' - notify: - noReason: '&6[player] has been kicked by [actor]' - reason: '&6[player] has been kicked by [actor] for &4[reason]' - - kickall: - player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' - notify: - noReason: 'All players have been kicked by [actor]' - reason: 'All players have been kicked by [actor] for &4[reason]' - - ban: - player: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[player] is already banned' - cooldown: '&cThis player was banned too recently, try again later' - - banall: - notify: '&6[player] will be permanently banned by [actor] for &4[reason]' - - tempban: - player: - disallowed: '&6You have been temporarily banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been temporarily banned for [expires] by [actor] for &4[reason]' - - tempbanall: - notify: '&6[player] will be temporarily banned for [expires] by [actor] for &4[reason]' - - unban: - notify: '&6[player] has been unbanned by [actor]' - error: - noExists: '&c[player] is not banned' - notOwn: '&c[player] was not banned by you, unable to unban' - - unbanall: - notify: '&6[player] will be unbanned by [actor]' - - mute: - player: - blocked: '&cYou may not use the [command] command whilst muted!' - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[player] has been permanently muted by [actor] for &4[reason]' - error: - exists: '&c[player] is already muted' - cooldown: '&cThis player was muted too recently, try again later' - - muteip: - ip: - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[ip] ([players]) have been permanently muted by [actor] for &4[reason]' - error: - exists: '&c[ip] is already muted' - - muteall: - notify: '&6[player] will be permanently muted by [actor] for &4[reason]' - - tempmute: - player: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - disallowedOnline: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires] (online time)' - notify: '&6[player] has been temporarily muted for [expires] by [actor] for &4[reason]' - notifyOnline: '&6[player] has been temporarily muted for [expires] (online time) by [actor] for &4[reason]' - error: - exists: '&c[player] is already muted' - - tempmuteip: - ip: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[ip] ([players]) have been temporarily muted for [expires] by [actor] for &4[reason]' - error: - exists: '&c[ip] is already muted' - - tempmuteall: - notify: '&6[player] will be temporarily muted for [expires] by [actor] for &4[reason]' - - unmute: - notify: '&6[player] has been unmuted by [actor]' - player: '&6You have been unmuted by [actor]' - error: - noExists: '&c[player] is not muted' - notOwn: '&c[player] was not muted by you, unable to unmute' - - unmuteip: - notify: '&6[ip] has been unmuted by [actor]' - error: - noExists: '&c[ip] is not muted' - notOwn: '&c[ip] was not muted by you, unable to unmute' - - unmuteall: - notify: '&6[player] will be unmuted by [actor]' - - banname: - name: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&cName [name] is already banned' - - tempbanname: - name: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been temporarily banned for [expires] by [actor] for &4[reason]' - - unbanname: - notify: '&6Name [name] has been unbanned by [actor]' - error: - noExists: '&cName [name] is not banned' - - banip: - ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[ip] is already banned' - cooldown: '&cThis ip was banned too recently, try again later' - - baniprange: - error: - invalid: '&cInvalid range, please use cidr notation 192.168.0.1/16 or wildcard 192.168.*.*' - minMax: '&cRange must be lowest to highest' - exists: '&cA ban containing those ranges already exists' - ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[from] - [to] have been banned by [actor]' - - tempbaniprange: - notify: '&6[from] - [to] has been temporarily banned for [expires] by [actor]' - ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for [expires] by [actor] for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - - unbaniprange: - notify: '&6[from] - [to] has been unbanned by [actor]' - - banipall: - notify: '&6[ip] will be permanently banned by [actor] for &4[reason]' - - tempbanip: - ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been temporarily banned for [expires] by [actor] for &4[reason]' - - tempbanipall: - notify: '&6[ip] will be temporarily banned for [expires] by [actor] for &4[reason]' - - unbanip: - notify: '&6[ip] has been unbanned by [actor]' - error: - noExists: '&c[ip] is not banned' - notOwn: '&c[ip] was not banned by you, unable to unban' - - unbanipall: - notify: '&6[ip] will be unbanned by [actor]' - - warn: - player: - warned: '&6You have been warned by [actor] for &4[reason]' - disallowed: - header: '&cYou may not speak until you have accepted your most recent warning. Please type the following:' - reason: '&6[reason]' - removed: '&aThank you for your understanding, you may now speak again' - notify: '&6[player] has been warned by [actor] for &4[reason]' - error: - cooldown: '&cThis player was warned too recently, try again later' - - tempwarn: - player: - warned: '&6You have been warned for [expires] by [actor] for &4[reason]' - notify: '&6[player] has been warned for [expires] by [actor] for &4[reason]' - - dwarn: - player: - notify: '&6Your most recent warning has been deleted by &4[actor]' - notify: '&cThe most recent warning for [player] has been deleted' - error: - noWarnings: '&c[player] has no warnings to delete' - - bmclear: - notify: '&c[player] has had their [type] cleared' - error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - - bmutils: - missingplayers: - notify: '&c[amount] missing players added' - noneFound: '&a0 missing players found' - found: '&c[amount] missing player data found. Fixing...' - error: - failedLookup: '&cFailed to lookup player [uuid], check server logs' - complete: '&a[amount] players resolved, please restart your server for failed punishments to take affect' - duplicates: - lookup: - notFound: '&aNo duplicate player names found' - error: - invalidName: '&cInvalid name, must be 16 characters or less and contain only letters, numbers and an underscore' - nameExists: '&cA player with that name already exists' - success: '&aPlayer name set to [player] successfully' - - bmrollback: - notify: '&c[player] has had their [type] actions undone' - error: - invalid: '&cInvalid type [type], please choose between [types]' - - sync: - player: - started: '&aStarting force [type] synchronisation' - finished: '&aForced [type] synchronisation complete' - - update: - notify: '&6[BanManager] &aAn update is available' - - notes: - header: '&6[player] has the following notes:' - joinAmount: '&6[player] has &e[amount] &6notes, click to view them' - note: '&6[[player]] &e[message] - &e[created]' - playerNote: '&a[[player]] &6[[actor]] &e[message] - &e[created]' - dateTimeFormat: 'dd-MM-yyyy' - notify: '[player] has a new note attached by [actor]: [message]' - error: - noNotes: '&c[player] has no notes' - noOnlineNotes: '&cNo online players have notes' - - report: - notify: '&6[player] has been reported by [actor] for &4[reason]' - error: - cooldown: '&cThis player was reported too recently, try again later' - assign: - player: '&aReport [id] assigned to [player]' - notify: '&aYou have been assigned report [id] by [actor]' - unassign: - player: '&aReport [id] unassigned' - close: - notify: - closed: '&aReport [id] closed by [actor]' - command: '&aReport [id] closed by [actor] with [command]' - comment: '&aReport [id] closed by [actor] with [comment]' - dispatch: 'Executing command [command]' - list: - noResults: '&cNo reports found' - error: - invalidState: '&cReport state [state] not found' - row: - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - header: '&e-- Reports ([count]) -- Page ([page]/[maxPage])' - all: '&7#[id] &e[[state]] &6- [created] - [player]' - tp: - error: - notFound: '&cReport not found' - worldNotFound: '&cWorld [world] could not be found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - info: - error: - notFound: '&cReport not found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - - addnoteall: - notify: '&c[player] will have a new attached by [actor]: [message]' - - banlist: - header: '&6There are [bans] [type] bans:' - - bmactivity: - row: - all: '&a[&f[type]&a] &6[player]&f - &6[actor]&f - &e[created]' - player: '&a[&f[type]&a] &6[player]&f - &e[created]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' - - bmdelete: - notify: '&a[rows] rows deleted' - error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - invalidId: '&c[id] is not a valid number' - - denyalts: - player: - disallowed: '&cThe IP address you are joining from is linked to a banned player' - - reasons: - row: '[hashtag] = [reason]' diff --git a/e2e/platforms/fabric/configs/config.yml b/e2e/platforms/fabric/configs/config.yml index b8ac0e3a3..c9a784112 100644 --- a/e2e/platforms/fabric/configs/config.yml +++ b/e2e/platforms/fabric/configs/config.yml @@ -1,7 +1,3 @@ -locale: - default: en - perPlayer: true - debug: false databases: local: diff --git a/e2e/platforms/fabric/configs/messages/messages_de.yml b/e2e/platforms/fabric/configs/messages/messages_de.yml deleted file mode 100644 index d813fecbc..000000000 --- a/e2e/platforms/fabric/configs/messages/messages_de.yml +++ /dev/null @@ -1,16 +0,0 @@ -messages: - configReloaded: '&aKonfiguration erfolgreich neu geladen!' - - ban: - player: - disallowed: '&6Du wurdest von diesem Server gebannt wegen &4[reason]' - kick: '&6Du wurdest dauerhaft gebannt wegen &4[reason]' - notify: '&6[player] wurde dauerhaft gebannt von [actor] wegen &4[reason]' - - unban: - notify: '&6[player] wurde von [actor] entbannt' - - mute: - player: - disallowed: '&6Du bist stummgeschaltet wegen &4[reason]' - notify: '&6[player] wurde dauerhaft stummgeschaltet von [actor] wegen &4[reason]' diff --git a/e2e/platforms/fabric/configs/messages/messages_en.yml b/e2e/platforms/fabric/configs/messages/messages_en.yml deleted file mode 100644 index 205a94c13..000000000 --- a/e2e/platforms/fabric/configs/messages/messages_en.yml +++ /dev/null @@ -1,448 +0,0 @@ -# Variables -# [reason] = Ban/Mute reason -# [player] = The name of the player -# [ip] = The banned ip -# [actor] = Who banned/muted -# [expires] = How long until the ban/mute ends - -messages: - duplicateIP: '&cWarning: [player] has the same IP as the following banned players:\n&6[players]' - duplicateIPAlts: '&cWarning: [player] has the same IP as the following players:\n&6[players]' - configReloaded: '&aConfiguration reloaded successfully!' - deniedNotify: - player: '&cWarning: [player] attempted to join the server but was denied due to &4[reason]' - ip: '&cWarning: [ip] attempted to join the server but was denied due to &4[reason]' - deniedMaxIp: '&cToo many players with your ip address online' - deniedMultiaccounts: '&cToo many players with your ip address logged in recently' - deniedCountry: '&cYou may not connect from your region' - - time: - now: 'now' - year: 'year' - years: 'years' - month: 'month' - months: 'months' - week: 'week' - weeks: 'weeks' - day: 'day' - days: 'days' - hour: 'hour' - hours: 'hours' - minute: 'minute' - minutes: 'minutes' - second: 'second' - seconds: 'seconds' - never: 'never' - error: - invalid: '&cYour time length is invalid' - limit: '&cYou cannot perform this action for that length of time' - - none: 'none' - # General command text - sender: - error: - notFound: '&c[player] not found, are you sure they exist?' - offline: '&c[player] is offline' - noSelf: '&cYou cannot perform that action on yourself!' - exception: '&cAn error occured whilst attempting to perform this command. Please check the console for further details.' - invalidIp: '&cInvalid IP address, expecting w.x.y.z format' - offlinePermission: '&cYou are not allowed to perform this action on an offline player' - ambiguousPlayer: '&cMultiple players match "[player]". Please use their full name.' - exempt: '&c[player] is exempt from that action' - noPermission: '&cYou do not have permission to perform that action' - invalidReason: '&c[reason] is no valid reason.' - # Commands - alts: - header: 'Possible alts found:' - - names: - header: 'Known names for [player]:' - row: '&e[name] &7(first: [firstSeen], last: [lastSeen])' - dateTimeFormat: 'dd-MM-yyyy' - none: '&7No name history found' - - export: - error: - inProgress: '&cAn export is already in progress, please wait' - player: - started: '&aPlayer ban export started' - finished: '&aPlayer ban export finished, file [file] created' - ip: - started: '&aIP ban export started' - finished: '&aIP ban export finished, file [file] created' - - import: - error: - inProgress: '&cAn import is already in progress, please wait' - player: - started: '&aPlayer ban import started' - finished: '&aPlayer ban import finished' - ip: - started: '&aIP ban import started' - finished: '&aIP ban import finished' - advancedban: - started: '&aAdvancedBan import started' - finished: '&aAdvancedBan import finished' - h2: - started: '&aH2 import started' - finished: '&aH2 import finished, please restart the server' - litebans: - started: '&aLiteBans import started' - finished: '&aLiteBans import finished' - - info: - error: - invalidIndex: '&cInvalid player option used' - indexRequired: '&cMultiple players named [name] found, please select a player by providing an index between 1 and [size], e.g. /bminfo [name] 1' - index: '&7#[index] - &6[name] - &4[uuid]' - stats: - player: '&6[player] has been banned [bans] times, muted [mutes] times, kicked [kicks] times and warned [warns] - times ([warnPoints] Points), has [notes] notes and been reported [reports] times' - ip: '&6This ip has been banned [bans] times, muted [mutes] times and range banned [rangebans] times' - connection: '&6Their last connection was with [ip] on [lastSeen]' - geoip: 'Country: [country] City: [city]' - ban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - ipban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - iprangeban: - permanent: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - ipmute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - mute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' - temporaryOnline: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires] (online time)' - temporaryOnlinePaused: '&6Currently muted for &4[reason]&6 by [actor] at [created] with [remaining] remaining (online time, paused)' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - website: - player: 'https://yourdomain.com/player/[uuid]' - ip: 'http://yourdomain.com/index.php?action=viewip&ip=[ip]&server=0' - history: - row: '&7#[id] &a[&f[type]&a] &6[actor]&f [meta] [reason] - &e[created]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' - ips: - row: '&e[ip] - &6[join] - [leave]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - - kick: - player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' - notify: - noReason: '&6[player] has been kicked by [actor]' - reason: '&6[player] has been kicked by [actor] for &4[reason]' - - kickall: - player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' - notify: - noReason: 'All players have been kicked by [actor]' - reason: 'All players have been kicked by [actor] for &4[reason]' - - ban: - player: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[player] is already banned' - cooldown: '&cThis player was banned too recently, try again later' - - banall: - notify: '&6[player] will be permanently banned by [actor] for &4[reason]' - - tempban: - player: - disallowed: '&6You have been temporarily banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been temporarily banned for [expires] by [actor] for &4[reason]' - - tempbanall: - notify: '&6[player] will be temporarily banned for [expires] by [actor] for &4[reason]' - - unban: - notify: '&6[player] has been unbanned by [actor]' - error: - noExists: '&c[player] is not banned' - notOwn: '&c[player] was not banned by you, unable to unban' - - unbanall: - notify: '&6[player] will be unbanned by [actor]' - - mute: - player: - blocked: '&cYou may not use the [command] command whilst muted!' - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[player] has been permanently muted by [actor] for &4[reason]' - error: - exists: '&c[player] is already muted' - cooldown: '&cThis player was muted too recently, try again later' - - muteip: - ip: - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[ip] ([players]) have been permanently muted by [actor] for &4[reason]' - error: - exists: '&c[ip] is already muted' - - muteall: - notify: '&6[player] will be permanently muted by [actor] for &4[reason]' - - tempmute: - player: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - disallowedOnline: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires] (online time)' - notify: '&6[player] has been temporarily muted for [expires] by [actor] for &4[reason]' - notifyOnline: '&6[player] has been temporarily muted for [expires] (online time) by [actor] for &4[reason]' - error: - exists: '&c[player] is already muted' - - tempmuteip: - ip: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[ip] ([players]) have been temporarily muted for [expires] by [actor] for &4[reason]' - error: - exists: '&c[ip] is already muted' - - tempmuteall: - notify: '&6[player] will be temporarily muted for [expires] by [actor] for &4[reason]' - - unmute: - notify: '&6[player] has been unmuted by [actor]' - player: '&6You have been unmuted by [actor]' - error: - noExists: '&c[player] is not muted' - notOwn: '&c[player] was not muted by you, unable to unmute' - - unmuteip: - notify: '&6[ip] has been unmuted by [actor]' - error: - noExists: '&c[ip] is not muted' - notOwn: '&c[ip] was not muted by you, unable to unmute' - - unmuteall: - notify: '&6[player] will be unmuted by [actor]' - - banname: - name: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&cName [name] is already banned' - - tempbanname: - name: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been temporarily banned for [expires] by [actor] for &4[reason]' - - unbanname: - notify: '&6Name [name] has been unbanned by [actor]' - error: - noExists: '&cName [name] is not banned' - - banip: - ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[ip] is already banned' - cooldown: '&cThis ip was banned too recently, try again later' - - baniprange: - error: - invalid: '&cInvalid range, please use cidr notation 192.168.0.1/16 or wildcard 192.168.*.*' - minMax: '&cRange must be lowest to highest' - exists: '&cA ban containing those ranges already exists' - ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[from] - [to] have been banned by [actor]' - - tempbaniprange: - notify: '&6[from] - [to] has been temporarily banned for [expires] by [actor]' - ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for [expires] by [actor] for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - - unbaniprange: - notify: '&6[from] - [to] has been unbanned by [actor]' - - banipall: - notify: '&6[ip] will be permanently banned by [actor] for &4[reason]' - - tempbanip: - ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been temporarily banned for [expires] by [actor] for &4[reason]' - - tempbanipall: - notify: '&6[ip] will be temporarily banned for [expires] by [actor] for &4[reason]' - - unbanip: - notify: '&6[ip] has been unbanned by [actor]' - error: - noExists: '&c[ip] is not banned' - notOwn: '&c[ip] was not banned by you, unable to unban' - - unbanipall: - notify: '&6[ip] will be unbanned by [actor]' - - warn: - player: - warned: '&6You have been warned by [actor] for &4[reason]' - disallowed: - header: '&cYou may not speak until you have accepted your most recent warning. Please type the following:' - reason: '&6[reason]' - removed: '&aThank you for your understanding, you may now speak again' - notify: '&6[player] has been warned by [actor] for &4[reason]' - error: - cooldown: '&cThis player was warned too recently, try again later' - - tempwarn: - player: - warned: '&6You have been warned for [expires] by [actor] for &4[reason]' - notify: '&6[player] has been warned for [expires] by [actor] for &4[reason]' - - dwarn: - player: - notify: '&6Your most recent warning has been deleted by &4[actor]' - notify: '&cThe most recent warning for [player] has been deleted' - error: - noWarnings: '&c[player] has no warnings to delete' - - bmclear: - notify: '&c[player] has had their [type] cleared' - error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - - bmutils: - missingplayers: - notify: '&c[amount] missing players added' - noneFound: '&a0 missing players found' - found: '&c[amount] missing player data found. Fixing...' - error: - failedLookup: '&cFailed to lookup player [uuid], check server logs' - complete: '&a[amount] players resolved, please restart your server for failed punishments to take affect' - duplicates: - lookup: - notFound: '&aNo duplicate player names found' - error: - invalidName: '&cInvalid name, must be 16 characters or less and contain only letters, numbers and an underscore' - nameExists: '&cA player with that name already exists' - success: '&aPlayer name set to [player] successfully' - - bmrollback: - notify: '&c[player] has had their [type] actions undone' - error: - invalid: '&cInvalid type [type], please choose between [types]' - - sync: - player: - started: '&aStarting force [type] synchronisation' - finished: '&aForced [type] synchronisation complete' - - update: - notify: '&6[BanManager] &aAn update is available' - - notes: - header: '&6[player] has the following notes:' - joinAmount: '&6[player] has &e[amount] &6notes, click to view them' - note: '&6[[player]] &e[message] - &e[created]' - playerNote: '&a[[player]] &6[[actor]] &e[message] - &e[created]' - dateTimeFormat: 'dd-MM-yyyy' - notify: '[player] has a new note attached by [actor]: [message]' - error: - noNotes: '&c[player] has no notes' - noOnlineNotes: '&cNo online players have notes' - - report: - notify: '&6[player] has been reported by [actor] for &4[reason]' - error: - cooldown: '&cThis player was reported too recently, try again later' - assign: - player: '&aReport [id] assigned to [player]' - notify: '&aYou have been assigned report [id] by [actor]' - unassign: - player: '&aReport [id] unassigned' - close: - notify: - closed: '&aReport [id] closed by [actor]' - command: '&aReport [id] closed by [actor] with [command]' - comment: '&aReport [id] closed by [actor] with [comment]' - dispatch: 'Executing command [command]' - list: - noResults: '&cNo reports found' - error: - invalidState: '&cReport state [state] not found' - row: - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - header: '&e-- Reports ([count]) -- Page ([page]/[maxPage])' - all: '&7#[id] &e[[state]] &6- [created] - [player]' - tp: - error: - notFound: '&cReport not found' - worldNotFound: '&cWorld [world] could not be found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - info: - error: - notFound: '&cReport not found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - - addnoteall: - notify: '&c[player] will have a new attached by [actor]: [message]' - - banlist: - header: '&6There are [bans] [type] bans:' - - bmactivity: - row: - all: '&a[&f[type]&a] &6[player]&f - &6[actor]&f - &e[created]' - player: '&a[&f[type]&a] &6[player]&f - &e[created]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' - - bmdelete: - notify: '&a[rows] rows deleted' - error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - invalidId: '&c[id] is not a valid number' - - denyalts: - player: - disallowed: '&cThe IP address you are joining from is linked to a banned player' - - reasons: - row: '[hashtag] = [reason]' diff --git a/e2e/platforms/sponge/configs/banmanager/config.yml b/e2e/platforms/sponge/configs/banmanager/config.yml index 663f077e8..41de43066 100644 --- a/e2e/platforms/sponge/configs/banmanager/config.yml +++ b/e2e/platforms/sponge/configs/banmanager/config.yml @@ -1,9 +1,5 @@ # # Aliases will be found and blocked automatically, e.g. msg will block tell -locale: - default: en - perPlayer: true - debug: false databases: local: diff --git a/e2e/platforms/sponge/configs/banmanager/messages/messages_de.yml b/e2e/platforms/sponge/configs/banmanager/messages/messages_de.yml deleted file mode 100644 index d813fecbc..000000000 --- a/e2e/platforms/sponge/configs/banmanager/messages/messages_de.yml +++ /dev/null @@ -1,16 +0,0 @@ -messages: - configReloaded: '&aKonfiguration erfolgreich neu geladen!' - - ban: - player: - disallowed: '&6Du wurdest von diesem Server gebannt wegen &4[reason]' - kick: '&6Du wurdest dauerhaft gebannt wegen &4[reason]' - notify: '&6[player] wurde dauerhaft gebannt von [actor] wegen &4[reason]' - - unban: - notify: '&6[player] wurde von [actor] entbannt' - - mute: - player: - disallowed: '&6Du bist stummgeschaltet wegen &4[reason]' - notify: '&6[player] wurde dauerhaft stummgeschaltet von [actor] wegen &4[reason]' diff --git a/e2e/platforms/sponge/configs/banmanager/messages/messages_en.yml b/e2e/platforms/sponge/configs/banmanager/messages/messages_en.yml deleted file mode 100644 index 205a94c13..000000000 --- a/e2e/platforms/sponge/configs/banmanager/messages/messages_en.yml +++ /dev/null @@ -1,448 +0,0 @@ -# Variables -# [reason] = Ban/Mute reason -# [player] = The name of the player -# [ip] = The banned ip -# [actor] = Who banned/muted -# [expires] = How long until the ban/mute ends - -messages: - duplicateIP: '&cWarning: [player] has the same IP as the following banned players:\n&6[players]' - duplicateIPAlts: '&cWarning: [player] has the same IP as the following players:\n&6[players]' - configReloaded: '&aConfiguration reloaded successfully!' - deniedNotify: - player: '&cWarning: [player] attempted to join the server but was denied due to &4[reason]' - ip: '&cWarning: [ip] attempted to join the server but was denied due to &4[reason]' - deniedMaxIp: '&cToo many players with your ip address online' - deniedMultiaccounts: '&cToo many players with your ip address logged in recently' - deniedCountry: '&cYou may not connect from your region' - - time: - now: 'now' - year: 'year' - years: 'years' - month: 'month' - months: 'months' - week: 'week' - weeks: 'weeks' - day: 'day' - days: 'days' - hour: 'hour' - hours: 'hours' - minute: 'minute' - minutes: 'minutes' - second: 'second' - seconds: 'seconds' - never: 'never' - error: - invalid: '&cYour time length is invalid' - limit: '&cYou cannot perform this action for that length of time' - - none: 'none' - # General command text - sender: - error: - notFound: '&c[player] not found, are you sure they exist?' - offline: '&c[player] is offline' - noSelf: '&cYou cannot perform that action on yourself!' - exception: '&cAn error occured whilst attempting to perform this command. Please check the console for further details.' - invalidIp: '&cInvalid IP address, expecting w.x.y.z format' - offlinePermission: '&cYou are not allowed to perform this action on an offline player' - ambiguousPlayer: '&cMultiple players match "[player]". Please use their full name.' - exempt: '&c[player] is exempt from that action' - noPermission: '&cYou do not have permission to perform that action' - invalidReason: '&c[reason] is no valid reason.' - # Commands - alts: - header: 'Possible alts found:' - - names: - header: 'Known names for [player]:' - row: '&e[name] &7(first: [firstSeen], last: [lastSeen])' - dateTimeFormat: 'dd-MM-yyyy' - none: '&7No name history found' - - export: - error: - inProgress: '&cAn export is already in progress, please wait' - player: - started: '&aPlayer ban export started' - finished: '&aPlayer ban export finished, file [file] created' - ip: - started: '&aIP ban export started' - finished: '&aIP ban export finished, file [file] created' - - import: - error: - inProgress: '&cAn import is already in progress, please wait' - player: - started: '&aPlayer ban import started' - finished: '&aPlayer ban import finished' - ip: - started: '&aIP ban import started' - finished: '&aIP ban import finished' - advancedban: - started: '&aAdvancedBan import started' - finished: '&aAdvancedBan import finished' - h2: - started: '&aH2 import started' - finished: '&aH2 import finished, please restart the server' - litebans: - started: '&aLiteBans import started' - finished: '&aLiteBans import finished' - - info: - error: - invalidIndex: '&cInvalid player option used' - indexRequired: '&cMultiple players named [name] found, please select a player by providing an index between 1 and [size], e.g. /bminfo [name] 1' - index: '&7#[index] - &6[name] - &4[uuid]' - stats: - player: '&6[player] has been banned [bans] times, muted [mutes] times, kicked [kicks] times and warned [warns] - times ([warnPoints] Points), has [notes] notes and been reported [reports] times' - ip: '&6This ip has been banned [bans] times, muted [mutes] times and range banned [rangebans] times' - connection: '&6Their last connection was with [ip] on [lastSeen]' - geoip: 'Country: [country] City: [city]' - ban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - ipban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - iprangeban: - permanent: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - ipmute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - mute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' - temporaryOnline: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires] (online time)' - temporaryOnlinePaused: '&6Currently muted for &4[reason]&6 by [actor] at [created] with [remaining] remaining (online time, paused)' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - website: - player: 'https://yourdomain.com/player/[uuid]' - ip: 'http://yourdomain.com/index.php?action=viewip&ip=[ip]&server=0' - history: - row: '&7#[id] &a[&f[type]&a] &6[actor]&f [meta] [reason] - &e[created]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' - ips: - row: '&e[ip] - &6[join] - [leave]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - - kick: - player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' - notify: - noReason: '&6[player] has been kicked by [actor]' - reason: '&6[player] has been kicked by [actor] for &4[reason]' - - kickall: - player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' - notify: - noReason: 'All players have been kicked by [actor]' - reason: 'All players have been kicked by [actor] for &4[reason]' - - ban: - player: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[player] is already banned' - cooldown: '&cThis player was banned too recently, try again later' - - banall: - notify: '&6[player] will be permanently banned by [actor] for &4[reason]' - - tempban: - player: - disallowed: '&6You have been temporarily banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been temporarily banned for [expires] by [actor] for &4[reason]' - - tempbanall: - notify: '&6[player] will be temporarily banned for [expires] by [actor] for &4[reason]' - - unban: - notify: '&6[player] has been unbanned by [actor]' - error: - noExists: '&c[player] is not banned' - notOwn: '&c[player] was not banned by you, unable to unban' - - unbanall: - notify: '&6[player] will be unbanned by [actor]' - - mute: - player: - blocked: '&cYou may not use the [command] command whilst muted!' - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[player] has been permanently muted by [actor] for &4[reason]' - error: - exists: '&c[player] is already muted' - cooldown: '&cThis player was muted too recently, try again later' - - muteip: - ip: - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[ip] ([players]) have been permanently muted by [actor] for &4[reason]' - error: - exists: '&c[ip] is already muted' - - muteall: - notify: '&6[player] will be permanently muted by [actor] for &4[reason]' - - tempmute: - player: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - disallowedOnline: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires] (online time)' - notify: '&6[player] has been temporarily muted for [expires] by [actor] for &4[reason]' - notifyOnline: '&6[player] has been temporarily muted for [expires] (online time) by [actor] for &4[reason]' - error: - exists: '&c[player] is already muted' - - tempmuteip: - ip: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[ip] ([players]) have been temporarily muted for [expires] by [actor] for &4[reason]' - error: - exists: '&c[ip] is already muted' - - tempmuteall: - notify: '&6[player] will be temporarily muted for [expires] by [actor] for &4[reason]' - - unmute: - notify: '&6[player] has been unmuted by [actor]' - player: '&6You have been unmuted by [actor]' - error: - noExists: '&c[player] is not muted' - notOwn: '&c[player] was not muted by you, unable to unmute' - - unmuteip: - notify: '&6[ip] has been unmuted by [actor]' - error: - noExists: '&c[ip] is not muted' - notOwn: '&c[ip] was not muted by you, unable to unmute' - - unmuteall: - notify: '&6[player] will be unmuted by [actor]' - - banname: - name: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&cName [name] is already banned' - - tempbanname: - name: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been temporarily banned for [expires] by [actor] for &4[reason]' - - unbanname: - notify: '&6Name [name] has been unbanned by [actor]' - error: - noExists: '&cName [name] is not banned' - - banip: - ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[ip] is already banned' - cooldown: '&cThis ip was banned too recently, try again later' - - baniprange: - error: - invalid: '&cInvalid range, please use cidr notation 192.168.0.1/16 or wildcard 192.168.*.*' - minMax: '&cRange must be lowest to highest' - exists: '&cA ban containing those ranges already exists' - ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[from] - [to] have been banned by [actor]' - - tempbaniprange: - notify: '&6[from] - [to] has been temporarily banned for [expires] by [actor]' - ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for [expires] by [actor] for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - - unbaniprange: - notify: '&6[from] - [to] has been unbanned by [actor]' - - banipall: - notify: '&6[ip] will be permanently banned by [actor] for &4[reason]' - - tempbanip: - ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been temporarily banned for [expires] by [actor] for &4[reason]' - - tempbanipall: - notify: '&6[ip] will be temporarily banned for [expires] by [actor] for &4[reason]' - - unbanip: - notify: '&6[ip] has been unbanned by [actor]' - error: - noExists: '&c[ip] is not banned' - notOwn: '&c[ip] was not banned by you, unable to unban' - - unbanipall: - notify: '&6[ip] will be unbanned by [actor]' - - warn: - player: - warned: '&6You have been warned by [actor] for &4[reason]' - disallowed: - header: '&cYou may not speak until you have accepted your most recent warning. Please type the following:' - reason: '&6[reason]' - removed: '&aThank you for your understanding, you may now speak again' - notify: '&6[player] has been warned by [actor] for &4[reason]' - error: - cooldown: '&cThis player was warned too recently, try again later' - - tempwarn: - player: - warned: '&6You have been warned for [expires] by [actor] for &4[reason]' - notify: '&6[player] has been warned for [expires] by [actor] for &4[reason]' - - dwarn: - player: - notify: '&6Your most recent warning has been deleted by &4[actor]' - notify: '&cThe most recent warning for [player] has been deleted' - error: - noWarnings: '&c[player] has no warnings to delete' - - bmclear: - notify: '&c[player] has had their [type] cleared' - error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - - bmutils: - missingplayers: - notify: '&c[amount] missing players added' - noneFound: '&a0 missing players found' - found: '&c[amount] missing player data found. Fixing...' - error: - failedLookup: '&cFailed to lookup player [uuid], check server logs' - complete: '&a[amount] players resolved, please restart your server for failed punishments to take affect' - duplicates: - lookup: - notFound: '&aNo duplicate player names found' - error: - invalidName: '&cInvalid name, must be 16 characters or less and contain only letters, numbers and an underscore' - nameExists: '&cA player with that name already exists' - success: '&aPlayer name set to [player] successfully' - - bmrollback: - notify: '&c[player] has had their [type] actions undone' - error: - invalid: '&cInvalid type [type], please choose between [types]' - - sync: - player: - started: '&aStarting force [type] synchronisation' - finished: '&aForced [type] synchronisation complete' - - update: - notify: '&6[BanManager] &aAn update is available' - - notes: - header: '&6[player] has the following notes:' - joinAmount: '&6[player] has &e[amount] &6notes, click to view them' - note: '&6[[player]] &e[message] - &e[created]' - playerNote: '&a[[player]] &6[[actor]] &e[message] - &e[created]' - dateTimeFormat: 'dd-MM-yyyy' - notify: '[player] has a new note attached by [actor]: [message]' - error: - noNotes: '&c[player] has no notes' - noOnlineNotes: '&cNo online players have notes' - - report: - notify: '&6[player] has been reported by [actor] for &4[reason]' - error: - cooldown: '&cThis player was reported too recently, try again later' - assign: - player: '&aReport [id] assigned to [player]' - notify: '&aYou have been assigned report [id] by [actor]' - unassign: - player: '&aReport [id] unassigned' - close: - notify: - closed: '&aReport [id] closed by [actor]' - command: '&aReport [id] closed by [actor] with [command]' - comment: '&aReport [id] closed by [actor] with [comment]' - dispatch: 'Executing command [command]' - list: - noResults: '&cNo reports found' - error: - invalidState: '&cReport state [state] not found' - row: - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - header: '&e-- Reports ([count]) -- Page ([page]/[maxPage])' - all: '&7#[id] &e[[state]] &6- [created] - [player]' - tp: - error: - notFound: '&cReport not found' - worldNotFound: '&cWorld [world] could not be found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - info: - error: - notFound: '&cReport not found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - - addnoteall: - notify: '&c[player] will have a new attached by [actor]: [message]' - - banlist: - header: '&6There are [bans] [type] bans:' - - bmactivity: - row: - all: '&a[&f[type]&a] &6[player]&f - &6[actor]&f - &e[created]' - player: '&a[&f[type]&a] &6[player]&f - &e[created]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' - - bmdelete: - notify: '&a[rows] rows deleted' - error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - invalidId: '&c[id] is not a valid number' - - denyalts: - player: - disallowed: '&cThe IP address you are joining from is linked to a banned player' - - reasons: - row: '[hashtag] = [reason]' diff --git a/e2e/platforms/sponge7/configs/banmanager/config.yml b/e2e/platforms/sponge7/configs/banmanager/config.yml index 663f077e8..41de43066 100644 --- a/e2e/platforms/sponge7/configs/banmanager/config.yml +++ b/e2e/platforms/sponge7/configs/banmanager/config.yml @@ -1,9 +1,5 @@ # # Aliases will be found and blocked automatically, e.g. msg will block tell -locale: - default: en - perPlayer: true - debug: false databases: local: diff --git a/e2e/platforms/sponge7/configs/banmanager/messages/messages_de.yml b/e2e/platforms/sponge7/configs/banmanager/messages/messages_de.yml deleted file mode 100644 index d813fecbc..000000000 --- a/e2e/platforms/sponge7/configs/banmanager/messages/messages_de.yml +++ /dev/null @@ -1,16 +0,0 @@ -messages: - configReloaded: '&aKonfiguration erfolgreich neu geladen!' - - ban: - player: - disallowed: '&6Du wurdest von diesem Server gebannt wegen &4[reason]' - kick: '&6Du wurdest dauerhaft gebannt wegen &4[reason]' - notify: '&6[player] wurde dauerhaft gebannt von [actor] wegen &4[reason]' - - unban: - notify: '&6[player] wurde von [actor] entbannt' - - mute: - player: - disallowed: '&6Du bist stummgeschaltet wegen &4[reason]' - notify: '&6[player] wurde dauerhaft stummgeschaltet von [actor] wegen &4[reason]' diff --git a/e2e/platforms/sponge7/configs/banmanager/messages/messages_en.yml b/e2e/platforms/sponge7/configs/banmanager/messages/messages_en.yml deleted file mode 100644 index 205a94c13..000000000 --- a/e2e/platforms/sponge7/configs/banmanager/messages/messages_en.yml +++ /dev/null @@ -1,448 +0,0 @@ -# Variables -# [reason] = Ban/Mute reason -# [player] = The name of the player -# [ip] = The banned ip -# [actor] = Who banned/muted -# [expires] = How long until the ban/mute ends - -messages: - duplicateIP: '&cWarning: [player] has the same IP as the following banned players:\n&6[players]' - duplicateIPAlts: '&cWarning: [player] has the same IP as the following players:\n&6[players]' - configReloaded: '&aConfiguration reloaded successfully!' - deniedNotify: - player: '&cWarning: [player] attempted to join the server but was denied due to &4[reason]' - ip: '&cWarning: [ip] attempted to join the server but was denied due to &4[reason]' - deniedMaxIp: '&cToo many players with your ip address online' - deniedMultiaccounts: '&cToo many players with your ip address logged in recently' - deniedCountry: '&cYou may not connect from your region' - - time: - now: 'now' - year: 'year' - years: 'years' - month: 'month' - months: 'months' - week: 'week' - weeks: 'weeks' - day: 'day' - days: 'days' - hour: 'hour' - hours: 'hours' - minute: 'minute' - minutes: 'minutes' - second: 'second' - seconds: 'seconds' - never: 'never' - error: - invalid: '&cYour time length is invalid' - limit: '&cYou cannot perform this action for that length of time' - - none: 'none' - # General command text - sender: - error: - notFound: '&c[player] not found, are you sure they exist?' - offline: '&c[player] is offline' - noSelf: '&cYou cannot perform that action on yourself!' - exception: '&cAn error occured whilst attempting to perform this command. Please check the console for further details.' - invalidIp: '&cInvalid IP address, expecting w.x.y.z format' - offlinePermission: '&cYou are not allowed to perform this action on an offline player' - ambiguousPlayer: '&cMultiple players match "[player]". Please use their full name.' - exempt: '&c[player] is exempt from that action' - noPermission: '&cYou do not have permission to perform that action' - invalidReason: '&c[reason] is no valid reason.' - # Commands - alts: - header: 'Possible alts found:' - - names: - header: 'Known names for [player]:' - row: '&e[name] &7(first: [firstSeen], last: [lastSeen])' - dateTimeFormat: 'dd-MM-yyyy' - none: '&7No name history found' - - export: - error: - inProgress: '&cAn export is already in progress, please wait' - player: - started: '&aPlayer ban export started' - finished: '&aPlayer ban export finished, file [file] created' - ip: - started: '&aIP ban export started' - finished: '&aIP ban export finished, file [file] created' - - import: - error: - inProgress: '&cAn import is already in progress, please wait' - player: - started: '&aPlayer ban import started' - finished: '&aPlayer ban import finished' - ip: - started: '&aIP ban import started' - finished: '&aIP ban import finished' - advancedban: - started: '&aAdvancedBan import started' - finished: '&aAdvancedBan import finished' - h2: - started: '&aH2 import started' - finished: '&aH2 import finished, please restart the server' - litebans: - started: '&aLiteBans import started' - finished: '&aLiteBans import finished' - - info: - error: - invalidIndex: '&cInvalid player option used' - indexRequired: '&cMultiple players named [name] found, please select a player by providing an index between 1 and [size], e.g. /bminfo [name] 1' - index: '&7#[index] - &6[name] - &4[uuid]' - stats: - player: '&6[player] has been banned [bans] times, muted [mutes] times, kicked [kicks] times and warned [warns] - times ([warnPoints] Points), has [notes] notes and been reported [reports] times' - ip: '&6This ip has been banned [bans] times, muted [mutes] times and range banned [rangebans] times' - connection: '&6Their last connection was with [ip] on [lastSeen]' - geoip: 'Country: [country] City: [city]' - ban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - ipban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - iprangeban: - permanent: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - ipmute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - mute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' - temporaryOnline: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires] (online time)' - temporaryOnlinePaused: '&6Currently muted for &4[reason]&6 by [actor] at [created] with [remaining] remaining (online time, paused)' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - website: - player: 'https://yourdomain.com/player/[uuid]' - ip: 'http://yourdomain.com/index.php?action=viewip&ip=[ip]&server=0' - history: - row: '&7#[id] &a[&f[type]&a] &6[actor]&f [meta] [reason] - &e[created]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' - ips: - row: '&e[ip] - &6[join] - [leave]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - - kick: - player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' - notify: - noReason: '&6[player] has been kicked by [actor]' - reason: '&6[player] has been kicked by [actor] for &4[reason]' - - kickall: - player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' - notify: - noReason: 'All players have been kicked by [actor]' - reason: 'All players have been kicked by [actor] for &4[reason]' - - ban: - player: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[player] is already banned' - cooldown: '&cThis player was banned too recently, try again later' - - banall: - notify: '&6[player] will be permanently banned by [actor] for &4[reason]' - - tempban: - player: - disallowed: '&6You have been temporarily banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been temporarily banned for [expires] by [actor] for &4[reason]' - - tempbanall: - notify: '&6[player] will be temporarily banned for [expires] by [actor] for &4[reason]' - - unban: - notify: '&6[player] has been unbanned by [actor]' - error: - noExists: '&c[player] is not banned' - notOwn: '&c[player] was not banned by you, unable to unban' - - unbanall: - notify: '&6[player] will be unbanned by [actor]' - - mute: - player: - blocked: '&cYou may not use the [command] command whilst muted!' - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[player] has been permanently muted by [actor] for &4[reason]' - error: - exists: '&c[player] is already muted' - cooldown: '&cThis player was muted too recently, try again later' - - muteip: - ip: - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[ip] ([players]) have been permanently muted by [actor] for &4[reason]' - error: - exists: '&c[ip] is already muted' - - muteall: - notify: '&6[player] will be permanently muted by [actor] for &4[reason]' - - tempmute: - player: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - disallowedOnline: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires] (online time)' - notify: '&6[player] has been temporarily muted for [expires] by [actor] for &4[reason]' - notifyOnline: '&6[player] has been temporarily muted for [expires] (online time) by [actor] for &4[reason]' - error: - exists: '&c[player] is already muted' - - tempmuteip: - ip: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[ip] ([players]) have been temporarily muted for [expires] by [actor] for &4[reason]' - error: - exists: '&c[ip] is already muted' - - tempmuteall: - notify: '&6[player] will be temporarily muted for [expires] by [actor] for &4[reason]' - - unmute: - notify: '&6[player] has been unmuted by [actor]' - player: '&6You have been unmuted by [actor]' - error: - noExists: '&c[player] is not muted' - notOwn: '&c[player] was not muted by you, unable to unmute' - - unmuteip: - notify: '&6[ip] has been unmuted by [actor]' - error: - noExists: '&c[ip] is not muted' - notOwn: '&c[ip] was not muted by you, unable to unmute' - - unmuteall: - notify: '&6[player] will be unmuted by [actor]' - - banname: - name: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&cName [name] is already banned' - - tempbanname: - name: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been temporarily banned for [expires] by [actor] for &4[reason]' - - unbanname: - notify: '&6Name [name] has been unbanned by [actor]' - error: - noExists: '&cName [name] is not banned' - - banip: - ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[ip] is already banned' - cooldown: '&cThis ip was banned too recently, try again later' - - baniprange: - error: - invalid: '&cInvalid range, please use cidr notation 192.168.0.1/16 or wildcard 192.168.*.*' - minMax: '&cRange must be lowest to highest' - exists: '&cA ban containing those ranges already exists' - ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[from] - [to] have been banned by [actor]' - - tempbaniprange: - notify: '&6[from] - [to] has been temporarily banned for [expires] by [actor]' - ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for [expires] by [actor] for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - - unbaniprange: - notify: '&6[from] - [to] has been unbanned by [actor]' - - banipall: - notify: '&6[ip] will be permanently banned by [actor] for &4[reason]' - - tempbanip: - ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been temporarily banned for [expires] by [actor] for &4[reason]' - - tempbanipall: - notify: '&6[ip] will be temporarily banned for [expires] by [actor] for &4[reason]' - - unbanip: - notify: '&6[ip] has been unbanned by [actor]' - error: - noExists: '&c[ip] is not banned' - notOwn: '&c[ip] was not banned by you, unable to unban' - - unbanipall: - notify: '&6[ip] will be unbanned by [actor]' - - warn: - player: - warned: '&6You have been warned by [actor] for &4[reason]' - disallowed: - header: '&cYou may not speak until you have accepted your most recent warning. Please type the following:' - reason: '&6[reason]' - removed: '&aThank you for your understanding, you may now speak again' - notify: '&6[player] has been warned by [actor] for &4[reason]' - error: - cooldown: '&cThis player was warned too recently, try again later' - - tempwarn: - player: - warned: '&6You have been warned for [expires] by [actor] for &4[reason]' - notify: '&6[player] has been warned for [expires] by [actor] for &4[reason]' - - dwarn: - player: - notify: '&6Your most recent warning has been deleted by &4[actor]' - notify: '&cThe most recent warning for [player] has been deleted' - error: - noWarnings: '&c[player] has no warnings to delete' - - bmclear: - notify: '&c[player] has had their [type] cleared' - error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - - bmutils: - missingplayers: - notify: '&c[amount] missing players added' - noneFound: '&a0 missing players found' - found: '&c[amount] missing player data found. Fixing...' - error: - failedLookup: '&cFailed to lookup player [uuid], check server logs' - complete: '&a[amount] players resolved, please restart your server for failed punishments to take affect' - duplicates: - lookup: - notFound: '&aNo duplicate player names found' - error: - invalidName: '&cInvalid name, must be 16 characters or less and contain only letters, numbers and an underscore' - nameExists: '&cA player with that name already exists' - success: '&aPlayer name set to [player] successfully' - - bmrollback: - notify: '&c[player] has had their [type] actions undone' - error: - invalid: '&cInvalid type [type], please choose between [types]' - - sync: - player: - started: '&aStarting force [type] synchronisation' - finished: '&aForced [type] synchronisation complete' - - update: - notify: '&6[BanManager] &aAn update is available' - - notes: - header: '&6[player] has the following notes:' - joinAmount: '&6[player] has &e[amount] &6notes, click to view them' - note: '&6[[player]] &e[message] - &e[created]' - playerNote: '&a[[player]] &6[[actor]] &e[message] - &e[created]' - dateTimeFormat: 'dd-MM-yyyy' - notify: '[player] has a new note attached by [actor]: [message]' - error: - noNotes: '&c[player] has no notes' - noOnlineNotes: '&cNo online players have notes' - - report: - notify: '&6[player] has been reported by [actor] for &4[reason]' - error: - cooldown: '&cThis player was reported too recently, try again later' - assign: - player: '&aReport [id] assigned to [player]' - notify: '&aYou have been assigned report [id] by [actor]' - unassign: - player: '&aReport [id] unassigned' - close: - notify: - closed: '&aReport [id] closed by [actor]' - command: '&aReport [id] closed by [actor] with [command]' - comment: '&aReport [id] closed by [actor] with [comment]' - dispatch: 'Executing command [command]' - list: - noResults: '&cNo reports found' - error: - invalidState: '&cReport state [state] not found' - row: - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - header: '&e-- Reports ([count]) -- Page ([page]/[maxPage])' - all: '&7#[id] &e[[state]] &6- [created] - [player]' - tp: - error: - notFound: '&cReport not found' - worldNotFound: '&cWorld [world] could not be found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - info: - error: - notFound: '&cReport not found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - - addnoteall: - notify: '&c[player] will have a new attached by [actor]: [message]' - - banlist: - header: '&6There are [bans] [type] bans:' - - bmactivity: - row: - all: '&a[&f[type]&a] &6[player]&f - &6[actor]&f - &e[created]' - player: '&a[&f[type]&a] &6[player]&f - &e[created]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' - - bmdelete: - notify: '&a[rows] rows deleted' - error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - invalidId: '&c[id] is not a valid number' - - denyalts: - player: - disallowed: '&cThe IP address you are joining from is linked to a banned player' - - reasons: - row: '[hashtag] = [reason]' diff --git a/e2e/platforms/velocity/configs/banmanager/config.yml b/e2e/platforms/velocity/configs/banmanager/config.yml index 4c59ef67e..8581b02e3 100644 --- a/e2e/platforms/velocity/configs/banmanager/config.yml +++ b/e2e/platforms/velocity/configs/banmanager/config.yml @@ -1,9 +1,5 @@ # # Aliases will be found and blocked automatically, e.g. msg will block tell -locale: - default: en - perPlayer: true - debug: false databases: local: diff --git a/e2e/platforms/velocity/configs/banmanager/messages/messages_de.yml b/e2e/platforms/velocity/configs/banmanager/messages/messages_de.yml deleted file mode 100644 index d813fecbc..000000000 --- a/e2e/platforms/velocity/configs/banmanager/messages/messages_de.yml +++ /dev/null @@ -1,16 +0,0 @@ -messages: - configReloaded: '&aKonfiguration erfolgreich neu geladen!' - - ban: - player: - disallowed: '&6Du wurdest von diesem Server gebannt wegen &4[reason]' - kick: '&6Du wurdest dauerhaft gebannt wegen &4[reason]' - notify: '&6[player] wurde dauerhaft gebannt von [actor] wegen &4[reason]' - - unban: - notify: '&6[player] wurde von [actor] entbannt' - - mute: - player: - disallowed: '&6Du bist stummgeschaltet wegen &4[reason]' - notify: '&6[player] wurde dauerhaft stummgeschaltet von [actor] wegen &4[reason]' diff --git a/e2e/platforms/velocity/configs/banmanager/messages/messages_en.yml b/e2e/platforms/velocity/configs/banmanager/messages/messages_en.yml deleted file mode 100644 index 205a94c13..000000000 --- a/e2e/platforms/velocity/configs/banmanager/messages/messages_en.yml +++ /dev/null @@ -1,448 +0,0 @@ -# Variables -# [reason] = Ban/Mute reason -# [player] = The name of the player -# [ip] = The banned ip -# [actor] = Who banned/muted -# [expires] = How long until the ban/mute ends - -messages: - duplicateIP: '&cWarning: [player] has the same IP as the following banned players:\n&6[players]' - duplicateIPAlts: '&cWarning: [player] has the same IP as the following players:\n&6[players]' - configReloaded: '&aConfiguration reloaded successfully!' - deniedNotify: - player: '&cWarning: [player] attempted to join the server but was denied due to &4[reason]' - ip: '&cWarning: [ip] attempted to join the server but was denied due to &4[reason]' - deniedMaxIp: '&cToo many players with your ip address online' - deniedMultiaccounts: '&cToo many players with your ip address logged in recently' - deniedCountry: '&cYou may not connect from your region' - - time: - now: 'now' - year: 'year' - years: 'years' - month: 'month' - months: 'months' - week: 'week' - weeks: 'weeks' - day: 'day' - days: 'days' - hour: 'hour' - hours: 'hours' - minute: 'minute' - minutes: 'minutes' - second: 'second' - seconds: 'seconds' - never: 'never' - error: - invalid: '&cYour time length is invalid' - limit: '&cYou cannot perform this action for that length of time' - - none: 'none' - # General command text - sender: - error: - notFound: '&c[player] not found, are you sure they exist?' - offline: '&c[player] is offline' - noSelf: '&cYou cannot perform that action on yourself!' - exception: '&cAn error occured whilst attempting to perform this command. Please check the console for further details.' - invalidIp: '&cInvalid IP address, expecting w.x.y.z format' - offlinePermission: '&cYou are not allowed to perform this action on an offline player' - ambiguousPlayer: '&cMultiple players match "[player]". Please use their full name.' - exempt: '&c[player] is exempt from that action' - noPermission: '&cYou do not have permission to perform that action' - invalidReason: '&c[reason] is no valid reason.' - # Commands - alts: - header: 'Possible alts found:' - - names: - header: 'Known names for [player]:' - row: '&e[name] &7(first: [firstSeen], last: [lastSeen])' - dateTimeFormat: 'dd-MM-yyyy' - none: '&7No name history found' - - export: - error: - inProgress: '&cAn export is already in progress, please wait' - player: - started: '&aPlayer ban export started' - finished: '&aPlayer ban export finished, file [file] created' - ip: - started: '&aIP ban export started' - finished: '&aIP ban export finished, file [file] created' - - import: - error: - inProgress: '&cAn import is already in progress, please wait' - player: - started: '&aPlayer ban import started' - finished: '&aPlayer ban import finished' - ip: - started: '&aIP ban import started' - finished: '&aIP ban import finished' - advancedban: - started: '&aAdvancedBan import started' - finished: '&aAdvancedBan import finished' - h2: - started: '&aH2 import started' - finished: '&aH2 import finished, please restart the server' - litebans: - started: '&aLiteBans import started' - finished: '&aLiteBans import finished' - - info: - error: - invalidIndex: '&cInvalid player option used' - indexRequired: '&cMultiple players named [name] found, please select a player by providing an index between 1 and [size], e.g. /bminfo [name] 1' - index: '&7#[index] - &6[name] - &4[uuid]' - stats: - player: '&6[player] has been banned [bans] times, muted [mutes] times, kicked [kicks] times and warned [warns] - times ([warnPoints] Points), has [notes] notes and been reported [reports] times' - ip: '&6This ip has been banned [bans] times, muted [mutes] times and range banned [rangebans] times' - connection: '&6Their last connection was with [ip] on [lastSeen]' - geoip: 'Country: [country] City: [city]' - ban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - ipban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - iprangeban: - permanent: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - ipmute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - mute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' - temporaryOnline: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires] (online time)' - temporaryOnlinePaused: '&6Currently muted for &4[reason]&6 by [actor] at [created] with [remaining] remaining (online time, paused)' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - website: - player: 'https://yourdomain.com/player/[uuid]' - ip: 'http://yourdomain.com/index.php?action=viewip&ip=[ip]&server=0' - history: - row: '&7#[id] &a[&f[type]&a] &6[actor]&f [meta] [reason] - &e[created]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' - ips: - row: '&e[ip] - &6[join] - [leave]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - - kick: - player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' - notify: - noReason: '&6[player] has been kicked by [actor]' - reason: '&6[player] has been kicked by [actor] for &4[reason]' - - kickall: - player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' - notify: - noReason: 'All players have been kicked by [actor]' - reason: 'All players have been kicked by [actor] for &4[reason]' - - ban: - player: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[player] is already banned' - cooldown: '&cThis player was banned too recently, try again later' - - banall: - notify: '&6[player] will be permanently banned by [actor] for &4[reason]' - - tempban: - player: - disallowed: '&6You have been temporarily banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been temporarily banned for [expires] by [actor] for &4[reason]' - - tempbanall: - notify: '&6[player] will be temporarily banned for [expires] by [actor] for &4[reason]' - - unban: - notify: '&6[player] has been unbanned by [actor]' - error: - noExists: '&c[player] is not banned' - notOwn: '&c[player] was not banned by you, unable to unban' - - unbanall: - notify: '&6[player] will be unbanned by [actor]' - - mute: - player: - blocked: '&cYou may not use the [command] command whilst muted!' - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[player] has been permanently muted by [actor] for &4[reason]' - error: - exists: '&c[player] is already muted' - cooldown: '&cThis player was muted too recently, try again later' - - muteip: - ip: - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[ip] ([players]) have been permanently muted by [actor] for &4[reason]' - error: - exists: '&c[ip] is already muted' - - muteall: - notify: '&6[player] will be permanently muted by [actor] for &4[reason]' - - tempmute: - player: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - disallowedOnline: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires] (online time)' - notify: '&6[player] has been temporarily muted for [expires] by [actor] for &4[reason]' - notifyOnline: '&6[player] has been temporarily muted for [expires] (online time) by [actor] for &4[reason]' - error: - exists: '&c[player] is already muted' - - tempmuteip: - ip: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[ip] ([players]) have been temporarily muted for [expires] by [actor] for &4[reason]' - error: - exists: '&c[ip] is already muted' - - tempmuteall: - notify: '&6[player] will be temporarily muted for [expires] by [actor] for &4[reason]' - - unmute: - notify: '&6[player] has been unmuted by [actor]' - player: '&6You have been unmuted by [actor]' - error: - noExists: '&c[player] is not muted' - notOwn: '&c[player] was not muted by you, unable to unmute' - - unmuteip: - notify: '&6[ip] has been unmuted by [actor]' - error: - noExists: '&c[ip] is not muted' - notOwn: '&c[ip] was not muted by you, unable to unmute' - - unmuteall: - notify: '&6[player] will be unmuted by [actor]' - - banname: - name: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&cName [name] is already banned' - - tempbanname: - name: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been temporarily banned for [expires] by [actor] for &4[reason]' - - unbanname: - notify: '&6Name [name] has been unbanned by [actor]' - error: - noExists: '&cName [name] is not banned' - - banip: - ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[ip] is already banned' - cooldown: '&cThis ip was banned too recently, try again later' - - baniprange: - error: - invalid: '&cInvalid range, please use cidr notation 192.168.0.1/16 or wildcard 192.168.*.*' - minMax: '&cRange must be lowest to highest' - exists: '&cA ban containing those ranges already exists' - ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[from] - [to] have been banned by [actor]' - - tempbaniprange: - notify: '&6[from] - [to] has been temporarily banned for [expires] by [actor]' - ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for [expires] by [actor] for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - - unbaniprange: - notify: '&6[from] - [to] has been unbanned by [actor]' - - banipall: - notify: '&6[ip] will be permanently banned by [actor] for &4[reason]' - - tempbanip: - ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been temporarily banned for [expires] by [actor] for &4[reason]' - - tempbanipall: - notify: '&6[ip] will be temporarily banned for [expires] by [actor] for &4[reason]' - - unbanip: - notify: '&6[ip] has been unbanned by [actor]' - error: - noExists: '&c[ip] is not banned' - notOwn: '&c[ip] was not banned by you, unable to unban' - - unbanipall: - notify: '&6[ip] will be unbanned by [actor]' - - warn: - player: - warned: '&6You have been warned by [actor] for &4[reason]' - disallowed: - header: '&cYou may not speak until you have accepted your most recent warning. Please type the following:' - reason: '&6[reason]' - removed: '&aThank you for your understanding, you may now speak again' - notify: '&6[player] has been warned by [actor] for &4[reason]' - error: - cooldown: '&cThis player was warned too recently, try again later' - - tempwarn: - player: - warned: '&6You have been warned for [expires] by [actor] for &4[reason]' - notify: '&6[player] has been warned for [expires] by [actor] for &4[reason]' - - dwarn: - player: - notify: '&6Your most recent warning has been deleted by &4[actor]' - notify: '&cThe most recent warning for [player] has been deleted' - error: - noWarnings: '&c[player] has no warnings to delete' - - bmclear: - notify: '&c[player] has had their [type] cleared' - error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - - bmutils: - missingplayers: - notify: '&c[amount] missing players added' - noneFound: '&a0 missing players found' - found: '&c[amount] missing player data found. Fixing...' - error: - failedLookup: '&cFailed to lookup player [uuid], check server logs' - complete: '&a[amount] players resolved, please restart your server for failed punishments to take affect' - duplicates: - lookup: - notFound: '&aNo duplicate player names found' - error: - invalidName: '&cInvalid name, must be 16 characters or less and contain only letters, numbers and an underscore' - nameExists: '&cA player with that name already exists' - success: '&aPlayer name set to [player] successfully' - - bmrollback: - notify: '&c[player] has had their [type] actions undone' - error: - invalid: '&cInvalid type [type], please choose between [types]' - - sync: - player: - started: '&aStarting force [type] synchronisation' - finished: '&aForced [type] synchronisation complete' - - update: - notify: '&6[BanManager] &aAn update is available' - - notes: - header: '&6[player] has the following notes:' - joinAmount: '&6[player] has &e[amount] &6notes, click to view them' - note: '&6[[player]] &e[message] - &e[created]' - playerNote: '&a[[player]] &6[[actor]] &e[message] - &e[created]' - dateTimeFormat: 'dd-MM-yyyy' - notify: '[player] has a new note attached by [actor]: [message]' - error: - noNotes: '&c[player] has no notes' - noOnlineNotes: '&cNo online players have notes' - - report: - notify: '&6[player] has been reported by [actor] for &4[reason]' - error: - cooldown: '&cThis player was reported too recently, try again later' - assign: - player: '&aReport [id] assigned to [player]' - notify: '&aYou have been assigned report [id] by [actor]' - unassign: - player: '&aReport [id] unassigned' - close: - notify: - closed: '&aReport [id] closed by [actor]' - command: '&aReport [id] closed by [actor] with [command]' - comment: '&aReport [id] closed by [actor] with [comment]' - dispatch: 'Executing command [command]' - list: - noResults: '&cNo reports found' - error: - invalidState: '&cReport state [state] not found' - row: - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - header: '&e-- Reports ([count]) -- Page ([page]/[maxPage])' - all: '&7#[id] &e[[state]] &6- [created] - [player]' - tp: - error: - notFound: '&cReport not found' - worldNotFound: '&cWorld [world] could not be found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - info: - error: - notFound: '&cReport not found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - - addnoteall: - notify: '&c[player] will have a new attached by [actor]: [message]' - - banlist: - header: '&6There are [bans] [type] bans:' - - bmactivity: - row: - all: '&a[&f[type]&a] &6[player]&f - &6[actor]&f - &e[created]' - player: '&a[&f[type]&a] &6[player]&f - &e[created]' - dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' - - bmdelete: - notify: '&a[rows] rows deleted' - error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - invalidId: '&c[id] is not a valid number' - - denyalts: - player: - disallowed: '&cThe IP address you are joining from is linked to a banned player' - - reasons: - row: '[hashtag] = [reason]' diff --git a/e2e/sync-configs.sh b/e2e/sync-configs.sh index d99c24d01..b4869e2e3 100755 --- a/e2e/sync-configs.sh +++ b/e2e/sync-configs.sh @@ -7,10 +7,15 @@ set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" COMMON_RESOURCES="$SCRIPT_DIR/../common/src/main/resources" -# Only sync files that are truly shared and don't contain test-specific settings. -# Most E2E config files (webhooks.yml, schedules.yml, etc.) are maintained -# per-platform with test-specific values (e.g. webhook-sink URLs, timing). +# Files that are shared across platforms (don't need test-specific modifications) SHARED_FILES=( + "console.yml" + "webhooks.yml" + "exemptions.yml" + "geoip.yml" + "messages.yml" + "reasons.yml" + "schedules.yml" ) # Platform config directories @@ -33,15 +38,10 @@ for config_dir in "${PLATFORM_CONFIGS[@]}"; do cp "$COMMON_RESOURCES/$file" "$config_dir/" fi done - - if [ -d "$COMMON_RESOURCES/messages" ]; then - mkdir -p "$config_dir/messages" - cp "$COMMON_RESOURCES/messages/"*.yml "$config_dir/messages/" - fi fi done -echo "Done! Synced messages/ directory to ${#PLATFORM_CONFIGS[@]} locations." +echo "Done! Synced ${#SHARED_FILES[@]} files to ${#PLATFORM_CONFIGS[@]} locations." echo "" -echo "Note: Only the messages/ directory is synced automatically." -echo " Other config files are maintained per-platform with test-specific settings." +echo "Note: config.yml files are NOT synced as they contain test-specific settings" +echo " (database host, chatPriority, etc.)" diff --git a/e2e/tests/src/locale-smoke.test.ts b/e2e/tests/src/locale-smoke.test.ts deleted file mode 100644 index 70d890955..000000000 --- a/e2e/tests/src/locale-smoke.test.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { TestBot, createBot } from './helpers/bot' -import { - connectRcon, - disconnectRcon, - banPlayer, - unbanPlayer, - opPlayer, - reloadPlugin, - sendCommand, - isPlayerInList, - isProxy -} from './helpers/rcon' -import { sleep, waitFor } from './helpers/config' - -describe('Locale Smoke Tests', () => { - let staffBot: TestBot - const STAFF_USERNAME = 'LocaleStaff' - const TARGET_USERNAME = 'LocaleTarget' - - beforeAll(async () => { - await connectRcon() - - staffBot = await createBot(STAFF_USERNAME) - await waitFor( - async () => isPlayerInList(STAFF_USERNAME), - { timeout: 10000, interval: 500, message: 'Staff bot not in player list' } - ) - - await opPlayer(STAFF_USERNAME) - await sleep(3500) - }, 120000) - - afterAll(async () => { - try { await unbanPlayer(TARGET_USERNAME) } catch { /* ignore */ } - if (staffBot != null) await staffBot.disconnect() - await disconnectRcon() - }) - - beforeEach(async () => { - staffBot.clearChatHistory() - staffBot.clearSystemMessages() - - try { await unbanPlayer(TARGET_USERNAME) } catch { /* ignore */ } - await sleep(3000) - }) - - test('ban notification uses default locale messages', async () => { - staffBot.clearSystemMessages() - - await banPlayer(TARGET_USERNAME, 'locale-test') - - await waitFor( - () => staffBot.getSystemMessages().some(m => - m.message.toLowerCase().includes('banned') && - m.message.toLowerCase().includes(TARGET_USERNAME.toLowerCase()) - ), - { timeout: 10000, interval: 200, message: 'Ban notification not received' } - ) - - const banNotification = staffBot.getSystemMessages().find(m => - m.message.toLowerCase().includes('banned') && - m.message.toLowerCase().includes(TARGET_USERNAME.toLowerCase()) - ) - - expect(banNotification).toBeDefined() - expect(banNotification!.message).toContain('permanently banned') - expect(banNotification!.message).toContain('locale-test') - }, 30000) - - test('messages survive bmreload', async () => { - await reloadPlugin() - await sleep(2000) - - staffBot.clearSystemMessages() - - await banPlayer(TARGET_USERNAME, 'post-reload') - - await waitFor( - () => staffBot.getSystemMessages().some(m => - m.message.toLowerCase().includes('banned') && - m.message.toLowerCase().includes(TARGET_USERNAME.toLowerCase()) - ), - { timeout: 10000, interval: 200, message: 'Ban notification not received after reload' } - ) - - const banNotification = staffBot.getSystemMessages().find(m => - m.message.toLowerCase().includes('banned') && - m.message.toLowerCase().includes(TARGET_USERNAME.toLowerCase()) - ) - - expect(banNotification).toBeDefined() - expect(banNotification!.message).toContain('permanently banned') - expect(banNotification!.message).toContain('post-reload') - }, 30000) - - test('non-default locale messages loaded after reload', async () => { - // Reload to ensure messages/ directory is scanned (including messages_de.yml) - const reloadResponse = await reloadPlugin() - await sleep(2000) - - // The reload should succeed without error, confirming the i18n - // message loading pipeline works with multiple locale files - const isSponge = (process.env.SERVER_HOST ?? 'localhost').toLowerCase().includes('sponge') - if (!isSponge) { - expect(reloadResponse.toLowerCase()).toContain('reloaded') - } - - // Verify the server still functions correctly after loading multiple locales - staffBot.clearSystemMessages() - await banPlayer(TARGET_USERNAME, 'multi-locale') - - await waitFor( - () => staffBot.getSystemMessages().some(m => - m.message.toLowerCase().includes(TARGET_USERNAME.toLowerCase()) - ), - { timeout: 10000, interval: 200, message: 'Ban notification not received with multiple locales loaded' } - ) - - const notification = staffBot.getSystemMessages().find(m => - m.message.toLowerCase().includes(TARGET_USERNAME.toLowerCase()) && - m.message.toLowerCase().includes('multi-locale') - ) - - expect(notification).toBeDefined() - }, 30000) -}) diff --git a/fabric/src/main/java/me/confuser/banmanager/fabric/FabricPlayer.java b/fabric/src/main/java/me/confuser/banmanager/fabric/FabricPlayer.java index 56a0508ee..a81e05645 100644 --- a/fabric/src/main/java/me/confuser/banmanager/fabric/FabricPlayer.java +++ b/fabric/src/main/java/me/confuser/banmanager/fabric/FabricPlayer.java @@ -15,7 +15,6 @@ import me.confuser.banmanager.common.kyori.text.serializer.gson.GsonComponentSerializer; import me.confuser.banmanager.common.data.PlayerData; import me.confuser.banmanager.common.util.Message; -import me.confuser.banmanager.common.util.MessageRegistry; import me.confuser.banmanager.common.util.UUIDUtils; //? if >=1.21.1 import net.minecraft.network.packet.s2c.play.PositionFlag; @@ -135,18 +134,6 @@ public boolean isOnline() { return getPlayer() != null && !getPlayer().isDisconnected(); } - @Override - public String getLocale() { - ServerPlayerEntity p = getPlayer(); - if (p == null) return "en"; - //? if >=1.21 { - return MessageRegistry.normaliseLocale(p.getClientOptions().language()); - //?} else { - /*// No public API for client language pre-1.21; fall back to default - return "en"; - *///?} - } - private ServerPlayerEntity getPlayer() { if (player != null) return player; if (isOnlineMode()) return this.server.getPlayerManager().getPlayer(uuid); diff --git a/fabric/src/main/java/me/confuser/banmanager/fabric/listeners/JoinListener.java b/fabric/src/main/java/me/confuser/banmanager/fabric/listeners/JoinListener.java index eb6ac779c..85695a04d 100644 --- a/fabric/src/main/java/me/confuser/banmanager/fabric/listeners/JoinListener.java +++ b/fabric/src/main/java/me/confuser/banmanager/fabric/listeners/JoinListener.java @@ -59,9 +59,8 @@ private class BanJoinHandler implements CommonJoinHandler { @Override public void handlePlayerDeny(PlayerData player, Message message) { plugin.getServer().callEvent("PlayerDeniedEvent", player, message); - String locale = player.getLocale() != null ? player.getLocale() : "en"; - isDenied = true; - handler.disconnect(FabricServer.formatMessage(message.resolve(locale))); + + handleDeny(message); } @Override diff --git a/sponge-api7/src/main/java/me/confuser/banmanager/sponge/SpongePlayer.java b/sponge-api7/src/main/java/me/confuser/banmanager/sponge/SpongePlayer.java index d986cca7e..47ac7a78d 100644 --- a/sponge-api7/src/main/java/me/confuser/banmanager/sponge/SpongePlayer.java +++ b/sponge-api7/src/main/java/me/confuser/banmanager/sponge/SpongePlayer.java @@ -7,7 +7,6 @@ import me.confuser.banmanager.common.kyori.text.TextComponent; import me.confuser.banmanager.common.kyori.text.serializer.gson.GsonComponentSerializer; import me.confuser.banmanager.common.util.Message; -import me.confuser.banmanager.common.util.MessageRegistry; import me.confuser.banmanager.common.util.UUIDUtils; import org.spongepowered.api.Sponge; import org.spongepowered.api.entity.living.player.Player; @@ -137,15 +136,6 @@ public boolean canSee(CommonPlayer player) { return getPlayer().canSee(Sponge.getServer().getPlayer(player.getUniqueId()).get()); } - @Override - public String getLocale() { - Player p = getPlayer(); - if (p == null) return "en"; - java.util.Locale locale = p.getLocale(); - if (locale == null) return "en"; - return MessageRegistry.normaliseLocale(locale.toString()); - } - private Player getPlayer() { if (isOnlineMode()) { Optional player = Sponge.getServer().getPlayer(uuid); diff --git a/sponge-api7/src/main/java/me/confuser/banmanager/sponge/listeners/JoinListener.java b/sponge-api7/src/main/java/me/confuser/banmanager/sponge/listeners/JoinListener.java index 1e8ed1573..a3664d6d8 100644 --- a/sponge-api7/src/main/java/me/confuser/banmanager/sponge/listeners/JoinListener.java +++ b/sponge-api7/src/main/java/me/confuser/banmanager/sponge/listeners/JoinListener.java @@ -58,9 +58,8 @@ private class BanJoinHandler implements CommonJoinHandler { @Override public void handlePlayerDeny(PlayerData player, Message message) { plugin.getServer().callEvent("PlayerDeniedEvent", player, message); - String locale = player.getLocale() != null ? player.getLocale() : "en"; - event.setCancelled(true); - event.setMessage(SpongeServer.formatMessage(message.resolve(locale))); + + handleDeny(message); } @Override diff --git a/sponge/src/main/java/me/confuser/banmanager/sponge/SpongePlayer.java b/sponge/src/main/java/me/confuser/banmanager/sponge/SpongePlayer.java index 187d928e7..82e04490b 100644 --- a/sponge/src/main/java/me/confuser/banmanager/sponge/SpongePlayer.java +++ b/sponge/src/main/java/me/confuser/banmanager/sponge/SpongePlayer.java @@ -6,7 +6,6 @@ import me.confuser.banmanager.common.data.PlayerData; import me.confuser.banmanager.common.kyori.text.TextComponent; import me.confuser.banmanager.common.util.Message; -import me.confuser.banmanager.common.util.MessageRegistry; import me.confuser.banmanager.common.util.UUIDUtils; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; @@ -171,13 +170,6 @@ public boolean canSee(CommonPlayer player) { return target.map(serverPlayer -> p.canSee(serverPlayer)).orElse(false); } - @Override - public String getLocale() { - ServerPlayer p = getPlayer(); - if (p == null) return "en"; - return MessageRegistry.normaliseLocale(p.locale().toString()); - } - private ServerPlayer getPlayer() { if (player != null && !player.isRemoved()) { return player; diff --git a/sponge/src/main/java/me/confuser/banmanager/sponge/listeners/JoinListener.java b/sponge/src/main/java/me/confuser/banmanager/sponge/listeners/JoinListener.java index 8efc90a43..3c3b9567f 100644 --- a/sponge/src/main/java/me/confuser/banmanager/sponge/listeners/JoinListener.java +++ b/sponge/src/main/java/me/confuser/banmanager/sponge/listeners/JoinListener.java @@ -79,10 +79,7 @@ private class BanJoinHandler implements CommonJoinHandler { @Override public void handlePlayerDeny(PlayerData player, Message message) { plugin.getServer().callEvent("PlayerDeniedEvent", player, message); - String locale = player.getLocale() != null ? player.getLocale() : "en"; - isDenied = true; - event.setCancelled(true); - event.setMessage(SpongeServer.formatMessage(message.resolve(locale))); + handleDeny(message); } @Override @@ -104,7 +101,7 @@ public void handlePlayerDeny(PlayerData player, Message message) { @Override public void handleDeny(Message message) { - new SpongePlayer(player, plugin.getConfig().isOnlineMode()).kick(message); + player.kick(SpongeServer.formatMessage(message.toString())); } } } diff --git a/velocity/src/main/java/me/confuser/banmanager/velocity/VelocityPlayer.java b/velocity/src/main/java/me/confuser/banmanager/velocity/VelocityPlayer.java index 00158c854..c0de0b1ef 100644 --- a/velocity/src/main/java/me/confuser/banmanager/velocity/VelocityPlayer.java +++ b/velocity/src/main/java/me/confuser/banmanager/velocity/VelocityPlayer.java @@ -6,7 +6,6 @@ import me.confuser.banmanager.common.commands.CommonCommand; import me.confuser.banmanager.common.data.PlayerData; import me.confuser.banmanager.common.util.Message; -import me.confuser.banmanager.common.util.MessageRegistry; import me.confuser.banmanager.common.kyori.text.TextComponent; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; @@ -111,11 +110,4 @@ public boolean teleport(CommonWorld world, double x, double y, double z, float p public boolean canSee(CommonPlayer player) { return true; } - - @Override - public String getLocale() { - java.util.Locale locale = player.getEffectiveLocale(); - if (locale == null) return "en"; - return MessageRegistry.normaliseLocale(locale.toString()); - } } diff --git a/velocity/src/main/java/me/confuser/banmanager/velocity/listeners/JoinListener.java b/velocity/src/main/java/me/confuser/banmanager/velocity/listeners/JoinListener.java index 7b3b9c842..e128d6d18 100644 --- a/velocity/src/main/java/me/confuser/banmanager/velocity/listeners/JoinListener.java +++ b/velocity/src/main/java/me/confuser/banmanager/velocity/listeners/JoinListener.java @@ -62,7 +62,7 @@ public void handleDeny(Message message) { @Override public void handlePlayerDeny(PlayerData player, Message message) { plugin.getServer().callEvent("PlayerDeniedEvent", player, message); - event.setResult(ResultedEvent.ComponentResult.denied(VelocityServer.formatMessage(message.resolve(player.getLocale() != null ? player.getLocale() : "en")))); + event.setResult(ResultedEvent.ComponentResult.denied(VelocityServer.formatMessage(message.toString()))); } }