Moves all methods for sending messages to players to the MessageSender class

This commit is contained in:
Kristian Knarvik 2021-10-23 14:10:33 +02:00
parent 50084c40f9
commit 7cc8685e26
11 changed files with 108 additions and 74 deletions

View File

@ -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 <p>The sender for sending messages to players</p>
*/
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 <p>The player to send the message to</p>
* @param message <p>The message to send</p>
*/
public static void sendErrorMessage(CommandSender player, String message) {
sendMessage(player, message, true);
}
/**
* Sends a success message to a player
*
* @param player <p>The player to send the message to</p>
* @param message <p>The message to send</p>
*/
public static void sendSuccessMessage(CommandSender player, String message) {
sendMessage(player, message, false);
}
/**
* Sends a message to a player
*
* @param player <p>The player to send the message to</p>
* @param message <p>The message to send</p>
* @param error <p>Whether the message sent is an error</p>
*/
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");
}
/**

View File

@ -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;
}
}

View File

@ -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 <p>The language loader to get translated strings from</p>
*/
public MessageSender(LanguageLoader languageLoader) {
this.languageLoader = languageLoader;
}
/**
* Sends an error message to a player
*
* @param player <p>The player to send the message to</p>
* @param message <p>The message to send</p>
*/
public void sendErrorMessage(CommandSender player, String message) {
sendMessage(player, message, true);
}
/**
* Sends a success message to a player
*
* @param player <p>The player to send the message to</p>
* @param message <p>The message to send</p>
*/
public void sendSuccessMessage(CommandSender player, String message) {
sendMessage(player, message, false);
}
/**
* Sends a message to a player
*
* @param sender <p>The player to send the message to</p>
* @param message <p>The message to send</p>
* @param error <p>Whether the message sent is an error</p>
*/
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);
}
}
}

View File

@ -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"));
}
/**

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<String> 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;
}
}

View File

@ -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;
}
}

View File

@ -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);
}
/**

View File

@ -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;