diff --git a/src/main/java/net/knarcraft/stargate/Stargate.java b/src/main/java/net/knarcraft/stargate/Stargate.java index e050e80..76058d1 100644 --- a/src/main/java/net/knarcraft/stargate/Stargate.java +++ b/src/main/java/net/knarcraft/stargate/Stargate.java @@ -4,6 +4,7 @@ import net.knarcraft.stargate.command.CommandStarGate; import net.knarcraft.stargate.command.StarGateTabCompleter; import net.knarcraft.stargate.config.EconomyConfig; import net.knarcraft.stargate.config.LanguageLoader; +import net.knarcraft.stargate.config.MessageSender; import net.knarcraft.stargate.config.StargateGateConfig; import net.knarcraft.stargate.container.BlockChangeRequest; import net.knarcraft.stargate.container.ChunkUnloadRequest; @@ -26,7 +27,6 @@ import net.knarcraft.stargate.thread.StarGateThread; import net.knarcraft.stargate.utility.FileHelper; import net.knarcraft.stargate.utility.PortalFileHelper; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Server; import org.bukkit.World; import org.bukkit.block.Sign; @@ -88,6 +88,7 @@ public class Stargate extends JavaPlugin { private FileConfiguration newConfig; private PluginManager pluginManager; + private static MessageSender messageSender; /** * Empty constructor necessary for Spigot @@ -108,6 +109,15 @@ public class Stargate extends JavaPlugin { super(loader, descriptionFile, dataFolder, file); } + /** + * Gets the sender for sending messages to players + * + * @return
The sender for sending messages to players
+ */ + public static MessageSender getMessageSender() { + return messageSender; + } + /** * Gets the object containing gate configuration values * @@ -176,46 +186,6 @@ public class Stargate extends JavaPlugin { } } - /** - * Sends an error message to a player - * - * @param playerThe player to send the message to
- * @param messageThe message to send
- */ - public static void sendErrorMessage(CommandSender player, String message) { - sendMessage(player, message, true); - } - - /** - * Sends a success message to a player - * - * @param playerThe player to send the message to
- * @param messageThe message to send
- */ - public static void sendSuccessMessage(CommandSender player, String message) { - sendMessage(player, message, false); - } - - /** - * Sends a message to a player - * - * @param playerThe player to send the message to
- * @param messageThe message to send
- * @param errorWhether the message sent is an error
- */ - private static void sendMessage(CommandSender player, String message, boolean error) { - if (message.isEmpty()) { - return; - } - //Replace color codes with green? What's the deal with the dollar sign? - message = message.replaceAll("(&([a-f0-9]))", "\u00A7$2"); - if (error) { - player.sendMessage(ChatColor.RED + Stargate.getString("prefix") + ChatColor.WHITE + message); - } else { - player.sendMessage(ChatColor.GREEN + Stargate.getString("prefix") + ChatColor.WHITE + message); - } - } - /** * Sets a line on a sign, adding the chosen sign color * @@ -339,6 +309,7 @@ public class Stargate extends JavaPlugin { // It is important to load languages here, as they are used during reloadGates() languageLoader = new LanguageLoader(languageFolder, Stargate.languageName); + messageSender = new MessageSender(languageLoader); if (debuggingEnabled) { languageLoader.debug(); } @@ -549,7 +520,7 @@ public class Stargate extends JavaPlugin { startStopBungeeListener(stargateGateConfig.enableBungee()); } - sendErrorMessage(sender, "stargate reloaded"); + messageSender.sendErrorMessage(sender, "stargate reloaded"); } /** diff --git a/src/main/java/net/knarcraft/stargate/command/CommandReload.java b/src/main/java/net/knarcraft/stargate/command/CommandReload.java index 73cdf93..c66da9f 100644 --- a/src/main/java/net/knarcraft/stargate/command/CommandReload.java +++ b/src/main/java/net/knarcraft/stargate/command/CommandReload.java @@ -28,7 +28,7 @@ public class CommandReload implements CommandExecutor { @NotNull String[] args) { if (commandSender instanceof Player player) { if (!player.hasPermission("stargate.reload")) { - Stargate.sendErrorMessage(commandSender, "Permission Denied"); + Stargate.getMessageSender().sendErrorMessage(commandSender, "Permission Denied"); return true; } } diff --git a/src/main/java/net/knarcraft/stargate/config/MessageSender.java b/src/main/java/net/knarcraft/stargate/config/MessageSender.java new file mode 100644 index 0000000..2ada1f4 --- /dev/null +++ b/src/main/java/net/knarcraft/stargate/config/MessageSender.java @@ -0,0 +1,63 @@ +package net.knarcraft.stargate.config; + +import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; + +/** + * The message sender is responsible sending messages to players with correct coloring and formatting + */ +public final class MessageSender { + + private final LanguageLoader languageLoader; + + /** + * Instantiates a new message sender + * + * @param languageLoaderThe language loader to get translated strings from
+ */ + public MessageSender(LanguageLoader languageLoader) { + this.languageLoader = languageLoader; + } + + /** + * Sends an error message to a player + * + * @param playerThe player to send the message to
+ * @param messageThe message to send
+ */ + public void sendErrorMessage(CommandSender player, String message) { + sendMessage(player, message, true); + } + + /** + * Sends a success message to a player + * + * @param playerThe player to send the message to
+ * @param messageThe message to send
+ */ + public void sendSuccessMessage(CommandSender player, String message) { + sendMessage(player, message, false); + } + + /** + * Sends a message to a player + * + * @param senderThe player to send the message to
+ * @param messageThe message to send
+ * @param errorWhether the message sent is an error
+ */ + private void sendMessage(CommandSender sender, String message, boolean error) { + if (message.isEmpty()) { + return; + } + //Replace color codes with green? What's the deal with the dollar sign? + //TODO: Figure out what this is actually supposed to do and do it in a better way + message = message.replaceAll("(&([a-f0-9]))", "\u00A7$2"); + if (error) { + sender.sendMessage(ChatColor.RED + languageLoader.getString("prefix") + ChatColor.WHITE + message); + } else { + sender.sendMessage(ChatColor.GREEN + languageLoader.getString("prefix") + ChatColor.WHITE + message); + } + } + +} diff --git a/src/main/java/net/knarcraft/stargate/listener/BlockEventListener.java b/src/main/java/net/knarcraft/stargate/listener/BlockEventListener.java index 690a340..9a68b40 100644 --- a/src/main/java/net/knarcraft/stargate/listener/BlockEventListener.java +++ b/src/main/java/net/knarcraft/stargate/listener/BlockEventListener.java @@ -81,7 +81,7 @@ public class BlockEventListener implements Listener { return; } - Stargate.sendSuccessMessage(player, Stargate.getString("createMsg")); + Stargate.getMessageSender().sendSuccessMessage(player, Stargate.getString("createMsg")); Stargate.debug("onSignChange", "Initialized stargate: " + portal.getName()); Stargate.server.getScheduler().scheduleSyncDelayedTask(Stargate.stargate, portal::drawSign, 1); } @@ -130,7 +130,7 @@ public class BlockEventListener implements Listener { //Destroy denied if (destroyEvent.getDeny()) { - Stargate.sendErrorMessage(player, destroyEvent.getDenyReason()); + Stargate.getMessageSender().sendErrorMessage(player, destroyEvent.getDenyReason()); event.setCancelled(true); return; } @@ -141,7 +141,7 @@ public class BlockEventListener implements Listener { } PortalRegistry.unregisterPortal(portal, true); - Stargate.sendSuccessMessage(player, Stargate.getString("destroyMsg")); + Stargate.getMessageSender().sendSuccessMessage(player, Stargate.getString("destroyMsg")); } /** diff --git a/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java b/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java index c7b960f..af8f211 100644 --- a/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java +++ b/src/main/java/net/knarcraft/stargate/listener/PlayerEventListener.java @@ -114,7 +114,7 @@ public class PlayerEventListener implements Listener { //Just teleport the player like normal new PlayerTeleporter(destination, player).teleport(entrancePortal, event); } - Stargate.sendSuccessMessage(player, Stargate.getString("teleportMsg")); + Stargate.getMessageSender().sendSuccessMessage(player, Stargate.getString("teleportMsg")); entrancePortal.getPortalOpener().closePortal(false); } @@ -155,7 +155,7 @@ public class PlayerEventListener implements Listener { //Decide if the user should be teleported to another bungee server if (entrancePortal.getOptions().isBungee()) { if (bungeeTeleport(player, entrancePortal, event)) { - Stargate.sendSuccessMessage(player, Stargate.getString("teleportMsg")); + Stargate.getMessageSender().sendSuccessMessage(player, Stargate.getString("teleportMsg")); } return false; } @@ -236,7 +236,7 @@ public class PlayerEventListener implements Listener { boolean deny = PermissionHelper.cannotAccessNetwork(player, portal.getNetwork()); if (PermissionHelper.cannotAccessPortal(player, portal, deny)) { - Stargate.sendErrorMessage(player, Stargate.getString("denyMsg")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("denyMsg")); return true; } return false; @@ -318,7 +318,7 @@ public class PlayerEventListener implements Listener { private boolean bungeeTeleport(Player player, Portal entrancePortal, PlayerMoveEvent event) { //Check if bungee is actually enabled if (!Stargate.getGateConfig().enableBungee()) { - Stargate.sendErrorMessage(player, Stargate.getString("bungeeDisabled")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("bungeeDisabled")); entrancePortal.getPortalOpener().closePortal(false); return false; } diff --git a/src/main/java/net/knarcraft/stargate/listener/VehicleEventListener.java b/src/main/java/net/knarcraft/stargate/listener/VehicleEventListener.java index 765b478..e022b16 100644 --- a/src/main/java/net/knarcraft/stargate/listener/VehicleEventListener.java +++ b/src/main/java/net/knarcraft/stargate/listener/VehicleEventListener.java @@ -90,7 +90,7 @@ public class VehicleEventListener implements Listener { //On the assumption that a non-player cannot sit in the driver's seat and since some portals can only be open // to one player at a time, we only need to check if the portal is open to the driver. if (!entrancePortal.getPortalOpener().isOpenFor(player)) { - Stargate.sendErrorMessage(player, Stargate.getString("denyMsg")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("denyMsg")); return; } @@ -116,7 +116,7 @@ public class VehicleEventListener implements Listener { } } - Stargate.sendSuccessMessage(player, Stargate.getString("teleportMsg")); + Stargate.getMessageSender().sendSuccessMessage(player, Stargate.getString("teleportMsg")); new VehicleTeleporter(destinationPortal, vehicle).teleport(entrancePortal); entrancePortal.getPortalOpener().closePortal(false); } @@ -150,7 +150,7 @@ public class VehicleEventListener implements Listener { private static boolean playerCanTeleport(Player player, Portal entrancePortal, Portal destinationPortal) { //Make sure the user can access the portal if (PermissionHelper.cannotAccessPortal(player, entrancePortal, destinationPortal)) { - Stargate.sendErrorMessage(player, Stargate.getString("denyMsg")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("denyMsg")); entrancePortal.getPortalOpener().closePortal(false); return false; } diff --git a/src/main/java/net/knarcraft/stargate/portal/PortalActivator.java b/src/main/java/net/knarcraft/stargate/portal/PortalActivator.java index 16fa5ef..4848717 100644 --- a/src/main/java/net/knarcraft/stargate/portal/PortalActivator.java +++ b/src/main/java/net/knarcraft/stargate/portal/PortalActivator.java @@ -250,7 +250,7 @@ public class PortalActivator { //If no destinations are available, just tell the player and quit if (destinations.size() == 0) { - Stargate.sendErrorMessage(player, Stargate.getString("destEmpty")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("destEmpty")); return; } diff --git a/src/main/java/net/knarcraft/stargate/portal/PortalCreator.java b/src/main/java/net/knarcraft/stargate/portal/PortalCreator.java index 43379d5..fa72fa1 100644 --- a/src/main/java/net/knarcraft/stargate/portal/PortalCreator.java +++ b/src/main/java/net/knarcraft/stargate/portal/PortalCreator.java @@ -116,7 +116,7 @@ public class PortalCreator { network = network.substring(0, 11); } Stargate.debug("createPortal", "Creating personal portal"); - Stargate.sendErrorMessage(player, Stargate.getString("createPersonal")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("createPersonal")); } else { Stargate.debug("createPortal", "Player does not have access to network"); deny = true; @@ -184,7 +184,7 @@ public class PortalCreator { //Tell the user why it was denied from creating the portal if (stargateCreateEvent.getDeny()) { - Stargate.sendErrorMessage(player, stargateCreateEvent.getDenyReason()); + Stargate.getMessageSender().sendErrorMessage(player, stargateCreateEvent.getDenyReason()); return null; } @@ -226,7 +226,7 @@ public class PortalCreator { // Name & Network can be changed in the event, so do these checks here. if (portal.getName().length() < 1 || portal.getName().length() > 11) { Stargate.debug("createPortal", "Name length error"); - Stargate.sendErrorMessage(player, Stargate.getString("createNameLength")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("createNameLength")); return false; } @@ -234,13 +234,13 @@ public class PortalCreator { if (portal.getOptions().isBungee()) { if (PortalHandler.getBungeePortals().get(portal.getName().toLowerCase()) != null) { Stargate.debug("createPortal::Bungee", "Gate name duplicate"); - Stargate.sendErrorMessage(player, Stargate.getString("createExists")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("createExists")); return false; } } else { if (PortalHandler.getByName(portal.getName(), portal.getNetwork()) != null) { Stargate.debug("createPortal", "Gate name duplicate"); - Stargate.sendErrorMessage(player, Stargate.getString("createExists")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("createExists")); return false; } @@ -248,7 +248,7 @@ public class PortalCreator { List