diff --git a/Essentials/build.gradle b/Essentials/build.gradle index 4e04f09320a..ab8b266dcac 100644 --- a/Essentials/build.gradle +++ b/Essentials/build.gradle @@ -80,7 +80,7 @@ shadowJar { relocate 'io.leangen.geantyref', 'com.earth2me.essentials.libs.geantyref' relocate 'org.checkerframework', 'com.earth2me.essentials.libs.checkerframework' relocate 'net.kyori', 'com.earth2me.essentials.libs.kyori' - relocate 'net.essentialsx.temp.adventure', 'net.kyori.adventure' + relocate 'net.essentialsx.temp.adventure', 'net.kyori.adventure' // Undo temporary relocation for Paper Provider minimize { include(dependency('org.checkerframework:checker-qual')) diff --git a/Essentials/src/main/java/com/earth2me/essentials/Backup.java b/Essentials/src/main/java/com/earth2me/essentials/Backup.java index 7ef4a5f1097..a6831ab3bb1 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Backup.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Backup.java @@ -1,6 +1,5 @@ package com.earth2me.essentials; -import com.earth2me.essentials.utils.AdventureUtil; import net.ess3.api.IEssentials; import org.bukkit.Server; import org.bukkit.command.CommandSender; @@ -80,7 +79,7 @@ public void run() { taskLock.complete(new Object()); return; } - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("backupStarted"))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("backupStarted"))); final CommandSender cs = server.getConsoleSender(); server.dispatchCommand(cs, "save-all"); server.dispatchCommand(cs, "save-off"); @@ -119,7 +118,7 @@ public void run() { } active = false; taskLock.complete(new Object()); - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("backupFinished"))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("backupFinished"))); } } diff --git a/Essentials/src/main/java/com/earth2me/essentials/CommandSource.java b/Essentials/src/main/java/com/earth2me/essentials/CommandSource.java index ed8d5bdb68d..a29d4d3f8ff 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/CommandSource.java +++ b/Essentials/src/main/java/com/earth2me/essentials/CommandSource.java @@ -1,8 +1,6 @@ package com.earth2me.essentials; -import com.earth2me.essentials.utils.AdventureUtil; -import net.kyori.adventure.platform.bukkit.BukkitAudiences; -import net.kyori.adventure.text.Component; +import com.earth2me.essentials.adventure.ComponentHolder; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -37,7 +35,7 @@ public void sendTl(final String tlKey, final Object... args) { final String translation = tlLiteral(tlKey, args); if (!translation.isEmpty()) { - sendComponent(AdventureUtil.miniMessage().deserialize(translation)); + sendComponent(ess.getAdventureFacet().deserializeMiniMessage(translation)); } } @@ -49,18 +47,17 @@ public String tl(final String tlKey, final Object... args) { return tlLiteral(tlKey, args); } - public Component tlComponent(final String tlKey, final Object... args) { + public ComponentHolder tlComponent(final String tlKey, final Object... args) { if (isPlayer()) { //noinspection ConstantConditions return getUser().tlComponent(tlKey, args); } final String translation = tlLiteral(tlKey, args); - return AdventureUtil.miniMessage().deserialize(translation); + return ess.getAdventureFacet().deserializeMiniMessage(translation); } - public void sendComponent(final Component component) { - final BukkitAudiences audiences = ess.getBukkitAudience(); - audiences.sender(sender).sendMessage(component); + public void sendComponent(final ComponentHolder component) { + ess.getAdventureFacet().send(sender, component); } public final net.ess3.api.IUser getUser() { diff --git a/Essentials/src/main/java/com/earth2me/essentials/Console.java b/Essentials/src/main/java/com/earth2me/essentials/Console.java index 6414f3cefc5..d1d76c53844 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Console.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Console.java @@ -1,10 +1,8 @@ package com.earth2me.essentials; +import com.earth2me.essentials.adventure.AdventureFacet; import com.earth2me.essentials.messaging.IMessageRecipient; import com.earth2me.essentials.messaging.SimpleMessageRecipient; -import com.earth2me.essentials.utils.AdventureUtil; -import net.kyori.adventure.audience.Audience; -import net.kyori.adventure.text.Component; import org.bukkit.Server; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -73,10 +71,8 @@ public void sendTl(String tlKey, Object... args) { return; } - final Audience consoleAudience = ((Essentials) ess).getBukkitAudience().sender(getCommandSender()); - final Component component = AdventureUtil.miniMessage() - .deserialize(translation); - consoleAudience.sendMessage(component); + final AdventureFacet adventureFacet = ess.getAdventureFacet(); + adventureFacet.send(getCommandSender(), adventureFacet.deserializeMiniMessage(translation)); } @Override diff --git a/Essentials/src/main/java/com/earth2me/essentials/Essentials.java b/Essentials/src/main/java/com/earth2me/essentials/Essentials.java index 756b1558e82..b447365537a 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Essentials.java @@ -17,6 +17,11 @@ */ package com.earth2me.essentials; +import com.earth2me.essentials.adventure.AdventureFacet; +import com.earth2me.essentials.adventure.AdventureUtil; +import com.earth2me.essentials.adventure.ComponentHolder; +import com.earth2me.essentials.adventure.PaperAdventureFacet; +import com.earth2me.essentials.adventure.SpigotAdventureFacet; import com.earth2me.essentials.commands.EssentialsCommand; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.commands.NoChargeException; @@ -40,7 +45,6 @@ import com.earth2me.essentials.textreader.SimpleTextInput; import com.earth2me.essentials.updatecheck.UpdateChecker; import com.earth2me.essentials.userstorage.ModernUserMap; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import com.earth2me.essentials.utils.VersionUtil; import io.papermc.lib.PaperLib; @@ -98,8 +102,6 @@ import net.ess3.provider.providers.PrehistoricPotionMetaProvider; import net.essentialsx.api.v2.services.BalanceTop; import net.essentialsx.api.v2.services.mail.MailService; -import net.kyori.adventure.platform.bukkit.BukkitAudiences; -import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.World; @@ -176,7 +178,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { private transient Kits kits; private transient RandomTeleport randomTeleport; private transient UpdateChecker updateChecker; - private transient BukkitAudiences bukkitAudience; + private transient AdventureFacet adventureFacet; static { EconomyLayers.init(); @@ -207,6 +209,8 @@ public void onEnable() { LOGGER = EssentialsLogger.getLoggerProvider(this); EssentialsLogger.updatePluginLogger(this); + initAdventureFacet(); + execTimer = new ExecuteTimer(); execTimer.start(); @@ -222,33 +226,33 @@ public void onEnable() { switch (VersionUtil.getServerSupportStatus()) { case NMS_CLEANROOM: - getLogger().severe(AdventureUtil.miniToLegacy(tlLiteral("serverUnsupportedCleanroom"))); + getLogger().severe(getAdventureFacet().miniToLegacy(tlLiteral("serverUnsupportedCleanroom"))); break; case DANGEROUS_FORK: - getLogger().severe(AdventureUtil.miniToLegacy(tlLiteral("serverUnsupportedDangerous"))); + getLogger().severe(getAdventureFacet().miniToLegacy(tlLiteral("serverUnsupportedDangerous"))); break; case STUPID_PLUGIN: - getLogger().severe(AdventureUtil.miniToLegacy(tlLiteral("serverUnsupportedDumbPlugins"))); + getLogger().severe(getAdventureFacet().miniToLegacy(tlLiteral("serverUnsupportedDumbPlugins"))); break; case UNSTABLE: - getLogger().severe(AdventureUtil.miniToLegacy(tlLiteral("serverUnsupportedMods"))); + getLogger().severe(getAdventureFacet().miniToLegacy(tlLiteral("serverUnsupportedMods"))); break; case OUTDATED: - getLogger().severe(AdventureUtil.miniToLegacy(tlLiteral("serverUnsupported"))); + getLogger().severe(getAdventureFacet().miniToLegacy(tlLiteral("serverUnsupported"))); break; case LIMITED: - getLogger().info(AdventureUtil.miniToLegacy(tlLiteral("serverUnsupportedLimitedApi"))); + getLogger().info(getAdventureFacet().miniToLegacy(tlLiteral("serverUnsupportedLimitedApi"))); break; } if (VersionUtil.getSupportStatusClass() != null) { - getLogger().info(AdventureUtil.miniToLegacy(tlLiteral("serverUnsupportedClass", VersionUtil.getSupportStatusClass()))); + getLogger().info(getAdventureFacet().miniToLegacy(tlLiteral("serverUnsupportedClass", VersionUtil.getSupportStatusClass()))); } final PluginManager pm = getServer().getPluginManager(); for (final Plugin plugin : pm.getPlugins()) { if (plugin.getDescription().getName().startsWith("Essentials") && !plugin.getDescription().getVersion().equals(this.getDescription().getVersion()) && !plugin.getDescription().getName().equals("EssentialsAntiCheat")) { - getLogger().warning(AdventureUtil.miniToLegacy(tlLiteral("versionMismatch", plugin.getDescription().getName()))); + getLogger().warning(getAdventureFacet().miniToLegacy(tlLiteral("versionMismatch", plugin.getDescription().getName()))); } } @@ -426,9 +430,9 @@ public void onEnable() { if (!TESTING) { updateChecker = new UpdateChecker(this); runTaskAsynchronously(() -> { - getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("versionFetching"))); - for (final Component component : updateChecker.getVersionMessages(false, true, new CommandSource(this, Bukkit.getConsoleSender()))) { - getLogger().log(getSettings().isUpdateCheckEnabled() ? Level.WARNING : Level.INFO, AdventureUtil.adventureToLegacy(component)); + getLogger().log(Level.INFO, getAdventureFacet().miniToLegacy(tlLiteral("versionFetching"))); + for (final ComponentHolder component : updateChecker.getVersionMessages(false, true, new CommandSource(this, Bukkit.getConsoleSender()))) { + getLogger().log(getSettings().isUpdateCheckEnabled() ? Level.WARNING : Level.INFO, getAdventureFacet().adventureToLegacy(component)); } }); @@ -517,13 +521,13 @@ public ProviderFactory getProviders() { @Override public void onDisable() { - if (bukkitAudience != null) { - bukkitAudience.close(); + if (adventureFacet != null) { + adventureFacet.close(); } final boolean stopping = TESTING || provider(ServerStateProvider.class).isStopping(); if (!stopping) { - LOGGER.log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("serverReloading"))); + LOGGER.log(Level.SEVERE, getAdventureFacet().miniToLegacy(tlLiteral("serverReloading"))); } if (!TESTING) { @@ -547,7 +551,7 @@ public void onDisable() { } cleanupOpenInventories(); if (!TESTING && getBackup().getTaskLock() != null && !getBackup().getTaskLock().isDone()) { - LOGGER.log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("backupInProgress"))); + LOGGER.log(Level.SEVERE, getAdventureFacet().miniToLegacy(tlLiteral("backupInProgress"))); getBackup().getTaskLock().join(); } if (i18n != null) { @@ -562,7 +566,6 @@ public void onDisable() { } Economy.setEss(null); - AdventureUtil.setEss(null); Trade.closeLog(); getUsers().shutdown(); @@ -573,11 +576,6 @@ public void onDisable() { public void reload() { Trade.closeLog(); - if (bukkitAudience != null) { - bukkitAudience.close(); - bukkitAudience = null; - } - for (final IConf iConf : confList) { iConf.reloadConfig(); execTimer.mark("Reload(" + iConf.getClass().getSimpleName() + ")"); @@ -587,16 +585,29 @@ public void reload() { for (final String commandName : this.getDescription().getCommands().keySet()) { final Command command = this.getCommand(commandName); if (command != null) { - command.setDescription(AdventureUtil.miniToLegacy(tlLiteral(commandName + "CommandDescription"))); - command.setUsage(AdventureUtil.miniToLegacy(tlLiteral(commandName + "CommandUsage"))); + command.setDescription(getAdventureFacet().miniToLegacy(tlLiteral(commandName + "CommandDescription"))); + command.setUsage(getAdventureFacet().miniToLegacy(tlLiteral(commandName + "CommandUsage"))); } } final PluginManager pm = getServer().getPluginManager(); registerListeners(pm); - AdventureUtil.setEss(this); - bukkitAudience = BukkitAudiences.create(this); + initAdventureFacet(); + } + + private void initAdventureFacet() { + if (adventureFacet != null) { + adventureFacet.close(); + } + + if (VersionUtil.isPaper() && VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_16_5_R01)) { + adventureFacet = new PaperAdventureFacet(getSettings() != null ? getSettings().getPrimaryColor() : null, getSettings() != null ? getSettings().getSecondaryColor() : null); + } else { + adventureFacet = new SpigotAdventureFacet(this); + } + + AdventureUtil.setAdventureFacet(adventureFacet); } private IEssentialsCommand loadCommand(final String path, final String name, final IEssentialsModule module, final ClassLoader classLoader) throws Exception { @@ -661,7 +672,7 @@ public List onTabCompleteEssentials(final CommandSender cSender, final C cmd = loadCommand(commandPath, command.getName(), module, classLoader); } catch (final Exception ex) { sender.sendTl("commandNotLoaded", commandLabel); - LOGGER.log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("commandNotLoaded", commandLabel)), ex); + LOGGER.log(Level.SEVERE, getAdventureFacet().miniToLegacy(tlLiteral("commandNotLoaded", commandLabel)), ex); return Collections.emptyList(); } @@ -684,11 +695,11 @@ public List onTabCompleteEssentials(final CommandSender cSender, final C } catch (final Exception ex) { showError(sender, ex, commandLabel); // Tab completion shouldn't fail - LOGGER.log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("commandFailed", commandLabel)), ex); + LOGGER.log(Level.SEVERE, getAdventureFacet().miniToLegacy(tlLiteral("commandFailed", commandLabel)), ex); return Collections.emptyList(); } } catch (final Throwable ex) { - LOGGER.log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("commandFailed", commandLabel)), ex); + LOGGER.log(Level.SEVERE, getAdventureFacet().miniToLegacy(tlLiteral("commandFailed", commandLabel)), ex); return Collections.emptyList(); } } @@ -715,7 +726,8 @@ public boolean onCommandEssentials(final CommandSender cSender, final Command co LOGGER.log(Level.SEVERE, ex.getMessage(), ex); if (cSender instanceof Player) { final PlayerLocaleProvider localeProvider = provider(PlayerLocaleProvider.class); - getBukkitAudience().sender(cSender).sendMessage(AdventureUtil.miniMessage().deserialize(tlLocale(I18n.getLocale(localeProvider.getLocale((Player) cSender)), "internalError"))); + final String miniMessageStr = tlLocale(I18n.getLocale(localeProvider.getLocale((Player) cSender)), "internalError"); + getAdventureFacet().send(cSender, getAdventureFacet().deserializeMiniMessage(miniMessageStr)); } else { cSender.sendMessage(tlLiteral("internalError")); } @@ -771,13 +783,13 @@ public boolean onCommandEssentials(final CommandSender cSender, final Command co cmd = loadCommand(commandPath, command.getName(), module, classLoader); } catch (final Exception ex) { sender.sendTl("commandNotLoaded", commandLabel); - LOGGER.log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("commandNotLoaded", commandLabel)), ex); + LOGGER.log(Level.SEVERE, getAdventureFacet().miniToLegacy(tlLiteral("commandNotLoaded", commandLabel)), ex); return true; } // Check authorization if (user != null && !user.isAuthorized(cmd, permissionPrefix)) { - LOGGER.log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("deniedAccessCommand", user.getName()))); + LOGGER.log(Level.INFO, getAdventureFacet().miniToLegacy(tlLiteral("deniedAccessCommand", user.getName()))); user.sendTl("noAccessCommand"); return true; } @@ -818,7 +830,7 @@ public boolean onCommandEssentials(final CommandSender cSender, final Command co sender.sendMessage(command.getUsage().replace("", commandLabel)); } if (!ex.getMessage().isEmpty()) { - sender.sendComponent(AdventureUtil.miniMessage().deserialize(ex.getMessage())); + sender.sendComponent(getAdventureFacet().deserializeMiniMessage(ex.getMessage())); } if (ex.getCause() != null && settings.isDebug()) { ex.getCause().printStackTrace(); @@ -832,7 +844,7 @@ public boolean onCommandEssentials(final CommandSender cSender, final Command co return true; } } catch (final Throwable ex) { - LOGGER.log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("commandFailed", commandLabel)), ex); + LOGGER.log(Level.SEVERE, getAdventureFacet().miniToLegacy(tlLiteral("commandFailed", commandLabel)), ex); return true; } } @@ -868,7 +880,7 @@ public void showError(final CommandSource sender, final Throwable exception, fin sender.sendTl("errorWithMessage", exception.getMessage()); } if (getSettings().isDebug()) { - LOGGER.log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("errorCallingCommand", commandLabel)), exception); + LOGGER.log(Level.INFO, getAdventureFacet().miniToLegacy(tlLiteral("errorCallingCommand", commandLabel)), exception); } } @@ -1117,7 +1129,7 @@ private int broadcastMessage(final IUser sender, final String permission, final final Collection players = getOnlinePlayers(); for (final Player player : players) { final User user = getUser(player); - if ((permission == null && (sender == null || !user.isIgnoredPlayer(sender))) || (permission != null && user.isAuthorized(permission))) { + if (permission == null && (sender == null || !user.isIgnoredPlayer(sender)) || permission != null && user.isAuthorized(permission)) { if (shouldExclude != null && shouldExclude.test(user)) { continue; } @@ -1289,8 +1301,9 @@ public PluginCommand getPluginCommand(final String cmd) { return this.getCommand(cmd); } - public BukkitAudiences getBukkitAudience() { - return bukkitAudience; + @Override + public AdventureFacet getAdventureFacet() { + return adventureFacet; } private AbstractItemDb getItemDbFromConfig() { diff --git a/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java index 8b6b2d51f16..e644c9a4989 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java @@ -1,12 +1,12 @@ package com.earth2me.essentials; +import com.earth2me.essentials.adventure.ComponentHolder; import com.earth2me.essentials.commands.Commandfireball; import com.earth2me.essentials.craftbukkit.Inventories; import com.earth2me.essentials.textreader.IText; import com.earth2me.essentials.textreader.KeywordReplacer; import com.earth2me.essentials.textreader.TextInput; import com.earth2me.essentials.textreader.TextPager; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.CommonPlaceholders; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.FormatUtil; @@ -24,7 +24,6 @@ import net.ess3.provider.providers.BukkitCommandSendListenerProvider; import net.ess3.provider.providers.PaperCommandSendListenerProvider; import net.essentialsx.api.v2.events.AsyncUserDataLoadEvent; -import net.kyori.adventure.text.Component; import org.bukkit.BanEntry; import org.bukkit.BanList; import org.bukkit.GameMode; @@ -192,7 +191,7 @@ public void onPlayerChat(final AsyncPlayerChatEvent event) { } } - ess.getLogger().info(AdventureUtil.miniToLegacy(tlLiteral("mutedUserSpeaks", user.getName(), event.getMessage()))); + ess.getLogger().info(ess.getAdventureFacet().miniToLegacy(tlLiteral("mutedUserSpeaks", user.getName(), event.getMessage()))); } try { final Iterator it = event.getRecipients().iterator(); @@ -277,7 +276,7 @@ public void onPlayerQuit(final PlayerQuitEvent event) { ess.getScheduler().cancelTask(pendingId); } - if (hideJoinQuitMessages() || (ess.getSettings().allowSilentJoinQuit() && user.isAuthorized("essentials.silentquit"))) { + if (hideJoinQuitMessages() || ess.getSettings().allowSilentJoinQuit() && user.isAuthorized("essentials.silentquit")) { event.setQuitMessage(null); } else if (ess.getSettings().isCustomQuitMessage() && event.getQuitMessage() != null) { final Player player = event.getPlayer(); @@ -446,7 +445,7 @@ public void run() { if (user.isAuthorized("essentials.updatecheck")) { ess.runTaskAsynchronously(() -> { - for (final Component component : ess.getUpdateChecker().getVersionMessages(false, false, user.getSource())) { + for (final ComponentHolder component : ess.getUpdateChecker().getVersionMessages(false, false, user.getSource())) { user.sendComponent(component); } }); @@ -548,14 +547,14 @@ public void onPlayerLoginBanned(final PlayerLoginEvent event) { final Date banExpiry = banEntry.getExpiration(); if (banExpiry != null) { final String expiry = DateUtil.formatDateDiff(banExpiry.getTime()); - event.setKickMessage(AdventureUtil.miniToLegacy(tlLiteral("tempbanJoin", expiry, banEntry.getReason()))); + event.setKickMessage(ess.getAdventureFacet().miniToLegacy(tlLiteral("tempbanJoin", expiry, banEntry.getReason()))); } else { - event.setKickMessage(AdventureUtil.miniToLegacy(tlLiteral("banJoin", banEntry.getReason()))); + event.setKickMessage(ess.getAdventureFacet().miniToLegacy(tlLiteral("banJoin", banEntry.getReason()))); } } else { banEntry = ess.getServer().getBanList(BanList.Type.IP).getBanEntry(event.getAddress().getHostAddress()); if (banEntry != null) { - event.setKickMessage(AdventureUtil.miniToLegacy(tlLiteral("banIpJoin", banEntry.getReason()))); + event.setKickMessage(ess.getAdventureFacet().miniToLegacy(tlLiteral("banIpJoin", banEntry.getReason()))); } } } @@ -655,16 +654,18 @@ public void handlePlayerCommandPreprocess(final PlayerCommandPreprocessEvent eve if (ess.getSettings().getSocialSpyCommands().contains(cmd) || ess.getSettings().getSocialSpyCommands().contains("*")) { if (pluginCommand == null - || (!pluginCommand.getName().equals("msg") && !pluginCommand.getName().equals("r"))) { // /msg and /r are handled in SimpleMessageRecipient + || !pluginCommand.getName().equals("msg") && !pluginCommand.getName().equals("r")) { // /msg and /r are handled in SimpleMessageRecipient final User user = ess.getUser(player); if (!user.isAuthorized("essentials.chat.spy.exempt")) { final String playerName = ess.getSettings().isSocialSpyDisplayNames() ? player.getDisplayName() : player.getName(); for (final User spyer : ess.getOnlineUsers()) { if (spyer.isSocialSpyEnabled() && !player.equals(spyer.getBase())) { - final Component base = (user.isMuted() && ess.getSettings().getSocialSpyListenMutedPlayers()) + final ComponentHolder base = (user.isMuted() && ess.getSettings().getSocialSpyListenMutedPlayers()) ? spyer.tlComponent("socialSpyMutedPrefix") : spyer.tlComponent("socialSpyPrefix"); - spyer.sendComponent(base.append(AdventureUtil.legacyToAdventure(playerName)).append(Component.text(": " + event.getMessage()))); + final ComponentHolder append = ess.getAdventureFacet().legacyToAdventure(playerName + ": " + event.getMessage()); + + spyer.sendComponent(ess.getAdventureFacet().append(base, append)); } } } @@ -688,7 +689,7 @@ public void handlePlayerCommandPreprocess(final PlayerCommandPreprocessEvent eve user.sendTl("voiceSilencedTime", dateDiff); } } - ess.getLogger().info(AdventureUtil.miniToLegacy(tlLiteral("mutedUserSpeaks", player.getName(), event.getMessage()))); + ess.getLogger().info(ess.getAdventureFacet().miniToLegacy(tlLiteral("mutedUserSpeaks", player.getName(), event.getMessage()))); return; } @@ -1100,7 +1101,7 @@ private boolean isEssentialsCommand(final String label) { return command != null && (command.getPlugin() == ess || command.getPlugin().getClass().getName().startsWith("com.earth2me.essentials") || command.getPlugin().getClass().getName().startsWith("net.essentialsx")) - && (ess.getSettings().isCommandOverridden(label) || (ess.getAlternativeCommandsHandler().getAlternative(label) == null)); + && (ess.getSettings().isCommandOverridden(label) || ess.getAlternativeCommandsHandler().getAlternative(label) == null); } } diff --git a/Essentials/src/main/java/com/earth2me/essentials/EssentialsUpgrade.java b/Essentials/src/main/java/com/earth2me/essentials/EssentialsUpgrade.java index 43ee9ad8643..9427e6776d8 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/EssentialsUpgrade.java +++ b/Essentials/src/main/java/com/earth2me/essentials/EssentialsUpgrade.java @@ -6,7 +6,6 @@ import com.earth2me.essentials.config.entities.LazyLocation; import com.earth2me.essentials.craftbukkit.BanLookup; import com.earth2me.essentials.userstorage.ModernUUIDCache; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.StringUtil; import com.google.common.base.Charsets; import com.google.common.io.Files; @@ -72,7 +71,7 @@ public class EssentialsUpgrade { doneFile.load(); } - public static void uuidFileConvert(final IEssentials ess, final Boolean ignoreUFCache) { + private static void uuidFileConvert(final IEssentials ess, final Boolean ignoreUFCache) { ess.getLogger().info("Starting Essentials UUID userdata conversion"); final File userdir = new File(ess.getDataFolder(), "userdata"); @@ -157,7 +156,7 @@ public static void uuidFileConvert(final IEssentials ess, final Boolean ignoreUF ess.getLogger().info("To rerun the conversion type /essentials uuidconvert"); } - public void updateRandomTeleport() { + private void updateRandomTeleport() { if (doneFile.getBoolean("updateRandomTeleport", false)) { return; } @@ -192,7 +191,7 @@ public void updateRandomTeleport() { ess.getLogger().info("Done converting random teleport config."); } - public void convertMailList() { + private void convertMailList() { if (doneFile.getBoolean("updateUsersMailList", false)) { return; } @@ -232,7 +231,7 @@ public void convertMailList() { ess.getLogger().info("Done converting mail list."); } - public void convertStupidCamelCaseUserdataKeys() { + private void convertStupidCamelCaseUserdataKeys() { if (doneFile.getBoolean("updateUsersStupidLegacyPathNames", false)) { return; } @@ -312,7 +311,7 @@ public void convertStupidCamelCaseUserdataKeys() { * horrible economy code, as any operation which loads all user data into memory will load all these NPC accounts * and spam the console with warnings." */ - public void purgeBrokenNpcAccounts() { + private void purgeBrokenNpcAccounts() { if (doneFile.getBoolean("updatePurgeBrokenNpcAccounts", false)) { return; } @@ -423,7 +422,7 @@ public void purgeBrokenNpcAccounts() { ess.getLogger().info("#===========================================================================#"); } - public void convertIgnoreList() { + private void convertIgnoreList() { final Pattern pattern = Pattern.compile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"); if (doneFile.getBoolean("updateUsersIgnoreListUUID", false)) { return; @@ -474,6 +473,10 @@ public void convertIgnoreList() { } public void convertKits() { + if (Essentials.TESTING) { + return; + } + final Kits kits = ess.getKits(); final EssentialsConfiguration config = kits.getRootConfig(); if (doneFile.getBoolean("kitsyml", false)) { @@ -531,7 +534,7 @@ private void moveMotdRulesToFile(final String name) { doneFile.setProperty("move" + name + "ToFile", true); doneFile.save(); } catch (final IOException e) { - ess.getLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("upgradingFilesError")), e); + ess.getLogger().log(Level.SEVERE, ess.getAdventureFacet().miniToLegacy(tlLiteral("upgradingFilesError")), e); } } @@ -694,15 +697,15 @@ private void sanitizeAllUserFilenames() { final File tmpFile = new File(listOfFile.getParentFile(), sanitizedFilename + ".tmp"); final File newFile = new File(listOfFile.getParentFile(), sanitizedFilename); if (!listOfFile.renameTo(tmpFile)) { - ess.getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("userdataMoveError", filename, sanitizedFilename))); + ess.getLogger().log(Level.WARNING, ess.getAdventureFacet().miniToLegacy(tlLiteral("userdataMoveError", filename, sanitizedFilename))); continue; } if (newFile.exists()) { - ess.getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("duplicatedUserdata", filename, sanitizedFilename))); + ess.getLogger().log(Level.WARNING, ess.getAdventureFacet().miniToLegacy(tlLiteral("duplicatedUserdata", filename, sanitizedFilename))); continue; } if (!tmpFile.renameTo(newFile)) { - ess.getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("userdataMoveBackError", sanitizedFilename, sanitizedFilename))); + ess.getLogger().log(Level.WARNING, ess.getAdventureFacet().miniToLegacy(tlLiteral("userdataMoveBackError", sanitizedFilename, sanitizedFilename))); } } doneFile.setProperty("sanitizeAllUserFilenames", true); @@ -718,7 +721,7 @@ private World getFakeWorld(final String name) { return null; } - public Location getFakeLocation(final CommentedConfigurationNode config, final String path) { + private Location getFakeLocation(final CommentedConfigurationNode config, final String path) { final String worldName = config.getString((path != null ? path + "." : "") + "world"); if (worldName == null || worldName.isEmpty()) { return null; @@ -882,7 +885,7 @@ private void uuidFileChange() { doneFile.save(); } - public void banFormatChange() { + private void banFormatChange() { if (doneFile.getBoolean("banFormatChange", false)) { return; } @@ -952,7 +955,7 @@ private void updateBan(final String playerName, final String banReason, final Lo Bukkit.getBanList(BanList.Type.NAME).addBan(playerName, banReason, banTimeout == 0 ? null : new Date(banTimeout), Console.NAME); } - public void generateUidCache() { + private void generateUidCache() { if (doneFile.getBoolean("newUidCacheBuilt", false)) { return; } @@ -992,7 +995,7 @@ public void generateUidCache() { if (name != null) { if (nameToUuidMap.containsKey(name)) { final UUID oldUuid = nameToUuidMap.get(name); - if (oldUuid.version() < uuid.version() || (oldUuid.version() == uuid.version() && uuids.get(oldUuid) < time)) { + if (oldUuid.version() < uuid.version() || oldUuid.version() == uuid.version() && uuids.get(oldUuid) < time) { ess.getLogger().warning("New UUID found for " + name + ": " + uuid + " (old: " + oldUuid + "). Replacing."); uuids.remove(oldUuid); } else { @@ -1025,6 +1028,10 @@ public void generateUidCache() { } public void upgradeLang() { + if (Essentials.TESTING) { + return; + } + if (doneFile.getBoolean("updateLegacyToAdventure", false)) { return; } @@ -1060,7 +1067,7 @@ public void upgradeLang() { properties.load(Files.newReader(backup, Charsets.UTF_8)); for (final String key : properties.stringPropertyNames()) { final String value = properties.getProperty(key); - properties.setProperty(key, AdventureUtil.legacyToMini(AdventureUtil.miniMessage().escapeTags(value), true)); + properties.setProperty(key, ess.getAdventureFacet().legacyToMini(ess.getAdventureFacet().escapeTags(value), true)); } properties.store(Files.newWriter(newFile, Charsets.UTF_8), null); } @@ -1079,6 +1086,10 @@ public void upgradeLang() { } public void beforeSettings() { + if (Essentials.TESTING) { + return; + } + if (!ess.getDataFolder().exists()) { ess.getDataFolder().mkdirs(); } @@ -1087,10 +1098,17 @@ public void beforeSettings() { } public void preModules() { + if (Essentials.TESTING) { + return; + } generateUidCache(); } public void afterSettings() { + if (Essentials.TESTING) { + return; + } + sanitizeAllUserFilenames(); updateUsersPowerToolsFormat(); updateUsersHomesFormat(); diff --git a/Essentials/src/main/java/com/earth2me/essentials/I18n.java b/Essentials/src/main/java/com/earth2me/essentials/I18n.java index b09cb6712e0..0164f145648 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/I18n.java +++ b/Essentials/src/main/java/com/earth2me/essentials/I18n.java @@ -1,6 +1,6 @@ package com.earth2me.essentials; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import net.ess3.api.IEssentials; import org.jetbrains.annotations.NotNull; @@ -185,7 +185,7 @@ private String format(final Locale locale, final String string, final Object... if (arg instanceof AdventureUtil.ParsedPlaceholder) { return arg.toString(); } - return AdventureUtil.legacyToMini(AdventureUtil.miniMessage().escapeTags(arg.toString())); + return ess.getAdventureFacet().legacyToMini(ess.getAdventureFacet().escapeTags(arg.toString())); }); return messageFormat.format(processedArgs).replace(' ', ' '); // replace nbsp with a space diff --git a/Essentials/src/main/java/com/earth2me/essentials/IEssentials.java b/Essentials/src/main/java/com/earth2me/essentials/IEssentials.java index bdcaa1dcae1..6e69b938bdb 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/IEssentials.java +++ b/Essentials/src/main/java/com/earth2me/essentials/IEssentials.java @@ -1,5 +1,6 @@ package com.earth2me.essentials; +import com.earth2me.essentials.adventure.AdventureFacet; import com.earth2me.essentials.api.IItemDb; import com.earth2me.essentials.api.IJails; import com.earth2me.essentials.api.IWarps; @@ -146,4 +147,6 @@ public interface IEssentials extends Plugin { default

P provider(final Class

providerClass) { return getProviders().get(providerClass); } + + AdventureFacet getAdventureFacet(); } diff --git a/Essentials/src/main/java/com/earth2me/essentials/ISettings.java b/Essentials/src/main/java/com/earth2me/essentials/ISettings.java index 67be6b14d89..cb88d351a7c 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/ISettings.java @@ -4,7 +4,6 @@ import com.earth2me.essentials.signs.EssentialsSign; import com.earth2me.essentials.textreader.IText; import net.essentialsx.api.v2.ChatType; -import net.kyori.adventure.text.minimessage.tag.Tag; import org.bukkit.Material; import org.bukkit.event.EventPriority; import org.spongepowered.configurate.CommentedConfigurationNode; @@ -430,9 +429,9 @@ public interface ISettings extends IConf { int getMaxItemLore(); - Tag getPrimaryColor(); + String getPrimaryColor(); - Tag getSecondaryColor(); + String getSecondaryColor(); BigDecimal getBaltopMinBalance(); diff --git a/Essentials/src/main/java/com/earth2me/essentials/IUser.java b/Essentials/src/main/java/com/earth2me/essentials/IUser.java index 8fce2df96d0..a701eb5610f 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/IUser.java +++ b/Essentials/src/main/java/com/earth2me/essentials/IUser.java @@ -1,5 +1,6 @@ package com.earth2me.essentials; +import com.earth2me.essentials.adventure.ComponentHolder; import com.earth2me.essentials.api.IAsyncTeleport; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.config.entities.CommandCooldown; @@ -7,8 +8,6 @@ import net.ess3.api.events.AfkStatusChangeEvent; import net.essentialsx.api.v2.services.mail.MailMessage; import net.essentialsx.api.v2.services.mail.MailSender; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.ComponentLike; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; @@ -138,9 +137,9 @@ default boolean hasOutstandingTeleportRequest() { void sendMessage(String message); - void sendComponent(ComponentLike component); + void sendComponent(ComponentHolder component); - Component tlComponent(String tlKey, Object... args); + ComponentHolder tlComponent(String tlKey, Object... args); String playerTl(String tlKey, Object... args); diff --git a/Essentials/src/main/java/com/earth2me/essentials/Jails.java b/Essentials/src/main/java/com/earth2me/essentials/Jails.java index f4e31f09692..223a4b0cf0d 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Jails.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Jails.java @@ -3,7 +3,6 @@ import com.earth2me.essentials.config.ConfigurateUtil; import com.earth2me.essentials.config.EssentialsConfiguration; import com.earth2me.essentials.config.entities.LazyLocation; -import com.earth2me.essentials.utils.AdventureUtil; import net.ess3.api.IEssentials; import net.ess3.api.IUser; import net.ess3.api.TranslatableException; @@ -273,9 +272,9 @@ public void onJailPlayerRespawn(final PlayerRespawnEvent event) { event.setRespawnLocation(getJail(user.getJail())); } catch (final Exception ex) { if (ess.getSettings().isDebug()) { - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage())), ex); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage())), ex); } else { - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage()))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage()))); } } } @@ -295,9 +294,9 @@ public void onJailPlayerTeleport(final PlayerTeleportEvent event) { event.setTo(getJail(user.getJail())); } catch (final Exception ex) { if (ess.getSettings().isDebug()) { - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage())), ex); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage())), ex); } else { - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage()))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage()))); } } user.sendTl("jailMessage"); @@ -319,9 +318,9 @@ public void onJailPlayerJoin(final PlayerJoinEvent event) { final CompletableFuture future = new CompletableFuture<>(); future.exceptionally(ex -> { if (ess.getSettings().isDebug()) { - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage())), ex); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage())), ex); } else { - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage()))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("returnPlayerToJailError", user.getName(), ex.getLocalizedMessage()))); } return false; }); diff --git a/Essentials/src/main/java/com/earth2me/essentials/Kit.java b/Essentials/src/main/java/com/earth2me/essentials/Kit.java index e32ade33e33..cffd50a8ffa 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Kit.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Kit.java @@ -6,7 +6,6 @@ import com.earth2me.essentials.textreader.IText; import com.earth2me.essentials.textreader.KeywordReplacer; import com.earth2me.essentials.textreader.SimpleTextInput; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.NumberUtil; import net.ess3.api.IEssentials; @@ -196,7 +195,7 @@ public boolean expandItems(final User user, final List items) throws Exc if (kitItem.startsWith("@")) { if (serializationProvider == null) { - ess.getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("kitError3", kitName, user.getName()))); + ess.getLogger().log(Level.WARNING, ess.getAdventureFacet().miniToLegacy(tlLiteral("kitError3", kitName, user.getName()))); continue; } stack = serializationProvider.deserializeItem(Base64Coder.decodeLines(kitItem.substring(1))); diff --git a/Essentials/src/main/java/com/earth2me/essentials/ManagedFile.java b/Essentials/src/main/java/com/earth2me/essentials/ManagedFile.java index 20991cb503d..ba88395d6a1 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/ManagedFile.java +++ b/Essentials/src/main/java/com/earth2me/essentials/ManagedFile.java @@ -1,6 +1,5 @@ package com.earth2me.essentials; -import com.earth2me.essentials.utils.AdventureUtil; import net.ess3.api.IEssentials; import java.io.BufferedInputStream; @@ -46,7 +45,7 @@ public ManagedFile(final String filename, final IEssentials ess) { try { copyResourceAscii("/" + filename, file); } catch (final IOException ex) { - Essentials.getWrappedLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("itemsCsvNotLoaded", filename)), ex); + Essentials.getWrappedLogger().log(Level.SEVERE, ess.getAdventureFacet().miniToLegacy(tlLiteral("itemsCsvNotLoaded", filename)), ex); } } } diff --git a/Essentials/src/main/java/com/earth2me/essentials/Mob.java b/Essentials/src/main/java/com/earth2me/essentials/Mob.java index 9ddb0c0d2f4..5daa3809e02 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Mob.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Mob.java @@ -1,6 +1,6 @@ package com.earth2me.essentials; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.EnumUtil; import org.bukkit.Location; import org.bukkit.Server; @@ -186,7 +186,7 @@ public static Mob fromBukkitType(final EntityType type) { public Entity spawn(final World world, final Server server, final Location loc) throws MobException { final Entity entity = world.spawn(loc, this.bukkitType.getEntityClass()); if (entity == null) { - Essentials.getWrappedLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("unableToSpawnMob"))); + Essentials.getWrappedLogger().log(Level.WARNING, AdventureUtil.getAdventureFacet().miniToLegacy(tlLiteral("unableToSpawnMob"))); throw new MobException(); } return entity; diff --git a/Essentials/src/main/java/com/earth2me/essentials/PlayerList.java b/Essentials/src/main/java/com/earth2me/essentials/PlayerList.java index 0570fe2a384..f807af73f51 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/PlayerList.java +++ b/Essentials/src/main/java/com/earth2me/essentials/PlayerList.java @@ -1,6 +1,5 @@ package com.earth2me.essentials; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import com.earth2me.essentials.utils.NumberUtil; import net.ess3.api.TranslatableException; @@ -39,7 +38,7 @@ public static String listUsers(final IEssentials ess, final List users, fi groupString.append(tlLiteral("listHiddenTag")); } user.setDisplayNick(); - groupString.append(AdventureUtil.legacyToMini(user.getDisplayName())); + groupString.append(ess.getAdventureFacet().legacyToMini(user.getDisplayName())); final String strippedNick = FormatUtil.stripFormat(user.getNickname()); if (ess.getSettings().realNamesOnList() && strippedNick != null && !strippedNick.equals(user.getName())) { diff --git a/Essentials/src/main/java/com/earth2me/essentials/Settings.java b/Essentials/src/main/java/com/earth2me/essentials/Settings.java index 8980aa97b3f..90bc2839f1f 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Settings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Settings.java @@ -1,5 +1,6 @@ package com.earth2me.essentials; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.api.IItemDb; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.config.ConfigurateUtil; @@ -8,7 +9,6 @@ import com.earth2me.essentials.signs.Signs; import com.earth2me.essentials.textreader.IText; import com.earth2me.essentials.textreader.SimpleTextInput; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.FormatUtil; import com.earth2me.essentials.utils.LocationUtil; @@ -18,8 +18,6 @@ import net.ess3.provider.SyncCommandsProvider; import net.essentialsx.api.v2.ChatType; import net.kyori.adventure.text.format.NamedTextColor; -import net.kyori.adventure.text.format.TextColor; -import net.kyori.adventure.text.minimessage.tag.Tag; import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.Material; @@ -46,6 +44,7 @@ import java.util.Locale; import java.util.Map; import java.util.Map.Entry; +import java.util.Objects; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Predicate; @@ -59,8 +58,8 @@ public class Settings implements net.ess3.api.ISettings { private static final BigDecimal DEFAULT_MAX_MONEY = new BigDecimal("10000000000000"); private static final BigDecimal DEFAULT_MIN_MONEY = new BigDecimal("-10000000000000"); - private static final Tag DEFAULT_PRIMARY_COLOR = Tag.styling(NamedTextColor.GOLD); - private static final Tag DEFAULT_SECONDARY_COLOR = Tag.styling(NamedTextColor.RED); + private static final String DEFAULT_PRIMARY_COLOR = NamedTextColor.GOLD.toString(); + private static final String DEFAULT_SECONDARY_COLOR = NamedTextColor.RED.toString(); private final transient EssentialsConfiguration config; private final transient IEssentials ess; private final transient AtomicInteger reloadCount = new AtomicInteger(0); @@ -149,8 +148,8 @@ public class Settings implements net.ess3.api.ISettings { private double maxProjectileSpeed; private boolean removeEffectsOnHeal; private Map worldAliases; - private Tag primaryColor = DEFAULT_PRIMARY_COLOR; - private Tag secondaryColor = DEFAULT_SECONDARY_COLOR; + private String primaryColor = DEFAULT_PRIMARY_COLOR; + private String secondaryColor = DEFAULT_SECONDARY_COLOR; private Set multiplierPerms; private BigDecimal defaultMultiplier; @@ -968,7 +967,7 @@ private List _getItemSpawnBlacklist() { final ItemStack iStack = itemDb.get(itemName); epItemSpwn.add(iStack.getType()); } catch (final Exception ex) { - ess.getLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("unknownItemInList", itemName, "item-spawn-blacklist")), ex); + ess.getLogger().log(Level.SEVERE, ess.getAdventureFacet().miniToLegacy(tlLiteral("unknownItemInList", itemName, "item-spawn-blacklist")), ex); } } return epItemSpwn; @@ -996,7 +995,7 @@ private List _getEnabledSigns() { try { newSigns.add(Signs.valueOf(signName).getSign()); } catch (final Exception ex) { - ess.getLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("unknownItemInList", signName, "enabledSigns"))); + ess.getLogger().log(Level.SEVERE, ess.getAdventureFacet().miniToLegacy(tlLiteral("unknownItemInList", signName, "enabledSigns"))); continue; } signsEnabled = true; @@ -1124,7 +1123,7 @@ public List getProtectList(final String configName) { } if (mat == null) { - ess.getLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("unknownItemInList", itemName, configName))); + ess.getLogger().log(Level.SEVERE, ess.getAdventureFacet().miniToLegacy(tlLiteral("unknownItemInList", itemName, configName))); } else { list.add(mat); } @@ -1872,7 +1871,7 @@ private List _getUnprotectedSign() { try { newSigns.add(Signs.valueOf(signName).getSign()); } catch (final Exception ex) { - ess.getLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("unknownItemInList", signName, "unprotected-sign-names"))); + ess.getLogger().log(Level.SEVERE, ess.getAdventureFacet().miniToLegacy(tlLiteral("unknownItemInList", signName, "unprotected-sign-names"))); } } return newSigns; @@ -2124,7 +2123,7 @@ public boolean showZeroBaltop() { public String getNickRegex() { return config.getString("allowed-nicks-regex", "^[a-zA-Z_0-9§]+$"); } - + @Override public BigDecimal getMultiplier(final User user) { BigDecimal multiplier = defaultMultiplier; @@ -2158,39 +2157,40 @@ public int getMaxItemLore() { } @Override - public Tag getPrimaryColor() { + public String getPrimaryColor() { return primaryColor; } - private Tag _getPrimaryColor() { + private String _getPrimaryColor() { final String color = config.getString("message-colors.primary", "#ffaa00"); - final TextColor textColor = _getTagColor(color); - return textColor != null ? Tag.styling(textColor) : DEFAULT_PRIMARY_COLOR; + final String textColor = _getTagColor(color); + return textColor != null ? textColor : DEFAULT_PRIMARY_COLOR; } @Override - public Tag getSecondaryColor() { + public String getSecondaryColor() { return secondaryColor; } - private Tag _getSecondaryColor() { + private String _getSecondaryColor() { final String color = config.getString("message-colors.secondary", "#ff5555"); - final TextColor textColor = _getTagColor(color); - return textColor != null ? Tag.styling(textColor) : DEFAULT_SECONDARY_COLOR; + final String textColor = _getTagColor(color); + return textColor != null ? textColor : DEFAULT_SECONDARY_COLOR; } - private TextColor _getTagColor(final String color) { + private String _getTagColor(final String color) { try { if (color.startsWith("#") && color.length() == 7 && NumberUtil.isHexadecimal(color.substring(1))) { - return TextColor.color(Color.fromRGB(Integer.decode(color)).asRGB()); + Color.fromRGB(Integer.decode(color)); + return color; } if (color.length() == 1) { - return AdventureUtil.fromChar(color.charAt(0)); + return Objects.requireNonNull(AdventureUtil.fromChar(color.charAt(0))).toString(); } - return NamedTextColor.NAMES.value(color.toLowerCase(Locale.ENGLISH)); - } catch (IllegalArgumentException ignored) { + return Objects.requireNonNull(NamedTextColor.NAMES.value(color.toLowerCase(Locale.ENGLISH))).toString(); + } catch (NullPointerException | IllegalArgumentException ignored) { } return null; } diff --git a/Essentials/src/main/java/com/earth2me/essentials/Trade.java b/Essentials/src/main/java/com/earth2me/essentials/Trade.java index 5168e2d76ca..52c5dc38746 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Trade.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Trade.java @@ -2,7 +2,7 @@ import com.earth2me.essentials.craftbukkit.Inventories; import com.earth2me.essentials.craftbukkit.SetExpFix; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.NumberUtil; import com.earth2me.essentials.utils.VersionUtil; import net.ess3.api.IEssentials; @@ -145,7 +145,7 @@ public static void log(final String type, final String subtype, final String eve sb.append(loc.getBlockY()).append(","); sb.append(loc.getBlockZ()).append(","); } - + if (endBalance == null) { sb.append(","); } else { diff --git a/Essentials/src/main/java/com/earth2me/essentials/User.java b/Essentials/src/main/java/com/earth2me/essentials/User.java index d529a96d101..355fbfc76f5 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/User.java +++ b/Essentials/src/main/java/com/earth2me/essentials/User.java @@ -1,12 +1,13 @@ package com.earth2me.essentials; +import com.earth2me.essentials.adventure.AdventureUtil; +import com.earth2me.essentials.adventure.ComponentHolder; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.craftbukkit.Inventories; import com.earth2me.essentials.economy.EconomyLayer; import com.earth2me.essentials.economy.EconomyLayers; import com.earth2me.essentials.messaging.IMessageRecipient; import com.earth2me.essentials.messaging.SimpleMessageRecipient; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.FormatUtil; @@ -24,8 +25,6 @@ import net.ess3.provider.PlayerLocaleProvider; import net.essentialsx.api.v2.events.TransactionEvent; import net.essentialsx.api.v2.services.mail.MailSender; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.ComponentLike; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Statistic; @@ -547,7 +546,7 @@ public void setDisplayNick() { @Override public String getDisplayName() { //noinspection ConstantConditions - return super.getBase().getDisplayName() == null || (ess.getSettings().hideDisplayNameInVanish() && isHidden()) ? super.getBase().getName() : super.getBase().getDisplayName(); + return super.getBase().getDisplayName() == null || ess.getSettings().hideDisplayNameInVanish() && isHidden() ? super.getBase().getName() : super.getBase().getDisplayName(); } @Override @@ -648,7 +647,7 @@ public void setAfk(final boolean set, final AfkStatusChangeEvent.Cause cause) { return; } - this.getBase().setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") || (set && ess.getSettings().sleepIgnoresAfkPlayers())); + this.getBase().setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") || set && ess.getSettings().sleepIgnoresAfkPlayers()); if (set && !isAfk()) { afkPosition = this.getLocation(); this.afkSince = System.currentTimeMillis(); @@ -840,7 +839,7 @@ public void checkActivity() { lastActivity = 0; final double kickTime = autoafkkick / 60.0; - this.getBase().kickPlayer(AdventureUtil.miniToLegacy(playerTl("autoAfkKickReason", kickTime))); + this.getBase().kickPlayer(ess.getAdventureFacet().miniToLegacy(playerTl("autoAfkKickReason", kickTime))); for (final User user : ess.getOnlineUsers()) { if (user.isAuthorized("essentials.kick.notify")) { @@ -1059,14 +1058,14 @@ public void sendMessage(final String message) { } @Override - public void sendComponent(ComponentLike component) { - ess.getBukkitAudience().player(base).sendMessage(component); + public void sendComponent(ComponentHolder component) { + ess.getAdventureFacet().send(base, component); } @Override - public Component tlComponent(String tlKey, Object... args) { + public ComponentHolder tlComponent(String tlKey, Object... args) { final String translation = playerTl(tlKey, args); - return AdventureUtil.miniMessage().deserialize(translation); + return ess.getAdventureFacet().deserializeMiniMessage(translation); } @Override @@ -1076,7 +1075,7 @@ public void sendTl(String tlKey, Object... args) { return; } - sendComponent(AdventureUtil.miniMessage().deserialize(translation)); + sendComponent(ess.getAdventureFacet().deserializeMiniMessage(translation)); } @Override diff --git a/Essentials/src/main/java/com/earth2me/essentials/Warps.java b/Essentials/src/main/java/com/earth2me/essentials/Warps.java index 37b8cc752c8..ea188382bed 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Warps.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Warps.java @@ -1,8 +1,8 @@ package com.earth2me.essentials; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.commands.WarpNotFoundException; import com.earth2me.essentials.config.EssentialsConfiguration; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.StringUtil; import net.ess3.api.InvalidNameException; import net.ess3.api.TranslatableException; @@ -134,7 +134,7 @@ public final void reloadConfig() { warpPoints.put(new StringIgnoreCase(name), conf); } } catch (final Exception ex) { - Essentials.getWrappedLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("loadWarpError", filename)), ex); + Essentials.getWrappedLogger().log(Level.WARNING, AdventureUtil.getAdventureFacet().miniToLegacy(tlLiteral("loadWarpError", filename)), ex); } } } diff --git a/Essentials/src/main/java/com/earth2me/essentials/adventure/AdventureUtil.java b/Essentials/src/main/java/com/earth2me/essentials/adventure/AdventureUtil.java new file mode 100644 index 00000000000..aaa5e559b77 --- /dev/null +++ b/Essentials/src/main/java/com/earth2me/essentials/adventure/AdventureUtil.java @@ -0,0 +1,62 @@ +package com.earth2me.essentials.adventure; + +import net.kyori.adventure.text.format.NamedTextColor; + +public final class AdventureUtil { + private static final String LOOKUP = "0123456789abcdefklmnor"; + private static final NamedTextColor[] COLORS = new NamedTextColor[]{NamedTextColor.BLACK, NamedTextColor.DARK_BLUE, NamedTextColor.DARK_GREEN, NamedTextColor.DARK_AQUA, NamedTextColor.DARK_RED, NamedTextColor.DARK_PURPLE, NamedTextColor.GOLD, NamedTextColor.GRAY, NamedTextColor.DARK_GRAY, NamedTextColor.BLUE, NamedTextColor.GREEN, NamedTextColor.AQUA, NamedTextColor.RED, NamedTextColor.LIGHT_PURPLE, NamedTextColor.YELLOW, NamedTextColor.WHITE}; + + private static AdventureFacet ADVENTURE_FACET_INSTANCE = null; + + private AdventureUtil() { + } + + public static void setAdventureFacet(AdventureFacet adventureFacetInstance) { + ADVENTURE_FACET_INSTANCE = adventureFacetInstance; + } + + public static AdventureFacet getAdventureFacet() { + return ADVENTURE_FACET_INSTANCE; + } + + /** + * Get the {@link NamedTextColor} from its associated section sign char. + */ + public static NamedTextColor fromChar(final char c) { + final int index = LOOKUP.indexOf(c); + if (index == -1 || index > 15) { + return null; + } + return COLORS[index]; + } + + public static String fromCharName(final char c) { + final NamedTextColor namedTextColor = fromChar(c); + if (namedTextColor == null) { + return null; + } + + return namedTextColor.toString(); + } + + /** + * Parameters for a translation message are not parsed for MiniMessage by default to avoid injection. If you want + * a parameter to be parsed for MiniMessage you must wrap it in a ParsedPlaceholder by using this method. + */ + public static ParsedPlaceholder parsed(final String literal) { + return new ParsedPlaceholder(literal); + } + + public static class ParsedPlaceholder { + private final String value; + + protected ParsedPlaceholder(String value) { + this.value = value; + } + + @Override + public String toString() { + return value; + } + } +} diff --git a/Essentials/src/main/java/com/earth2me/essentials/adventure/SpigotAdventureFacet.java b/Essentials/src/main/java/com/earth2me/essentials/adventure/SpigotAdventureFacet.java new file mode 100644 index 00000000000..42725166449 --- /dev/null +++ b/Essentials/src/main/java/com/earth2me/essentials/adventure/SpigotAdventureFacet.java @@ -0,0 +1,141 @@ +package com.earth2me.essentials.adventure; + +import com.earth2me.essentials.Essentials; +import com.earth2me.essentials.utils.NumberUtil; +import com.earth2me.essentials.utils.VersionUtil; +import net.ess3.provider.AbstractChatEvent; +import net.kyori.adventure.platform.bukkit.BukkitAudiences; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.flattener.ComponentFlattener; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextColor; +import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.tag.Tag; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import org.bukkit.Color; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.Locale; + +public class SpigotAdventureFacet implements AdventureFacet { + private static final LegacyComponentSerializer LEGACY_SERIALIZER; + private static final MiniMessage MINI_MESSAGE_NO_TAGS; + + static { + final LegacyComponentSerializer.Builder builder = LegacyComponentSerializer.builder() + .flattener(ComponentFlattener.basic()) + .extractUrls(AbstractChatEvent.URL_PATTERN) + .useUnusualXRepeatedCharacterHexFormat(); + if (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_16_1_R01)) { + builder.hexColors(); + } + LEGACY_SERIALIZER = builder.build(); + + MINI_MESSAGE_NO_TAGS = MiniMessage.builder().strict(true).build(); + } + + private final Essentials ess; + private final BukkitAudiences bukkitAudiences; + private final MiniMessage miniMessageInstance; + + public SpigotAdventureFacet(final Essentials ess) { + this.ess = ess.getSettings() == null ? null : ess; + bukkitAudiences = BukkitAudiences.create(ess); + + miniMessageInstance = MiniMessage.builder() + .tags(TagResolver.builder() + .resolvers(TagResolver.standard()) + .resolver(TagResolver.resolver("primary", supplyTag(true))) + .resolver(TagResolver.resolver("secondary", supplyTag(false))) + .build()) + .build(); + } + + private Tag supplyTag(final boolean primary) { + final String color = primary ? (ess != null ? ess.getSettings().getPrimaryColor() : "gold") : (ess != null ? ess.getSettings().getSecondaryColor() : "red"); + + final TextColor textColor; + if (color.startsWith("#") && color.length() == 7 && NumberUtil.isHexadecimal(color.substring(1))) { + textColor = TextColor.color(Color.fromRGB(Integer.decode(color)).asRGB()); + } else if (color.length() == 1) { + textColor = AdventureUtil.fromChar(color.charAt(0)); + } else { + textColor = NamedTextColor.NAMES.value(color.toLowerCase(Locale.ENGLISH)); + } + + return ess != null && textColor != null ? Tag.styling(textColor) : Tag.styling(primary ? NamedTextColor.GOLD : NamedTextColor.RED); + } + + @Override + public ComponentHolder deserializeMiniMessage(String message) { + return new ComponentHolder(miniMessageInstance.deserialize(message)); + } + + @Override + public String legacyToMini(String message) { + return legacyToMini(message, true); + } + + @Override + public void send(CommandSender sender, ComponentHolder component) { + bukkitAudiences.sender(sender).sendMessage((Component) component.getComponent()); + } + + @Override + public void send(Player player, ComponentHolder component) { + bukkitAudiences.player(player).sendMessage((Component) component.getComponent()); + } + + @Override + public String adventureToLegacy(ComponentHolder component) { + return adventureToLegacy((Component) component.getComponent()); + } + + private String adventureToLegacy(Component component) { + return LEGACY_SERIALIZER.serialize(component); + } + + @Override + public ComponentHolder legacyToAdventure(String message) { + return new ComponentHolder(LEGACY_SERIALIZER.deserialize(message)); + } + + @Override + public String legacyToMini(String message, boolean useCustomTags) { + final Component deserializedText = LEGACY_SERIALIZER.deserialize(message); + if (useCustomTags) { + return miniMessageInstance.serialize(deserializedText); + } else { + return MINI_MESSAGE_NO_TAGS.serialize(deserializedText); + } + } + + @Override + public String miniToLegacy(String message) { + return adventureToLegacy(miniMessageInstance.deserialize(message)); + } + + @Override + public String stripTags(String input) { + return miniMessageInstance.stripTags(input); + } + + @Override + public String escapeTags(String input) { + return miniMessageInstance.escapeTags(input); + } + + @Override + public ComponentHolder append(ComponentHolder base, ComponentHolder addition) { + final Component baseComponent = (Component) base.getComponent(); + final Component additionComponent = (Component) addition.getComponent(); + return new ComponentHolder(baseComponent.append(additionComponent)); + } + + @Override + public void close() { + bukkitAudiences.close(); + } +} diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbalance.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbalance.java index 4e94a735afd..edcfd5a7b9f 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbalance.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbalance.java @@ -2,7 +2,7 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.NumberUtil; import org.bukkit.Server; diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbalancetop.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbalancetop.java index f5915467fdc..e11f8a17abf 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbalancetop.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbalancetop.java @@ -4,7 +4,7 @@ import com.earth2me.essentials.User; import com.earth2me.essentials.textreader.SimpleTextInput; import com.earth2me.essentials.textreader.TextPager; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.NumberUtil; import com.earth2me.essentials.utils.VersionUtil; @@ -115,7 +115,7 @@ public void run() { future.thenRun(() -> { if (fresh) { final SimpleTextInput newCache = new SimpleTextInput(); - newCache.getLines().add(AdventureUtil.miniToLegacy(tlLiteral("serverTotal", AdventureUtil.parsed(NumberUtil.displayCurrency(ess.getBalanceTop().getBalanceTopTotal(), ess))))); + newCache.getLines().add(ess.getAdventureFacet().miniToLegacy(tlLiteral("serverTotal", AdventureUtil.parsed(NumberUtil.displayCurrency(ess.getBalanceTop().getBalanceTopTotal(), ess))))); int pos = 1; for (final Map.Entry entry : ess.getBalanceTop().getBalanceTopCache().entrySet()) { final BigDecimal balance = entry.getValue().getBalance(); @@ -141,7 +141,7 @@ public void run() { && balance.compareTo(ess.getSettings().getBaltopMinBalance()) >= 0 && // Skip playtime check for offline players on versions below 1.15.2 (playtime == -1 || playTimeSecs >= ess.getSettings().getBaltopMinPlaytime())) { - newCache.getLines().add(AdventureUtil.miniToLegacy(tlLiteral("balanceTopLine", pos, entry.getValue().getDisplayName(), AdventureUtil.parsed(NumberUtil.displayCurrency(balance, ess))))); + newCache.getLines().add(ess.getAdventureFacet().miniToLegacy(tlLiteral("balanceTopLine", pos, entry.getValue().getDisplayName(), AdventureUtil.parsed(NumberUtil.displayCurrency(balance, ess))))); } pos++; } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandban.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandban.java index 633140c6340..e55fc02faa0 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandban.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandban.java @@ -4,7 +4,6 @@ import com.earth2me.essentials.Console; import com.earth2me.essentials.OfflinePlayerStub; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import net.ess3.api.TranslatableException; import org.bukkit.BanList; @@ -55,8 +54,8 @@ public void run(final Server server, final CommandSource sender, final String co final String banDisplay = tlLiteral("banFormat", banReason, senderDisplayName); - user.getBase().kickPlayer(AdventureUtil.miniToLegacy(banDisplay)); - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("playerBanned", senderDisplayName, user.getName(), banDisplay))); + user.getBase().kickPlayer(ess.getAdventureFacet().miniToLegacy(banDisplay)); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("playerBanned", senderDisplayName, user.getName(), banDisplay))); if (nomatch) { sender.sendTl("userUnknown", user.getName()); diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbanip.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbanip.java index a9cc79ed1ad..450a44db470 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbanip.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbanip.java @@ -3,7 +3,6 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.Console; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import org.bukkit.BanList; import org.bukkit.Server; @@ -52,10 +51,10 @@ public void run(final Server server, final CommandSource sender, final String co banReason = tlLiteral("defaultBanReason"); } - final String banDisplay = AdventureUtil.miniToLegacy(tlLiteral("banFormat", banReason, senderDisplayName)); + final String banDisplay = ess.getAdventureFacet().miniToLegacy(tlLiteral("banFormat", banReason, senderDisplayName)); ess.getServer().getBanList(BanList.Type.IP).addBan(ipAddress, banReason, null, senderName); - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("playerBanIpAddress", senderDisplayName, ipAddress, banReason))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("playerBanIpAddress", senderDisplayName, ipAddress, banReason))); for (final Player player : ess.getServer().getOnlinePlayers()) { if (player.getAddress().getAddress().getHostAddress().equalsIgnoreCase(ipAddress)) { diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbroadcastworld.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbroadcastworld.java index 6d44ba2ecb5..bc8e31c8d95 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbroadcastworld.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandbroadcastworld.java @@ -2,7 +2,7 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import com.google.common.collect.Lists; import net.ess3.api.TranslatableException; @@ -54,7 +54,7 @@ private void sendBroadcast(final World world, final String name, final String me if (message.isEmpty()) { throw new NotEnoughArgumentsException(); } - ess.broadcastTl(null, u -> !u.getBase().getWorld().equals(world), true, "broadcast", FormatUtil.replaceFormat(message).replace("\\n", "\n"), AdventureUtil.parsed(AdventureUtil.legacyToMini(name))); + ess.broadcastTl(null, u -> !u.getBase().getWorld().equals(world), true, "broadcast", FormatUtil.replaceFormat(message).replace("\\n", "\n"), AdventureUtil.parsed(ess.getAdventureFacet().legacyToMini(name))); } @Override diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandeco.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandeco.java index d8576a475dd..d4b605edfc8 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandeco.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandeco.java @@ -3,7 +3,7 @@ import com.earth2me.essentials.ChargeException; import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.NumberUtil; import com.google.common.collect.Lists; import net.ess3.api.MaxMoneyException; diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandessentials.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandessentials.java index fa97ff2ff9f..5210bc22bb5 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandessentials.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandessentials.java @@ -3,11 +3,11 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.EssentialsUpgrade; import com.earth2me.essentials.User; +import com.earth2me.essentials.adventure.ComponentHolder; import com.earth2me.essentials.craftbukkit.Inventories; import com.earth2me.essentials.economy.EconomyLayer; import com.earth2me.essentials.economy.EconomyLayers; import com.earth2me.essentials.userstorage.ModernUserMap; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.CommandMapUtil; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.FloatUtil; @@ -24,8 +24,6 @@ import net.ess3.api.TranslatableException; import net.ess3.provider.KnownCommandsProvider; import net.ess3.provider.OnlineModeProvider; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -278,7 +276,7 @@ private void runDump(Server server, CommandSource sender, String commandLabel, S environment.addProperty("java-version", System.getProperty("java.version")); environment.addProperty("operating-system", System.getProperty("os.name")); environment.addProperty("uptime", DateUtil.formatDateDiff(ManagementFactory.getRuntimeMXBean().getStartTime())); - environment.addProperty("allocated-memory", (Runtime.getRuntime().totalMemory() / 1024 / 1024) + "MB"); + environment.addProperty("allocated-memory", Runtime.getRuntime().totalMemory() / 1024 / 1024 + "MB"); dump.add("environment", environment); final JsonObject essData = new JsonObject(); @@ -466,7 +464,7 @@ private void runDump(Server server, CommandSource sender, String commandLabel, S // pastes.dev doesn't support deletion keys //sender.sendTl("dumpDeleteKey", result.getDeletionKey()); if (sender.isPlayer()) { - ess.getLogger().info(AdventureUtil.miniToLegacy(tlLiteral("dumpConsoleUrl", dumpUrl))); + ess.getLogger().info(ess.getAdventureFacet().miniToLegacy(tlLiteral("dumpConsoleUrl", dumpUrl))); // pastes.dev doesn't support deletion keys //ess.getLogger().info(AdventureUtil.miniToLegacy(tlLiteral("dumpDeleteKey", result.getDeletionKey()))); } @@ -574,7 +572,7 @@ private void runCleanup(final Server server, final CommandSource sender, final S final int homeCount = user.getHomes().size(); final double moneyCount = user.getMoney().doubleValue(); - if ((lastLog == 0) || (timeDiff < milliDays) || (homeCount > homesArg) || (moneyCount > moneyArg)) { + if (lastLog == 0 || timeDiff < milliDays || homeCount > homesArg || moneyCount > moneyArg) { continue; } @@ -638,7 +636,7 @@ private void runHomes(final Server server, final CommandSource sender, final Str for (String homeName : user.getHomes()) { try { final Location home = user.getHome(homeName); - if (!filterByWorld || (home != null && home.getWorld() != null && home.getWorld().getName().equals(args[2]))) { + if (!filterByWorld || home != null && home.getWorld() != null && home.getWorld().getName().equals(args[2])) { user.delHome(homeName); } } catch (Exception e) { @@ -816,31 +814,31 @@ private void runVersion(final Server server, final CommandSource sender, final S switch (supportStatus) { case NMS_CLEANROOM: - sender.sendComponent(sender.tlComponent("serverUnsupportedCleanroom").color(NamedTextColor.DARK_RED)); + sender.sendTl("serverUnsupportedCleanroom"); break; case DANGEROUS_FORK: - sender.sendComponent(sender.tlComponent("serverUnsupportedDangerous").color(NamedTextColor.DARK_RED)); + sender.sendTl("serverUnsupportedDangerous"); break; case STUPID_PLUGIN: - sender.sendComponent(sender.tlComponent("serverUnsupportedDumbPlugins").color(NamedTextColor.DARK_RED)); + sender.sendTl("serverUnsupportedDumbPlugins"); break; case UNSTABLE: - sender.sendComponent(sender.tlComponent("serverUnsupportedMods").color(NamedTextColor.DARK_RED)); + sender.sendTl("serverUnsupportedMods"); break; case OUTDATED: - sender.sendComponent(sender.tlComponent("serverUnsupported").color(NamedTextColor.RED)); + sender.sendTl("serverUnsupported"); break; case LIMITED: - sender.sendComponent(sender.tlComponent("serverUnsupportedLimitedApi").color(NamedTextColor.RED)); + sender.sendTl("serverUnsupportedLimitedApi"); break; } if (VersionUtil.getSupportStatusClass() != null) { - sender.sendComponent(sender.tlComponent("serverUnsupportedClass").color(NamedTextColor.RED)); + sender.sendTl("serverUnsupportedClass"); } sender.sendTl("versionFetching"); ess.runTaskAsynchronously(() -> { - for (final Component component : ess.getUpdateChecker().getVersionMessages(true, true, sender)) { + for (final ComponentHolder component : ess.getUpdateChecker().getVersionMessages(true, true, sender)) { sender.sendComponent(component); } }); diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandhelp.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandhelp.java index d3cb65a827b..9c2cd2baf8a 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandhelp.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandhelp.java @@ -7,7 +7,7 @@ import com.earth2me.essentials.textreader.KeywordReplacer; import com.earth2me.essentials.textreader.TextInput; import com.earth2me.essentials.textreader.TextPager; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.NumberUtil; import net.ess3.provider.KnownCommandsProvider; import org.bukkit.Server; diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandhelpop.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandhelpop.java index 040ab186afa..41508378217 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandhelpop.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandhelpop.java @@ -4,7 +4,6 @@ import com.earth2me.essentials.Console; import com.earth2me.essentials.User; import com.earth2me.essentials.messaging.IMessageRecipient; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import net.ess3.api.IUser; import net.essentialsx.api.v2.events.HelpopMessageSendEvent; @@ -39,7 +38,7 @@ private void sendMessage(final IMessageRecipient from, final String[] args) thro } final String message = FormatUtil.stripFormat(getFinalArg(args, 0)); - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("helpOp", from.getDisplayName(), message))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("helpOp", from.getDisplayName(), message))); final List recipients = new ArrayList<>(); for (IUser user : ess.getOnlineUsers()) { diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandhome.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandhome.java index a8017dcbf8a..25aeaad721c 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandhome.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandhome.java @@ -3,7 +3,7 @@ import com.earth2me.essentials.OfflinePlayerStub; import com.earth2me.essentials.Trade; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.StringUtil; import io.papermc.lib.PaperLib; import net.ess3.api.TranslatableException; diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkick.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkick.java index 0efb0fd0754..51a3dfa14a9 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkick.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkick.java @@ -3,7 +3,6 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.Console; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import net.ess3.api.TranslatableException; import net.essentialsx.api.v2.events.UserKickEvent; @@ -39,7 +38,7 @@ public void run(final Server server, final CommandSource sender, final String co } } - String kickReason = args.length > 1 ? getFinalArg(args, 1) : AdventureUtil.miniToLegacy(tlLiteral("kickDefault")); + String kickReason = args.length > 1 ? getFinalArg(args, 1) : ess.getAdventureFacet().miniToLegacy(tlLiteral("kickDefault")); kickReason = FormatUtil.replaceFormat(kickReason.replace("\\n", "\n").replace("|", "\n")); final UserKickEvent event = new UserKickEvent(user, target, kickReason); @@ -55,7 +54,7 @@ public void run(final Server server, final CommandSource sender, final String co final String tlKey = "playerKicked"; final Object[] objects = {senderDisplayName, target.getName(), kickReason}; - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral(tlKey, objects))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral(tlKey, objects))); ess.broadcastTl(null, "essentials.kick.notify", tlKey, objects); } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkickall.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkickall.java index 6d53141afb8..7db1c9f3b74 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkickall.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkickall.java @@ -1,7 +1,6 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.CommandSource; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import org.bukkit.Server; import org.bukkit.entity.Player; @@ -15,7 +14,7 @@ public Commandkickall() { @Override public void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception { - String kickReason = args.length > 0 ? getFinalArg(args, 0) : AdventureUtil.miniToLegacy(tlLiteral("kickDefault")); + String kickReason = args.length > 0 ? getFinalArg(args, 0) : ess.getAdventureFacet().miniToLegacy(tlLiteral("kickDefault")); kickReason = FormatUtil.replaceFormat(kickReason.replace("\\n", "\n").replace("|", "\n")); for (final Player onlinePlayer : ess.getOnlinePlayers()) { diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkit.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkit.java index 1394a3c5e86..7fa230a4246 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkit.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkit.java @@ -3,7 +3,7 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.Kit; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.StringUtil; import net.ess3.api.TranslatableException; import org.bukkit.Server; diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandlist.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandlist.java index 254f48ec240..b4cd4659a3c 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandlist.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandlist.java @@ -3,7 +3,6 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.PlayerList; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; import org.bukkit.Server; import java.util.ArrayList; @@ -24,11 +23,11 @@ public void run(final Server server, final CommandSource sender, final String co user = ess.getUser(sender.getPlayer()); showHidden = user.isAuthorized("essentials.list.hidden") || user.canInteractVanished(); } - sender.sendComponent(AdventureUtil.miniMessage().deserialize(PlayerList.listSummary(ess, user, showHidden))); + sender.sendComponent(ess.getAdventureFacet().deserializeMiniMessage(PlayerList.listSummary(ess, user, showHidden))); final Map> playerList = PlayerList.getPlayerLists(ess, user, showHidden); if (args.length > 0) { - sender.sendComponent(AdventureUtil.miniMessage().deserialize(PlayerList.listGroupUsers(ess, playerList, args[0].toLowerCase()))); + sender.sendComponent(ess.getAdventureFacet().deserializeMiniMessage(PlayerList.listGroupUsers(ess, playerList, args[0].toLowerCase()))); } else { sendGroupedList(sender, commandLabel, playerList); } @@ -37,7 +36,7 @@ public void run(final Server server, final CommandSource sender, final String co // Output the standard /list output, when no group is specified private void sendGroupedList(final CommandSource sender, final String commandLabel, final Map> playerList) { for (final String str : PlayerList.prepareGroupedList(ess, sender, commandLabel, playerList)) { - sender.sendComponent(AdventureUtil.miniMessage().deserialize(str)); + sender.sendComponent(ess.getAdventureFacet().deserializeMiniMessage(str)); } } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandmute.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandmute.java index 53d1b21755e..724f7b5be74 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandmute.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandmute.java @@ -3,7 +3,6 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.OfflinePlayerStub; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.DateUtil; import net.ess3.api.TranslatableException; import net.ess3.api.events.MuteStatusChangeEvent; @@ -117,7 +116,7 @@ public void run(final Server server, final CommandSource sender, final String co objects = new Object[]{sender.getSender().getName(), user.getName(), muteTime}; } - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral(tlKey, objects))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral(tlKey, objects))); ess.broadcastTl(null, "essentials.mute.notify", tlKey, objects); } else { sender.sendTl("unmutedPlayer", user.getDisplayName()); diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnear.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnear.java index 34bc3aaa9c0..0f50f505caa 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnear.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnear.java @@ -2,7 +2,7 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.google.common.collect.Lists; import org.bukkit.Location; import org.bukkit.Server; diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandpay.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandpay.java index 3f7d353af6f..09461f28a2f 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandpay.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandpay.java @@ -3,7 +3,7 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.Trade; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.NumberUtil; import com.earth2me.essentials.utils.StringUtil; import com.google.common.collect.Lists; diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandplaytime.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandplaytime.java index 7ef841f3e8a..9a6f95a69bb 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandplaytime.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandplaytime.java @@ -2,7 +2,7 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.VersionUtil; @@ -28,7 +28,7 @@ protected void run(Server server, CommandSource sender, String commandLabel, Str String displayName; long playtime; final String key; - + if (args.length > 0 && sender.isAuthorized("essentials.playtime.others")) { try { final IUser user = getPlayer(server, sender, args, 0); @@ -57,9 +57,9 @@ protected void run(Server server, CommandSource sender, String commandLabel, Str } final long playtimeMs = System.currentTimeMillis() - (playtime * 50L); - sender.sendTl(key, DateUtil.formatDateDiff(playtimeMs), AdventureUtil.parsed(AdventureUtil.legacyToMini(displayName))); + sender.sendTl(key, DateUtil.formatDateDiff(playtimeMs), AdventureUtil.parsed(ess.getAdventureFacet().legacyToMini(displayName))); } - + @Override protected List getTabCompleteOptions(final Server server, final CommandSource sender, final String commandLabel, final String[] args) { if (args.length == 1 && sender.isAuthorized("essentials.playtime.others")) { @@ -68,5 +68,5 @@ protected List getTabCompleteOptions(final Server server, final CommandS return Collections.emptyList(); } } - + } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandptime.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandptime.java index 9e66b0e2a5f..70fde10e44f 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandptime.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandptime.java @@ -3,7 +3,7 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.IUser; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.DescParseTickFormat; import com.google.common.collect.Lists; import org.bukkit.Server; diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandrecipe.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandrecipe.java index 1baea775e70..801b339e03d 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandrecipe.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandrecipe.java @@ -2,8 +2,8 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.craftbukkit.Inventories; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.NumberUtil; import com.earth2me.essentials.utils.VersionUtil; @@ -62,7 +62,7 @@ public void run(final Server server, final CommandSource sender, final String co if (!sender.isPlayer()) { throw new TranslatableException("consoleCannotUseCommand"); } - + itemType = Inventories.getItemInHand(sender.getPlayer()); } else { itemType = ess.getItemDb().get(args[0]); @@ -95,7 +95,7 @@ public void run(final Server server, final CommandSource sender, final String co } else if (selectedRecipe instanceof ShapedRecipe) { shapedRecipe(sender, (ShapedRecipe) selectedRecipe, sender.isPlayer()); } else if (selectedRecipe instanceof ShapelessRecipe) { - if (recipesOfType.size() == 1 && (itemType.getType() == FIREWORK_ROCKET)) { + if (recipesOfType.size() == 1 && itemType.getType() == FIREWORK_ROCKET) { final ShapelessRecipe shapelessRecipe = new ShapelessRecipe(itemType); shapelessRecipe.addIngredient(GUNPOWDER); shapelessRecipe.addIngredient(Material.PAPER); diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandseen.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandseen.java index 6827650c5ef..ea04b4d8924 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandseen.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandseen.java @@ -3,7 +3,7 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; import com.earth2me.essentials.craftbukkit.BanLookup; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.CommonPlaceholders; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.FormatUtil; @@ -197,7 +197,7 @@ private void seenOffline(final CommandSource sender, final User user, final bool } private void seenIP(final CommandSource sender, final String ipAddress, final String display) { - sender.sendTl("runningPlayerMatch", AdventureUtil.parsed(AdventureUtil.legacyToMini(display))); + sender.sendTl("runningPlayerMatch", AdventureUtil.parsed(ess.getAdventureFacet().legacyToMini(display))); ess.runTaskAsynchronously(() -> { final List matches = new ArrayList<>(); diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandsell.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandsell.java index 9a9ca1cf603..c378f139b2a 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandsell.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandsell.java @@ -3,7 +3,7 @@ import com.earth2me.essentials.Trade; import com.earth2me.essentials.User; import com.earth2me.essentials.craftbukkit.Inventories; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.NumberUtil; import com.google.common.collect.Lists; import net.ess3.api.TranslatableException; @@ -123,7 +123,7 @@ private BigDecimal sellItem(final User user, final ItemStack is, final String[] final String typeName = is.getType().toString().toLowerCase(Locale.ENGLISH); final AdventureUtil.ParsedPlaceholder worthDisplay = AdventureUtil.parsed(NumberUtil.displayCurrency(worth, ess)); user.sendTl("itemSold", AdventureUtil.parsed(NumberUtil.displayCurrency(result, ess)), amount, typeName, worthDisplay); - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("itemSoldConsole", user.getName(), typeName, AdventureUtil.miniToLegacy(NumberUtil.displayCurrency(result, ess)), amount, AdventureUtil.miniToLegacy(worthDisplay.toString()), user.getDisplayName()))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("itemSoldConsole", user.getName(), typeName, ess.getAdventureFacet().miniToLegacy(NumberUtil.displayCurrency(result, ess)), amount, ess.getAdventureFacet().miniToLegacy(worthDisplay.toString()), user.getDisplayName()))); return result; } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandspeed.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandspeed.java index 6eb6975ad46..9fb088ee693 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandspeed.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandspeed.java @@ -2,7 +2,7 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.FloatUtil; import org.bukkit.Server; import org.bukkit.entity.Player; diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtempban.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtempban.java index fde30d244ce..5353049a0c4 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtempban.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtempban.java @@ -4,7 +4,6 @@ import com.earth2me.essentials.Console; import com.earth2me.essentials.IUser; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.FormatUtil; import org.bukkit.BanList; @@ -55,9 +54,9 @@ public void run(final Server server, final CommandSource sender, final String co final String expiry = DateUtil.formatDateDiff(banTimestamp); final String banDisplay = user.playerTl("tempBanned", expiry, senderDisplayName, banReason); - user.getBase().kickPlayer(AdventureUtil.miniToLegacy(banDisplay)); + user.getBase().kickPlayer(ess.getAdventureFacet().miniToLegacy(banDisplay)); - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("playerTempBanned", senderDisplayName, user.getName(), expiry, banReason))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("playerTempBanned", senderDisplayName, user.getName(), expiry, banReason))); ess.broadcastTl((IUser) null, "essentials.ban.notify", "playerTempBanned", senderDisplayName, user.getName(), expiry, banReason); } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtempbanip.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtempbanip.java index e3105dfa94f..f7544465fff 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtempbanip.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtempbanip.java @@ -3,7 +3,6 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.Console; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.FormatUtil; import org.bukkit.BanList; @@ -63,7 +62,7 @@ public void run(final Server server, final CommandSource sender, final String co ess.getServer().getBanList(BanList.Type.IP).addBan(ipAddress, banReason, new Date(banTimestamp), senderName); - final String banDisplay = AdventureUtil.miniToLegacy(tlLiteral("banFormat", banReason, senderDisplayName)); + final String banDisplay = ess.getAdventureFacet().miniToLegacy(tlLiteral("banFormat", banReason, senderDisplayName)); for (final Player player : ess.getServer().getOnlinePlayers()) { if (player.getAddress().getAddress().getHostAddress().equalsIgnoreCase(ipAddress)) { player.kickPlayer(banDisplay); @@ -72,7 +71,7 @@ public void run(final Server server, final CommandSource sender, final String co final String tlKey = "playerTempBanIpAddress"; final Object[] objects = {senderDisplayName, ipAddress, banReason, DateUtil.formatDateDiff(banTimestamp), banReason}; - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral(tlKey, objects))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral(tlKey, objects))); ess.broadcastTl(null, "essentials.banip.notify", tlKey, objects); } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtime.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtime.java index 4e85d7b4c22..f376bdb8719 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtime.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtime.java @@ -1,7 +1,7 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.CommandSource; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.DescParseTickFormat; import com.earth2me.essentials.utils.NumberUtil; import com.google.common.collect.Lists; @@ -96,7 +96,7 @@ public void run(final Server server, final CommandSource sender, final String co private void getWorldsTime(final CommandSource sender, final Collection worlds) { if (worlds.size() == 1) { final Iterator iter = worlds.iterator(); - sender.sendComponent(AdventureUtil.miniMessage().deserialize(DescParseTickFormat.format(iter.next().getTime()))); + sender.sendComponent(ess.getAdventureFacet().deserializeMiniMessage(DescParseTickFormat.format(iter.next().getTime()))); return; } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtogglejail.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtogglejail.java index ce777f67f72..4872ae411b0 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtogglejail.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandtogglejail.java @@ -3,7 +3,6 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.ISettings; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.EnumUtil; import com.google.common.collect.Iterables; @@ -98,7 +97,7 @@ public void run(final Server server, final CommandSource sender, final String co sender.sendTl("playerJailed", player.getName()); } - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral(tlKey, objects))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral(tlKey, objects))); ess.broadcastTl(null, "essentials.jail.notify", tlKey, objects); } }); @@ -126,7 +125,7 @@ public void run(final Server server, final CommandSource sender, final String co final String tlKey = "jailNotifySentenceExtended"; final Object[] objects = new Object[]{player.getName(), DateUtil.formatDateDiff(displayTimeDiff), sender.getSender().getName()}; - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral(tlKey, objects))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral(tlKey, objects))); ess.broadcastTl(null, "essentials.jail.notify", tlKey, objects); return; } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandunban.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandunban.java index fb5af288832..90e6c5185cc 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandunban.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandunban.java @@ -4,7 +4,6 @@ import com.earth2me.essentials.Console; import com.earth2me.essentials.IUser; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; import net.ess3.api.TranslatableException; import org.bukkit.BanList; import org.bukkit.OfflinePlayer; @@ -40,7 +39,7 @@ public void run(final Server server, final CommandSource sender, final String co } final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.DISPLAY_NAME; - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("playerUnbanned", senderDisplayName, name))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("playerUnbanned", senderDisplayName, name))); ess.broadcastTl((IUser) null, "essentials.ban.notify", "playerUnbanned", senderDisplayName, name); } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandunbanip.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandunbanip.java index 4316d013a1b..443c5831b5a 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandunbanip.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandunbanip.java @@ -4,7 +4,6 @@ import com.earth2me.essentials.Console; import com.earth2me.essentials.IUser; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import org.bukkit.BanList; import org.bukkit.Server; @@ -42,7 +41,7 @@ public void run(final Server server, final CommandSource sender, final String co ess.getServer().getBanList(BanList.Type.IP).pardon(ipAddress); final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.DISPLAY_NAME; - ess.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("playerUnbanIpAddress", senderDisplayName, ipAddress))); + ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("playerUnbanIpAddress", senderDisplayName, ipAddress))); ess.broadcastTl((IUser) null, "essentials.banip.notify", "playerUnbanIpAddress", senderDisplayName, ipAddress); } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandunlimited.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandunlimited.java index 448934aa841..c47c0f91ffe 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandunlimited.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandunlimited.java @@ -2,7 +2,6 @@ import com.earth2me.essentials.User; import com.earth2me.essentials.craftbukkit.Inventories; -import com.earth2me.essentials.utils.AdventureUtil; import net.ess3.api.TranslatableException; import org.bukkit.Material; import org.bukkit.Server; @@ -30,7 +29,7 @@ public void run(final Server server, final User user, final String commandLabel, } if (args[0].equalsIgnoreCase("list")) { - user.sendComponent(AdventureUtil.miniMessage().deserialize(getList(user, target))); + user.sendComponent(ess.getAdventureFacet().deserializeMiniMessage(getList(user, target))); } else if (args[0].equalsIgnoreCase("clear")) { for (final Material m : new HashSet<>(target.getUnlimited())) { if (m == null) { diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandwhois.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandwhois.java index b3eb0ca1877..8eb4a2c2619 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandwhois.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandwhois.java @@ -3,7 +3,7 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; import com.earth2me.essentials.craftbukkit.SetExpFix; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.CommonPlaceholders; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.EnumUtil; diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandworth.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandworth.java index f9f982269b4..32cf4ec9e10 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandworth.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandworth.java @@ -2,7 +2,7 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.MaterialUtil; import com.earth2me.essentials.utils.NumberUtil; import com.google.common.collect.Lists; diff --git a/Essentials/src/main/java/com/earth2me/essentials/config/EssentialsConfiguration.java b/Essentials/src/main/java/com/earth2me/essentials/config/EssentialsConfiguration.java index 95d97ce9565..c799a9066bc 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/config/EssentialsConfiguration.java +++ b/Essentials/src/main/java/com/earth2me/essentials/config/EssentialsConfiguration.java @@ -1,6 +1,7 @@ package com.earth2me.essentials.config; import com.earth2me.essentials.Essentials; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.config.annotations.DeleteIfIncomplete; import com.earth2me.essentials.config.annotations.DeleteOnEmpty; import com.earth2me.essentials.config.entities.CommandCooldown; @@ -12,7 +13,6 @@ import com.earth2me.essentials.config.serializers.LocationTypeSerializer; import com.earth2me.essentials.config.serializers.MailMessageSerializer; import com.earth2me.essentials.config.serializers.MaterialTypeSerializer; -import com.earth2me.essentials.utils.AdventureUtil; import net.essentialsx.api.v2.services.mail.MailMessage; import org.bukkit.Location; import org.bukkit.Material; @@ -367,7 +367,7 @@ public synchronized void load() { if (configFile.getParentFile() != null && !configFile.getParentFile().exists()) { if (!configFile.getParentFile().mkdirs()) { - Essentials.getWrappedLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("failedToCreateConfig", configFile.toString()))); + Essentials.getWrappedLogger().log(Level.SEVERE, AdventureUtil.getAdventureFacet().miniToLegacy(tlLiteral("failedToCreateConfig", configFile.toString()))); return; } } @@ -379,10 +379,10 @@ public synchronized void load() { convertAltFile(); } else if (templateName != null) { try (final InputStream is = resourceClass.getResourceAsStream(templateName)) { - Essentials.getWrappedLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("creatingConfigFromTemplate", configFile.toString()))); + Essentials.getWrappedLogger().log(Level.INFO, AdventureUtil.getAdventureFacet().miniToLegacy(tlLiteral("creatingConfigFromTemplate", configFile.toString()))); Files.copy(is, configFile.toPath()); } catch (IOException e) { - Essentials.getWrappedLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("failedToWriteConfig", configFile.toString())), e); + Essentials.getWrappedLogger().log(Level.SEVERE, AdventureUtil.getAdventureFacet().miniToLegacy(tlLiteral("failedToWriteConfig", configFile.toString())), e); } } } diff --git a/Essentials/src/main/java/com/earth2me/essentials/economy/vault/VaultEconomyProvider.java b/Essentials/src/main/java/com/earth2me/essentials/economy/vault/VaultEconomyProvider.java index 091c9a2f320..f6a0e40b7d0 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/economy/vault/VaultEconomyProvider.java +++ b/Essentials/src/main/java/com/earth2me/essentials/economy/vault/VaultEconomyProvider.java @@ -5,7 +5,6 @@ import com.earth2me.essentials.api.NoLoanPermittedException; import com.earth2me.essentials.api.UserDoesNotExistException; import com.earth2me.essentials.config.EssentialsUserConfiguration; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.NumberUtil; import com.earth2me.essentials.utils.StringUtil; import com.google.common.base.Charsets; @@ -62,7 +61,7 @@ public int fractionalDigits() { @Override public String format(double amount) { - return AdventureUtil.miniToLegacy(NumberUtil.displayCurrency(BigDecimal.valueOf(amount), ess)); + return ess.getAdventureFacet().miniToLegacy(NumberUtil.displayCurrency(BigDecimal.valueOf(amount), ess)); } @Override diff --git a/Essentials/src/main/java/com/earth2me/essentials/messaging/SimpleMessageRecipient.java b/Essentials/src/main/java/com/earth2me/essentials/messaging/SimpleMessageRecipient.java index 6c73641089b..53b0b4bec52 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/messaging/SimpleMessageRecipient.java +++ b/Essentials/src/main/java/com/earth2me/essentials/messaging/SimpleMessageRecipient.java @@ -3,7 +3,7 @@ import com.earth2me.essentials.IEssentials; import com.earth2me.essentials.IUser; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import net.ess3.api.events.PrivateMessagePreSendEvent; import net.ess3.api.events.PrivateMessageSentEvent; import org.bukkit.entity.Player; @@ -129,9 +129,9 @@ public MessageResponse sendMessage(final IMessageRecipient recipient, String mes && !onlineUser.equals(senderUser) && !onlineUser.equals(recipient)) { if (senderUser.isMuted() && ess.getSettings().getSocialSpyListenMutedPlayers()) { - onlineUser.sendComponent(AdventureUtil.miniMessage().deserialize(tlSender("socialSpyMutedPrefix") + tlLiteral("socialSpyMsgFormat", senderName, recipientName, message))); + onlineUser.sendComponent(ess.getAdventureFacet().deserializeMiniMessage(tlSender("socialSpyMutedPrefix") + tlLiteral("socialSpyMsgFormat", senderName, recipientName, message))); } else { - onlineUser.sendComponent(AdventureUtil.miniMessage().deserialize(tlLiteral("socialSpyPrefix") + tlLiteral("socialSpyMsgFormat", senderName, recipientName, message))); + onlineUser.sendComponent(ess.getAdventureFacet().deserializeMiniMessage(tlLiteral("socialSpyPrefix") + tlLiteral("socialSpyMsgFormat", senderName, recipientName, message))); } } } diff --git a/Essentials/src/main/java/com/earth2me/essentials/signs/EssentialsSign.java b/Essentials/src/main/java/com/earth2me/essentials/signs/EssentialsSign.java index 7e6e1bc3cd0..4301930bf0e 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/signs/EssentialsSign.java +++ b/Essentials/src/main/java/com/earth2me/essentials/signs/EssentialsSign.java @@ -5,7 +5,7 @@ import com.earth2me.essentials.MetaItemStack; import com.earth2me.essentials.Trade; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import com.earth2me.essentials.utils.MaterialUtil; import com.earth2me.essentials.utils.NumberUtil; @@ -106,7 +106,7 @@ protected final boolean onSignCreate(final SignChangeEvent event, final IEssenti // they won't change it to §1[Signname] return true; } - sign.setLine(0, AdventureUtil.miniToLegacy(tlLiteral("signFormatFail", this.signName))); + sign.setLine(0, ess.getAdventureFacet().miniToLegacy(tlLiteral("signFormatFail", this.signName))); final SignCreateEvent signEvent = new SignCreateEvent(sign, this, user); ess.getServer().getPluginManager().callEvent(signEvent); @@ -140,7 +140,7 @@ public String getSuccessName(final IEssentials ess) { } public String getSuccessName() { - String successName = AdventureUtil.miniToLegacy(tlLiteral("signFormatSuccess", this.signName)); + String successName = AdventureUtil.getAdventureFacet().miniToLegacy(tlLiteral("signFormatSuccess", this.signName)); if (successName.isEmpty() || !successName.contains(this.signName)) { // Set to null to cause an error in place of no functionality. This makes an error obvious as opposed to leaving users baffled by lack of // functionality. @@ -150,7 +150,7 @@ public String getSuccessName() { } public String getTemplateName() { - return AdventureUtil.miniToLegacy(tlLiteral("signFormatTemplate", this.signName)); + return AdventureUtil.getAdventureFacet().miniToLegacy(tlLiteral("signFormatTemplate", this.signName)); } public String getName() { diff --git a/Essentials/src/main/java/com/earth2me/essentials/signs/SignBalance.java b/Essentials/src/main/java/com/earth2me/essentials/signs/SignBalance.java index aac87448fd4..b905afe2e9b 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/signs/SignBalance.java +++ b/Essentials/src/main/java/com/earth2me/essentials/signs/SignBalance.java @@ -1,7 +1,7 @@ package com.earth2me.essentials.signs; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.NumberUtil; import net.ess3.api.IEssentials; diff --git a/Essentials/src/main/java/com/earth2me/essentials/textreader/HelpInput.java b/Essentials/src/main/java/com/earth2me/essentials/textreader/HelpInput.java index d37a0a636fa..da61b8e3fd0 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/textreader/HelpInput.java +++ b/Essentials/src/main/java/com/earth2me/essentials/textreader/HelpInput.java @@ -1,7 +1,6 @@ package com.earth2me.essentials.textreader; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import net.ess3.api.IEssentials; @@ -29,7 +28,7 @@ public HelpInput(final User user, final String match, final IEssentials ess) { String pluginName = ""; String pluginNameLow = ""; if (!match.equalsIgnoreCase("")) { - lines.add(AdventureUtil.miniToLegacy(user.playerTl("helpMatching", match))); + lines.add(ess.getAdventureFacet().miniToLegacy(user.playerTl("helpMatching", match))); } final Multimap pluginCommands = HashMultimap.create(); @@ -51,7 +50,7 @@ public HelpInput(final User user, final String match, final IEssentials ess) { if (pluginNameLow.equals(match)) { lines.clear(); newLines.clear(); - lines.add(AdventureUtil.miniToLegacy(user.playerTl("helpFrom", p.getDescription().getName()))); + lines.add(ess.getAdventureFacet().miniToLegacy(user.playerTl("helpFrom", p.getDescription().getName()))); } final boolean isOnWhitelist = user.isAuthorized("essentials.help." + pluginNameLow); @@ -70,7 +69,7 @@ public HelpInput(final User user, final String match, final IEssentials ess) { if (pluginNameLow.contains("essentials")) { final String node = "essentials." + commandName; if (!ess.getSettings().isCommandDisabled(commandName) && user.isAuthorized(node)) { - pluginLines.add(AdventureUtil.miniToLegacy(user.playerTl("helpLine", commandName, commandDescription))); + pluginLines.add(ess.getAdventureFacet().miniToLegacy(user.playerTl("helpLine", commandName, commandDescription))); } } else { if (ess.getSettings().showNonEssCommandsInHelp()) { @@ -83,7 +82,7 @@ public HelpInput(final User user, final String match, final IEssentials ess) { } if (isOnWhitelist || user.isAuthorized("essentials.help." + pluginNameLow + "." + commandName)) { - pluginLines.add(AdventureUtil.miniToLegacy(user.playerTl("helpLine", commandName, commandDescription))); + pluginLines.add(ess.getAdventureFacet().miniToLegacy(user.playerTl("helpLine", commandName, commandDescription))); } else if (permissions.length != 0) { boolean enabled = false; @@ -95,11 +94,11 @@ public HelpInput(final User user, final String match, final IEssentials ess) { } if (enabled) { - pluginLines.add(AdventureUtil.miniToLegacy(user.playerTl("helpLine", commandName, commandDescription))); + pluginLines.add(ess.getAdventureFacet().miniToLegacy(user.playerTl("helpLine", commandName, commandDescription))); } } else { if (!ess.getSettings().hidePermissionlessHelp()) { - pluginLines.add(AdventureUtil.miniToLegacy(user.playerTl("helpLine", commandName, commandDescription))); + pluginLines.add(ess.getAdventureFacet().miniToLegacy(user.playerTl("helpLine", commandName, commandDescription))); } } } @@ -113,13 +112,13 @@ public HelpInput(final User user, final String match, final IEssentials ess) { break; } if (match.equalsIgnoreCase("")) { - lines.add(AdventureUtil.miniToLegacy(user.playerTl("helpPlugin", pluginName, pluginNameLow))); + lines.add(ess.getAdventureFacet().miniToLegacy(user.playerTl("helpPlugin", pluginName, pluginNameLow))); } } } catch (final NullPointerException ignored) { } catch (final Exception ex) { if (!reported) { - ess.getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(user.playerTl("commandHelpFailedForPlugin", pluginNameLow)), ex); + ess.getLogger().log(Level.WARNING, ess.getAdventureFacet().miniToLegacy(user.playerTl("commandHelpFailedForPlugin", pluginNameLow)), ex); } reported = true; } diff --git a/Essentials/src/main/java/com/earth2me/essentials/textreader/KeywordReplacer.java b/Essentials/src/main/java/com/earth2me/essentials/textreader/KeywordReplacer.java index e61c5ced543..34896e6e71f 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/textreader/KeywordReplacer.java +++ b/Essentials/src/main/java/com/earth2me/essentials/textreader/KeywordReplacer.java @@ -4,7 +4,6 @@ import com.earth2me.essentials.ExecuteTimer; import com.earth2me.essentials.PlayerList; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.DescParseTickFormat; import com.earth2me.essentials.utils.EnumUtil; @@ -228,7 +227,7 @@ private String replaceLine(String line, final String fullMatch, final String[] m break; case BALANCE: if (user != null) { - replacer = AdventureUtil.miniToLegacy(NumberUtil.displayCurrency(user.getMoney(), ess)); + replacer = ess.getAdventureFacet().miniToLegacy(NumberUtil.displayCurrency(user.getMoney(), ess)); } break; case MAILS: diff --git a/Essentials/src/main/java/com/earth2me/essentials/updatecheck/UpdateChecker.java b/Essentials/src/main/java/com/earth2me/essentials/updatecheck/UpdateChecker.java index 7476356bbc8..0f596a1e3f6 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/updatecheck/UpdateChecker.java +++ b/Essentials/src/main/java/com/earth2me/essentials/updatecheck/UpdateChecker.java @@ -2,10 +2,10 @@ import com.earth2me.essentials.CommandSource; import com.earth2me.essentials.Essentials; +import com.earth2me.essentials.adventure.ComponentHolder; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.JsonSyntaxException; -import net.kyori.adventure.text.Component; import java.io.BufferedReader; import java.io.IOException; @@ -71,7 +71,7 @@ public boolean isDevBuild() { } public CompletableFuture fetchLatestDev() { - if (cachedDev == null || ((System.currentTimeMillis() - lastFetchTime) > 1800000L)) { + if (cachedDev == null || System.currentTimeMillis() - lastFetchTime > 1800000L) { if (pendingDevFuture != null) { return pendingDevFuture; } @@ -87,7 +87,7 @@ public CompletableFuture fetchLatestDev() { } public CompletableFuture fetchLatestRelease() { - if (cachedRelease == null || ((System.currentTimeMillis() - lastFetchTime) > 1800000L)) { + if (cachedRelease == null || System.currentTimeMillis() - lastFetchTime > 1800000L) { if (pendingReleaseFuture != null) { return pendingReleaseFuture; } @@ -206,56 +206,56 @@ private RemoteVersion fetchDistance(final String head, final String hash) { } } - public Component[] getVersionMessages(final boolean sendLatestMessage, final boolean verboseErrors, final CommandSource source) { + public ComponentHolder[] getVersionMessages(final boolean sendLatestMessage, final boolean verboseErrors, final CommandSource source) { if (!ess.getSettings().isUpdateCheckEnabled()) { - return new Component[] {source.tlComponent("versionCheckDisabled")}; + return new ComponentHolder[] {source.tlComponent("versionCheckDisabled")}; } if (this.isDevBuild()) { final RemoteVersion latestDev = this.fetchLatestDev().join(); switch (latestDev.getBranchStatus()) { case IDENTICAL: { - return sendLatestMessage ? new Component[] {source.tlComponent("versionDevLatest")} : new Component[] {}; + return sendLatestMessage ? new ComponentHolder[] {source.tlComponent("versionDevLatest")} : new ComponentHolder[] {}; } case BEHIND: { - return new Component[] {source.tlComponent("versionDevBehind", latestDev.getDistance()), + return new ComponentHolder[] {source.tlComponent("versionDevBehind", latestDev.getDistance()), source.tlComponent("versionReleaseNewLink", "https://essentialsx.net/downloads.html")}; } case AHEAD: case DIVERGED: { - return new Component[] {source.tlComponent(latestDev.getDistance() == 0 ? "versionDevDivergedLatest" : "versionDevDiverged", latestDev.getDistance()), + return new ComponentHolder[] {source.tlComponent(latestDev.getDistance() == 0 ? "versionDevDivergedLatest" : "versionDevDiverged", latestDev.getDistance()), source.tlComponent("versionDevDivergedBranch", this.getVersionBranch()) }; } case UNKNOWN: { - return verboseErrors ? new Component[] {source.tlComponent("versionCustom", this.getBuildInfo())} : new Component[] {}; + return verboseErrors ? new ComponentHolder[] {source.tlComponent("versionCustom", this.getBuildInfo())} : new ComponentHolder[] {}; } case ERROR: { - return new Component[] {source.tlComponent(verboseErrors ? "versionError" : "versionErrorPlayer", this.getBuildInfo())}; + return new ComponentHolder[] {source.tlComponent(verboseErrors ? "versionError" : "versionErrorPlayer", this.getBuildInfo())}; } default: { - return new Component[] {}; + return new ComponentHolder[] {}; } } } else { final RemoteVersion latestRelease = this.fetchLatestRelease().join(); switch (latestRelease.getBranchStatus()) { case IDENTICAL: { - return sendLatestMessage ? new Component[] {source.tlComponent("versionReleaseLatest")} : new Component[] {}; + return sendLatestMessage ? new ComponentHolder[] {source.tlComponent("versionReleaseLatest")} : new ComponentHolder[] {}; } case BEHIND: { - return new Component[] {source.tlComponent("versionReleaseNew", this.getLatestRelease()), + return new ComponentHolder[] {source.tlComponent("versionReleaseNew", this.getLatestRelease()), source.tlComponent("versionReleaseNewLink", "https://essentialsx.net/downloads.html?branch=stable")}; } case DIVERGED: //WhatChamp case AHEAD: //monkaW? case UNKNOWN: { - return verboseErrors ? new Component[] {source.tlComponent("versionCustom", this.getBuildInfo())} : new Component[] {}; + return verboseErrors ? new ComponentHolder[] {source.tlComponent("versionCustom", this.getBuildInfo())} : new ComponentHolder[] {}; } case ERROR: { - return new Component[] {source.tlComponent(verboseErrors ? "versionError" : "versionErrorPlayer", this.getBuildInfo())}; + return new ComponentHolder[] {source.tlComponent(verboseErrors ? "versionError" : "versionErrorPlayer", this.getBuildInfo())}; } default: { - return new Component[] {}; + return new ComponentHolder[] {}; } } } diff --git a/Essentials/src/main/java/com/earth2me/essentials/utils/AdventureUtil.java b/Essentials/src/main/java/com/earth2me/essentials/utils/AdventureUtil.java deleted file mode 100644 index 37046bd9225..00000000000 --- a/Essentials/src/main/java/com/earth2me/essentials/utils/AdventureUtil.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.earth2me.essentials.utils; - -import net.ess3.api.IEssentials; -import net.ess3.provider.AbstractChatEvent; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.flattener.ComponentFlattener; -import net.kyori.adventure.text.format.NamedTextColor; -import net.kyori.adventure.text.minimessage.MiniMessage; -import net.kyori.adventure.text.minimessage.tag.Tag; -import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; -import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; - -public final class AdventureUtil { - private static final LegacyComponentSerializer LEGACY_SERIALIZER; - private static final MiniMessage MINI_MESSAGE_NO_TAGS; - private static final String LOOKUP = "0123456789abcdefklmnor"; - private static final NamedTextColor[] COLORS = new NamedTextColor[]{NamedTextColor.BLACK, NamedTextColor.DARK_BLUE, NamedTextColor.DARK_GREEN, NamedTextColor.DARK_AQUA, NamedTextColor.DARK_RED, NamedTextColor.DARK_PURPLE, NamedTextColor.GOLD, NamedTextColor.GRAY, NamedTextColor.DARK_GRAY, NamedTextColor.BLUE, NamedTextColor.GREEN, NamedTextColor.AQUA, NamedTextColor.RED, NamedTextColor.LIGHT_PURPLE, NamedTextColor.YELLOW, NamedTextColor.WHITE}; - private static IEssentials ess; - private static MiniMessage miniMessageInstance; - - static { - final LegacyComponentSerializer.Builder builder = LegacyComponentSerializer.builder() - .flattener(ComponentFlattener.basic()) - .extractUrls(AbstractChatEvent.URL_PATTERN) - .hexColors() - .useUnusualXRepeatedCharacterHexFormat(); - if (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_16_1_R01)) { - builder.hexColors(); - } - LEGACY_SERIALIZER = builder.build(); - - MINI_MESSAGE_NO_TAGS = MiniMessage.builder().strict(true).build(); - - miniMessageInstance = createMiniMessageInstance(); - } - - private AdventureUtil() { - } - - public static void setEss(final IEssentials ess) { - AdventureUtil.ess = ess; - miniMessageInstance = createMiniMessageInstance(); - } - - private static MiniMessage createMiniMessageInstance() { - return MiniMessage.builder() - .tags(TagResolver.builder() - .resolvers(TagResolver.standard()) - .resolver(TagResolver.resolver("primary", supplyTag(true))) - .resolver(TagResolver.resolver("secondary", supplyTag(false))) - .build()) - .build(); - } - - public static MiniMessage miniMessage() { - return miniMessageInstance; - } - - /** - * Converts a section sign legacy string to an adventure component. - */ - public static Component legacyToAdventure(final String text) { - return LEGACY_SERIALIZER.deserialize(text); - } - - /** - * Converts an adventure component to a section sign legacy string. - */ - public static String adventureToLegacy(final Component component) { - return LEGACY_SERIALIZER.serialize(component); - } - - /** - * Converts a MiniMessage string to a section sign legacy string. - */ - public static String miniToLegacy(final String format) { - return adventureToLegacy(miniMessage().deserialize(format)); - } - - /** - * Converts a section sign legacy string to a MiniMessage string. - */ - public static String legacyToMini(String text) { - return legacyToMini(text, false); - } - - /** - * Converts a section sign legacy string to a MiniMessage string. - * - * @param useCustomTags true if gold and red colors should use primary and secondary tags instead. - */ - public static String legacyToMini(String text, boolean useCustomTags) { - final Component deserializedText = LEGACY_SERIALIZER.deserialize(text); - if (useCustomTags) { - return miniMessageInstance.serialize(deserializedText); - } else { - return MINI_MESSAGE_NO_TAGS.serialize(deserializedText); - } - } - - /** - * Get the {@link NamedTextColor} from its associated section sign char. - */ - public static NamedTextColor fromChar(final char c) { - final int index = LOOKUP.indexOf(c); - if (index == -1 || index > 15) { - return null; - } - return COLORS[index]; - } - - /** - * Convenience method for submodules to escape MiniMessage tags. - */ - public static String escapeTags(final String input) { - return miniMessage().escapeTags(input); - } - - /** - * Parameters for a translation message are not parsed for MiniMessage by default to avoid injection. If you want - * a parameter to be parsed for MiniMessage you must wrap it in a ParsedPlaceholder by using this method. - */ - public static ParsedPlaceholder parsed(final String literal) { - return new ParsedPlaceholder(literal); - } - - private static Tag supplyTag(final boolean primary) { - if (primary) { - return ess != null ? ess.getSettings().getPrimaryColor() : Tag.styling(NamedTextColor.GOLD); - } - return ess != null ? ess.getSettings().getSecondaryColor() : Tag.styling(NamedTextColor.RED); - } - - public static class ParsedPlaceholder { - private final String value; - - protected ParsedPlaceholder(String value) { - this.value = value; - } - - @Override - public String toString() { - return value; - } - } -} diff --git a/Essentials/src/main/java/com/earth2me/essentials/utils/CommonPlaceholders.java b/Essentials/src/main/java/com/earth2me/essentials/utils/CommonPlaceholders.java index 9910940ae4e..03a2eaff3aa 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/utils/CommonPlaceholders.java +++ b/Essentials/src/main/java/com/earth2me/essentials/utils/CommonPlaceholders.java @@ -1,6 +1,7 @@ package com.earth2me.essentials.utils; import com.earth2me.essentials.CommandSource; +import com.earth2me.essentials.adventure.AdventureUtil; public final class CommonPlaceholders { private CommonPlaceholders() { diff --git a/Essentials/src/main/java/com/earth2me/essentials/utils/FormatUtil.java b/Essentials/src/main/java/com/earth2me/essentials/utils/FormatUtil.java index 02c6dc1d817..747034fac56 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/utils/FormatUtil.java +++ b/Essentials/src/main/java/com/earth2me/essentials/utils/FormatUtil.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.utils; +import com.earth2me.essentials.adventure.AdventureUtil; import net.ess3.api.IUser; import net.ess3.provider.AbstractChatEvent; import org.bukkit.ChatColor; @@ -44,7 +45,7 @@ public static String stripMiniFormat(final String input) { if (input == null) { return null; } - return AdventureUtil.miniMessage().stripTags(input); + return AdventureUtil.getAdventureFacet().stripTags(input); } //This method is used to simply strip the & convention colour codes diff --git a/Essentials/src/main/java/net/ess3/api/TranslatableException.java b/Essentials/src/main/java/net/ess3/api/TranslatableException.java index 87ac813a3f5..704c3111d17 100644 --- a/Essentials/src/main/java/net/ess3/api/TranslatableException.java +++ b/Essentials/src/main/java/net/ess3/api/TranslatableException.java @@ -1,6 +1,6 @@ package net.ess3.api; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import static com.earth2me.essentials.I18n.tlLiteral; @@ -42,6 +42,6 @@ public Object[] getArgs() { @Override public String getMessage() { final String literal = tlLiteral(tlKey, args); - return AdventureUtil.miniToLegacy(literal); + return AdventureUtil.getAdventureFacet().miniToLegacy(literal); } } diff --git a/Essentials/src/main/resources/messages.properties b/Essentials/src/main/resources/messages.properties index f37586d6dc3..7945ad322c9 100644 --- a/Essentials/src/main/resources/messages.properties +++ b/Essentials/src/main/resources/messages.properties @@ -1131,13 +1131,13 @@ sellHandPermission=You do not have permission to hand sell. serverFull=Server is full\! serverReloading=There's a good chance you're reloading your server right now. If that's the case, why do you hate yourself? Expect no support from the EssentialsX team when using /reload. serverTotal=Server Total\: {0} -serverUnsupported=You are running an unsupported server version\! -serverUnsupportedClass=Status determining class\: {0} -serverUnsupportedCleanroom=You are running a server that does not properly support Bukkit plugins that rely on internal Mojang code. Consider using an Essentials replacement for your server software. -serverUnsupportedDangerous=You are running a server fork that is known to be extremely dangerous and lead to data loss. It is strongly recommended you switch to a more stable server software like Paper. -serverUnsupportedLimitedApi=You are running a server with limited API functionality. EssentialsX will still work, but certain features may be disabled. -serverUnsupportedDumbPlugins=You are using plugins known to cause severe issues with EssentialsX and other plugins. -serverUnsupportedMods=You are running a server that does not properly support Bukkit plugins. Bukkit plugins should not be used with Forge/Fabric mods\! For Forge\: Consider using ForgeEssentials, or SpongeForge + Nucleus. +serverUnsupported=You are running an unsupported server version\! +serverUnsupportedClass=Status determining class\: {0} +serverUnsupportedCleanroom=You are running a server that does not properly support Bukkit plugins that rely on internal Mojang code. Consider using an Essentials replacement for your server software. +serverUnsupportedDangerous=You are running a server fork that is known to be extremely dangerous and lead to data loss. It is strongly recommended you switch to a more stable server software like Paper. +serverUnsupportedLimitedApi=You are running a server with limited API functionality. EssentialsX will still work, but certain features may be disabled. +serverUnsupportedDumbPlugins=You are using plugins known to cause severe issues with EssentialsX and other plugins. +serverUnsupportedMods=You are running a server that does not properly support Bukkit plugins. Bukkit plugins should not be used with Forge/Fabric mods\! For Forge\: Consider using ForgeEssentials, or SpongeForge + Nucleus. setBal=Your balance was set to {0}. setBalOthers=You set {0}''s balance to {1}. setSpawner=Changed spawner type to {0}. diff --git a/Essentials/src/test/java/com/earth2me/essentials/EconomyTest.java b/Essentials/src/test/java/com/earth2me/essentials/EconomyTest.java index cfc5729cd03..401d29e14d1 100644 --- a/Essentials/src/test/java/com/earth2me/essentials/EconomyTest.java +++ b/Essentials/src/test/java/com/earth2me/essentials/EconomyTest.java @@ -4,7 +4,6 @@ import com.earth2me.essentials.api.UserDoesNotExistException; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.commands.NoChargeException; -import com.earth2me.essentials.utils.AdventureUtil; import net.ess3.api.Economy; import net.ess3.api.MaxMoneyException; import org.bukkit.command.CommandSender; @@ -149,7 +148,7 @@ public void testNegativePayCommand() { try { runCommand("pay", user1, PLAYERNAME2 + " -123"); } catch (final Exception e) { - Assertions.assertEquals(AdventureUtil.miniToLegacy(I18n.tlLiteral("payMustBePositive")), e.getMessage()); + Assertions.assertEquals(ess.getAdventureFacet().miniToLegacy(I18n.tlLiteral("payMustBePositive")), e.getMessage()); } } } diff --git a/EssentialsAntiBuild/src/main/java/com/earth2me/essentials/antibuild/EssentialsConnect.java b/EssentialsAntiBuild/src/main/java/com/earth2me/essentials/antibuild/EssentialsConnect.java index fffece6367c..89433503bb0 100644 --- a/EssentialsAntiBuild/src/main/java/com/earth2me/essentials/antibuild/EssentialsConnect.java +++ b/EssentialsAntiBuild/src/main/java/com/earth2me/essentials/antibuild/EssentialsConnect.java @@ -2,7 +2,7 @@ import com.earth2me.essentials.IConf; import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import net.ess3.api.IEssentials; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -18,7 +18,7 @@ class EssentialsConnect { EssentialsConnect(final Plugin essPlugin, final Plugin essProtect) { if (!essProtect.getDescription().getVersion().equals(essPlugin.getDescription().getVersion())) { - essProtect.getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("versionMismatchAll"))); + essProtect.getLogger().log(Level.WARNING, AdventureUtil.getAdventureFacet().miniToLegacy(tlLiteral("versionMismatchAll"))); } ess = (IEssentials) essPlugin; protect = (IAntiBuild) essProtect; @@ -33,7 +33,7 @@ IEssentials getEssentials() { void alert(final User user, final String item, final String tlKey) { final Location loc = user.getLocation(); - protect.getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("alertFormat", user.getName(), tlLiteral(tlKey), item, loc.getWorld().getName() + "," + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ()))); + protect.getLogger().log(Level.WARNING, AdventureUtil.getAdventureFacet().miniToLegacy(tlLiteral("alertFormat", user.getName(), tlLiteral(tlKey), item, loc.getWorld().getName() + "," + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ()))); for (final Player p : ess.getServer().getOnlinePlayers()) { final User alertUser = ess.getUser(p); if (alertUser.isAuthorized("essentials.protect.alerts")) { diff --git a/EssentialsChat/src/main/java/com/earth2me/essentials/chat/EssentialsChat.java b/EssentialsChat/src/main/java/com/earth2me/essentials/chat/EssentialsChat.java index 8db4743a03e..f7db3796d28 100644 --- a/EssentialsChat/src/main/java/com/earth2me/essentials/chat/EssentialsChat.java +++ b/EssentialsChat/src/main/java/com/earth2me/essentials/chat/EssentialsChat.java @@ -5,7 +5,6 @@ import com.earth2me.essentials.chat.processing.ChatHandler; import com.earth2me.essentials.chat.processing.PaperChatHandler; import com.earth2me.essentials.metrics.MetricsWrapper; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.VersionUtil; import net.ess3.api.IEssentials; import org.bukkit.command.Command; @@ -27,7 +26,7 @@ public void onEnable() { final PluginManager pluginManager = getServer().getPluginManager(); ess = (IEssentials) pluginManager.getPlugin("Essentials"); if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion())) { - getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("versionMismatchAll"))); + getLogger().log(Level.WARNING, ess.getAdventureFacet().miniToLegacy(tlLiteral("versionMismatchAll"))); } if (!ess.isEnabled()) { this.setEnabled(false); diff --git a/EssentialsChat/src/main/java/com/earth2me/essentials/chat/processing/AbstractChatHandler.java b/EssentialsChat/src/main/java/com/earth2me/essentials/chat/processing/AbstractChatHandler.java index 3c1c4716bf3..1b28e1e6561 100644 --- a/EssentialsChat/src/main/java/com/earth2me/essentials/chat/processing/AbstractChatHandler.java +++ b/EssentialsChat/src/main/java/com/earth2me/essentials/chat/processing/AbstractChatHandler.java @@ -5,7 +5,6 @@ import com.earth2me.essentials.Trade; import com.earth2me.essentials.User; import com.earth2me.essentials.chat.EssentialsChat; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import net.ess3.api.events.LocalChatSpyEvent; import net.ess3.provider.AbstractChatEvent; @@ -117,9 +116,9 @@ protected void handleChatFormat(AbstractChatEvent event) { } if (chat.getType() == ChatType.UNKNOWN) { - format = AdventureUtil.miniToLegacy(tlLiteral("chatTypeLocal")).concat(format); + format = ess.getAdventureFacet().miniToLegacy(tlLiteral("chatTypeLocal")).concat(format); } else { - format = AdventureUtil.miniToLegacy(tlLiteral(chat.getType().key() + "Format", format)); + format = ess.getAdventureFacet().miniToLegacy(tlLiteral(chat.getType().key() + "Format", format)); } } @@ -215,7 +214,7 @@ protected void handleChatRecipients(AbstractChatEvent event) { // Strip local chat prefix to preserve API behaviour final String localPrefix = tlLiteral("chatTypeLocal"); - String baseFormat = AdventureUtil.legacyToMini(event.getFormat()); + String baseFormat = ess.getAdventureFacet().legacyToMini(event.getFormat()); if (baseFormat.startsWith(localPrefix)) { baseFormat = baseFormat.substring(localPrefix.length()); } @@ -224,7 +223,7 @@ protected void handleChatRecipients(AbstractChatEvent event) { server.getPluginManager().callEvent(spyEvent); if (!spyEvent.isCancelled()) { - final String legacyString = AdventureUtil.miniToLegacy(String.format(spyEvent.getFormat(), AdventureUtil.legacyToMini(user.getDisplayName()), AdventureUtil.legacyToMini(AdventureUtil.escapeTags(spyEvent.getMessage())))); + final String legacyString = ess.getAdventureFacet().miniToLegacy(String.format(spyEvent.getFormat(), ess.getAdventureFacet().legacyToMini(user.getDisplayName()), ess.getAdventureFacet().legacyToMini(ess.getAdventureFacet().escapeTags(spyEvent.getMessage())))); for (final Player onlinePlayer : spyEvent.getRecipients()) { onlinePlayer.sendMessage(legacyString); diff --git a/EssentialsDiscord/src/main/java/net/essentialsx/discord/DiscordSettings.java b/EssentialsDiscord/src/main/java/net/essentialsx/discord/DiscordSettings.java index 50869e8bf34..046396e849c 100644 --- a/EssentialsDiscord/src/main/java/net/essentialsx/discord/DiscordSettings.java +++ b/EssentialsDiscord/src/main/java/net/essentialsx/discord/DiscordSettings.java @@ -3,7 +3,6 @@ import com.earth2me.essentials.IConf; import com.earth2me.essentials.config.ConfigurateUtil; import com.earth2me.essentials.config.EssentialsConfiguration; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import net.dv8tion.jda.api.OnlineStatus; import net.dv8tion.jda.api.entities.Activity; @@ -470,7 +469,7 @@ private MessageFormat generateMessageFormat(String content, String defaultStr, b @Override public void reloadConfig() { if (plugin.isInvalidStartup()) { - plugin.getLogger().warning(AdventureUtil.miniToLegacy(tlLiteral("discordReloadInvalid"))); + plugin.getLogger().warning(plugin.getEss().getAdventureFacet().miniToLegacy(tlLiteral("discordReloadInvalid"))); return; } diff --git a/EssentialsDiscord/src/main/java/net/essentialsx/discord/EssentialsDiscord.java b/EssentialsDiscord/src/main/java/net/essentialsx/discord/EssentialsDiscord.java index e47e25cdaad..47c19f411bd 100644 --- a/EssentialsDiscord/src/main/java/net/essentialsx/discord/EssentialsDiscord.java +++ b/EssentialsDiscord/src/main/java/net/essentialsx/discord/EssentialsDiscord.java @@ -4,7 +4,6 @@ import com.earth2me.essentials.IEssentials; import com.earth2me.essentials.IEssentialsModule; import com.earth2me.essentials.metrics.MetricsWrapper; -import com.earth2me.essentials.utils.AdventureUtil; import net.essentialsx.discord.interactions.InteractionControllerImpl; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -36,7 +35,7 @@ public void onEnable() { return; } if (!getDescription().getVersion().equals(ess.getDescription().getVersion())) { - getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("versionMismatchAll"))); + getLogger().log(Level.WARNING, ess.getAdventureFacet().miniToLegacy(tlLiteral("versionMismatchAll"))); } // JDK-8274349 - Mitigation for a regression in Java 17 on 1 core systems which was fixed in 17.0.2 @@ -63,7 +62,7 @@ public void onEnable() { jda.startup(); ess.scheduleSyncDelayedTask(() -> ((InteractionControllerImpl) jda.getInteractionController()).processBatchRegistration()); } catch (Exception e) { - getLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("discordErrorLogin", e.getMessage()))); + getLogger().log(Level.SEVERE, ess.getAdventureFacet().miniToLegacy(tlLiteral("discordErrorLogin", e.getMessage()))); if (ess.getSettings().isDebug()) { e.printStackTrace(); } diff --git a/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/InteractionEventImpl.java b/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/InteractionEventImpl.java index ca008c37ff5..7bf82e853dc 100644 --- a/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/InteractionEventImpl.java +++ b/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/InteractionEventImpl.java @@ -1,6 +1,6 @@ package net.essentialsx.discord.interactions; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import com.google.common.base.Joiner; import net.dv8tion.jda.api.entities.Message; @@ -50,7 +50,7 @@ public void reply(String message) { @Override public void replyTl(String tlKey, Object... args) { - reply(AdventureUtil.miniToLegacy(tlLiteral(tlKey, args))); + reply(AdventureUtil.getAdventureFacet().miniToLegacy(tlLiteral(tlKey, args))); } @Override diff --git a/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/commands/MessageCommand.java b/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/commands/MessageCommand.java index 94f00faf63b..7cc37d3ab76 100644 --- a/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/commands/MessageCommand.java +++ b/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/commands/MessageCommand.java @@ -2,7 +2,7 @@ import com.earth2me.essentials.User; import com.earth2me.essentials.commands.PlayerNotFoundException; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import net.essentialsx.api.v2.services.discord.InteractionCommandArgument; import net.essentialsx.api.v2.services.discord.InteractionCommandArgumentType; diff --git a/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/EssentialsDiscordLink.java b/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/EssentialsDiscordLink.java index 8e8165bea89..0d30cd92bf9 100644 --- a/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/EssentialsDiscordLink.java +++ b/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/EssentialsDiscordLink.java @@ -3,7 +3,6 @@ import com.earth2me.essentials.EssentialsLogger; import com.earth2me.essentials.IEssentials; import com.earth2me.essentials.metrics.MetricsWrapper; -import com.earth2me.essentials.utils.AdventureUtil; import com.google.common.collect.ImmutableSet; import net.essentialsx.api.v2.services.discord.DiscordService; import net.essentialsx.api.v2.services.discord.InteractionException; @@ -45,7 +44,7 @@ public void onEnable() { return; } if (!getDescription().getVersion().equals(ess.getDescription().getVersion())) { - getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("versionMismatchAll"))); + getLogger().log(Level.WARNING, ess.getAdventureFacet().miniToLegacy(tlLiteral("versionMismatchAll"))); } api = getServer().getServicesManager().load(DiscordService.class); diff --git a/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/listeners/LinkBukkitListener.java b/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/listeners/LinkBukkitListener.java index 8991633a7fa..959a30adf33 100644 --- a/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/listeners/LinkBukkitListener.java +++ b/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/listeners/LinkBukkitListener.java @@ -1,6 +1,5 @@ package net.essentialsx.discordlink.listeners; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import net.essentialsx.api.v2.events.AsyncUserDataLoadEvent; import net.essentialsx.api.v2.events.UserMailEvent; @@ -60,7 +59,7 @@ public void onConnect(final AsyncPlayerPreLoginEvent event) { } catch (IllegalArgumentException e) { code = e.getMessage(); } - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, AdventureUtil.miniToLegacy(tlLiteral("discordLinkLoginKick", "/link " + code, ess.getApi().getInviteUrl()))); + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, ess.getEss().getAdventureFacet().miniToLegacy(tlLiteral("discordLinkLoginKick", "/link " + code, ess.getApi().getInviteUrl()))); } } @@ -160,7 +159,7 @@ public void onUserLinkStatusChange(final DiscordLinkStatusChangeEvent event) { switch (ess.getSettings().getLinkPolicy()) { case KICK: { - final Runnable kickTask = () -> event.getUser().getBase().kickPlayer(AdventureUtil.miniToLegacy(event.getUser().playerTl("discordLinkLoginKick", "/link " + finalCode, ess.getApi().getInviteUrl()))); + final Runnable kickTask = () -> event.getUser().getBase().kickPlayer(ess.getEss().getAdventureFacet().miniToLegacy(event.getUser().playerTl("discordLinkLoginKick", "/link " + finalCode, ess.getApi().getInviteUrl()))); if (Bukkit.isPrimaryThread()) { kickTask.run(); } else { diff --git a/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/rolesync/RoleSyncManager.java b/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/rolesync/RoleSyncManager.java index 4545b691c06..8e9c31d74f4 100644 --- a/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/rolesync/RoleSyncManager.java +++ b/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/rolesync/RoleSyncManager.java @@ -1,7 +1,6 @@ package net.essentialsx.discordlink.rolesync; import com.earth2me.essentials.UUIDPlayer; -import com.earth2me.essentials.utils.AdventureUtil; import com.google.common.collect.BiMap; import net.essentialsx.api.v2.events.discordlink.DiscordLinkStatusChangeEvent; import net.essentialsx.api.v2.services.discord.InteractionMember; @@ -146,21 +145,21 @@ public void onReload() { final String group = entry.getKey(); final InteractionRole role = ess.getApi().getRole(entry.getValue()); if (!groups.contains(group)) { - ess.getLogger().warning(AdventureUtil.miniToLegacy(tlLiteral("discordLinkInvalidGroup", group, entry.getValue(), groups))); + ess.getLogger().warning(ess.getEss().getAdventureFacet().miniToLegacy(tlLiteral("discordLinkInvalidGroup", group, entry.getValue(), groups))); continue; } if (role == null) { - ess.getLogger().warning(AdventureUtil.miniToLegacy(tlLiteral("discordLinkInvalidRole", entry.getValue(), group))); + ess.getLogger().warning(ess.getEss().getAdventureFacet().miniToLegacy(tlLiteral("discordLinkInvalidRole", entry.getValue(), group))); continue; } if (role.isManaged() || role.isPublicRole()) { - ess.getLogger().warning(AdventureUtil.miniToLegacy(tlLiteral("discordLinkInvalidRoleManaged", role.getName(), role.getId()))); + ess.getLogger().warning(ess.getEss().getAdventureFacet().miniToLegacy(tlLiteral("discordLinkInvalidRoleManaged", role.getName(), role.getId()))); continue; } if (!role.canInteract()) { - ess.getLogger().warning(AdventureUtil.miniToLegacy(tlLiteral("discordLinkInvalidRoleInteract", role.getName(), role.getId()))); + ess.getLogger().warning(ess.getEss().getAdventureFacet().miniToLegacy(tlLiteral("discordLinkInvalidRoleInteract", role.getName(), role.getId()))); continue; } @@ -175,11 +174,11 @@ public void onReload() { final InteractionRole role = ess.getApi().getRole(entry.getKey()); final String group = entry.getValue(); if (role == null) { - ess.getLogger().warning(AdventureUtil.miniToLegacy(tlLiteral("discordLinkInvalidRole", entry.getKey(), group))); + ess.getLogger().warning(ess.getEss().getAdventureFacet().miniToLegacy(tlLiteral("discordLinkInvalidRole", entry.getKey(), group))); continue; } if (!groups.contains(group)) { - ess.getLogger().warning(AdventureUtil.miniToLegacy(tlLiteral("discordLinkInvalidGroup", group, entry.getKey(), groups))); + ess.getLogger().warning(ess.getEss().getAdventureFacet().miniToLegacy(tlLiteral("discordLinkInvalidGroup", group, entry.getKey(), groups))); continue; } diff --git a/EssentialsGeoIP/src/main/java/com/earth2me/essentials/geoip/EssentialsGeoIP.java b/EssentialsGeoIP/src/main/java/com/earth2me/essentials/geoip/EssentialsGeoIP.java index cdb2d5ed004..7613a34f7e4 100644 --- a/EssentialsGeoIP/src/main/java/com/earth2me/essentials/geoip/EssentialsGeoIP.java +++ b/EssentialsGeoIP/src/main/java/com/earth2me/essentials/geoip/EssentialsGeoIP.java @@ -2,7 +2,6 @@ import com.earth2me.essentials.EssentialsLogger; import com.earth2me.essentials.metrics.MetricsWrapper; -import com.earth2me.essentials.utils.AdventureUtil; import net.ess3.api.IEssentials; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @@ -22,7 +21,7 @@ public void onEnable() { final PluginManager pm = getServer().getPluginManager(); final IEssentials ess = (IEssentials) pm.getPlugin("Essentials"); if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion())) { - getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("versionMismatchAll"))); + getLogger().log(Level.WARNING, ess.getAdventureFacet().miniToLegacy(tlLiteral("versionMismatchAll"))); } if (!ess.isEnabled()) { this.setEnabled(false); diff --git a/EssentialsGeoIP/src/main/java/com/earth2me/essentials/geoip/EssentialsGeoIPPlayerListener.java b/EssentialsGeoIP/src/main/java/com/earth2me/essentials/geoip/EssentialsGeoIPPlayerListener.java index b8594e267bf..eb75eb5d68a 100644 --- a/EssentialsGeoIP/src/main/java/com/earth2me/essentials/geoip/EssentialsGeoIPPlayerListener.java +++ b/EssentialsGeoIP/src/main/java/com/earth2me/essentials/geoip/EssentialsGeoIPPlayerListener.java @@ -3,7 +3,6 @@ import com.earth2me.essentials.IConf; import com.earth2me.essentials.User; import com.earth2me.essentials.config.EssentialsConfiguration; -import com.earth2me.essentials.utils.AdventureUtil; import com.ice.tar.TarEntry; import com.ice.tar.TarInputStream; import com.maxmind.geoip2.DatabaseReader; @@ -67,7 +66,7 @@ private void delayedJoin(final Player player) { final StringBuilder sb = new StringBuilder(); if (mmreader == null) { - essGeo.getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("geoIpErrorOnJoin", u.getName()))); + essGeo.getLogger().log(Level.WARNING, ess.getAdventureFacet().miniToLegacy(tlLiteral("geoIpErrorOnJoin", u.getName()))); return; } @@ -107,10 +106,10 @@ private void delayedJoin(final Player player) { } // GeoIP2 API forced this when address not found in their DB. jar will not complied without this. // TODO: Maybe, we can set a new custom msg about addr-not-found in messages.properties. - essGeo.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("cantReadGeoIpDB")) + " " + ex.getLocalizedMessage()); + essGeo.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("cantReadGeoIpDB")) + " " + ex.getLocalizedMessage()); } catch (final IOException | GeoIp2Exception ex) { // GeoIP2 API forced this when address not found in their DB. jar will not complied without this. - essGeo.getLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("cantReadGeoIpDB")) + " " + ex.getLocalizedMessage()); + essGeo.getLogger().log(Level.SEVERE, ess.getAdventureFacet().miniToLegacy(tlLiteral("cantReadGeoIpDB")) + " " + ex.getLocalizedMessage()); } if (config.getBoolean("show-on-whois", true)) { u.setGeoLocation(sb.toString()); @@ -154,7 +153,7 @@ public final void reloadConfig() { if (config.getBoolean("database.download-if-missing", true)) { downloadDatabase(); } else { - essGeo.getLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("cantFindGeoIpDB"))); + essGeo.getLogger().log(Level.SEVERE, ess.getAdventureFacet().miniToLegacy(tlLiteral("cantFindGeoIpDB"))); return; } } else if (config.getBoolean("database.update.enable", true)) { @@ -178,7 +177,7 @@ public final void reloadConfig() { mmreader = new DatabaseReader.Builder(databaseFile).build(); } } catch (final IOException ex) { - essGeo.getLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("cantReadGeoIpDB")), ex); + essGeo.getLogger().log(Level.SEVERE, ess.getAdventureFacet().miniToLegacy(tlLiteral("cantReadGeoIpDB")), ex); } } @@ -191,16 +190,16 @@ private void downloadDatabase() { url = config.getString("database.download-url", null); } if (url == null || url.isEmpty()) { - essGeo.getLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("geoIpUrlEmpty"))); + essGeo.getLogger().log(Level.SEVERE, ess.getAdventureFacet().miniToLegacy(tlLiteral("geoIpUrlEmpty"))); return; } final String licenseKey = config.getString("database.license-key", ""); if (licenseKey == null || licenseKey.isEmpty()) { - essGeo.getLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("geoIpLicenseMissing"))); + essGeo.getLogger().log(Level.SEVERE, ess.getAdventureFacet().miniToLegacy(tlLiteral("geoIpLicenseMissing"))); return; } url = url.replace("{LICENSEKEY}", licenseKey); - essGeo.getLogger().log(Level.INFO, AdventureUtil.miniToLegacy(tlLiteral("downloadingGeoIp"))); + essGeo.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("downloadingGeoIp"))); final URL downloadUrl = new URL(url); final URLConnection conn = downloadUrl.openConnection(); conn.setConnectTimeout(10000); @@ -234,9 +233,9 @@ private void downloadDatabase() { output.close(); input.close(); } catch (final MalformedURLException ex) { - essGeo.getLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("geoIpUrlInvalid")), ex); + essGeo.getLogger().log(Level.SEVERE, ess.getAdventureFacet().miniToLegacy(tlLiteral("geoIpUrlInvalid")), ex); } catch (final IOException ex) { - essGeo.getLogger().log(Level.SEVERE, AdventureUtil.miniToLegacy(tlLiteral("connectionFailed")), ex); + essGeo.getLogger().log(Level.SEVERE, ess.getAdventureFacet().miniToLegacy(tlLiteral("connectionFailed")), ex); } } diff --git a/EssentialsProtect/src/main/java/com/earth2me/essentials/protect/EssentialsConnect.java b/EssentialsProtect/src/main/java/com/earth2me/essentials/protect/EssentialsConnect.java index 75b85772b82..bc625747150 100644 --- a/EssentialsProtect/src/main/java/com/earth2me/essentials/protect/EssentialsConnect.java +++ b/EssentialsProtect/src/main/java/com/earth2me/essentials/protect/EssentialsConnect.java @@ -1,7 +1,7 @@ package com.earth2me.essentials.protect; import com.earth2me.essentials.IConf; -import com.earth2me.essentials.utils.AdventureUtil; +import com.earth2me.essentials.adventure.AdventureUtil; import net.ess3.api.IEssentials; import org.bukkit.plugin.Plugin; @@ -15,7 +15,7 @@ class EssentialsConnect { EssentialsConnect(final Plugin essPlugin, final Plugin essProtect) { if (!essProtect.getDescription().getVersion().equals(essPlugin.getDescription().getVersion())) { - essProtect.getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("versionMismatchAll"))); + essProtect.getLogger().log(Level.WARNING, AdventureUtil.getAdventureFacet().miniToLegacy(tlLiteral("versionMismatchAll"))); } ess = (IEssentials) essPlugin; protect = (IProtect) essProtect; diff --git a/EssentialsSpawn/src/main/java/com/earth2me/essentials/spawn/EssentialsSpawn.java b/EssentialsSpawn/src/main/java/com/earth2me/essentials/spawn/EssentialsSpawn.java index b6faffbf7fc..0d8f80e6d6e 100644 --- a/EssentialsSpawn/src/main/java/com/earth2me/essentials/spawn/EssentialsSpawn.java +++ b/EssentialsSpawn/src/main/java/com/earth2me/essentials/spawn/EssentialsSpawn.java @@ -2,7 +2,6 @@ import com.earth2me.essentials.EssentialsLogger; import com.earth2me.essentials.metrics.MetricsWrapper; -import com.earth2me.essentials.utils.AdventureUtil; import net.ess3.api.IEssentials; import org.bukkit.Location; import org.bukkit.command.Command; @@ -29,7 +28,7 @@ public void onEnable() { final PluginManager pluginManager = getServer().getPluginManager(); ess = (IEssentials) pluginManager.getPlugin("Essentials"); if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion())) { - getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("versionMismatchAll"))); + getLogger().log(Level.WARNING, ess.getAdventureFacet().miniToLegacy(tlLiteral("versionMismatchAll"))); } if (!ess.isEnabled()) { this.setEnabled(false); diff --git a/EssentialsXMPP/src/main/java/com/earth2me/essentials/xmpp/EssentialsXMPP.java b/EssentialsXMPP/src/main/java/com/earth2me/essentials/xmpp/EssentialsXMPP.java index e3c99061105..e9a6216e7b5 100644 --- a/EssentialsXMPP/src/main/java/com/earth2me/essentials/xmpp/EssentialsXMPP.java +++ b/EssentialsXMPP/src/main/java/com/earth2me/essentials/xmpp/EssentialsXMPP.java @@ -3,7 +3,6 @@ import com.earth2me.essentials.EssentialsLogger; import com.earth2me.essentials.IEssentials; import com.earth2me.essentials.metrics.MetricsWrapper; -import com.earth2me.essentials.utils.AdventureUtil; import net.ess3.api.IUser; import org.bstats.charts.SimplePie; import org.bukkit.command.Command; @@ -42,7 +41,7 @@ public void onEnable() { final PluginManager pluginManager = getServer().getPluginManager(); ess = (IEssentials) pluginManager.getPlugin("Essentials"); if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion())) { - getLogger().log(Level.WARNING, AdventureUtil.miniToLegacy(tlLiteral("versionMismatchAll"))); + getLogger().log(Level.WARNING, ess.getAdventureFacet().miniToLegacy(tlLiteral("versionMismatchAll"))); } if (!ess.isEnabled()) { this.setEnabled(false); diff --git a/EssentialsXMPP/src/main/java/com/earth2me/essentials/xmpp/XMPPManager.java b/EssentialsXMPP/src/main/java/com/earth2me/essentials/xmpp/XMPPManager.java index a5199f9216a..0530d4974c2 100644 --- a/EssentialsXMPP/src/main/java/com/earth2me/essentials/xmpp/XMPPManager.java +++ b/EssentialsXMPP/src/main/java/com/earth2me/essentials/xmpp/XMPPManager.java @@ -3,7 +3,6 @@ import com.earth2me.essentials.Console; import com.earth2me.essentials.IConf; import com.earth2me.essentials.config.EssentialsConfiguration; -import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import net.ess3.api.IUser; import org.bukkit.entity.Player; @@ -159,7 +158,7 @@ final void disconnect() { final void updatePresence() { if (connection == null) { - parent.getEss().getLogger().warning(AdventureUtil.miniToLegacy(tlLiteral("xmppNotConfigured"))); + parent.getEss().getLogger().warning(parent.getEss().getAdventureFacet().miniToLegacy(tlLiteral("xmppNotConfigured"))); return; } diff --git a/providers/BaseProviders/src/main/java/com/earth2me/essentials/adventure/AdventureFacet.java b/providers/BaseProviders/src/main/java/com/earth2me/essentials/adventure/AdventureFacet.java new file mode 100644 index 00000000000..fb23885daec --- /dev/null +++ b/providers/BaseProviders/src/main/java/com/earth2me/essentials/adventure/AdventureFacet.java @@ -0,0 +1,53 @@ +package com.earth2me.essentials.adventure; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public interface AdventureFacet { + void close(); + + ComponentHolder deserializeMiniMessage(String message); + + void send(CommandSender sender, ComponentHolder component); + + void send(Player player, ComponentHolder component); + + /** + * Converts a section sign legacy string to a MiniMessage string. + */ + String legacyToMini(String message); + + /** + * Converts a section sign legacy string to a MiniMessage string. + * + * @param useCustomTags true if gold and red colors should use primary and secondary tags instead. + */ + String legacyToMini(String message, boolean useCustomTags); + + /** + * Convenience method for submodules to escape MiniMessage tags. + */ + String escapeTags(String input); + + /** + * Strips all MiniMessage tags from the given input, returning plain text. + */ + String stripTags(String input); + + /** + * Converts a section sign legacy string to an adventure component. + */ + ComponentHolder legacyToAdventure(String message); + + /** + * Converts a MiniMessage string to a section sign legacy string. + */ + String miniToLegacy(String message); + + /** + * Converts an adventure component to a section sign legacy string. + */ + String adventureToLegacy(ComponentHolder component); + + ComponentHolder append(ComponentHolder base, ComponentHolder addition); +} diff --git a/providers/BaseProviders/src/main/java/com/earth2me/essentials/adventure/ComponentHolder.java b/providers/BaseProviders/src/main/java/com/earth2me/essentials/adventure/ComponentHolder.java new file mode 100644 index 00000000000..1829ff48cc2 --- /dev/null +++ b/providers/BaseProviders/src/main/java/com/earth2me/essentials/adventure/ComponentHolder.java @@ -0,0 +1,17 @@ +package com.earth2me.essentials.adventure; + +public class ComponentHolder { + private final Object component; + + protected ComponentHolder(final Object component) { + if (component == null) { + throw new IllegalArgumentException("Component cannot be null"); + } + + this.component = component; + } + + public Object getComponent() { + return component; + } +} diff --git a/providers/PaperProvider/src/main/java/com/earth2me/essentials/adventure/PaperAdventureFacet.java b/providers/PaperProvider/src/main/java/com/earth2me/essentials/adventure/PaperAdventureFacet.java new file mode 100644 index 00000000000..24fbf3eca58 --- /dev/null +++ b/providers/PaperProvider/src/main/java/com/earth2me/essentials/adventure/PaperAdventureFacet.java @@ -0,0 +1,130 @@ +package com.earth2me.essentials.adventure; + +import net.ess3.provider.AbstractChatEvent; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.flattener.ComponentFlattener; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextColor; +import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.tag.Tag; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import org.bukkit.Color; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.Locale; + +public class PaperAdventureFacet implements AdventureFacet { + private final LegacyComponentSerializer legacySerializer; + private final MiniMessage miniMessageNoTags; + private final MiniMessage miniMessageInstance; + + private final String primaryColor; + private final String secondaryColor; + + public PaperAdventureFacet(final String primaryColor, final String secondaryColor) { + this.primaryColor = primaryColor != null ? primaryColor : "gold"; + this.secondaryColor = secondaryColor != null ? secondaryColor : "red"; + + final LegacyComponentSerializer.Builder builder = LegacyComponentSerializer.builder() + .flattener(ComponentFlattener.basic()) + .extractUrls(AbstractChatEvent.URL_PATTERN) + .hexColors() + .useUnusualXRepeatedCharacterHexFormat(); + legacySerializer = builder.build(); + + miniMessageNoTags = MiniMessage.builder().strict(true).build(); + + miniMessageInstance = MiniMessage.builder() + .tags(TagResolver.builder() + .resolvers(TagResolver.standard()) + .resolver(TagResolver.resolver("primary", supplyTag(true))) + .resolver(TagResolver.resolver("secondary", supplyTag(false))) + .build()) + .build(); + } + + private Tag supplyTag(final boolean primary) { + final String color = primary ? primaryColor : secondaryColor; + + final TextColor textColor; + if (color.startsWith("#")) { + textColor = TextColor.color(Color.fromRGB(Integer.decode(color)).asRGB()); + } else { + textColor = NamedTextColor.NAMES.value(color.toLowerCase(Locale.ENGLISH)); + } + + return textColor != null ? Tag.styling(textColor) : Tag.styling(primary ? NamedTextColor.GOLD : NamedTextColor.RED); + } + + @Override + public ComponentHolder deserializeMiniMessage(String message) { + return new ComponentHolder(miniMessageInstance.deserialize(message)); + } + + @Override + public void send(CommandSender sender, ComponentHolder component) { + sender.sendMessage((Component) component.getComponent()); + } + + @Override + public void send(Player player, ComponentHolder component) { + player.sendMessage((Component) component.getComponent()); + } + + @Override + public String legacyToMini(String message) { + return legacyToMini(message, true); + } + + @Override + public String legacyToMini(String message, boolean useCustomTags) { + final Component deserializedText = legacySerializer.deserialize(message); + if (useCustomTags) { + return miniMessageInstance.serialize(deserializedText); + } else { + return miniMessageNoTags.serialize(deserializedText); + } + } + + @Override + public String escapeTags(String input) { + return miniMessageInstance.escapeTags(input); + } + + @Override + public String stripTags(String input) { + return miniMessageInstance.stripTags(input); + } + + @Override + public ComponentHolder legacyToAdventure(String message) { + return new ComponentHolder(legacySerializer.deserialize(message)); + } + + @Override + public String miniToLegacy(String message) { + return adventureToLegacy(miniMessageInstance.deserialize(message)); + } + + @Override + public String adventureToLegacy(ComponentHolder component) { + return adventureToLegacy((Component) component.getComponent()); + } + + private String adventureToLegacy(Component component) { + return legacySerializer.serialize(component); + } + + @Override + public ComponentHolder append(ComponentHolder base, ComponentHolder addition) { + final Component baseComponent = (Component) base.getComponent(); + final Component additionComponent = (Component) addition.getComponent(); + return new ComponentHolder(baseComponent.append(additionComponent)); + } + + @Override + public void close() { + } +}