Rewrites a lot of the config command to only do the minimum necessary steps to load the changes
Adds a ConfigTag class for helping to decide the action necessary for updating a given config option Splits the color setting in PortalSignDrawer as only one color is set at a time when the /config command is used Updates the configOptions map when a config option is changed
This commit is contained in:
		| @@ -2,6 +2,10 @@ package net.knarcraft.stargate.command; | |||||||
|  |  | ||||||
| import net.knarcraft.stargate.Stargate; | import net.knarcraft.stargate.Stargate; | ||||||
| import net.knarcraft.stargate.config.ConfigOption; | import net.knarcraft.stargate.config.ConfigOption; | ||||||
|  | import net.knarcraft.stargate.config.ConfigTag; | ||||||
|  | import net.knarcraft.stargate.portal.Portal; | ||||||
|  | import net.knarcraft.stargate.portal.PortalRegistry; | ||||||
|  | import net.knarcraft.stargate.portal.PortalSignDrawer; | ||||||
| import org.bukkit.ChatColor; | import org.bukkit.ChatColor; | ||||||
| import org.bukkit.command.Command; | import org.bukkit.command.Command; | ||||||
| import org.bukkit.command.CommandExecutor; | import org.bukkit.command.CommandExecutor; | ||||||
| @@ -55,7 +59,7 @@ public class CommandConfig implements CommandExecutor { | |||||||
|         FileConfiguration configuration = Stargate.getInstance().getConfig(); |         FileConfiguration configuration = Stargate.getInstance().getConfig(); | ||||||
|  |  | ||||||
|         //Validate any sign colors |         //Validate any sign colors | ||||||
|         if (selectedOption == ConfigOption.MAIN_SIGN_COLOR || selectedOption == ConfigOption.HIGHLIGHT_SIGN_COLOR) { |         if (ConfigTag.COLOR.isTagged(selectedOption)) { | ||||||
|             try { |             try { | ||||||
|                 ChatColor.valueOf(value.toUpperCase()); |                 ChatColor.valueOf(value.toUpperCase()); | ||||||
|             } catch (IllegalArgumentException | NullPointerException ignored) { |             } catch (IllegalArgumentException | NullPointerException ignored) { | ||||||
| @@ -66,12 +70,20 @@ public class CommandConfig implements CommandExecutor { | |||||||
|  |  | ||||||
|         //Store the config values, accounting for the data type |         //Store the config values, accounting for the data type | ||||||
|         switch (selectedOption.getDataType()) { |         switch (selectedOption.getDataType()) { | ||||||
|             case BOOLEAN -> configuration.set(selectedOption.getConfigNode(), Boolean.parseBoolean(value)); |             case BOOLEAN -> { | ||||||
|  |                 boolean newValue = Boolean.parseBoolean(value); | ||||||
|  |                 if (selectedOption == ConfigOption.ENABLE_BUNGEE && newValue != Stargate.getGateConfig().enableBungee()) { | ||||||
|  |                     Stargate.getStargateConfig().startStopBungeeListener(newValue); | ||||||
|  |                 } | ||||||
|  |                 Stargate.getStargateConfig().getConfigOptionsReference().put(selectedOption, newValue); | ||||||
|  |                 configuration.set(selectedOption.getConfigNode(), newValue); | ||||||
|  |             } | ||||||
|             case INTEGER -> { |             case INTEGER -> { | ||||||
|                 Integer intValue = getInteger(commandSender, selectedOption, value); |                 Integer intValue = getInteger(commandSender, selectedOption, value); | ||||||
|                 if (intValue == null) { |                 if (intValue == null) { | ||||||
|                     return; |                     return; | ||||||
|                 } else { |                 } else { | ||||||
|  |                     Stargate.getStargateConfig().getConfigOptionsReference().put(selectedOption, intValue); | ||||||
|                     configuration.set(selectedOption.getConfigNode(), intValue); |                     configuration.set(selectedOption.getConfigNode(), intValue); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
| @@ -83,14 +95,68 @@ public class CommandConfig implements CommandExecutor { | |||||||
|                         return; |                         return; | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|  |                 if (ConfigTag.COLOR.isTagged(selectedOption)) { | ||||||
|  |                     if (!registerColor(selectedOption, value, commandSender)) { | ||||||
|  |                         return; | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |                 if (selectedOption == ConfigOption.LANGUAGE) { | ||||||
|  |                     Stargate.getStargateConfig().getLanguageLoader().setChosenLanguage(value); | ||||||
|  |                 } | ||||||
|  |                 Stargate.getStargateConfig().getConfigOptionsReference().put(selectedOption, value); | ||||||
|  |                 configuration.set(selectedOption.getConfigNode(), value); | ||||||
|  |             } | ||||||
|  |             default -> { | ||||||
|  |                 Stargate.getStargateConfig().getConfigOptionsReference().put(selectedOption, value); | ||||||
|                 configuration.set(selectedOption.getConfigNode(), value); |                 configuration.set(selectedOption.getConfigNode(), value); | ||||||
|             } |             } | ||||||
|             default -> configuration.set(selectedOption.getConfigNode(), value); |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         //Save the config file and reload if necessary |         //Save the config file and reload if necessary | ||||||
|         Stargate.getInstance().saveConfig(); |         Stargate.getInstance().saveConfig(); | ||||||
|         reloadIfNecessary(commandSender); |  | ||||||
|  |         Stargate.getMessageSender().sendSuccessMessage(commandSender, "Config updated"); | ||||||
|  |  | ||||||
|  |         //Reload whatever is necessary | ||||||
|  |         reloadIfNecessary(commandSender, selectedOption); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Registers the chat color if | ||||||
|  |      * | ||||||
|  |      * @param selectedOption <p>The option to change</p> | ||||||
|  |      * @param commandSender  <p>The command sender to alert if the color is invalid</p> | ||||||
|  |      * @param value          <p>The new option value</p> | ||||||
|  |      */ | ||||||
|  |     private boolean registerColor(ConfigOption selectedOption, String value, CommandSender commandSender) { | ||||||
|  |         ChatColor parsedColor = parseColor(value); | ||||||
|  |         if (parsedColor == null) { | ||||||
|  |             commandSender.sendMessage(ChatColor.RED + "Invalid color given"); | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if (selectedOption == ConfigOption.FREE_GATES_COLOR) { | ||||||
|  |             PortalSignDrawer.setFreeColor(parsedColor); | ||||||
|  |         } else if (selectedOption == ConfigOption.MAIN_SIGN_COLOR) { | ||||||
|  |             PortalSignDrawer.setMainColor(parsedColor); | ||||||
|  |         } else if (selectedOption == ConfigOption.HIGHLIGHT_SIGN_COLOR) { | ||||||
|  |             PortalSignDrawer.setHighlightColor(parsedColor); | ||||||
|  |         } | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Parses a chat color | ||||||
|  |      * | ||||||
|  |      * @param value <p>The value to parse</p> | ||||||
|  |      * @return <p>The parsed color or null</p> | ||||||
|  |      */ | ||||||
|  |     private ChatColor parseColor(String value) { | ||||||
|  |         try { | ||||||
|  |             return ChatColor.valueOf(value.toUpperCase()); | ||||||
|  |         } catch (IllegalArgumentException | NullPointerException ignored) { | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -121,12 +187,27 @@ public class CommandConfig implements CommandExecutor { | |||||||
|      * Reloads the config if necessary |      * Reloads the config if necessary | ||||||
|      * |      * | ||||||
|      * @param commandSender <p>The command sender initiating the reload</p> |      * @param commandSender <p>The command sender initiating the reload</p> | ||||||
|  |      * @param configOption  <p>The changed config option</p> | ||||||
|      */ |      */ | ||||||
|     private void reloadIfNecessary(CommandSender commandSender) { |     private void reloadIfNecessary(CommandSender commandSender, ConfigOption configOption) { | ||||||
|         //TODO: Only update the config values which have changed and do the least amount of work necessary to load the  |         if (ConfigTag.requiresFullReload(configOption)) { | ||||||
|         // changes. Only do a full reload if absolutely necessary, or when the partial reloading would be as  |             //Reload everything | ||||||
|         // inefficient as a full reload. |             Stargate.getStargateConfig().reload(commandSender); | ||||||
|         Stargate.getStargateConfig().reload(commandSender); |         } else if (ConfigTag.requiresPortalReload(configOption)) { | ||||||
|  |             //Just unload and reload the portals | ||||||
|  |             Stargate.getStargateConfig().unloadAllPortals(); | ||||||
|  |             Stargate.getStargateConfig().loadAllPortals(); | ||||||
|  |         } else if (ConfigTag.requiresLanguageReload(configOption)) { | ||||||
|  |             //Reload the language loader | ||||||
|  |             Stargate.getStargateConfig().getLanguageLoader().reload(); | ||||||
|  |             //Re-draw all portal signs | ||||||
|  |             for (Portal portal : PortalRegistry.getAllPortals()) { | ||||||
|  |                 portal.drawSign(); | ||||||
|  |             } | ||||||
|  |         } else if (ConfigTag.requiresEconomyReload(configOption)) { | ||||||
|  |             //Load or unload Vault and Economy as necessary | ||||||
|  |             Stargate.getStargateConfig().reloadEconomy(); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|   | |||||||
							
								
								
									
										74
									
								
								src/main/java/net/knarcraft/stargate/config/ConfigTag.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								src/main/java/net/knarcraft/stargate/config/ConfigTag.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,74 @@ | |||||||
|  | package net.knarcraft.stargate.config; | ||||||
|  |  | ||||||
|  | import java.util.Arrays; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * A config tag groups config values by a property | ||||||
|  |  */ | ||||||
|  | public enum ConfigTag { | ||||||
|  |  | ||||||
|  |     COLOR(new ConfigOption[]{ConfigOption.FREE_GATES_COLOR, ConfigOption.MAIN_SIGN_COLOR, ConfigOption.HIGHLIGHT_SIGN_COLOR}), | ||||||
|  |     FOLDER(new ConfigOption[]{ConfigOption.GATE_FOLDER, ConfigOption.PORTAL_FOLDER}); | ||||||
|  |  | ||||||
|  |     private final ConfigOption[] taggedOptions; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Instantiates a new config tag | ||||||
|  |      * | ||||||
|  |      * @param taggedOptions <p>The config options included in this tag</p> | ||||||
|  |      */ | ||||||
|  |     ConfigTag(ConfigOption[] taggedOptions) { | ||||||
|  |         this.taggedOptions = taggedOptions; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Checks whether a config tag includes the given config option | ||||||
|  |      * | ||||||
|  |      * @param option <p>The config option to check</p> | ||||||
|  |      * @return <p>True of the config option is tagged</p> | ||||||
|  |      */ | ||||||
|  |     public boolean isTagged(ConfigOption option) { | ||||||
|  |         return Arrays.stream(taggedOptions).anyMatch((item) -> item == option); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Checks whether a given config option requires a full reload to take effect | ||||||
|  |      * | ||||||
|  |      * @param option <p>The config option to check</p> | ||||||
|  |      * @return <p>True if changing the config option requires a full reload to take effect</p> | ||||||
|  |      */ | ||||||
|  |     public static boolean requiresFullReload(ConfigOption option) { | ||||||
|  |         return FOLDER.isTagged(option); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Checks whether a given config option requires a portal reload to take effect | ||||||
|  |      * | ||||||
|  |      * @param option <p>The config option to check</p> | ||||||
|  |      * @return <p>True if changing the config option requires a portal reload to take effect</p> | ||||||
|  |      */ | ||||||
|  |     public static boolean requiresPortalReload(ConfigOption option) { | ||||||
|  |         return COLOR.isTagged(option) || FOLDER.isTagged(option) || option == ConfigOption.VERIFY_PORTALS; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Checks whether a given config option requires the language loader to be reloaded | ||||||
|  |      * | ||||||
|  |      * @param option <p>The config option to check</p> | ||||||
|  |      * @return <p>True if the language loader requires a reload</p> | ||||||
|  |      */ | ||||||
|  |     public static boolean requiresLanguageReload(ConfigOption option) { | ||||||
|  |         return option == ConfigOption.LANGUAGE; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Checks whether a given config option requires economy to be reloaded | ||||||
|  |      * | ||||||
|  |      * @param option <p>The config option to check</p> | ||||||
|  |      * @return <p>True if economy requires a reload</p> | ||||||
|  |      */ | ||||||
|  |     public static boolean requiresEconomyReload(ConfigOption option) { | ||||||
|  |         return option == ConfigOption.USE_ECONOMY; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -31,7 +31,12 @@ public final class EconomyConfig { | |||||||
|      */ |      */ | ||||||
|     public EconomyConfig(Map<ConfigOption, Object> configOptions) { |     public EconomyConfig(Map<ConfigOption, Object> configOptions) { | ||||||
|         this.configOptions = configOptions; |         this.configOptions = configOptions; | ||||||
|         loadEconomyConfig(configOptions); |         try { | ||||||
|  |             String freeColor = (String) configOptions.get(ConfigOption.FREE_GATES_COLOR); | ||||||
|  |             PortalSignDrawer.setFreeColor(ChatColor.valueOf(freeColor.toUpperCase())); | ||||||
|  |         } catch (IllegalArgumentException | NullPointerException ignored) { | ||||||
|  |             PortalSignDrawer.setFreeColor(ChatColor.DARK_GREEN); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -220,21 +225,6 @@ public final class EconomyConfig { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Loads all config values related to economy |  | ||||||
|      * |  | ||||||
|      * @param configOptions <p>The loaded config options to get values from</p> |  | ||||||
|      */ |  | ||||||
|     private void loadEconomyConfig(Map<ConfigOption, Object> configOptions) { |  | ||||||
|  |  | ||||||
|         try { |  | ||||||
|             String freeColor = (String) configOptions.get(ConfigOption.FREE_GATES_COLOR); |  | ||||||
|             PortalSignDrawer.setFreeColor(ChatColor.valueOf(freeColor.toUpperCase())); |  | ||||||
|         } catch (IllegalArgumentException | NullPointerException ignored) { |  | ||||||
|             PortalSignDrawer.setFreeColor(ChatColor.DARK_GREEN); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Determines if a player can do a gate action for free |      * Determines if a player can do a gate action for free | ||||||
|      * |      * | ||||||
|   | |||||||
| @@ -46,8 +46,6 @@ public final class StargateConfig { | |||||||
|     private String portalFolder; |     private String portalFolder; | ||||||
|     private String languageName = "en"; |     private String languageName = "en"; | ||||||
|  |  | ||||||
|     private boolean debuggingEnabled = false; |  | ||||||
|     private boolean permissionDebuggingEnabled = false; |  | ||||||
|     private final Map<ConfigOption, Object> configOptions; |     private final Map<ConfigOption, Object> configOptions; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -65,6 +63,18 @@ public final class StargateConfig { | |||||||
|         languageLoader = new LanguageLoader(dataFolderPath + "/lang/"); |         languageLoader = new LanguageLoader(dataFolderPath + "/lang/"); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Gets a direct reference to the config option map | ||||||
|  |      * | ||||||
|  |      * <p>This reference can be used to alter the value of config options. Values should only be altered after it's | ||||||
|  |      * been verified that the value is valid.</p> | ||||||
|  |      * | ||||||
|  |      * @return <p>A reference to the config options map</p> | ||||||
|  |      */ | ||||||
|  |     public Map<ConfigOption, Object> getConfigOptionsReference() { | ||||||
|  |         return configOptions; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Finish the config setup by loading languages, gates and portals, and loading economy if vault is loaded |      * Finish the config setup by loading languages, gates and portals, and loading economy if vault is loaded | ||||||
|      */ |      */ | ||||||
| @@ -81,7 +91,7 @@ public final class StargateConfig { | |||||||
|         languageLoader.reload(); |         languageLoader.reload(); | ||||||
|  |  | ||||||
|         messageSender = new MessageSender(languageLoader); |         messageSender = new MessageSender(languageLoader); | ||||||
|         if (debuggingEnabled) { |         if (isDebuggingEnabled()) { | ||||||
|             languageLoader.debug(); |             languageLoader.debug(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -130,7 +140,7 @@ public final class StargateConfig { | |||||||
|      * @return <p>Whether debugging is enabled</p> |      * @return <p>Whether debugging is enabled</p> | ||||||
|      */ |      */ | ||||||
|     public boolean isDebuggingEnabled() { |     public boolean isDebuggingEnabled() { | ||||||
|         return debuggingEnabled; |         return (boolean) configOptions.get(ConfigOption.DEBUG); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -139,7 +149,7 @@ public final class StargateConfig { | |||||||
|      * @return <p>Whether permission debugging is enabled</p> |      * @return <p>Whether permission debugging is enabled</p> | ||||||
|      */ |      */ | ||||||
|     public boolean isPermissionDebuggingEnabled() { |     public boolean isPermissionDebuggingEnabled() { | ||||||
|         return permissionDebuggingEnabled; |         return (boolean) configOptions.get(ConfigOption.PERMISSION_DEBUG); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -186,6 +196,17 @@ public final class StargateConfig { | |||||||
|      * Un-loads all loaded data |      * Un-loads all loaded data | ||||||
|      */ |      */ | ||||||
|     private void unload() { |     private void unload() { | ||||||
|  |         //De-activate, close and unload all loaded portals | ||||||
|  |         unloadAllPortals(); | ||||||
|  |  | ||||||
|  |         //Clear all loaded gates | ||||||
|  |         GateHandler.clearGates(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Un-loads all loaded portals | ||||||
|  |      */ | ||||||
|  |     public void unloadAllPortals() { | ||||||
|         //De-activate all currently active portals |         //De-activate all currently active portals | ||||||
|         for (Portal activePortal : activePortalsQueue) { |         for (Portal activePortal : activePortalsQueue) { | ||||||
|             activePortal.getPortalActivator().deactivate(); |             activePortal.getPortalActivator().deactivate(); | ||||||
| @@ -201,9 +222,6 @@ public final class StargateConfig { | |||||||
|  |  | ||||||
|         //Clear all loaded portals |         //Clear all loaded portals | ||||||
|         PortalRegistry.clearPortals(); |         PortalRegistry.clearPortals(); | ||||||
|  |  | ||||||
|         //Clear all loaded gates |  | ||||||
|         GateHandler.clearGates(); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -256,7 +274,7 @@ public final class StargateConfig { | |||||||
|         //Update the language loader in case the loaded language changed |         //Update the language loader in case the loaded language changed | ||||||
|         languageLoader.setChosenLanguage(languageName); |         languageLoader.setChosenLanguage(languageName); | ||||||
|         languageLoader.reload(); |         languageLoader.reload(); | ||||||
|         if (debuggingEnabled) { |         if (isDebuggingEnabled()) { | ||||||
|             languageLoader.debug(); |             languageLoader.debug(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -267,7 +285,7 @@ public final class StargateConfig { | |||||||
|     /** |     /** | ||||||
|      * Starts the listener for listening to BungeeCord messages |      * Starts the listener for listening to BungeeCord messages | ||||||
|      */ |      */ | ||||||
|     private void startStopBungeeListener(boolean start) { |     public void startStopBungeeListener(boolean start) { | ||||||
|         Messenger messenger = Bukkit.getMessenger(); |         Messenger messenger = Bukkit.getMessenger(); | ||||||
|         String bungeeChannel = "BungeeCord"; |         String bungeeChannel = "BungeeCord"; | ||||||
|  |  | ||||||
| @@ -283,7 +301,7 @@ public final class StargateConfig { | |||||||
|     /** |     /** | ||||||
|      * Reloads economy by enabling or disabling it as necessary |      * Reloads economy by enabling or disabling it as necessary | ||||||
|      */ |      */ | ||||||
|     private void reloadEconomy() { |     public void reloadEconomy() { | ||||||
|         EconomyConfig economyConfig = getEconomyConfig(); |         EconomyConfig economyConfig = getEconomyConfig(); | ||||||
|         if (economyConfig.isEconomyEnabled() && economyConfig.getEconomy() == null) { |         if (economyConfig.isEconomyEnabled() && economyConfig.getEconomy() == null) { | ||||||
|             setupVaultEconomy(); |             setupVaultEconomy(); | ||||||
| @@ -342,10 +360,6 @@ public final class StargateConfig { | |||||||
|         portalFolder = (String) configOptions.get(ConfigOption.PORTAL_FOLDER); |         portalFolder = (String) configOptions.get(ConfigOption.PORTAL_FOLDER); | ||||||
|         gateFolder = (String) configOptions.get(ConfigOption.GATE_FOLDER); |         gateFolder = (String) configOptions.get(ConfigOption.GATE_FOLDER); | ||||||
|  |  | ||||||
|         //Get enabled debug settings from the config |  | ||||||
|         debuggingEnabled = (boolean) configOptions.get(ConfigOption.DEBUG); |  | ||||||
|         permissionDebuggingEnabled = (boolean) configOptions.get(ConfigOption.PERMISSION_DEBUG); |  | ||||||
|  |  | ||||||
|         //If users have an outdated config, assume they also need to update their default gates |         //If users have an outdated config, assume they also need to update their default gates | ||||||
|         if (isMigrating) { |         if (isMigrating) { | ||||||
|             GateHandler.writeDefaultGatesToFolder(gateFolder); |             GateHandler.writeDefaultGatesToFolder(gateFolder); | ||||||
|   | |||||||
| @@ -190,13 +190,13 @@ public final class StargateGateConfig { | |||||||
|     private void loadSignColor(String mainSignColor, String highlightSignColor) { |     private void loadSignColor(String mainSignColor, String highlightSignColor) { | ||||||
|         if (mainSignColor != null && highlightSignColor != null) { |         if (mainSignColor != null && highlightSignColor != null) { | ||||||
|             try { |             try { | ||||||
|                 PortalSignDrawer.setColors(ChatColor.valueOf(mainSignColor.toUpperCase()), |                 PortalSignDrawer.setMainColor(ChatColor.valueOf(highlightSignColor.toUpperCase())); | ||||||
|                         ChatColor.valueOf(highlightSignColor.toUpperCase())); |                 PortalSignDrawer.setHighlightColor(ChatColor.valueOf(highlightSignColor.toUpperCase())); | ||||||
|                 return; |  | ||||||
|             } catch (IllegalArgumentException | NullPointerException ignored) { |             } catch (IllegalArgumentException | NullPointerException ignored) { | ||||||
|  |                 Stargate.logWarning("You have specified an invalid color in your config.yml. Defaulting to BLACK and WHITE"); | ||||||
|  |                 PortalSignDrawer.setMainColor(ChatColor.BLACK); | ||||||
|  |                 PortalSignDrawer.setHighlightColor(ChatColor.WHITE); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         Stargate.logWarning("You have specified an invalid color in your config.yml. Defaulting to BLACK and WHITE"); |  | ||||||
|         PortalSignDrawer.setColors(ChatColor.BLACK, ChatColor.WHITE); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -29,19 +29,27 @@ public class PortalSignDrawer { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Sets the main and highlighting sign colors |      * Sets the highlighting sign color | ||||||
|      * |      * | ||||||
|      * <p>The main sign color is used for most text on the sign, while the highlighting color is used for the markings |      * <p>The highlighting color is used for the markings around portal names and network names ('>','<','-',')','(').</p> | ||||||
|      * around portal names and network names ('>','<','-',')','(')</p> |  | ||||||
|      * |      * | ||||||
|      * @param newMainColor      <p>The new main sign color</p> |  | ||||||
|      * @param newHighlightColor <p>The new highlight color</p> |      * @param newHighlightColor <p>The new highlight color</p> | ||||||
|      */ |      */ | ||||||
|     public static void setColors(ChatColor newMainColor, ChatColor newHighlightColor) { |     public static void setHighlightColor(ChatColor newHighlightColor) { | ||||||
|         mainColor = newMainColor; |  | ||||||
|         highlightColor = newHighlightColor; |         highlightColor = newHighlightColor; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Sets the main sign color | ||||||
|  |      * | ||||||
|  |      * <p>The main sign color is used for most text on the sign.</p> | ||||||
|  |      * | ||||||
|  |      * @param newMainColor <p>The new main sign color</p> | ||||||
|  |      */ | ||||||
|  |     public static void setMainColor(ChatColor newMainColor) { | ||||||
|  |         mainColor = newMainColor; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Sets the color to use for marking free stargates |      * Sets the color to use for marking free stargates | ||||||
|      * |      * | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user