Makes the free gate color configurable
This commit is contained in:
parent
4699f717ec
commit
10c3914a60
@ -325,7 +325,8 @@ economy:
|
||||
useCost - The cost to use a stargate
|
||||
toOwner - Whether the money from gate-use goes to the owner or nobody
|
||||
chargeFreeDestination - Enable to make players pay for teleportation even if the destination is free
|
||||
freeGatesGreen - Enable to make gates that won't cost the player money show up as green
|
||||
freeGatesColored - Enable to make gates that won't cost the player money show up as green
|
||||
freeGatesColor - This allows you to specify the color of the markings and name of free stargates
|
||||
debugging:
|
||||
debug - Whether to show massive debug output
|
||||
permissionDebug - Whether to show massive permission debug output
|
||||
@ -396,6 +397,7 @@ portalInfoServer=Server: %server%
|
||||
- Excludes color codes from the counted character length to allow a colored, 13-character name
|
||||
- Makes portal names and networks case- and color-agnostic to prevent some confusion caused by typos or sloppy
|
||||
configuration
|
||||
- Makes the free gate color configurable, and renames freeGatesGreen to freeGatesColored
|
||||
|
||||
#### \[Version 0.9.1.2] EpicKnarvik97 fork
|
||||
|
||||
|
@ -86,6 +86,7 @@ public class ConfigTabCompleter implements TabCompleter {
|
||||
}
|
||||
case MAIN_SIGN_COLOR:
|
||||
case HIGHLIGHT_SIGN_COLOR:
|
||||
case FREE_GATES_COLOR:
|
||||
//Return all colors
|
||||
return filterMatching(getColors(), typedText);
|
||||
}
|
||||
|
@ -9,86 +9,144 @@ public enum ConfigOption {
|
||||
* The language used for player-interface text
|
||||
*/
|
||||
LANGUAGE("language", "The language used for all signs and all messages to players", "en"),
|
||||
|
||||
/**
|
||||
* The folder for portal files
|
||||
*/
|
||||
PORTAL_FOLDER("folders.portalFolder", "The folder containing the portal databases", "plugins/Stargate/portals/"),
|
||||
|
||||
/**
|
||||
* The folder for gate files
|
||||
*/
|
||||
GATE_FOLDER("folders.gateFolder", "The folder containing all gate files", "plugins/Stargate/gates/"),
|
||||
|
||||
/**
|
||||
* The max number of portals on a single network
|
||||
*/
|
||||
MAX_GATES_EACH_NETWORK("gates.maxGatesEachNetwork", "The max number of stargates in a single network", 0),
|
||||
|
||||
/**
|
||||
* The network used if not specified
|
||||
*/
|
||||
DEFAULT_GATE_NETWORK("gates.defaultGateNetwork", "The network used when no network is specified", "central"),
|
||||
|
||||
/**
|
||||
* Whether to remember the lastly used destination
|
||||
*/
|
||||
REMEMBER_DESTINATION("gates.cosmetic.rememberDestination", "Whether to remember the last destination used", false),
|
||||
|
||||
/**
|
||||
* Whether to sort the network destinations
|
||||
*/
|
||||
SORT_NETWORK_DESTINATIONS("gates.cosmetic.sortNetworkDestinations", "Whether to sort destinations by name", false),
|
||||
|
||||
/**
|
||||
* The main color to use for all signs
|
||||
*/
|
||||
MAIN_SIGN_COLOR("gates.cosmetic.mainSignColor", "The main text color of all stargate signs", "BLACK"),
|
||||
|
||||
/**
|
||||
* The color to use for highlighting sign text
|
||||
*/
|
||||
HIGHLIGHT_SIGN_COLOR("gates.cosmetic.highlightSignColor", "The text color used for highlighting stargate signs", "WHITE"),
|
||||
|
||||
/**
|
||||
* Whether to destroy portals when any blocks are broken by explosions
|
||||
*/
|
||||
DESTROYED_BY_EXPLOSION("gates.integrity.destroyedByExplosion", "Whether stargates should be destroyed by explosions", false),
|
||||
|
||||
/**
|
||||
* Whether to verify each portal's gate layout after each load
|
||||
*/
|
||||
VERIFY_PORTALS("gates.integrity.verifyPortals", "Whether to verify that portals match their gate layout on load", false),
|
||||
|
||||
/**
|
||||
* Whether to protect the entrance of portals
|
||||
*/
|
||||
PROTECT_ENTRANCE("gates.integrity.protectEntrance", "Whether to protect stargates' entrances", false),
|
||||
|
||||
/**
|
||||
* Whether to enable BungeeCord support
|
||||
*/
|
||||
ENABLE_BUNGEE("gates.functionality.enableBungee", "Whether to enable BungeeCord support", false),
|
||||
|
||||
/**
|
||||
* Whether to enable vehicle teleportation
|
||||
*/
|
||||
HANDLE_VEHICLES("gates.functionality.handleVehicles", "Whether to enable vehicle teleportation", true),
|
||||
|
||||
/**
|
||||
* Whether to enable teleportation of empty vehicles
|
||||
*/
|
||||
HANDLE_EMPTY_VEHICLES("gates.functionality.handleEmptyVehicles", "Whether to enable teleportation of empty vehicles", true),
|
||||
|
||||
/**
|
||||
* Whether to enable teleportation of creatures using vehicles
|
||||
*/
|
||||
HANDLE_CREATURE_TRANSPORTATION("gates.functionality.handleCreatureTransportation",
|
||||
"Whether to enable teleportation of vehicles containing non-player creatures", true),
|
||||
|
||||
/**
|
||||
* Whether to allow creatures to teleport alone, bypassing any access restrictions
|
||||
*/
|
||||
HANDLE_NON_PLAYER_VEHICLES("gates.functionality.handleNonPlayerVehicles",
|
||||
"Whether to enable teleportation of non-empty vehicles without a player", true),
|
||||
|
||||
/**
|
||||
* Whether to enable teleportations of creatures on a leash
|
||||
*/
|
||||
HANDLE_LEASHED_CREATURES("gates.functionality.handleLeashedCreatures",
|
||||
"Whether to enable players to teleport a creature on a leash", true),
|
||||
|
||||
/**
|
||||
* Whether to enable economy support for taking payment from players creating/destroying/using stargates
|
||||
*/
|
||||
USE_ECONOMY("economy.useEconomy", "Whether to use economy to incur fees when stargates are used, created or destroyed", false),
|
||||
|
||||
/**
|
||||
* The cost of creating a new stargate
|
||||
*/
|
||||
CREATE_COST("economy.createCost", "The cost of creating a new stargate", 0),
|
||||
|
||||
/**
|
||||
* The cost of destroying a stargate
|
||||
*/
|
||||
DESTROY_COST("economy.destroyCost", "The cost of destroying a stargate. Negative to refund", 0),
|
||||
|
||||
/**
|
||||
* The cost of using (teleporting through) a stargate
|
||||
*/
|
||||
USE_COST("economy.useCost", "The cost of using (teleporting through) a stargate", 0),
|
||||
|
||||
/**
|
||||
* Whether any payments should go to the stargate's owner
|
||||
*/
|
||||
TO_OWNER("economy.toOwner", "Whether any teleportation fees should go to the owner of the used stargate", false),
|
||||
|
||||
/**
|
||||
* Whether to charge for using a stargate, even if its destination is free
|
||||
*/
|
||||
CHARGE_FREE_DESTINATION("economy.chargeFreeDestination",
|
||||
"Whether to require payment if the destination is free, but the entrance stargate is not", true),
|
||||
FREE_GATES_GREEN("economy.freeGatesGreen", "Whether to use green coloring to mark all free stargates", false),
|
||||
|
||||
/**
|
||||
* Whether to mark free gates with a different color
|
||||
*/
|
||||
FREE_GATES_COLORED("economy.freeGatesColored", "Whether to use coloring to mark all free stargates", false),
|
||||
|
||||
/**
|
||||
* The color to use for marking free stargates
|
||||
*/
|
||||
FREE_GATES_COLOR("economy.freeGatesColor", "The color to use for marking free stargates", "DARK_GREEN"),
|
||||
|
||||
/**
|
||||
* Whether to enable debug output
|
||||
*/
|
||||
DEBUG("debugging.debug", "Whether to enable debugging output", false),
|
||||
|
||||
/**
|
||||
* Whether to enable debug output for debugging permissions
|
||||
*/
|
||||
PERMISSION_DEBUG("debugging.permissionDebug", "Whether to enable permission debugging output", false);
|
||||
|
||||
|
||||
|
@ -2,10 +2,12 @@ package net.knarcraft.stargate.config;
|
||||
|
||||
import net.knarcraft.stargate.Stargate;
|
||||
import net.knarcraft.stargate.portal.Portal;
|
||||
import net.knarcraft.stargate.portal.PortalSignDrawer;
|
||||
import net.knarcraft.stargate.portal.property.gate.Gate;
|
||||
import net.knarcraft.stargate.utility.PermissionHelper;
|
||||
import net.milkbowl.vault.economy.Economy;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
@ -28,7 +30,7 @@ public final class EconomyConfig {
|
||||
private int destroyCost = 0;
|
||||
private boolean toOwner = false;
|
||||
private boolean chargeFreeDestination = true;
|
||||
private boolean freeGatesGreen = false;
|
||||
private boolean freeGatesColored = false;
|
||||
|
||||
/**
|
||||
* Instantiates a new economy config
|
||||
@ -84,12 +86,12 @@ public final class EconomyConfig {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether free portals should be marked with green coloring
|
||||
* Gets whether free portals should be marked with a different coloring
|
||||
*
|
||||
* @return <p>Whether free portals should be green</p>
|
||||
* @return <p>Whether free portals should be colored</p>
|
||||
*/
|
||||
public boolean drawFreePortalsGreen() {
|
||||
return freeGatesGreen;
|
||||
public boolean drawFreePortalsColored() {
|
||||
return freeGatesColored;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -341,7 +343,14 @@ public final class EconomyConfig {
|
||||
setDefaultUseCost((Integer) configOptions.get(ConfigOption.USE_COST));
|
||||
toOwner = (boolean) configOptions.get(ConfigOption.TO_OWNER);
|
||||
chargeFreeDestination = (boolean) configOptions.get(ConfigOption.CHARGE_FREE_DESTINATION);
|
||||
freeGatesGreen = (boolean) configOptions.get(ConfigOption.FREE_GATES_GREEN);
|
||||
freeGatesColored = (boolean) configOptions.get(ConfigOption.FREE_GATES_COLORED);
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -309,9 +309,7 @@ public final class StargateConfig {
|
||||
FileConfiguration newConfig = Stargate.getInstance().getConfig();
|
||||
|
||||
boolean isMigrating = false;
|
||||
if (newConfig.getString("lang") != null ||
|
||||
newConfig.getString("gates.integrity.ignoreEntrance") != null ||
|
||||
newConfig.getString("ignoreEntrance") != null) {
|
||||
if (newConfig.getString("lang") != null || newConfig.getString("economy.freeGatesGreen") != null) {
|
||||
migrateConfig(newConfig);
|
||||
isMigrating = true;
|
||||
}
|
||||
|
@ -188,7 +188,7 @@ public final class StargateGateConfig {
|
||||
* @param mainSignColor <p>A string representing the main sign color</p>
|
||||
*/
|
||||
private void loadSignColor(String mainSignColor, String highlightSignColor) {
|
||||
if (mainSignColor != null) {
|
||||
if (mainSignColor != null && highlightSignColor != null) {
|
||||
try {
|
||||
PortalSignDrawer.setColors(ChatColor.valueOf(mainSignColor.toUpperCase()),
|
||||
ChatColor.valueOf(highlightSignColor.toUpperCase()));
|
||||
|
@ -15,7 +15,7 @@ public class PortalSignDrawer {
|
||||
|
||||
private final Portal portal;
|
||||
private final static ChatColor errorColor = ChatColor.DARK_RED;
|
||||
private final static ChatColor freeColor = ChatColor.DARK_GREEN;
|
||||
private static ChatColor freeColor;
|
||||
private static ChatColor mainColor;
|
||||
private static ChatColor highlightColor;
|
||||
|
||||
@ -29,7 +29,7 @@ public class PortalSignDrawer {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the main sign color
|
||||
* Sets the main and highlighting sign colors
|
||||
*
|
||||
* <p>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 ('>','<','-',')','(')</p>
|
||||
@ -42,6 +42,15 @@ public class PortalSignDrawer {
|
||||
highlightColor = newHighlightColor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the color to use for marking free stargates
|
||||
*
|
||||
* @param freeColor <p>The new color to use for marking free stargates</p>
|
||||
*/
|
||||
public static void setFreeColor(ChatColor freeColor) {
|
||||
PortalSignDrawer.freeColor = freeColor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws the sign of the portal this sign drawer is responsible for
|
||||
*/
|
||||
@ -136,42 +145,42 @@ public class PortalSignDrawer {
|
||||
int maxIndex = destinations.getDestinations().size() - 1;
|
||||
int signLineIndex = 0;
|
||||
int destinationIndex = destinations.getDestinations().indexOf(portal.getDestinationName());
|
||||
boolean freeGatesGreen = Stargate.getEconomyConfig().useEconomy() &&
|
||||
Stargate.getEconomyConfig().drawFreePortalsGreen();
|
||||
boolean freeGatesColored = Stargate.getEconomyConfig().useEconomy() &&
|
||||
Stargate.getEconomyConfig().drawFreePortalsColored();
|
||||
|
||||
//Last, and not only entry. Draw the entry two back
|
||||
if ((destinationIndex == maxIndex) && (maxIndex > 1)) {
|
||||
drawNetworkSignLine(freeGatesGreen, sign, ++signLineIndex, destinationIndex - 2);
|
||||
drawNetworkSignLine(freeGatesColored, sign, ++signLineIndex, destinationIndex - 2);
|
||||
}
|
||||
//Not first entry. Draw the previous entry
|
||||
if (destinationIndex > 0) {
|
||||
drawNetworkSignLine(freeGatesGreen, sign, ++signLineIndex, destinationIndex - 1);
|
||||
drawNetworkSignLine(freeGatesColored, sign, ++signLineIndex, destinationIndex - 1);
|
||||
}
|
||||
//Draw the chosen entry (line 2 or 3)
|
||||
drawNetworkSignChosenLine(freeGatesGreen, sign, ++signLineIndex);
|
||||
drawNetworkSignChosenLine(freeGatesColored, sign, ++signLineIndex);
|
||||
//Has another entry and space on the sign
|
||||
if ((maxIndex >= destinationIndex + 1)) {
|
||||
drawNetworkSignLine(freeGatesGreen, sign, ++signLineIndex, destinationIndex + 1);
|
||||
drawNetworkSignLine(freeGatesColored, sign, ++signLineIndex, destinationIndex + 1);
|
||||
}
|
||||
//Has another entry and space on the sign
|
||||
if ((maxIndex >= destinationIndex + 2) && (++signLineIndex <= 3)) {
|
||||
drawNetworkSignLine(freeGatesGreen, sign, signLineIndex, destinationIndex + 2);
|
||||
drawNetworkSignLine(freeGatesColored, sign, signLineIndex, destinationIndex + 2);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws the chosen destination on one sign line
|
||||
*
|
||||
* @param freeGatesGreen <p>Whether to display free gates in a green color</p>
|
||||
* @param sign <p>The sign to draw on</p>
|
||||
* @param signLineIndex <p>The line to draw on</p>
|
||||
* @param freeGatesColored <p>Whether to display free gates in a different color</p>
|
||||
* @param sign <p>The sign to draw on</p>
|
||||
* @param signLineIndex <p>The line to draw on</p>
|
||||
*/
|
||||
private void drawNetworkSignChosenLine(boolean freeGatesGreen, Sign sign, int signLineIndex) {
|
||||
if (freeGatesGreen) {
|
||||
private void drawNetworkSignChosenLine(boolean freeGatesColored, Sign sign, int signLineIndex) {
|
||||
if (freeGatesColored) {
|
||||
Portal destination = PortalHandler.getByName(portal.getDestinationName(), portal.getNetwork());
|
||||
boolean green = PermissionHelper.isFree(portal.getActivePlayer(), portal, destination);
|
||||
ChatColor nameColor = (green ? freeColor : highlightColor);
|
||||
setLine(sign, signLineIndex, nameColor + ">" + (green ? freeColor : mainColor) +
|
||||
boolean free = PermissionHelper.isFree(portal.getActivePlayer(), portal, destination);
|
||||
ChatColor nameColor = (free ? freeColor : highlightColor);
|
||||
setLine(sign, signLineIndex, nameColor + ">" + (free ? freeColor : mainColor) +
|
||||
fixColor(portal.getDestinationName()) + nameColor + "<");
|
||||
} else {
|
||||
setLine(sign, signLineIndex, highlightColor + ">" + mainColor +
|
||||
@ -193,18 +202,18 @@ public class PortalSignDrawer {
|
||||
/**
|
||||
* Draws one network destination on one sign line
|
||||
*
|
||||
* @param freeGatesGreen <p>Whether to display free gates in a green color</p>
|
||||
* @param freeGatesColored <p>Whether to display free gates in a different color</p>
|
||||
* @param sign <p>The sign to draw on</p>
|
||||
* @param signLineIndex <p>The line to draw on</p>
|
||||
* @param destinationIndex <p>The index of the destination to draw</p>
|
||||
*/
|
||||
private void drawNetworkSignLine(boolean freeGatesGreen, Sign sign, int signLineIndex, int destinationIndex) {
|
||||
private void drawNetworkSignLine(boolean freeGatesColored, Sign sign, int signLineIndex, int destinationIndex) {
|
||||
PortalActivator destinations = portal.getPortalActivator();
|
||||
String destinationName = destinations.getDestinations().get(destinationIndex);
|
||||
if (freeGatesGreen) {
|
||||
if (freeGatesColored) {
|
||||
Portal destination = PortalHandler.getByName(destinationName, portal.getNetwork());
|
||||
boolean green = PermissionHelper.isFree(portal.getActivePlayer(), portal, destination);
|
||||
setLine(sign, signLineIndex, (green ? freeColor : mainColor) + fixColor(destinationName));
|
||||
boolean free = PermissionHelper.isFree(portal.getActivePlayer(), portal, destination);
|
||||
setLine(sign, signLineIndex, (free ? freeColor : mainColor) + fixColor(destinationName));
|
||||
} else {
|
||||
setLine(sign, signLineIndex, mainColor + fixColor(destinationName));
|
||||
}
|
||||
|
@ -24,4 +24,5 @@ usecost=economy.useCost
|
||||
toowner=economy.toOwner
|
||||
chargefreedestination=economy.chargeFreeDestination
|
||||
freegatesgreen=economy.freeGatesGreen
|
||||
CheckUpdates=
|
||||
CheckUpdates=
|
||||
economy.freeGatesGreen=economy.freeGatesColored
|
@ -27,7 +27,8 @@
|
||||
# useCost - The cost to use a gate
|
||||
# toOwner - Whether the charge for using a gate goes to the gate's owner
|
||||
# chargeFreeDestination - Whether a gate whose destination is a free gate is still charged
|
||||
# freeGatesGreen - Whether a free gate in the destination list is drawn green
|
||||
# freeGatesColored - Whether a free gate in the destination list is marked with a color
|
||||
# freeGatesColor - The color to use for marking free gates
|
||||
# I-------I-------I #
|
||||
# Debug options #
|
||||
# I-------I-------I #
|
||||
@ -64,7 +65,8 @@ economy:
|
||||
useCost: 0
|
||||
toOwner: false
|
||||
chargeFreeDestination: true
|
||||
freeGatesGreen: false
|
||||
freeGatesColored: false
|
||||
freeGatesColor: DARK_GREEN
|
||||
debugging:
|
||||
debug: false
|
||||
permissionDebug: false
|
Loading…
x
Reference in New Issue
Block a user