Makes a lot of changes necessary for RGB and per-sign color configuration support
This commit is contained in:
@@ -50,6 +50,10 @@ public enum ConfigOption {
|
||||
*/
|
||||
HIGHLIGHT_SIGN_COLOR("gates.cosmetic.highlightSignColor", "The text color used for highlighting stargate signs", "WHITE"),
|
||||
|
||||
PER_SIGN_COLORS("gates.cosmetic.perSignColors", "The per-sign color specification", new String[]{
|
||||
"ACACIA:default,default", "BIRCH:default,default", "CRIMSON:default,default", "DARK_OAK:default,default",
|
||||
"JUNGLE:default,default", "OAK:default,default", "SPRUCE:default,default", "WARPED:default,default"}),
|
||||
|
||||
/**
|
||||
* Whether to destroy portals when any blocks are broken by explosions
|
||||
*/
|
||||
@@ -172,7 +176,9 @@ public enum ConfigOption {
|
||||
this.description = description;
|
||||
this.defaultValue = defaultValue;
|
||||
|
||||
if (defaultValue instanceof String) {
|
||||
if (defaultValue instanceof String[]) {
|
||||
this.dataType = OptionDataType.STRING_LIST;
|
||||
} else if (defaultValue instanceof String) {
|
||||
this.dataType = OptionDataType.STRING;
|
||||
} else if (defaultValue instanceof Boolean) {
|
||||
this.dataType = OptionDataType.BOOLEAN;
|
||||
|
@@ -4,8 +4,8 @@ import net.knarcraft.stargate.Stargate;
|
||||
import net.knarcraft.stargate.portal.PortalSignDrawer;
|
||||
import net.knarcraft.stargate.portal.property.gate.Gate;
|
||||
import net.knarcraft.stargate.utility.PermissionHelper;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.milkbowl.vault.economy.Economy;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
@@ -33,7 +33,7 @@ public final class EconomyConfig {
|
||||
this.configOptions = configOptions;
|
||||
try {
|
||||
String freeColor = (String) configOptions.get(ConfigOption.FREE_GATES_COLOR);
|
||||
PortalSignDrawer.setFreeColor(ChatColor.valueOf(freeColor.toUpperCase()));
|
||||
PortalSignDrawer.setFreeColor(ChatColor.of(freeColor.toUpperCase()));
|
||||
} catch (IllegalArgumentException | NullPointerException ignored) {
|
||||
PortalSignDrawer.setFreeColor(ChatColor.DARK_GREEN);
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.stargate.config;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
/**
|
||||
|
@@ -13,6 +13,7 @@ public enum OptionDataType {
|
||||
* The data type for the option is a Boolean
|
||||
*/
|
||||
BOOLEAN,
|
||||
STRING_LIST,
|
||||
/**
|
||||
* The data type for the option is an Integer
|
||||
*/
|
||||
|
@@ -2,8 +2,10 @@ package net.knarcraft.stargate.config;
|
||||
|
||||
import net.knarcraft.stargate.Stargate;
|
||||
import net.knarcraft.stargate.portal.PortalSignDrawer;
|
||||
import org.bukkit.ChatColor;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -180,6 +182,25 @@ public final class StargateGateConfig {
|
||||
//Load the sign colors
|
||||
loadSignColor((String) configOptions.get(ConfigOption.MAIN_SIGN_COLOR),
|
||||
(String) configOptions.get(ConfigOption.HIGHLIGHT_SIGN_COLOR));
|
||||
String[] perSignColors = (String[]) configOptions.get(ConfigOption.PER_SIGN_COLORS);
|
||||
|
||||
Map<Material, ChatColor> signMainColors = new HashMap<>();
|
||||
Map<Material, ChatColor> signHighlightColors = new HashMap<>();
|
||||
for (String signColorSpecification : perSignColors) {
|
||||
String[] specificationData = signColorSpecification.split(":");
|
||||
String[] colors = specificationData[1].split(",");
|
||||
if (!colors[0].equalsIgnoreCase("default")) {
|
||||
signMainColors.put(Material.matchMaterial(specificationData[0] + "_SIGN"), ChatColor.of(colors[0]));
|
||||
signMainColors.put(Material.matchMaterial(specificationData[0] + "_WALL_SIGN"), ChatColor.of(colors[0]));
|
||||
}
|
||||
if (!colors[1].equalsIgnoreCase("default")) {
|
||||
signHighlightColors.put(Material.matchMaterial(specificationData[0] + "_SIGN"), ChatColor.of(colors[1]));
|
||||
signHighlightColors.put(Material.matchMaterial(specificationData[0] + "_WALL_SIGN"), ChatColor.of(colors[1]));
|
||||
}
|
||||
}
|
||||
|
||||
PortalSignDrawer.setPerSignMainColors(signMainColors);
|
||||
PortalSignDrawer.setPerSignHighlightColors(signHighlightColors);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -189,8 +210,8 @@ public final class StargateGateConfig {
|
||||
*/
|
||||
private void loadSignColor(String mainSignColor, String highlightSignColor) {
|
||||
try {
|
||||
PortalSignDrawer.setMainColor(ChatColor.valueOf(mainSignColor.toUpperCase()));
|
||||
PortalSignDrawer.setHighlightColor(ChatColor.valueOf(highlightSignColor.toUpperCase()));
|
||||
PortalSignDrawer.setMainColor(ChatColor.of(mainSignColor.toUpperCase()));
|
||||
PortalSignDrawer.setHighlightColor(ChatColor.of(highlightSignColor.toUpperCase()));
|
||||
} catch (IllegalArgumentException | NullPointerException exception) {
|
||||
Stargate.logWarning("You have specified an invalid color in your config.yml. Defaulting to BLACK and WHITE");
|
||||
PortalSignDrawer.setMainColor(ChatColor.BLACK);
|
||||
|
Reference in New Issue
Block a user