diff --git a/src/main/java/net/knarcraft/stargate/config/StargateGateConfig.java b/src/main/java/net/knarcraft/stargate/config/StargateGateConfig.java index da38bfc..917f91b 100644 --- a/src/main/java/net/knarcraft/stargate/config/StargateGateConfig.java +++ b/src/main/java/net/knarcraft/stargate/config/StargateGateConfig.java @@ -1,6 +1,7 @@ package net.knarcraft.stargate.config; import net.knarcraft.stargate.Stargate; +import net.knarcraft.stargate.portal.PortalSignDrawer; import org.bukkit.ChatColor; import org.bukkit.configuration.file.FileConfiguration; @@ -17,7 +18,6 @@ public final class StargateGateConfig { private boolean enableBungee = true; private boolean verifyPortals = true; private boolean destroyExplosion = false; - private ChatColor signColor; private String defaultGateNetwork = "central"; private static final int activeTime = 10; private static final int openTime = 10; @@ -121,17 +121,6 @@ public final class StargateGateConfig { return destroyExplosion; } - /** - * Gets the color to use for drawing signs - * - *
Highlighting may use other colors. This is just the base color for portal names and such.
- * - * @returnThe color to use for drawing signs
- */ - public ChatColor getSignColor() { - return signColor; - } - /** * Gets the default portal network to use if no other network is given * @@ -163,24 +152,26 @@ public final class StargateGateConfig { //Cosmetic sortNetworkDestinations = newConfig.getBoolean("gates.cosmetic.sortNetworkDestinations"); rememberDestination = newConfig.getBoolean("gates.cosmetic.rememberDestination"); - loadSignColor(newConfig.getString("gates.cosmetic.signColor")); + loadSignColor(newConfig.getString("gates.cosmetic.mainSignColor"), + newConfig.getString("gates.cosmetic.highlightSignColor")); } /** * Loads the correct sign color given a sign color string * - * @param signColorA string representing a sign color
+ * @param mainSignColorA string representing the main sign color
*/ - private void loadSignColor(String signColor) { - if (signColor != null) { + private void loadSignColor(String mainSignColor, String highlightSignColor) { + if (mainSignColor != null) { try { - this.signColor = ChatColor.valueOf(signColor.toUpperCase()); + PortalSignDrawer.setColors(ChatColor.valueOf(mainSignColor.toUpperCase()), + ChatColor.valueOf(highlightSignColor.toUpperCase())); return; } catch (IllegalArgumentException | NullPointerException ignored) { } } - Stargate.logWarning("You have specified an invalid color in your config.yml. Defaulting to BLACK"); - this.signColor = ChatColor.BLACK; + Stargate.logWarning("You have specified an invalid color in your config.yml. Defaulting to BLACK and WHITE"); + PortalSignDrawer.setColors(ChatColor.BLACK, ChatColor.WHITE); } } diff --git a/src/main/java/net/knarcraft/stargate/portal/PortalSignDrawer.java b/src/main/java/net/knarcraft/stargate/portal/PortalSignDrawer.java index a79cdb0..abad04b 100644 --- a/src/main/java/net/knarcraft/stargate/portal/PortalSignDrawer.java +++ b/src/main/java/net/knarcraft/stargate/portal/PortalSignDrawer.java @@ -13,9 +13,10 @@ import org.bukkit.block.Sign; public class PortalSignDrawer { private final Portal portal; - private final static ChatColor highlightColor = ChatColor.WHITE; private final static ChatColor errorColor = ChatColor.DARK_RED; private final static ChatColor freeColor = ChatColor.DARK_GREEN; + private static ChatColor mainColor; + private static ChatColor highlightColor; /** * Instantiates a new portal sign drawer @@ -26,6 +27,20 @@ public class PortalSignDrawer { this.portal = portal; } + /** + * Sets the main sign color + * + *The main sign color is used for most text on the sign, while the highlighting color is used for the markings + * around portal names and network names ('>','<','-',')','(')
+ * + * @param newMainColorThe new main sign color
+ * @param newHighlightColorThe new highlight color
+ */ + public static void setColors(ChatColor newMainColor, ChatColor newHighlightColor) { + mainColor = newMainColor; + highlightColor = newHighlightColor; + } + /** * Draws the sign of the portal this sign drawer is responsible for */ @@ -47,12 +62,12 @@ public class PortalSignDrawer { * * @param signThe sign re-draw
*/ - public void drawSign(Sign sign) { + private void drawSign(Sign sign) { //Clear sign for (int index = 0; index <= 3; index++) { sign.setLine(index, ""); } - setLine(sign, 0, highlightColor + "-" + Stargate.getGateConfig().getSignColor() + + setLine(sign, 0, highlightColor + "-" + mainColor + portal.getName() + highlightColor + "-"); if (!portal.getPortalActivator().isActive()) { @@ -118,11 +133,12 @@ public class PortalSignDrawer { if (freeGatesGreen) { Portal destination = PortalHandler.getByName(portal.getDestinationName(), portal.getNetwork()); boolean green = PermissionHelper.isFree(portal.getActivePlayer(), portal, destination); - setLine(sign, signLineIndex, (green ? freeColor : "") + ">" + - portal.getDestinationName() + (green ? freeColor : "") + "<"); + ChatColor nameColor = (green ? freeColor : highlightColor); + setLine(sign, signLineIndex, nameColor + ">" + (green ? freeColor : mainColor) + + portal.getDestinationName() + nameColor + "<"); } else { - setLine(sign, signLineIndex, highlightColor + ">" + Stargate.getGateConfig().getSignColor() + - portal.getDestinationName() + highlightColor + "<"); + setLine(sign, signLineIndex, highlightColor + ">" + mainColor + portal.getDestinationName() + + highlightColor + "<"); } } @@ -134,7 +150,7 @@ public class PortalSignDrawer { * @param textThe new text on the sign
*/ public void setLine(Sign sign, int index, String text) { - sign.setLine(index, Stargate.getGateConfig().getSignColor() + text); + sign.setLine(index, mainColor + text); } /** @@ -147,14 +163,13 @@ public class PortalSignDrawer { */ private void drawNetworkSignLine(boolean freeGatesGreen, Sign sign, int signLineIndex, int destinationIndex) { PortalActivator destinations = portal.getPortalActivator(); + String destinationName = destinations.getDestinations().get(destinationIndex); if (freeGatesGreen) { - Portal destination = PortalHandler.getByName(destinations.getDestinations().get(destinationIndex), - portal.getNetwork()); + Portal destination = PortalHandler.getByName(destinationName, portal.getNetwork()); boolean green = PermissionHelper.isFree(portal.getActivePlayer(), portal, destination); - setLine(sign, signLineIndex, (green ? freeColor : "") + - destinations.getDestinations().get(destinationIndex)); + setLine(sign, signLineIndex, (green ? freeColor : mainColor) + destinationName); } else { - setLine(sign, signLineIndex, destinations.getDestinations().get(destinationIndex)); + setLine(sign, signLineIndex, mainColor + destinationName); } } @@ -165,8 +180,8 @@ public class PortalSignDrawer { */ private void drawBungeeSign(Sign sign) { setLine(sign, 1, Stargate.getString("bungeeSign")); - setLine(sign, 2, ">" + portal.getDestinationName() + "<"); - setLine(sign, 3, "[" + portal.getNetwork() + "]"); + setLine(sign, 2, highlightColor + ">" + mainColor + portal.getDestinationName() + highlightColor + "<"); + setLine(sign, 3, highlightColor + "[" + mainColor + portal.getNetwork() + highlightColor + "]"); } /** @@ -178,7 +193,7 @@ public class PortalSignDrawer { setLine(sign, 1, Stargate.getString("signRightClick")); setLine(sign, 2, Stargate.getString("signToUse")); if (!portal.getOptions().isNoNetwork()) { - setLine(sign, 3, "(" + portal.getNetwork() + ")"); + setLine(sign, 3, highlightColor + "(" + mainColor + portal.getNetwork() + highlightColor + ")"); } else { setLine(sign, 3, ""); } @@ -190,15 +205,14 @@ public class PortalSignDrawer { * @param signThe sign to re-draw
*/ private void drawFixedSign(Sign sign) { - if (portal.getOptions().isRandom()) { - setLine(sign, 1, ">" + Stargate.getString("signRandom") + "<"); - } else { - setLine(sign, 1, ">" + portal.getDestinationName() + "<"); - } + String destinationName = portal.getOptions().isRandom() ? Stargate.getString("signRandom") : + portal.getDestinationName(); + setLine(sign, 1, highlightColor + ">" + mainColor + destinationName + highlightColor + "<"); + if (portal.getOptions().isNoNetwork()) { setLine(sign, 2, ""); } else { - setLine(sign, 2, "(" + portal.getNetwork() + ")"); + setLine(sign, 2, highlightColor + "(" + mainColor + portal.getNetwork() + highlightColor + ")"); } Portal destination = PortalHandler.getByName(portal.getDestinationName(), portal.getNetwork()); if (destination == null && !portal.getOptions().isRandom()) { diff --git a/src/main/resources/config-migrations.txt b/src/main/resources/config-migrations.txt index 9326497..2de4df7 100644 --- a/src/main/resources/config-migrations.txt +++ b/src/main/resources/config-migrations.txt @@ -13,6 +13,7 @@ protectEntrance=gates.integrity.protectEntrance enableBungee=gates.functionality.enableBungee verifyPortals=gates.integrity.verifyPortals signColor=gates.cosmetic.signColor +gates.cosmetic.signColor=gates.cosmetic.mainSignColor debug=debugging.debug permdebug=debugging.permissionDebug useiconomy=economy.useEconomy diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 9c53803..eac074b 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -11,7 +11,8 @@ # handleVehicles - Whether to allow vehicles through gates # sortNetworkDestinations - Whether to sort network lists alphabetically # protectEntrance - Whether to protect gate entrance material (More resource intensive. Only enable if using destroyable open/closed material) -# signColor - The color used for drawing signs (Default: BLACK). +# mainSignColor - The color used for drawing signs (Default: BLACK). +# highlightSignColor - The color used for sign markings (Default: WHITE) # verifyPortals - Whether all the non-sign blocks are checked to match the gate layout when a stargate is loaded. # I------------I-------------I # # stargate economy options # @@ -39,7 +40,8 @@ gates: cosmetic: rememberDestination: false sortNetworkDestinations: false - signColor: BLACK + mainSignColor: BLACK + highlightSignColor: WHITE integrity: destroyedByExplosion: false verifyPortals: false