From ff1dbaedc44400fbadb6639d18f51a634a5ee800 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Thu, 2 Jun 2022 14:50:55 +0200 Subject: [PATCH] Makes the info command's output translatable Improves some general messaging --- .../stargatecommand/StargateCommand.java | 10 ----- .../command/CommandConfig.java | 13 ++++--- .../command/TabCommandInfo.java | 38 ++++++++++--------- .../command/VisualizerTabCompleter.java | 7 ++-- .../formatting/TranslatableMessage.java | 5 +++ src/main/resources/strings.yml | 3 +- 6 files changed, 39 insertions(+), 37 deletions(-) diff --git a/src/main/java/net/knarcraft/stargatecommand/StargateCommand.java b/src/main/java/net/knarcraft/stargatecommand/StargateCommand.java index 88bd3ce..6f6dbe1 100644 --- a/src/main/java/net/knarcraft/stargatecommand/StargateCommand.java +++ b/src/main/java/net/knarcraft/stargatecommand/StargateCommand.java @@ -57,16 +57,6 @@ public class StargateCommand extends JavaPlugin { //Currently, nothing needs to be disabled } - /** - * Gets the character used to replace spaces in portal and network names - * - * @return

The character used to replace spaces

- */ - public static char getSpaceReplacementCharacter() { - //TODO: Make this configurable - return '⚊'; - } - /** * Gets an instance of this plugin * diff --git a/src/main/java/net/knarcraft/stargatecommand/command/CommandConfig.java b/src/main/java/net/knarcraft/stargatecommand/command/CommandConfig.java index f0e4562..5f7babc 100644 --- a/src/main/java/net/knarcraft/stargatecommand/command/CommandConfig.java +++ b/src/main/java/net/knarcraft/stargatecommand/command/CommandConfig.java @@ -230,9 +230,10 @@ public class CommandConfig implements CommandExecutor { */ private void printConfigOptionValue(CommandSender sender, ConfigurationOption option) { Object value = configurationAPI.getConfigurationOptionValue(option); - sender.sendMessage(getOptionDescription(option)); - sender.sendMessage(StringFormatter.replacePlaceholder(Translator.getTranslatedMessage( - TranslatableMessage.CONFIG_OPTION_CURRENT_VALUE), "{value}", String.valueOf(value))); + String description = getOptionDescription(option); + String currentValue = StringFormatter.replacePlaceholder(Translator.getTranslatedMessage( + TranslatableMessage.CONFIG_OPTION_CURRENT_VALUE), "{value}", String.valueOf(value)); + sender.sendMessage(StringFormatter.formatInfoMessage(description + "\n" + currentValue)); } /** @@ -241,13 +242,15 @@ public class CommandConfig implements CommandExecutor { * @param sender

The command sender to display the config list to

*/ private void displayConfigValues(CommandSender sender) { - sender.sendMessage(Translator.getTranslatedMessage(TranslatableMessage.CONFIG_VALUES_HEADER)); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(StringFormatter.getTranslatedInfoMessage(TranslatableMessage.CONFIG_VALUES_HEADER)); for (ConfigurationOption option : ConfigurationOption.values()) { if (!bannedConfigOptions.contains(option)) { - sender.sendMessage(getOptionDescription(option)); + stringBuilder.append("\n").append(getOptionDescription(option)); } } + sender.sendMessage(stringBuilder.toString()); } /** diff --git a/src/main/java/net/knarcraft/stargatecommand/command/TabCommandInfo.java b/src/main/java/net/knarcraft/stargatecommand/command/TabCommandInfo.java index 7ce8943..f2af6e1 100644 --- a/src/main/java/net/knarcraft/stargatecommand/command/TabCommandInfo.java +++ b/src/main/java/net/knarcraft/stargatecommand/command/TabCommandInfo.java @@ -3,6 +3,9 @@ package net.knarcraft.stargatecommand.command; import net.TheDgtl.Stargate.network.RegistryAPI; import net.TheDgtl.Stargate.network.portal.Portal; import net.TheDgtl.Stargate.network.portal.PortalFlag; +import net.knarcraft.stargatecommand.formatting.StringFormatter; +import net.knarcraft.stargatecommand.formatting.TranslatableMessage; +import net.knarcraft.stargatecommand.formatting.Translator; import net.knarcraft.stargatecommand.property.StargateCommandCommand; import net.knarcraft.stargatecommand.util.PortalFinderHelper; import org.apache.commons.lang.StringUtils; @@ -18,6 +21,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; +import static net.knarcraft.stargatecommand.formatting.StringFormatter.getTranslatedErrorMessage; + /** * This tab-command represents the command for getting information about a seen portal */ @@ -38,36 +43,33 @@ public class TabCommandInfo implements TabExecutor { public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) { if (!(commandSender instanceof Player player)) { - commandSender.sendMessage("This command can only be used by a player"); + commandSender.sendMessage(getTranslatedErrorMessage(TranslatableMessage.COMMAND_PLAYER_ONLY)); return true; } if (!player.hasPermission(StargateCommandCommand.INFO.getPermissionNode())) { - player.sendMessage("Permission Denied"); + player.sendMessage(getTranslatedErrorMessage(TranslatableMessage.PERMISSION_DENIED)); return true; } Portal portal = PortalFinderHelper.findPortalByRaytrace(registryAPI, player, 15); if (portal == null) { - commandSender.sendMessage("You need to look directly at a portal to get information about it"); + commandSender.sendMessage(getTranslatedErrorMessage(TranslatableMessage.NO_PORTAL_IN_SIGHT)); return true; } - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("Information about the Stargate you are currently looking at:").append("\n"); - stringBuilder.append("|- ").append("Name: ").append(portal.getName()).append("\n"); - String destination = portal.getDestinationName(); - if (destination != null && !destination.equalsIgnoreCase("null")) { - stringBuilder.append("|- ").append("Destination: ").append(portal.getDestinationName()).append("\n"); - } - stringBuilder.append("|- ").append("Network: ").append(portal.getNetwork().getName()).append("\n"); + Player owner = Bukkit.getPlayer(portal.getOwnerUUID()); - if (owner != null) { - stringBuilder.append("|- ").append("Owner: ").append(owner.getName()).append("\n"); - } else { - stringBuilder.append("|- ").append("Owner: ").append(portal.getOwnerUUID()).append("\n"); - } + String name = portal.getName(); + String destination = portal.getDestinationName() == null ? "" : portal.getDestinationName(); + String network = portal.getNetwork().getName(); + String ownerName = owner != null ? owner.getName() : portal.getOwnerUUID().toString(); Set portalFlags = PortalFlag.parseFlags(portal.getAllFlagsString()); - stringBuilder.append("|- ").append("Flags: ").append(StringUtils.join(portalFlags, ", ")).append("\n"); - player.sendMessage(stringBuilder.toString()); + String flags = StringUtils.join(portalFlags, ", "); + + String infoMessage = StringFormatter.replacePlaceholders(Translator.getTranslatedMessage( + TranslatableMessage.COMMAND_INFO_FORMAT), new String[]{"{portal}", "{destination}", "{network}", + "{owner}", "{flags}"}, new String[]{name, destination, network, ownerName, flags}); + + player.sendMessage(StringFormatter.formatInfoMessage(infoMessage)); return true; } diff --git a/src/main/java/net/knarcraft/stargatecommand/command/VisualizerTabCompleter.java b/src/main/java/net/knarcraft/stargatecommand/command/VisualizerTabCompleter.java index e3055c2..5e4309d 100644 --- a/src/main/java/net/knarcraft/stargatecommand/command/VisualizerTabCompleter.java +++ b/src/main/java/net/knarcraft/stargatecommand/command/VisualizerTabCompleter.java @@ -1,7 +1,8 @@ package net.knarcraft.stargatecommand.command; import net.TheDgtl.Stargate.network.RegistryAPI; -import net.knarcraft.stargatecommand.StargateCommand; +import net.knarcraft.stargatecommand.manager.IconManager; +import net.knarcraft.stargatecommand.property.Icon; import net.knarcraft.stargatecommand.property.StargateCommandCommand; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -41,8 +42,8 @@ public class VisualizerTabCompleter implements TabCompleter { if (args.length < 2) { List networkNames = new ArrayList<>(); - registryAPI.getNetworkMap().values().forEach(item -> networkNames.add(item.getName().replace(' ', - StargateCommand.getSpaceReplacementCharacter()))); + registryAPI.getNetworkMap().values().forEach(item -> networkNames.add(item.getName().replace(" ", + IconManager.getIconString(Icon.SPACE_REPLACEMENT)))); return filterMatching(networkNames, args[0]); } else { return new ArrayList<>(); diff --git a/src/main/java/net/knarcraft/stargatecommand/formatting/TranslatableMessage.java b/src/main/java/net/knarcraft/stargatecommand/formatting/TranslatableMessage.java index 60fc6c1..0ceb0a0 100644 --- a/src/main/java/net/knarcraft/stargatecommand/formatting/TranslatableMessage.java +++ b/src/main/java/net/knarcraft/stargatecommand/formatting/TranslatableMessage.java @@ -110,4 +110,9 @@ public enum TranslatableMessage { */ COMMAND_VISUALIZER_FIXED_FORMAT, + /** + * The format used to display information about a Stargate + */ + COMMAND_INFO_FORMAT, + } diff --git a/src/main/resources/strings.yml b/src/main/resources/strings.yml index b174ec7..a53b9ce 100644 --- a/src/main/resources/strings.yml +++ b/src/main/resources/strings.yml @@ -19,4 +19,5 @@ en: COMMAND_VISUALIZER_ARGUMENTS: "A network must be provided to visualize" COMMAND_VISUALIZER_FORMAT: "Symbol explanation: \n&6{icon_h}&r = hidden, &6{icon_nh}&r = not hidden\n&6{icon_a}&r = always open, &6{icon_na}&r = not always open\n&6{icon_r}&r = random destination, &6{icon_nr}&r = non-random destination\n&6{icon_arrow_right}&r = fixed portal going to the specified portal\n|\nAll portals in network &a{network}&r:" COMMAND_VISUALIZER_PORTAL_FORMAT: "&6{icons} &a{portal}&r{fixed}" - COMMAND_VISUALIZER_FIXED_FORMAT: " {icon_arrow_right} &a{portal}" \ No newline at end of file + COMMAND_VISUALIZER_FIXED_FORMAT: " {icon_arrow_right} &a{portal}" + COMMAND_INFO_FORMAT: "Stargate info:\n|- &6Name&r: &a{portal}&r\n|- &6Destination&r: &a{destination}&r\n|- &6Network&r: &a{network}&r\n|- &6Owner&r: &a{owner}&r\n|- &6Flags&r: &a{flags}&r" \ No newline at end of file