mirror of
https://github.com/Multiverse/Multiverse-Core.git
synced 2024-11-19 00:55:55 +01:00
Move to ActiveConfig Properties.
This still needs some cleanup, but works well. I'd like some users to test (and comment here) on the following commands: mvm set pvp true/false (can't test this by myself) Everything else looks good. All tests pass. Think this one (due to the active properties) fixes #322
This commit is contained in:
parent
bb0b26e03c
commit
53c801bb81
@ -9,8 +9,8 @@ package com.onarandombox.MultiverseCore;
|
|||||||
|
|
||||||
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
||||||
import com.onarandombox.MultiverseCore.configuration.ConfigPropertyFactory;
|
import com.onarandombox.MultiverseCore.configuration.ConfigPropertyFactory;
|
||||||
|
import com.onarandombox.MultiverseCore.configuration.MVActiveConfigProperty;
|
||||||
import com.onarandombox.MultiverseCore.configuration.MVConfigProperty;
|
import com.onarandombox.MultiverseCore.configuration.MVConfigProperty;
|
||||||
import com.onarandombox.MultiverseCore.configuration.TempStringConfigProperty;
|
|
||||||
import com.onarandombox.MultiverseCore.enums.EnglishChatColor;
|
import com.onarandombox.MultiverseCore.enums.EnglishChatColor;
|
||||||
import com.onarandombox.MultiverseCore.event.MVWorldPropertyChangeEvent;
|
import com.onarandombox.MultiverseCore.event.MVWorldPropertyChangeEvent;
|
||||||
import com.onarandombox.MultiverseCore.exceptions.PropertyDoesNotExistException;
|
import com.onarandombox.MultiverseCore.exceptions.PropertyDoesNotExistException;
|
||||||
@ -123,20 +123,20 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
this.propertyList.put("color", fac.getNewProperty("color", EnglishChatColor.WHITE, "alias.color",
|
this.propertyList.put("color", fac.getNewProperty("color", EnglishChatColor.WHITE, "alias.color",
|
||||||
"Sorry, 'color' must either one of: " + EnglishChatColor.getAllColors()));
|
"Sorry, 'color' must either one of: " + EnglishChatColor.getAllColors()));
|
||||||
this.propertyList.put("pvp", fac.getNewProperty("pvp", true,
|
this.propertyList.put("pvp", fac.getNewProperty("pvp", true,
|
||||||
"Sorry, 'pvp' must either be:" + ChatColor.GREEN + " true " + ChatColor.WHITE + "or" + ChatColor.RED + " false" + ChatColor.WHITE + "."));
|
"Sorry, 'pvp' must either be:" + ChatColor.GREEN + " true " + ChatColor.WHITE + "or" + ChatColor.RED + " false" + ChatColor.WHITE + ".", "setActualPVP"));
|
||||||
this.propertyList.put("scale", fac.getNewProperty("scale", this.getDefaultScale(this.environment),
|
this.propertyList.put("scale", fac.getNewProperty("scale", this.getDefaultScale(this.environment), "scale",
|
||||||
"Scale must be a positive double value. ex: " + ChatColor.GOLD + "2.3"));
|
"Scale must be a positive double value. ex: " + ChatColor.GOLD + "2.3", "verifyScaleSetProperly"));
|
||||||
this.propertyList.put("respawn", fac.getNewProperty("respawn", "", "respawnworld",
|
this.propertyList.put("respawn", fac.getNewProperty("respawn", "", "respawnworld",
|
||||||
"You must set this to the " + ChatColor.GOLD + " NAME" + ChatColor.RED + " not alias of a world."));
|
"You must set this to the " + ChatColor.GOLD + " NAME" + ChatColor.RED + " not alias of a world."));
|
||||||
this.propertyList.put("weather", fac.getNewProperty("weather", true, "allowweather",
|
this.propertyList.put("weather", fac.getNewProperty("weather", true, "allowweather",
|
||||||
"Sorry, 'weather' must either be:" + ChatColor.GREEN + " true " + ChatColor.WHITE + "or" + ChatColor.RED + " false" + ChatColor.WHITE + "."));
|
"Sorry, 'weather' must either be:" + ChatColor.GREEN + " true " + ChatColor.WHITE + "or" + ChatColor.RED + " false" + ChatColor.WHITE + ".", "setActualWeather"));
|
||||||
this.propertyList.put("difficulty", fac.getNewProperty("difficulty", Difficulty.EASY,
|
this.propertyList.put("difficulty", fac.getNewProperty("difficulty", Difficulty.EASY,
|
||||||
"Difficulty must be set as one of the following: " + ChatColor.GREEN + "peaceful "
|
"Difficulty must be set as one of the following: " + ChatColor.GREEN + "peaceful "
|
||||||
+ ChatColor.AQUA + "easy " + ChatColor.GOLD + "normal " + ChatColor.RED + "hard"));
|
+ ChatColor.AQUA + "easy " + ChatColor.GOLD + "normal " + ChatColor.RED + "hard"));
|
||||||
this.propertyList.put("animals", fac.getNewProperty("animals", true, "animals.spawn",
|
this.propertyList.put("animals", fac.getNewProperty("animals", true, "animals.spawn",
|
||||||
"Sorry, 'animals' must either be:" + ChatColor.GREEN + " true " + ChatColor.WHITE + "or" + ChatColor.RED + " false" + ChatColor.WHITE + "."));
|
"Sorry, 'animals' must either be:" + ChatColor.GREEN + " true " + ChatColor.WHITE + "or" + ChatColor.RED + " false" + ChatColor.WHITE + ".", "syncMobs"));
|
||||||
this.propertyList.put("monsters", fac.getNewProperty("monsters", true, "monsters.spawn",
|
this.propertyList.put("monsters", fac.getNewProperty("monsters", true, "monsters.spawn",
|
||||||
"Sorry, 'monsters' must either be:" + ChatColor.GREEN + " true " + ChatColor.WHITE + "or" + ChatColor.RED + " false" + ChatColor.WHITE + "."));
|
"Sorry, 'monsters' must either be:" + ChatColor.GREEN + " true " + ChatColor.WHITE + "or" + ChatColor.RED + " false" + ChatColor.WHITE + ".", "syncMobs"));
|
||||||
this.propertyList.put("currency", fac.getNewProperty("currency", -1, "entryfee.currency",
|
this.propertyList.put("currency", fac.getNewProperty("currency", -1, "entryfee.currency",
|
||||||
"Currency must be an integer between -1 and the highest Minecraft item ID."));
|
"Currency must be an integer between -1 and the highest Minecraft item ID."));
|
||||||
this.propertyList.put("price", fac.getNewProperty("price", 0.0, "entryfee.price",
|
this.propertyList.put("price", fac.getNewProperty("price", 0.0, "entryfee.price",
|
||||||
@ -155,13 +155,13 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
this.propertyList.put("gamemode", fac.getNewProperty("gamemode", GameMode.SURVIVAL,
|
this.propertyList.put("gamemode", fac.getNewProperty("gamemode", GameMode.SURVIVAL,
|
||||||
"GameMode must be set as one of the following: " + ChatColor.RED + "survival " + ChatColor.GREEN + "creative "));
|
"GameMode must be set as one of the following: " + ChatColor.RED + "survival " + ChatColor.GREEN + "creative "));
|
||||||
this.propertyList.put("memory", fac.getNewProperty("keepspawninmemory", true, "keepspawninmemory",
|
this.propertyList.put("memory", fac.getNewProperty("keepspawninmemory", true, "keepspawninmemory",
|
||||||
"Sorry, 'memory' must either be:" + ChatColor.GREEN + " true " + ChatColor.WHITE + "or" + ChatColor.RED + " false" + ChatColor.WHITE + "."));
|
"Sorry, 'memory' must either be:" + ChatColor.GREEN + " true " + ChatColor.WHITE + "or" + ChatColor.RED + " false" + ChatColor.WHITE + ".", "setActualKeepSpawnInMemory"));
|
||||||
this.propertyList.put("spawn", fac.getNewProperty("spawn", this.world.getSpawnLocation(),
|
this.propertyList.put("spawn", fac.getNewProperty("spawn", this.world.getSpawnLocation(), "spawn",
|
||||||
"There is no help available for this variable. Go bug Rigby90 about it."));
|
"There is no help available for this variable. Go bug Rigby90 about it.", "setActualKeepSpawnInMemory"));
|
||||||
this.propertyList.put("autoload", fac.getNewProperty("autoload", true,
|
this.propertyList.put("autoload", fac.getNewProperty("autoload", true,
|
||||||
"Set this to false ONLY if you don't want this world to load itself on server restart."));
|
"Set this to false ONLY if you don't want this world to load itself on server restart."));
|
||||||
this.propertyList.put("bedrespawn", fac.getNewProperty("bedrespawn", true, "If a player dies in this world, shoudld they go to their bed?"));
|
this.propertyList.put("bedrespawn", fac.getNewProperty("bedrespawn", true, "If a player dies in this world, shoudld they go to their bed?"));
|
||||||
this.propertyList.put("time", fac.getNewProperty("time", "", "Set the time to whatever you want! (Will NOT freeze time)", "setTime", true));
|
this.propertyList.put("time", fac.getNewProperty("time", "", "Set the time to whatever you want! (Will NOT freeze time)", "setActualTime", true));
|
||||||
this.getKnownProperty("spawn", Location.class).setValue(this.readSpawnFromConfig(this.getCBWorld()));
|
this.getKnownProperty("spawn", Location.class).setValue(this.readSpawnFromConfig(this.getCBWorld()));
|
||||||
|
|
||||||
|
|
||||||
@ -201,45 +201,33 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private boolean setActualPVP() {
|
||||||
* Applies all settings to the Bukkit-{@link World}.
|
|
||||||
*/
|
|
||||||
public void changeActiveEffects() {
|
|
||||||
// Disable any current weather
|
|
||||||
if (!this.getKnownProperty("weather", Boolean.class).getValue()) {
|
|
||||||
this.getCBWorld().setStorm(false);
|
|
||||||
this.getCBWorld().setThundering(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the spawn location
|
|
||||||
Location spawnLocation = this.getKnownProperty("spawn", Location.class).getValue();
|
|
||||||
this.getCBWorld().setSpawnLocation(spawnLocation.getBlockX(), spawnLocation.getBlockY(), spawnLocation.getBlockZ());
|
|
||||||
|
|
||||||
// Synchronize all Mob settings
|
|
||||||
this.syncMobs();
|
|
||||||
|
|
||||||
// Ensure the memory setting is correct
|
|
||||||
this.world.setKeepSpawnInMemory(this.getKnownProperty("memory", Boolean.class).getValue());
|
|
||||||
|
|
||||||
// Set the PVP mode
|
// Set the PVP mode
|
||||||
this.world.setPVP(this.getKnownProperty("pvp", Boolean.class).getValue());
|
this.world.setPVP(this.getKnownProperty("pvp", Boolean.class).getValue());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean verifyScaleSetProperly() {
|
||||||
// Ensure the scale is above 0
|
// Ensure the scale is above 0
|
||||||
if (this.getKnownProperty("scale", Double.class).getValue() <= 0) {
|
if (this.getKnownProperty("scale", Double.class).getValue() <= 0) {
|
||||||
// Disallow negative or 0 scalings.
|
// Disallow negative or 0 scalings.
|
||||||
this.getKnownProperty("scale", Double.class).setValue(1.0);
|
this.getKnownProperty("scale", Double.class).setValue(1.0);
|
||||||
this.plugin.log(Level.WARNING, "Someone tried to set a scale <= 0, defaulting to 1.");
|
this.plugin.log(Level.WARNING, "Someone tried to set a scale <= 0, defaulting to 1.");
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
for (Player p : this.plugin.getServer().getWorld(this.getName()).getPlayers()) {
|
private boolean setActualKeepSpawnInMemory() {
|
||||||
this.plugin.log(Level.FINER, "Setting " + p.getName() + "'s GameMode to "
|
// Ensure the memory setting is correct
|
||||||
+ this.getKnownProperty("mode", GameMode.class).getValue().toString());
|
this.world.setKeepSpawnInMemory(this.getKnownProperty("memory", Boolean.class).getValue());
|
||||||
this.plugin.getPlayerListener().handleGameMode(p, this);
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean setActualSpawn() {
|
||||||
// Set the difficulty
|
// Set the spawn location
|
||||||
this.getCBWorld().setDifficulty(this.getKnownProperty("diff", Difficulty.class).getValue());
|
Location spawnLocation = this.getKnownProperty("spawn", Location.class).getValue();
|
||||||
|
this.getCBWorld().setSpawnLocation(spawnLocation.getBlockX(), spawnLocation.getBlockY(), spawnLocation.getBlockZ());
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private double getDefaultScale(Environment environment) {
|
private double getDefaultScale(Environment environment) {
|
||||||
@ -508,8 +496,8 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
value = propertyChangeEvent.getNewValue();
|
value = propertyChangeEvent.getNewValue();
|
||||||
}
|
}
|
||||||
if (property.parseValue(value)) {
|
if (property.parseValue(value)) {
|
||||||
if (property instanceof TempStringConfigProperty) {
|
if (property instanceof MVActiveConfigProperty) {
|
||||||
return this.setActiveProperty((TempStringConfigProperty) property);
|
return this.setActiveProperty((MVActiveConfigProperty) property);
|
||||||
}
|
}
|
||||||
this.saveConfig();
|
this.saveConfig();
|
||||||
return true;
|
return true;
|
||||||
@ -517,10 +505,14 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean setActiveProperty(TempStringConfigProperty property) {
|
private boolean setActiveProperty(MVActiveConfigProperty property) {
|
||||||
try {
|
try {
|
||||||
Method method = this.getClass().getMethod(property.getMethod(), String.class);
|
if(property.getMethod() == null) {
|
||||||
Object returnVal = method.invoke(this, (String) property.getValue());
|
// This property did not have a method.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Method method = this.getClass().getMethod(property.getMethod());
|
||||||
|
Object returnVal = method.invoke(this);
|
||||||
if (returnVal instanceof Boolean) {
|
if (returnVal instanceof Boolean) {
|
||||||
return (Boolean) returnVal;
|
return (Boolean) returnVal;
|
||||||
} else {
|
} else {
|
||||||
@ -823,7 +815,6 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
private void saveConfig() {
|
private void saveConfig() {
|
||||||
if (this.canSave) {
|
if (this.canSave) {
|
||||||
try {
|
try {
|
||||||
this.changeActiveEffects();
|
|
||||||
this.config.save(new File(this.plugin.getDataFolder(), "worlds.yml"));
|
this.config.save(new File(this.plugin.getDataFolder(), "worlds.yml"));
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
this.plugin.log(Level.SEVERE, "Could not save worlds.yml. Please check your filesystem permissions.");
|
this.plugin.log(Level.SEVERE, "Could not save worlds.yml. Please check your filesystem permissions.");
|
||||||
@ -836,7 +827,25 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean setGameMode(String gameMode) {
|
public boolean setGameMode(String gameMode) {
|
||||||
return this.setKnownProperty("mode", gameMode + "", null);
|
return this.setKnownProperty("mode", gameMode, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the actual gamemode by iterating through players.
|
||||||
|
*
|
||||||
|
* gameMode is not used, but it's in the reflection template.
|
||||||
|
*
|
||||||
|
* Needs a bit o' refactoring.
|
||||||
|
*
|
||||||
|
* @return True if the gamemodes of players were set successfully. (always)
|
||||||
|
*/
|
||||||
|
public boolean setActualGameMode() {
|
||||||
|
for (Player p : this.plugin.getServer().getWorld(this.getName()).getPlayers()) {
|
||||||
|
this.plugin.log(Level.FINER, String.format("Setting %s's GameMode to %s",
|
||||||
|
p.getName(), this.getKnownProperty("mode", GameMode.class).getValue().toString()));
|
||||||
|
this.plugin.getPlayerListener().handleGameMode(p, this);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -855,6 +864,15 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
this.setKnownProperty("weather", weather + "", null);
|
this.setKnownProperty("weather", weather + "", null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean setActualWeather() {
|
||||||
|
// Disable any current weather
|
||||||
|
if (!this.getKnownProperty("weather", Boolean.class).getValue()) {
|
||||||
|
this.getCBWorld().setStorm(false);
|
||||||
|
this.getCBWorld().setThundering(false);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@ -969,7 +987,12 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean setDifficulty(String difficulty) {
|
public boolean setDifficulty(String difficulty) {
|
||||||
return this.setKnownProperty("diff", difficulty, null);
|
if (this.setKnownProperty("diff", difficulty, null)) {
|
||||||
|
// Set the difficulty
|
||||||
|
this.getCBWorld().setDifficulty(this.getKnownProperty("diff", Difficulty.class).getValue());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1067,6 +1090,10 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
return String.format("%d:%02d", hours, minutes);
|
return String.format("%d:%02d", hours, minutes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean setActualTime() {
|
||||||
|
return this.setTime(this.getKnownProperty("time", String.class).toString());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
|
@ -10,20 +10,20 @@ package com.onarandombox.MultiverseCore.configuration;
|
|||||||
/**
|
/**
|
||||||
* A {@link String} config-property that will NOT be saved to the config.
|
* A {@link String} config-property that will NOT be saved to the config.
|
||||||
*/
|
*/
|
||||||
public class TempStringConfigProperty implements MVConfigProperty<String> {
|
public class ActiveStringConfigProperty implements MVActiveConfigProperty<String> {
|
||||||
private String name;
|
private String name;
|
||||||
private String value;
|
private String value;
|
||||||
private String method;
|
private String method;
|
||||||
private String help;
|
private String help;
|
||||||
|
|
||||||
public TempStringConfigProperty(String name, String defaultValue, String help) {
|
public ActiveStringConfigProperty(String name, String defaultValue, String help) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.help = help;
|
this.help = help;
|
||||||
this.value = defaultValue;
|
this.value = defaultValue;
|
||||||
this.parseValue(defaultValue);
|
this.parseValue(defaultValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public TempStringConfigProperty(String name, String defaultValue, String help, String method) {
|
public ActiveStringConfigProperty(String name, String defaultValue, String help, String method) {
|
||||||
this(name, defaultValue, help);
|
this(name, defaultValue, help);
|
||||||
this.method = method;
|
this.method = method;
|
||||||
}
|
}
|
||||||
@ -45,13 +45,28 @@ public class TempStringConfigProperty implements MVConfigProperty<String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the method used to set this {@link TempStringConfigProperty}.
|
* {@inheritDoc}
|
||||||
* @return The name of that method.
|
|
||||||
*/
|
*/
|
||||||
public String getMethod() {
|
public String getMethod() {
|
||||||
return this.method;
|
return this.method;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setMethod(String methodName) {
|
||||||
|
this.method = methodName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Class<?> getPropertyClass() {
|
||||||
|
return String.class;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
@ -12,12 +12,13 @@ import org.bukkit.configuration.ConfigurationSection;
|
|||||||
/**
|
/**
|
||||||
* A {@link Boolean} config-property.
|
* A {@link Boolean} config-property.
|
||||||
*/
|
*/
|
||||||
public class BooleanConfigProperty implements MVConfigProperty<Boolean> {
|
public class BooleanConfigProperty implements MVActiveConfigProperty<Boolean> {
|
||||||
private String name;
|
private String name;
|
||||||
private Boolean value;
|
private Boolean value;
|
||||||
private String configNode;
|
private String configNode;
|
||||||
private ConfigurationSection section;
|
private ConfigurationSection section;
|
||||||
private String help;
|
private String help;
|
||||||
|
private String method;
|
||||||
|
|
||||||
public BooleanConfigProperty(ConfigurationSection section, String name, Boolean defaultValue, String help) {
|
public BooleanConfigProperty(ConfigurationSection section, String name, Boolean defaultValue, String help) {
|
||||||
this(section, name, defaultValue, name, help);
|
this(section, name, defaultValue, name, help);
|
||||||
@ -32,6 +33,11 @@ public class BooleanConfigProperty implements MVConfigProperty<Boolean> {
|
|||||||
this.setValue(this.section.getBoolean(this.configNode, defaultValue));
|
this.setValue(this.section.getBoolean(this.configNode, defaultValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BooleanConfigProperty(ConfigurationSection section, String name, Boolean defaultValue, String configNode, String help, String method) {
|
||||||
|
this(section, name, defaultValue, configNode, help);
|
||||||
|
this.method = method;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@ -96,4 +102,34 @@ public class BooleanConfigProperty implements MVConfigProperty<Boolean> {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return value.toString();
|
return value.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the method that will be executed.
|
||||||
|
*
|
||||||
|
* @return The name of the method in MVWorld to be called.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getMethod() {
|
||||||
|
return this.method;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the method that will be executed.
|
||||||
|
*
|
||||||
|
* @param methodName The name of the method in MVWorld to be called.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setMethod(String methodName) {
|
||||||
|
this.method = methodName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the class of the object we're looking at.
|
||||||
|
*
|
||||||
|
* @return the class of the object we're looking at.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Class<?> getPropertyClass() {
|
||||||
|
return Boolean.class;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Multiverse 2 Copyright (c) the Multiverse Team 2011. *
|
* Multiverse 2 Copyright (c) the Multiverse Team 2012. *
|
||||||
* Multiverse 2 is licensed under the BSD License. *
|
* Multiverse 2 is licensed under the BSD License. *
|
||||||
* For more information please check the README.md file included *
|
* For more information please check the README.md file included *
|
||||||
* with this project. *
|
* with this project. *
|
||||||
@ -47,6 +47,22 @@ public class ConfigPropertyFactory {
|
|||||||
return new BooleanConfigProperty(this.section, name, defaultValue, node, help);
|
return new BooleanConfigProperty(this.section, name, defaultValue, node, help);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new ActiveBooleanConfigProperty
|
||||||
|
*
|
||||||
|
* This property will execute 'method' after it has been successfully set.
|
||||||
|
*
|
||||||
|
* @param name The name of this ConifgProperty
|
||||||
|
* @param defaultValue The default value.
|
||||||
|
* @param help What string is shown for help.
|
||||||
|
* @param node
|
||||||
|
* @param method The method that should be executed.
|
||||||
|
* @return The ActiveStringConfigProperty
|
||||||
|
*/
|
||||||
|
public BooleanConfigProperty getNewProperty(String name, boolean defaultValue, String help, String node, String method) {
|
||||||
|
return new BooleanConfigProperty(this.section, name, defaultValue, help, node, method);
|
||||||
|
}
|
||||||
|
|
||||||
// Integers
|
// Integers
|
||||||
/**
|
/**
|
||||||
* Constructs a new ConfigProperty.
|
* Constructs a new ConfigProperty.
|
||||||
@ -99,6 +115,19 @@ public class ConfigPropertyFactory {
|
|||||||
return new DoubleConfigProperty(this.section, name, defaultValue, node, help);
|
return new DoubleConfigProperty(this.section, name, defaultValue, node, help);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new ConfigProperty.
|
||||||
|
*
|
||||||
|
* @param name The name of this ConfigProperty.
|
||||||
|
* @param defaultValue The default-value.
|
||||||
|
* @param node The name of the configuration-node this ConfigProperty will be stored as.
|
||||||
|
* @param help The text that's displayed when a user failed to set the property.
|
||||||
|
* @return The ConfigProperty.
|
||||||
|
*/
|
||||||
|
public DoubleConfigProperty getNewProperty(String name, double defaultValue, String node, String help, String method) {
|
||||||
|
return new DoubleConfigProperty(this.section, name, defaultValue, node, help, method);
|
||||||
|
}
|
||||||
|
|
||||||
// Strings
|
// Strings
|
||||||
/**
|
/**
|
||||||
* Constructs a new ConfigProperty.
|
* Constructs a new ConfigProperty.
|
||||||
@ -230,18 +259,32 @@ public class ConfigPropertyFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new TempStringConfigProperty
|
* Constructs a new ConfigProperty.
|
||||||
*
|
*
|
||||||
* The boolean is a dummy. This is so I can differentiate from the non-temp one.
|
* @param name The name of this ConfigProperty.
|
||||||
|
* @param defaultValue The default-value.
|
||||||
|
* @param node The name of the configuration-node this ConfigProperty will be stored as.
|
||||||
|
* @param help The text that's displayed when a user failed to set the property.
|
||||||
|
* @return The ConfigProperty.
|
||||||
|
*/
|
||||||
|
public LocationConfigProperty getNewProperty(String name, Location defaultValue, String node, String help, String method) {
|
||||||
|
return new LocationConfigProperty(this.section, name, defaultValue, node, help, method);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new ActiveStringConfigProperty
|
||||||
|
*
|
||||||
|
* This property will execute 'method' after it has been successfully set.
|
||||||
|
* This string will NOT be saved to the config file.
|
||||||
*
|
*
|
||||||
* @param name The name of this ConifgProperty
|
* @param name The name of this ConifgProperty
|
||||||
* @param defaultValue The default value.
|
* @param defaultValue The default value.
|
||||||
* @param help What string is shown for help.
|
* @param help What string is shown for help.
|
||||||
* @param method The method that should be executed.
|
* @param method The method that should be executed.
|
||||||
* @param b Dummy.
|
* @param saveToConfig Should the variable save to the config?
|
||||||
* @return The TempStringConfigProperty
|
* @return The ActiveStringConfigProperty
|
||||||
*/
|
*/
|
||||||
public TempStringConfigProperty getNewProperty(String name, String defaultValue, String help, String method, boolean b) {
|
public ActiveStringConfigProperty getNewProperty(String name, String defaultValue, String help, String method, boolean saveToConfig) {
|
||||||
return new TempStringConfigProperty(name, defaultValue, help, method);
|
return new ActiveStringConfigProperty(name, defaultValue, help, method);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ import org.bukkit.configuration.ConfigurationSection;
|
|||||||
/**
|
/**
|
||||||
* A {@link Difficulty} config-property.
|
* A {@link Difficulty} config-property.
|
||||||
*/
|
*/
|
||||||
public class DifficultyConfigProperty implements MVConfigProperty<Difficulty> {
|
public class DifficultyConfigProperty implements MVActiveConfigProperty<Difficulty> {
|
||||||
private String name;
|
private String name;
|
||||||
private Difficulty value;
|
private Difficulty value;
|
||||||
private String configNode;
|
private String configNode;
|
||||||
@ -98,4 +98,32 @@ public class DifficultyConfigProperty implements MVConfigProperty<Difficulty> {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return value.toString();
|
return value.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the method that will be executed.
|
||||||
|
*
|
||||||
|
* @return The name of the method in MVWorld to be called.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getMethod() {
|
||||||
|
return "setDifficulty";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the method that will be executed.
|
||||||
|
*
|
||||||
|
* @param methodName The name of the method in MVWorld to be called.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setMethod(String methodName) {
|
||||||
|
// Unused here. This will only ever be setDifficulty.
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Class<?> getPropertyClass() {
|
||||||
|
return Difficulty.class;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,12 +12,13 @@ import org.bukkit.configuration.ConfigurationSection;
|
|||||||
/**
|
/**
|
||||||
* A {@link Double} config-property.
|
* A {@link Double} config-property.
|
||||||
*/
|
*/
|
||||||
public class DoubleConfigProperty implements MVConfigProperty<Double> {
|
public class DoubleConfigProperty implements MVActiveConfigProperty<Double> {
|
||||||
private String name;
|
private String name;
|
||||||
private Double value;
|
private Double value;
|
||||||
private String configNode;
|
private String configNode;
|
||||||
private ConfigurationSection section;
|
private ConfigurationSection section;
|
||||||
private String help;
|
private String help;
|
||||||
|
private String method;
|
||||||
|
|
||||||
public DoubleConfigProperty(ConfigurationSection section, String name, Double defaultValue, String help) {
|
public DoubleConfigProperty(ConfigurationSection section, String name, Double defaultValue, String help) {
|
||||||
this(section, name, defaultValue, name, help);
|
this(section, name, defaultValue, name, help);
|
||||||
@ -32,6 +33,11 @@ public class DoubleConfigProperty implements MVConfigProperty<Double> {
|
|||||||
this.setValue(this.section.getDouble(this.configNode, defaultValue));
|
this.setValue(this.section.getDouble(this.configNode, defaultValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DoubleConfigProperty(ConfigurationSection section, String name, Double defaultValue, String configNode, String help, String method) {
|
||||||
|
this(section, name, defaultValue, configNode, help);
|
||||||
|
this.method = method;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@ -94,4 +100,34 @@ public class DoubleConfigProperty implements MVConfigProperty<Double> {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return value.toString();
|
return value.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the method that will be executed.
|
||||||
|
*
|
||||||
|
* @return The name of the method in MVWorld to be called.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getMethod() {
|
||||||
|
return this.method;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the method that will be executed.
|
||||||
|
*
|
||||||
|
* @param methodName The name of the method in MVWorld to be called.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setMethod(String methodName) {
|
||||||
|
this.method = methodName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the class of the object we're looking at.
|
||||||
|
*
|
||||||
|
* @return the class of the object we're looking at.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Class<?> getPropertyClass() {
|
||||||
|
return Double.class;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ import org.bukkit.configuration.ConfigurationSection;
|
|||||||
/**
|
/**
|
||||||
* A {@link GameMode} config-property.
|
* A {@link GameMode} config-property.
|
||||||
*/
|
*/
|
||||||
public class GameModeConfigProperty implements MVConfigProperty<GameMode> {
|
public class GameModeConfigProperty implements MVActiveConfigProperty<GameMode> {
|
||||||
private String name;
|
private String name;
|
||||||
private GameMode value;
|
private GameMode value;
|
||||||
private String configNode;
|
private String configNode;
|
||||||
@ -98,4 +98,32 @@ public class GameModeConfigProperty implements MVConfigProperty<GameMode> {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return value.toString();
|
return value.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the method that will be executed.
|
||||||
|
*
|
||||||
|
* @return The name of the method in MVWorld to be called.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getMethod() {
|
||||||
|
return "setActualGameMode";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the method that will be executed.
|
||||||
|
*
|
||||||
|
* @param methodName The name of the method in MVWorld to be called.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setMethod(String methodName) {
|
||||||
|
// Not required. Gamemode will only ever be one.
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Class<?> getPropertyClass() {
|
||||||
|
return GameMode.class;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,12 +14,13 @@ import org.bukkit.configuration.ConfigurationSection;
|
|||||||
/**
|
/**
|
||||||
* A {@link Location} config-property.
|
* A {@link Location} config-property.
|
||||||
*/
|
*/
|
||||||
public class LocationConfigProperty implements MVConfigProperty<Location> {
|
public class LocationConfigProperty implements MVActiveConfigProperty<Location> {
|
||||||
private String name;
|
private String name;
|
||||||
private Location value;
|
private Location value;
|
||||||
private String configNode;
|
private String configNode;
|
||||||
private ConfigurationSection section;
|
private ConfigurationSection section;
|
||||||
private String help;
|
private String help;
|
||||||
|
private String method;
|
||||||
|
|
||||||
public LocationConfigProperty(ConfigurationSection section, String name, Location defaultValue, String help) {
|
public LocationConfigProperty(ConfigurationSection section, String name, Location defaultValue, String help) {
|
||||||
this(section, name, defaultValue, name, help);
|
this(section, name, defaultValue, name, help);
|
||||||
@ -34,6 +35,11 @@ public class LocationConfigProperty implements MVConfigProperty<Location> {
|
|||||||
this.setValue(this.getLocationFromConfig(defaultValue));
|
this.setValue(this.getLocationFromConfig(defaultValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LocationConfigProperty(ConfigurationSection section, String name, Location defaultValue, String configNode, String help, String method) {
|
||||||
|
this(section, name, defaultValue, configNode, help);
|
||||||
|
this.method = method;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@ -112,4 +118,34 @@ public class LocationConfigProperty implements MVConfigProperty<Location> {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return LocationManipulation.strCoordsRaw(this.value);
|
return LocationManipulation.strCoordsRaw(this.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the method that will be executed.
|
||||||
|
*
|
||||||
|
* @return The name of the method in MVWorld to be called.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getMethod() {
|
||||||
|
return this.method;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the method that will be executed.
|
||||||
|
*
|
||||||
|
* @param methodName The name of the method in MVWorld to be called.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setMethod(String methodName) {
|
||||||
|
this.method = methodName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the class of the object we're looking at.
|
||||||
|
*
|
||||||
|
* @return the class of the object we're looking at.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Class<?> getPropertyClass() {
|
||||||
|
return Location.class;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Multiverse 2 Copyright (c) the Multiverse Team 2012. *
|
||||||
|
* Multiverse 2 is licensed under the BSD License. *
|
||||||
|
* For more information please check the README.md file included *
|
||||||
|
* with this project. *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
package com.onarandombox.MultiverseCore.configuration;
|
||||||
|
|
||||||
|
public interface MVActiveConfigProperty<T> extends MVConfigProperty<T> {
|
||||||
|
/**
|
||||||
|
* Gets the method that will be executed.
|
||||||
|
*
|
||||||
|
* @return The name of the method in MVWorld to be called.
|
||||||
|
*/
|
||||||
|
String getMethod();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the method that will be executed.
|
||||||
|
*
|
||||||
|
* @param methodName The name of the method in MVWorld to be called.
|
||||||
|
*/
|
||||||
|
void setMethod(String methodName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the class of the object we're looking at.
|
||||||
|
* @return the class of the object we're looking at.
|
||||||
|
*/
|
||||||
|
Class<?> getPropertyClass();
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user