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 player

The player to send the message to

- * @param message

The message to send

- */ - public static void sendErrorMessage(CommandSender player, String message) { - sendMessage(player, message, true); - } - - /** - * Sends a success message to a player - * - * @param player

The player to send the message to

- * @param message

The message to send

- */ - public static void sendSuccessMessage(CommandSender player, String message) { - sendMessage(player, message, false); - } - - /** - * Sends a message to a player - * - * @param player

The player to send the message to

- * @param message

The message to send

- * @param error

Whether 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 languageLoader

The language loader to get translated strings from

+ */ + public MessageSender(LanguageLoader languageLoader) { + this.languageLoader = languageLoader; + } + + /** + * Sends an error message to a player + * + * @param player

The player to send the message to

+ * @param message

The message to send

+ */ + public void sendErrorMessage(CommandSender player, String message) { + sendMessage(player, message, true); + } + + /** + * Sends a success message to a player + * + * @param player

The player to send the message to

+ * @param message

The message to send

+ */ + public void sendSuccessMessage(CommandSender player, String message) { + sendMessage(player, message, false); + } + + /** + * Sends a message to a player + * + * @param sender

The player to send the message to

+ * @param message

The message to send

+ * @param error

Whether 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 networkList = PortalHandler.getAllPortalNetworks().get(portal.getNetwork().toLowerCase()); int maxGates = Stargate.getGateConfig().maxGatesEachNetwork(); if (maxGates > 0 && networkList != null && networkList.size() >= maxGates) { - Stargate.sendErrorMessage(player, Stargate.getString("createFull")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("createFull")); return false; } } diff --git a/src/main/java/net/knarcraft/stargate/portal/PortalHandler.java b/src/main/java/net/knarcraft/stargate/portal/PortalHandler.java index 53ef384..af947d9 100644 --- a/src/main/java/net/knarcraft/stargate/portal/PortalHandler.java +++ b/src/main/java/net/knarcraft/stargate/portal/PortalHandler.java @@ -121,13 +121,13 @@ public class PortalHandler { String destinationName, String network) { if (portalOptions.get(PortalOption.BUNGEE)) { if (!PermissionHelper.hasPermission(player, "stargate.admin.bungee")) { - Stargate.sendErrorMessage(player, Stargate.getString("bungeeDeny")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("bungeeDeny")); return false; } else if (!Stargate.getGateConfig().enableBungee()) { - Stargate.sendErrorMessage(player, Stargate.getString("bungeeDisabled")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("bungeeDisabled")); return false; } else if (destinationName.isEmpty() || network.isEmpty()) { - Stargate.sendErrorMessage(player, Stargate.getString("bungeeEmpty")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("bungeeEmpty")); return false; } } @@ -188,7 +188,7 @@ public class PortalHandler { BlockLocation borderBlockLocation = topLeft.getRelativeLocation(borderVector, yaw); if (getByBlock(borderBlockLocation.getBlock()) != null) { Stargate.debug("createPortal", "Gate conflicts with existing gate"); - Stargate.sendErrorMessage(player, Stargate.getString("createConflict")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("createConflict")); return true; } } diff --git a/src/main/java/net/knarcraft/stargate/utility/EconomyHelper.java b/src/main/java/net/knarcraft/stargate/utility/EconomyHelper.java index b3c8f94..627e7ae 100644 --- a/src/main/java/net/knarcraft/stargate/utility/EconomyHelper.java +++ b/src/main/java/net/knarcraft/stargate/utility/EconomyHelper.java @@ -72,7 +72,7 @@ public final class EconomyHelper { public static void sendObtainMessage(String portalName, Player portalOwner, int earnings) { String obtainedMsg = Stargate.getString("ecoObtain"); obtainedMsg = replaceVars(obtainedMsg, portalName, earnings); - Stargate.sendSuccessMessage(portalOwner, obtainedMsg); + Stargate.getMessageSender().sendSuccessMessage(portalOwner, obtainedMsg); } /** @@ -85,7 +85,7 @@ public final class EconomyHelper { public static void sendDeductMessage(String portalName, Player player, int cost) { String deductMsg = Stargate.getString("ecoDeduct"); deductMsg = replaceVars(deductMsg, portalName, cost); - Stargate.sendSuccessMessage(player, deductMsg); + Stargate.getMessageSender().sendSuccessMessage(player, deductMsg); } /** @@ -98,7 +98,7 @@ public final class EconomyHelper { public static void sendInsufficientFundsMessage(String portalName, Player player, int cost) { String inFundMsg = Stargate.getString("ecoInFunds"); inFundMsg = replaceVars(inFundMsg, portalName, cost); - Stargate.sendErrorMessage(player, inFundMsg); + Stargate.getMessageSender().sendErrorMessage(player, inFundMsg); } /** @@ -111,7 +111,7 @@ public final class EconomyHelper { public static void sendRefundMessage(String portalName, Player player, int cost) { String refundMsg = Stargate.getString("ecoRefund"); refundMsg = replaceVars(refundMsg, portalName, -cost); - Stargate.sendSuccessMessage(player, refundMsg); + Stargate.getMessageSender().sendSuccessMessage(player, refundMsg); } /** diff --git a/src/main/java/net/knarcraft/stargate/utility/PermissionHelper.java b/src/main/java/net/knarcraft/stargate/utility/PermissionHelper.java index 8dfb1ad..ef93713 100644 --- a/src/main/java/net/knarcraft/stargate/utility/PermissionHelper.java +++ b/src/main/java/net/knarcraft/stargate/utility/PermissionHelper.java @@ -38,7 +38,7 @@ public final class PermissionHelper { //Invalid destination if ((destination == null) || (destination == portal)) { - Stargate.sendErrorMessage(player, Stargate.getString("invalidMsg")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("invalidMsg")); return; } @@ -54,19 +54,19 @@ public final class PermissionHelper { //Gate that someone else is using -- Deny access if ((!portal.getOptions().isFixed()) && portal.getPortalActivator().isActive() && (portal.getActivePlayer() != player)) { - Stargate.sendErrorMessage(player, Stargate.getString("denyMsg")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("denyMsg")); return; } //Check if the player can use the private gate if (portal.getOptions().isPrivate() && !PermissionHelper.canPrivate(player, portal)) { - Stargate.sendErrorMessage(player, Stargate.getString("denyMsg")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("denyMsg")); return; } //Destination blocked if ((destination.isOpen()) && (!destination.getOptions().isAlwaysOn())) { - Stargate.sendErrorMessage(player, Stargate.getString("blockMsg")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("blockMsg")); return; } @@ -390,7 +390,7 @@ public final class PermissionHelper { // Not open for this player if (!entrancePortal.getPortalOpener().isOpenFor(player)) { - Stargate.sendErrorMessage(player, Stargate.getString("denyMsg")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("denyMsg")); new PlayerTeleporter(entrancePortal, player).teleport(entrancePortal, event); return true; } @@ -402,7 +402,7 @@ public final class PermissionHelper { //Player cannot access portal if (PermissionHelper.cannotAccessPortal(player, entrancePortal, destination)) { - Stargate.sendErrorMessage(player, Stargate.getString("denyMsg")); + Stargate.getMessageSender().sendErrorMessage(player, Stargate.getString("denyMsg")); new PlayerTeleporter(entrancePortal, player).teleport(entrancePortal, event); entrancePortal.getPortalOpener().closePortal(false); return true;