mirror of
https://github.com/Multiverse/Multiverse-Core.git
synced 2024-12-02 23:44:00 +01:00
Merge branch 'master' into localization
This commit is contained in:
commit
affc96f2e2
@ -76,7 +76,10 @@
|
|||||||
<module name="UnusedImports">
|
<module name="UnusedImports">
|
||||||
<property name="processJavadoc" value="true"/>
|
<property name="processJavadoc" value="true"/>
|
||||||
</module>
|
</module>
|
||||||
<module name="MethodLength"/>
|
<module name="MethodLength">
|
||||||
|
<property name="severity" value="warning"/>
|
||||||
|
<property name="countEmpty" value="false"/>
|
||||||
|
</module>
|
||||||
<module name="ParameterNumber"/>
|
<module name="ParameterNumber"/>
|
||||||
<module name="EmptyForIteratorPad"/>
|
<module name="EmptyForIteratorPad"/>
|
||||||
<module name="MethodParamPad"/>
|
<module name="MethodParamPad"/>
|
||||||
|
14
pom.xml
14
pom.xml
@ -180,23 +180,25 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.bukkit</groupId>
|
<groupId>org.bukkit</groupId>
|
||||||
<artifactId>bukkit</artifactId>
|
<artifactId>bukkit</artifactId>
|
||||||
<version>1.1-R5-SNAPSHOT</version>
|
<version>1.2.5-R1.0</version>
|
||||||
|
<!-- If you want the lates, use this -->
|
||||||
|
<!-- <version>LATEST</version> -->
|
||||||
<type>jar</type>
|
<type>jar</type>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- Bukkit Dependency -->
|
<!-- Bukkit Dependency -->
|
||||||
<!-- Start of Spout -->
|
<!-- Start of Spout (disabled because we aren't using it)
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.getspout</groupId>
|
<groupId>org.getspout</groupId>
|
||||||
<artifactId>spoutpluginapi</artifactId>
|
<artifactId>spoutpluginapi</artifactId>
|
||||||
<version>dev-SNAPSHOT</version>
|
<version>dev-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- End of Spout -->
|
End of Spout -->
|
||||||
<!-- SerializationConfig Dependency -->
|
<!-- SerializationConfig Dependency -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>me.main__.util</groupId>
|
<groupId>me.main__.util</groupId>
|
||||||
<artifactId>SerializationConfig</artifactId>
|
<artifactId>SerializationConfig</artifactId>
|
||||||
<version>1.3</version>
|
<version>1.6</version>
|
||||||
<type>jar</type>
|
<type>jar</type>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
@ -205,7 +207,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fernferret.allpay</groupId>
|
<groupId>com.fernferret.allpay</groupId>
|
||||||
<artifactId>AllPay</artifactId>
|
<artifactId>AllPay</artifactId>
|
||||||
<version>8</version>
|
<version>10</version>
|
||||||
<type>jar</type>
|
<type>jar</type>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
@ -214,7 +216,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.pneumaticraft.commandhandler</groupId>
|
<groupId>com.pneumaticraft.commandhandler</groupId>
|
||||||
<artifactId>CommandHandler</artifactId>
|
<artifactId>CommandHandler</artifactId>
|
||||||
<version>6</version>
|
<version>7</version>
|
||||||
<type>jar</type>
|
<type>jar</type>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -27,6 +27,7 @@ import com.onarandombox.MultiverseCore.destination.ExactDestination;
|
|||||||
import com.onarandombox.MultiverseCore.destination.PlayerDestination;
|
import com.onarandombox.MultiverseCore.destination.PlayerDestination;
|
||||||
import com.onarandombox.MultiverseCore.destination.WorldDestination;
|
import com.onarandombox.MultiverseCore.destination.WorldDestination;
|
||||||
import com.onarandombox.MultiverseCore.event.MVVersionEvent;
|
import com.onarandombox.MultiverseCore.event.MVVersionEvent;
|
||||||
|
import com.onarandombox.MultiverseCore.exceptions.PropertyDoesNotExistException;
|
||||||
import com.onarandombox.MultiverseCore.listeners.MVEntityListener;
|
import com.onarandombox.MultiverseCore.listeners.MVEntityListener;
|
||||||
import com.onarandombox.MultiverseCore.listeners.MVPlayerListener;
|
import com.onarandombox.MultiverseCore.listeners.MVPlayerListener;
|
||||||
import com.onarandombox.MultiverseCore.listeners.MVPluginListener;
|
import com.onarandombox.MultiverseCore.listeners.MVPluginListener;
|
||||||
@ -46,6 +47,7 @@ import org.bukkit.Location;
|
|||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.configuration.Configuration;
|
import org.bukkit.configuration.Configuration;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -56,7 +58,9 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -76,7 +80,7 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core, Messag
|
|||||||
private AnchorManager anchorManager = new AnchorManager(this);
|
private AnchorManager anchorManager = new AnchorManager(this);
|
||||||
private MessageProvider messageProvider = new SimpleMessageProvider(this);
|
private MessageProvider messageProvider = new SimpleMessageProvider(this);
|
||||||
// TODO please let's make this non-static
|
// TODO please let's make this non-static
|
||||||
private static MultiverseCoreConfiguration config;
|
private MultiverseCoreConfiguration config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is used to find out who is teleporting a player.
|
* This method is used to find out who is teleporting a player.
|
||||||
@ -165,7 +169,7 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core, Messag
|
|||||||
private AllPay banker;
|
private AllPay banker;
|
||||||
private int pluginCount;
|
private int pluginCount;
|
||||||
private DestinationFactory destFactory;
|
private DestinationFactory destFactory;
|
||||||
private SpoutInterface spoutInterface = null;
|
//private SpoutInterface spoutInterface = null;
|
||||||
private MultiverseMessaging messaging;
|
private MultiverseMessaging messaging;
|
||||||
private BlockSafety blockSafety;
|
private BlockSafety blockSafety;
|
||||||
private LocationManipulation locationManipulation;
|
private LocationManipulation locationManipulation;
|
||||||
@ -177,6 +181,8 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core, Messag
|
|||||||
public void onLoad() {
|
public void onLoad() {
|
||||||
// Register our config
|
// Register our config
|
||||||
SerializationConfig.registerAll(MultiverseCoreConfiguration.class);
|
SerializationConfig.registerAll(MultiverseCoreConfiguration.class);
|
||||||
|
// Register our world
|
||||||
|
SerializationConfig.registerAll(MVWorld.class);
|
||||||
// Create our DataFolder
|
// Create our DataFolder
|
||||||
getDataFolder().mkdirs();
|
getDataFolder().mkdirs();
|
||||||
// Setup our Debug Log
|
// Setup our Debug Log
|
||||||
@ -266,11 +272,13 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core, Messag
|
|||||||
// A test that had no worlds loaded was being run. This should never happen in production
|
// A test that had no worlds loaded was being run. This should never happen in production
|
||||||
}
|
}
|
||||||
this.saveMVConfig();
|
this.saveMVConfig();
|
||||||
|
/*
|
||||||
// Check to see if spout was already loaded (most likely):
|
// Check to see if spout was already loaded (most likely):
|
||||||
if (this.getServer().getPluginManager().getPlugin("Spout") != null) {
|
if (this.getServer().getPluginManager().getPlugin("Spout") != null) {
|
||||||
this.setSpout();
|
this.setSpout();
|
||||||
this.log(Level.INFO, "Spout integration enabled.");
|
this.log(Level.INFO, "Spout integration enabled.");
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializeDestinationFactory() {
|
private void initializeDestinationFactory() {
|
||||||
@ -308,6 +316,8 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core, Messag
|
|||||||
this.multiverseConfig.setDefaults(coreDefaults);
|
this.multiverseConfig.setDefaults(coreDefaults);
|
||||||
this.multiverseConfig.options().copyDefaults(false);
|
this.multiverseConfig.options().copyDefaults(false);
|
||||||
this.multiverseConfig.options().copyHeader(true);
|
this.multiverseConfig.options().copyHeader(true);
|
||||||
|
|
||||||
|
this.migrateWorldConfig();
|
||||||
this.worldManager.loadWorldConfig(new File(getDataFolder(), "worlds.yml"));
|
this.worldManager.loadWorldConfig(new File(getDataFolder(), "worlds.yml"));
|
||||||
|
|
||||||
MultiverseCoreConfiguration wantedConfig = null;
|
MultiverseCoreConfiguration wantedConfig = null;
|
||||||
@ -382,6 +392,213 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core, Messag
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Migrate the worlds.yml to SerializationConfig.
|
||||||
|
*/
|
||||||
|
private void migrateWorldConfig() {
|
||||||
|
FileConfiguration wconf = YamlConfiguration
|
||||||
|
.loadConfiguration(new File(getDataFolder(), "worlds.yml"));
|
||||||
|
|
||||||
|
if (!wconf.isConfigurationSection("worlds")) // empty config
|
||||||
|
return;
|
||||||
|
|
||||||
|
Map<String, Object> values = wconf.getConfigurationSection("worlds").getValues(false);
|
||||||
|
|
||||||
|
boolean wasChanged = false;
|
||||||
|
Map<String, Object> newValues = new LinkedHashMap<String, Object>(values.size());
|
||||||
|
for (Map.Entry<String, Object> entry : values.entrySet()) {
|
||||||
|
if (entry.getValue() instanceof MVWorld) {
|
||||||
|
// fine
|
||||||
|
newValues.put(entry.getKey(), entry.getValue());
|
||||||
|
} else if (entry.getValue() instanceof ConfigurationSection) {
|
||||||
|
// we have to migrate this
|
||||||
|
MVWorld world = new MVWorld(Collections.EMPTY_MAP);
|
||||||
|
ConfigurationSection section = (ConfigurationSection) entry.getValue();
|
||||||
|
|
||||||
|
// migrate animals and monsters
|
||||||
|
if (section.isConfigurationSection("animals")) {
|
||||||
|
ConfigurationSection animalSection = section.getConfigurationSection("animals");
|
||||||
|
if (animalSection.contains("spawn")) {
|
||||||
|
if (animalSection.isBoolean("spawn"))
|
||||||
|
world.setAllowAnimalSpawn(animalSection.getBoolean("spawn"));
|
||||||
|
else
|
||||||
|
world.setAllowAnimalSpawn(Boolean.parseBoolean(animalSection.getString("spawn")));
|
||||||
|
}
|
||||||
|
if (animalSection.isList("exceptions")) {
|
||||||
|
world.getAnimalList().clear();
|
||||||
|
world.getAnimalList().addAll(animalSection.getStringList("exceptions"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (section.isConfigurationSection("monsters")) {
|
||||||
|
ConfigurationSection monsterSection = section.getConfigurationSection("monsters");
|
||||||
|
if (monsterSection.contains("spawn")) {
|
||||||
|
if (monsterSection.isBoolean("spawn"))
|
||||||
|
world.setAllowMonsterSpawn(monsterSection.getBoolean("spawn"));
|
||||||
|
else
|
||||||
|
world.setAllowMonsterSpawn(Boolean.parseBoolean(monsterSection.getString("spawn")));
|
||||||
|
}
|
||||||
|
if (monsterSection.isList("exceptions")) {
|
||||||
|
world.getMonsterList().clear();
|
||||||
|
world.getMonsterList().addAll(monsterSection.getStringList("exceptions"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate entryfee
|
||||||
|
if (section.isConfigurationSection("entryfee")) {
|
||||||
|
ConfigurationSection feeSection = section.getConfigurationSection("entryfee");
|
||||||
|
if (feeSection.isInt("currency"))
|
||||||
|
world.setCurrency(feeSection.getInt("currency"));
|
||||||
|
|
||||||
|
if (feeSection.isDouble("amount"))
|
||||||
|
world.setPrice(feeSection.getDouble("amount"));
|
||||||
|
else if (feeSection.isInt("amount"))
|
||||||
|
world.setPrice(feeSection.getInt("amount"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate pvp
|
||||||
|
if (section.isBoolean("pvp")) {
|
||||||
|
world.setPVPMode(section.getBoolean("pvp"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate alias
|
||||||
|
if (section.isConfigurationSection("alias")) {
|
||||||
|
ConfigurationSection aliasSection = section.getConfigurationSection("alias");
|
||||||
|
if (aliasSection.isString("color"))
|
||||||
|
world.setColor(aliasSection.getString("color"));
|
||||||
|
if (aliasSection.isString("name"))
|
||||||
|
world.setAlias(aliasSection.getString("name"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate worldblacklist
|
||||||
|
if (section.isList("worldblacklist")) {
|
||||||
|
world.getWorldBlacklist().clear();
|
||||||
|
world.getWorldBlacklist().addAll(section.getStringList("worldblacklist"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate scale
|
||||||
|
if (section.isDouble("scale")) {
|
||||||
|
world.setScaling(section.getDouble("scale"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate gamemode
|
||||||
|
if (section.isString("gamemode")) {
|
||||||
|
try {
|
||||||
|
world.setPropertyValue("gamemode", section.getString("gamemode"));
|
||||||
|
} catch (PropertyDoesNotExistException e) {
|
||||||
|
throw new RuntimeException("Who forgot to update the migrator?", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate hunger
|
||||||
|
if (section.isBoolean("hunger")) {
|
||||||
|
world.setHunger(section.getBoolean("hunger"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate hidden
|
||||||
|
if (section.isBoolean("hidden")) {
|
||||||
|
world.setHidden(section.getBoolean("hidden"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate autoheal
|
||||||
|
if (section.isBoolean("autoheal")) {
|
||||||
|
world.setAutoHeal(section.getBoolean("autoheal"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate portalform
|
||||||
|
if (section.isString("portalform")) {
|
||||||
|
try {
|
||||||
|
world.setPropertyValue("portalform", section.getString("portalform"));
|
||||||
|
} catch (PropertyDoesNotExistException e) {
|
||||||
|
throw new RuntimeException("Who forgot to update the migrator?", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate environment
|
||||||
|
if (section.isString("environment")) {
|
||||||
|
try {
|
||||||
|
world.setPropertyValue("environment", section.getString("environment"));
|
||||||
|
} catch (PropertyDoesNotExistException e) {
|
||||||
|
throw new RuntimeException("Who forgot to update the migrator?", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate generator
|
||||||
|
if (section.isString("generator")) {
|
||||||
|
world.setGenerator(section.getString("generator"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate seed
|
||||||
|
if (section.isLong("seed")) {
|
||||||
|
world.setSeed(section.getLong("seed"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate weather
|
||||||
|
if (section.isBoolean("allowweather")) {
|
||||||
|
world.setEnableWeather(section.getBoolean("allowweather"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate adjustspawn
|
||||||
|
if (section.isBoolean("adjustspawn")) {
|
||||||
|
world.setAdjustSpawn(section.getBoolean("adjustspawn"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate autoload
|
||||||
|
if (section.isBoolean("autoload")) {
|
||||||
|
world.setAutoLoad(section.getBoolean("autoload"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate bedrespawn
|
||||||
|
if (section.isBoolean("bedrespawn")) {
|
||||||
|
world.setBedRespawn(section.getBoolean("bedrespawn"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// migrate spawn
|
||||||
|
if (section.isConfigurationSection("spawn")) {
|
||||||
|
ConfigurationSection spawnSect = section.getConfigurationSection("spawn");
|
||||||
|
Location spawnLoc = world.getSpawnLocation();
|
||||||
|
if (spawnSect.isDouble("yaw"))
|
||||||
|
spawnLoc.setYaw((float) spawnSect.getDouble("yaw"));
|
||||||
|
if (spawnSect.isDouble("pitch"))
|
||||||
|
spawnLoc.setPitch((float) spawnSect.getDouble("pitch"));
|
||||||
|
if (spawnSect.isDouble("x"))
|
||||||
|
spawnLoc.setX(spawnSect.getDouble("x"));
|
||||||
|
if (spawnSect.isDouble("y"))
|
||||||
|
spawnLoc.setY(spawnSect.getDouble("y"));
|
||||||
|
if (spawnSect.isDouble("z"))
|
||||||
|
spawnLoc.setZ(spawnSect.getDouble("z"));
|
||||||
|
|
||||||
|
world.setSpawnLocation(spawnLoc);
|
||||||
|
}
|
||||||
|
|
||||||
|
newValues.put(entry.getKey(), world);
|
||||||
|
wasChanged = true;
|
||||||
|
} else {
|
||||||
|
// huh?
|
||||||
|
this.log(Level.WARNING, "Removing unknown entry in the config: " + entry);
|
||||||
|
// just don't add to newValues
|
||||||
|
wasChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wasChanged) {
|
||||||
|
// clear config
|
||||||
|
wconf.set("worlds", null);
|
||||||
|
|
||||||
|
// and rebuild it
|
||||||
|
ConfigurationSection rootSection = wconf.createSection("worlds");
|
||||||
|
for (Map.Entry<String, Object> entry : newValues.entrySet()) {
|
||||||
|
rootSection.set(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
wconf.save(new File(getDataFolder(), "worlds.yml"));
|
||||||
|
} catch (IOException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@ -435,6 +652,7 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core, Messag
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
|
this.saveMVConfigs();
|
||||||
debugLog.close();
|
debugLog.close();
|
||||||
this.banker = null;
|
this.banker = null;
|
||||||
this.bank = null;
|
this.bank = null;
|
||||||
@ -502,13 +720,13 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core, Messag
|
|||||||
* @param msg The message to log.
|
* @param msg The message to log.
|
||||||
*/
|
*/
|
||||||
public static void staticLog(Level level, String msg) {
|
public static void staticLog(Level level, String msg) {
|
||||||
if (level == Level.FINE && config.getGlobalDebug() >= 1) {
|
if (level == Level.FINE && MultiverseCoreConfiguration.getInstance().getGlobalDebug() >= 1) {
|
||||||
staticDebugLog(Level.INFO, msg);
|
staticDebugLog(Level.INFO, msg);
|
||||||
return;
|
return;
|
||||||
} else if (level == Level.FINER && config.getGlobalDebug() >= 2) {
|
} else if (level == Level.FINER && MultiverseCoreConfiguration.getInstance().getGlobalDebug() >= 2) {
|
||||||
staticDebugLog(Level.INFO, msg);
|
staticDebugLog(Level.INFO, msg);
|
||||||
return;
|
return;
|
||||||
} else if (level == Level.FINEST && config.getGlobalDebug() >= 3) {
|
} else if (level == Level.FINEST && MultiverseCoreConfiguration.getInstance().getGlobalDebug() >= 3) {
|
||||||
staticDebugLog(Level.INFO, msg);
|
staticDebugLog(Level.INFO, msg);
|
||||||
return;
|
return;
|
||||||
} else if (level != Level.FINE && level != Level.FINER && level != Level.FINEST) {
|
} else if (level != Level.FINE && level != Level.FINER && level != Level.FINEST) {
|
||||||
@ -535,7 +753,7 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core, Messag
|
|||||||
@Override
|
@Override
|
||||||
public String getAuthors() {
|
public String getAuthors() {
|
||||||
String authors = "";
|
String authors = "";
|
||||||
ArrayList<String> auths = this.getDescription().getAuthors();
|
List<String> auths = this.getDescription().getAuthors();
|
||||||
if (auths.size() == 0) {
|
if (auths.size() == 0) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
@ -675,9 +893,10 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core, Messag
|
|||||||
this.serverFolder = newServerFolder;
|
this.serverFolder = newServerFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
/**
|
/**
|
||||||
* Initializes Spout.
|
* Initializes Spout.
|
||||||
*/
|
* /
|
||||||
public void setSpout() {
|
public void setSpout() {
|
||||||
this.spoutInterface = new SpoutInterface();
|
this.spoutInterface = new SpoutInterface();
|
||||||
this.commandHandler.registerCommand(new SpoutCommand(this));
|
this.commandHandler.registerCommand(new SpoutCommand(this));
|
||||||
@ -687,10 +906,11 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core, Messag
|
|||||||
* Gets our {@link SpoutInterface}.
|
* Gets our {@link SpoutInterface}.
|
||||||
*
|
*
|
||||||
* @return The {@link SpoutInterface} we're using.
|
* @return The {@link SpoutInterface} we're using.
|
||||||
*/
|
* /
|
||||||
public SpoutInterface getSpout() {
|
public SpoutInterface getSpout() {
|
||||||
return this.spoutInterface;
|
return this.spoutInterface;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
@ -896,6 +1116,6 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core, Messag
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static MultiverseCoreConfiguration getStaticConfig() {
|
public static MultiverseCoreConfiguration getStaticConfig() {
|
||||||
return config;
|
return MultiverseCoreConfiguration.getInstance();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
import com.onarandombox.MultiverseCore.api.MultiverseCoreConfig;
|
import com.onarandombox.MultiverseCore.api.MultiverseCoreConfig;
|
||||||
|
|
||||||
|
import me.main__.util.SerializationConfig.NoSuchPropertyException;
|
||||||
import me.main__.util.SerializationConfig.Property;
|
import me.main__.util.SerializationConfig.Property;
|
||||||
import me.main__.util.SerializationConfig.SerializationConfig;
|
import me.main__.util.SerializationConfig.SerializationConfig;
|
||||||
|
|
||||||
@ -11,6 +12,26 @@ import me.main__.util.SerializationConfig.SerializationConfig;
|
|||||||
* Our configuration.
|
* Our configuration.
|
||||||
*/
|
*/
|
||||||
public class MultiverseCoreConfiguration extends SerializationConfig implements MultiverseCoreConfig {
|
public class MultiverseCoreConfiguration extends SerializationConfig implements MultiverseCoreConfig {
|
||||||
|
private static MultiverseCoreConfiguration instance;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the statically saved instance.
|
||||||
|
* @param instance The new instance.
|
||||||
|
*/
|
||||||
|
public static void setInstance(MultiverseCoreConfiguration instance) {
|
||||||
|
MultiverseCoreConfiguration.instance = instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the statically saved instance.
|
||||||
|
* @return The statically saved instance.
|
||||||
|
*/
|
||||||
|
public static MultiverseCoreConfiguration getInstance() {
|
||||||
|
if (instance == null)
|
||||||
|
throw new IllegalStateException("The instance wasn't set!");
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
@Property
|
@Property
|
||||||
private boolean enforceaccess;
|
private boolean enforceaccess;
|
||||||
@Property
|
@Property
|
||||||
@ -34,10 +55,12 @@ public class MultiverseCoreConfiguration extends SerializationConfig implements
|
|||||||
|
|
||||||
public MultiverseCoreConfiguration() {
|
public MultiverseCoreConfiguration() {
|
||||||
super();
|
super();
|
||||||
|
MultiverseCoreConfiguration.setInstance(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public MultiverseCoreConfiguration(Map<String, Object> values) {
|
public MultiverseCoreConfiguration(Map<String, Object> values) {
|
||||||
super(values);
|
super(values);
|
||||||
|
MultiverseCoreConfiguration.setInstance(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -58,6 +81,18 @@ public class MultiverseCoreConfiguration extends SerializationConfig implements
|
|||||||
// END CHECKSTYLE-SUPPRESSION: MagicNumberCheck
|
// END CHECKSTYLE-SUPPRESSION: MagicNumberCheck
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean setConfigProperty(String property, String value) {
|
||||||
|
try {
|
||||||
|
return this.setProperty(property, value, true);
|
||||||
|
} catch (NoSuchPropertyException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// And here we go:
|
// And here we go:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -12,7 +12,7 @@ public interface MultiverseCoreConfig extends ConfigurationSerializable {
|
|||||||
* @param value The value.
|
* @param value The value.
|
||||||
* @return True on success, false if the operation failed.
|
* @return True on success, false if the operation failed.
|
||||||
*/
|
*/
|
||||||
boolean setProperty(String property, String value);
|
boolean setConfigProperty(String property, String value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets portalCooldown.
|
* Sets portalCooldown.
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
|
|
||||||
package com.onarandombox.MultiverseCore.api;
|
package com.onarandombox.MultiverseCore.api;
|
||||||
|
|
||||||
import com.onarandombox.MultiverseCore.configuration.MVConfigProperty;
|
|
||||||
import com.onarandombox.MultiverseCore.enums.AllowedPortalType;
|
import com.onarandombox.MultiverseCore.enums.AllowedPortalType;
|
||||||
import com.onarandombox.MultiverseCore.exceptions.PropertyDoesNotExistException;
|
import com.onarandombox.MultiverseCore.exceptions.PropertyDoesNotExistException;
|
||||||
|
|
||||||
@ -26,7 +25,6 @@ import java.util.List;
|
|||||||
* The API for a Multiverse Handled World.
|
* The API for a Multiverse Handled World.
|
||||||
*/
|
*/
|
||||||
public interface MultiverseWorld {
|
public interface MultiverseWorld {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the Bukkit world object that this world describes.
|
* Returns the Bukkit world object that this world describes.
|
||||||
*
|
*
|
||||||
@ -35,79 +33,24 @@ public interface MultiverseWorld {
|
|||||||
World getCBWorld();
|
World getCBWorld();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds the property to the given value.
|
* Gets the name of this world. The name cannot be changed.
|
||||||
* It will throw a PropertyDoesNotExistException if the property is not found.
|
* <p>
|
||||||
|
* Note for plugin developers: Usually {@link #getAlias()}
|
||||||
|
* is what you want to use instead of this method.
|
||||||
*
|
*
|
||||||
* @param property The name of a world property to set.
|
* @return The name of the world as a String.
|
||||||
* @param value A value in string representation, it will be parsed to the correct type.
|
|
||||||
* @param sender The sender who wants this value to be set.
|
|
||||||
* @return True if the value was set, false if not.
|
|
||||||
* @throws PropertyDoesNotExistException Thrown if the property was not found in the world.
|
|
||||||
*/
|
*/
|
||||||
boolean setProperty(String property, String value, CommandSender sender) throws PropertyDoesNotExistException;
|
String getName();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the actual MVConfigProperty from this world.
|
* Gets the type of this world. As of 1.2 this will be:
|
||||||
* It will throw a PropertyDoesNotExistException if the property is not found.
|
* FLAT, NORMAL or VERSION_1_1
|
||||||
|
* <p>
|
||||||
|
* This is <b>not</b> the generator.
|
||||||
*
|
*
|
||||||
* @param property The name of a world property to get.
|
* @return The Type of this world.
|
||||||
* @return A valid MVWorldProperty.
|
|
||||||
* @throws PropertyDoesNotExistException Thrown if the property was not found in the world.
|
|
||||||
* @deprecated Use {@link #getProperty(String, Class)} instead
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
WorldType getWorldType();
|
||||||
MVConfigProperty<?> getProperty(String property) throws PropertyDoesNotExistException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the string representation of a property.
|
|
||||||
* It will throw a PropertyDoesNotExistException if the property is not found.
|
|
||||||
*
|
|
||||||
* @param property The name of a world property to get.
|
|
||||||
* @return A valid MVWorldProperty.
|
|
||||||
* @throws PropertyDoesNotExistException Thrown if the property was not found in the world.
|
|
||||||
*/
|
|
||||||
String getPropertyValue(String property) throws PropertyDoesNotExistException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the actual MVConfigProperty from this world.
|
|
||||||
* It will throw a PropertyDoesNotExistException if the property is not found.
|
|
||||||
*
|
|
||||||
* @param property The name of a world property to get.
|
|
||||||
* @param expected The type of the expected property. Use Object.class if this doesn't matter for you.
|
|
||||||
* @param <T> The type of the expected property.
|
|
||||||
*
|
|
||||||
* @return A valid MVWorldProperty.
|
|
||||||
*
|
|
||||||
* @throws PropertyDoesNotExistException Thrown if the property was not found in the world.
|
|
||||||
*/
|
|
||||||
<T> MVConfigProperty<T> getProperty(String property, Class<T> expected) throws PropertyDoesNotExistException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Removes all values from the given property. The property must be a {@link com.onarandombox.MultiverseCore.enums.AddProperties}.
|
|
||||||
*
|
|
||||||
* @param property The name of a {@link com.onarandombox.MultiverseCore.enums.AddProperties} to clear.
|
|
||||||
* @return True if it was cleared, false if not.
|
|
||||||
*/
|
|
||||||
boolean clearVariable(String property);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds a value to the given property. The property must be a {@link com.onarandombox.MultiverseCore.enums.AddProperties}.
|
|
||||||
*
|
|
||||||
* @param property The name of a {@link com.onarandombox.MultiverseCore.enums.AddProperties} to add a value to.
|
|
||||||
* @param value A value in string representation, it will be parsed to the correct type.
|
|
||||||
* @return True if the value was added, false if not.
|
|
||||||
*/
|
|
||||||
boolean addToVariable(String property, String value);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Removes a value from the given property. The property must be a {@link com.onarandombox.MultiverseCore.enums.AddProperties}.
|
|
||||||
*
|
|
||||||
* @param property The name of a {@link com.onarandombox.MultiverseCore.enums.AddProperties} to remove a value
|
|
||||||
* from.
|
|
||||||
* @param value A value in string representation, it will be parsed to the correct type.
|
|
||||||
* @return True if the value was removed, false if not.
|
|
||||||
*/
|
|
||||||
boolean removeFromVariable(String property, String value);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the environment of this world.
|
* Gets the environment of this world.
|
||||||
@ -125,27 +68,168 @@ public interface MultiverseWorld {
|
|||||||
*/
|
*/
|
||||||
void setEnvironment(World.Environment environment);
|
void setEnvironment(World.Environment environment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the difficulty of this world.
|
||||||
|
*
|
||||||
|
* @return The difficulty of this world.
|
||||||
|
*/
|
||||||
|
Difficulty getDifficulty();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the difficulty of this world and returns true if success.
|
||||||
|
* Valid string values are either an integer of difficulty(0-3) or
|
||||||
|
* the name that resides in the Bukkit enum, ex. {@code PEACEFUL}
|
||||||
|
*
|
||||||
|
* @param difficulty The difficulty to set the world to as a string.
|
||||||
|
* @return True if success, false if the provided string
|
||||||
|
* could not be translated to a difficulty.
|
||||||
|
* @deprecated Use {@link #setDifficulty(Difficulty)} or, if you have to
|
||||||
|
* pass a string, use {@link #setPropertyValue(String, String)} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
boolean setDifficulty(String difficulty);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the difficulty of this world and returns {@code true} on success.
|
||||||
|
* Valid string values are either an integer of difficulty(0-3) or
|
||||||
|
* the name that resides in the Bukkit enum, ex. PEACEFUL
|
||||||
|
*
|
||||||
|
* @param difficulty The new difficulty.
|
||||||
|
* @return True if success, false if the operation failed... for whatever reason.
|
||||||
|
*/
|
||||||
|
boolean setDifficulty(Difficulty difficulty);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the world seed of this world.
|
* Gets the world seed of this world.
|
||||||
*
|
*
|
||||||
* @return The Long version of the seed.
|
* @return The Long version of the seed.
|
||||||
*/
|
*/
|
||||||
Long getSeed();
|
long getSeed();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the seed of this world.
|
* Sets the seed of this world.
|
||||||
*
|
*
|
||||||
* @param seed A Long that is the seed.
|
* @param seed A Long that is the seed.
|
||||||
*/
|
*/
|
||||||
void setSeed(Long seed);
|
void setSeed(long seed);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the name of this world. This cannot be changed.
|
* Gets the generator of this world.
|
||||||
*
|
*
|
||||||
* @return The name of the world as a String.
|
* @return The name of the generator.
|
||||||
*/
|
*/
|
||||||
String getName();
|
String getGenerator();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the generator of this world.
|
||||||
|
*
|
||||||
|
* @param generator The new generator's name.
|
||||||
|
*/
|
||||||
|
void setGenerator(String generator);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the help-message for a property.
|
||||||
|
* @param property The name of the property.
|
||||||
|
* @return The help-message.
|
||||||
|
* @throws PropertyDoesNotExistException Thrown if the property was not found.
|
||||||
|
*/
|
||||||
|
String getPropertyHelp(String property) throws PropertyDoesNotExistException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a property as {@link String}.
|
||||||
|
*
|
||||||
|
* @param property The name of a world property to get.
|
||||||
|
* @return The string-representation of that property.
|
||||||
|
* @throws PropertyDoesNotExistException Thrown if the property was not found in the world.
|
||||||
|
*/
|
||||||
|
String getPropertyValue(String property) throws PropertyDoesNotExistException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a property to a given value.
|
||||||
|
*
|
||||||
|
* @param property The name of a world property to set.
|
||||||
|
* @param value A value in string representation, it will be parsed to the correct type.
|
||||||
|
* @return True if the value was set, false if not.
|
||||||
|
* @throws PropertyDoesNotExistException Thrown if the property was not found in the world.
|
||||||
|
*/
|
||||||
|
boolean setPropertyValue(String property, String value) throws PropertyDoesNotExistException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the actual MVConfigProperty from this world.
|
||||||
|
* It will throw a PropertyDoesNotExistException if the property is not found.
|
||||||
|
*
|
||||||
|
* @param property The name of a world property to get.
|
||||||
|
* @param expected The type of the expected property. Use Object.class if this doesn't matter for you.
|
||||||
|
* @param <T> The type of the expected property.
|
||||||
|
*
|
||||||
|
* @return A valid MVWorldProperty.
|
||||||
|
*
|
||||||
|
* @throws PropertyDoesNotExistException Thrown if the property was not found in the world.
|
||||||
|
* @deprecated We don't use {@link com.onarandombox.MultiverseCore.configuration.MVConfigProperty} any longer!
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
<T> com.onarandombox.MultiverseCore.configuration.MVConfigProperty<T> getProperty(String property, Class<T> expected) throws PropertyDoesNotExistException;
|
||||||
|
|
||||||
|
// old config
|
||||||
|
/**
|
||||||
|
* Adds the property to the given value.
|
||||||
|
* It will throw a PropertyDoesNotExistException if the property is not found.
|
||||||
|
*
|
||||||
|
* @param property The name of a world property to set.
|
||||||
|
* @param value A value in string representation, it will be parsed to the correct type.
|
||||||
|
* @param sender The sender who wants this value to be set.
|
||||||
|
* @return True if the value was set, false if not.
|
||||||
|
* @throws PropertyDoesNotExistException Thrown if the property was not found in the world.
|
||||||
|
* @deprecated Use {@link #setPropertyValue(String, String)} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
boolean setProperty(String property, String value, CommandSender sender) throws PropertyDoesNotExistException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a value to the given property. The property must be a {@link com.onarandombox.MultiverseCore.enums.AddProperties}.
|
||||||
|
*
|
||||||
|
* @param property The name of a {@link com.onarandombox.MultiverseCore.enums.AddProperties} to add a value to.
|
||||||
|
* @param value A value in string representation, it will be parsed to the correct type.
|
||||||
|
* @return True if the value was added, false if not.
|
||||||
|
* @deprecated We changed the entire world-config-system. This is not compatible any more.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
boolean addToVariable(String property, String value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes a value from the given property. The property must be a {@link com.onarandombox.MultiverseCore.enums.AddProperties}.
|
||||||
|
*
|
||||||
|
* @param property The name of a {@link com.onarandombox.MultiverseCore.enums.AddProperties} to remove a value
|
||||||
|
* from.
|
||||||
|
* @param value A value in string representation, it will be parsed to the correct type.
|
||||||
|
* @return True if the value was removed, false if not.
|
||||||
|
* @deprecated We changed the entire world-config-system. This is not compatible any more.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
boolean removeFromVariable(String property, String value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes all values from the given property. The property must be a {@link com.onarandombox.MultiverseCore.enums.AddProperties}.
|
||||||
|
*
|
||||||
|
* @param property The name of a {@link com.onarandombox.MultiverseCore.enums.AddProperties} to clear.
|
||||||
|
* @return True if it was cleared, false if not.
|
||||||
|
* @deprecated We changed the entire world-config-system. This is not compatible any more.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
boolean clearVariable(String property);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears a list property (sets it to []).
|
||||||
|
*
|
||||||
|
* @param property The property to clear.
|
||||||
|
* @return True if success, false if fail.
|
||||||
|
* @deprecated We changed the entire world-config-system. This is not compatible any more.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
boolean clearList(String property);
|
||||||
|
// end of old config stuff
|
||||||
|
|
||||||
|
// permission stuff
|
||||||
/**
|
/**
|
||||||
* Gets the lowercased name of the world. This method is required, since the permissables
|
* Gets the lowercased name of the world. This method is required, since the permissables
|
||||||
* lowercase all permissions when recalculating.
|
* lowercase all permissions when recalculating.
|
||||||
@ -158,6 +242,21 @@ public interface MultiverseWorld {
|
|||||||
*/
|
*/
|
||||||
String getPermissibleName();
|
String getPermissibleName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the permission required to enter this world.
|
||||||
|
*
|
||||||
|
* @return The permission required to be exempt from charges to/from this world.
|
||||||
|
*/
|
||||||
|
Permission getAccessPermission();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the permission required to be exempt when entering.
|
||||||
|
*
|
||||||
|
* @return The permission required to be exempt when entering.
|
||||||
|
*/
|
||||||
|
Permission getExemptPermission();
|
||||||
|
// end of permission stuff
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the alias of this world.
|
* Gets the alias of this world.
|
||||||
* <p>
|
* <p>
|
||||||
@ -174,6 +273,13 @@ public interface MultiverseWorld {
|
|||||||
*/
|
*/
|
||||||
void setAlias(String alias);
|
void setAlias(String alias);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the color that this world's name/alias will display as.
|
||||||
|
*
|
||||||
|
* @return The color of this world.
|
||||||
|
*/
|
||||||
|
ChatColor getColor();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the color that this world's name/alias will display as.
|
* Sets the color that this world's name/alias will display as.
|
||||||
*
|
*
|
||||||
@ -182,19 +288,15 @@ public interface MultiverseWorld {
|
|||||||
*/
|
*/
|
||||||
boolean setColor(String color);
|
boolean setColor(String color);
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the color that this world's name/alias will display as.
|
|
||||||
*
|
|
||||||
* @return The color of this world.
|
|
||||||
*/
|
|
||||||
ChatColor getColor();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tells you if someone entered a valid color.
|
* Tells you if someone entered a valid color.
|
||||||
*
|
*
|
||||||
* @param color A string that may translate to a color.
|
* @param color A string that may translate to a color.
|
||||||
* @return True if it is a color, false if not.
|
* @return True if it is a color, false if not.
|
||||||
|
*
|
||||||
|
* @deprecated This has been moved: {@link com.onarandombox.MultiverseCore.enums.EnglishChatColor#isValidAliasColor(String)}
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
boolean isValidAliasColor(String color);
|
boolean isValidAliasColor(String color);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -204,6 +306,7 @@ public interface MultiverseWorld {
|
|||||||
*/
|
*/
|
||||||
String getColoredWorldString();
|
String getColoredWorldString();
|
||||||
|
|
||||||
|
// animals&monster stuff
|
||||||
/**
|
/**
|
||||||
* Gets whether or not animals are allowed to spawn in this world.
|
* Gets whether or not animals are allowed to spawn in this world.
|
||||||
*
|
*
|
||||||
@ -211,6 +314,22 @@ public interface MultiverseWorld {
|
|||||||
*/
|
*/
|
||||||
boolean canAnimalsSpawn();
|
boolean canAnimalsSpawn();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether or not animals can spawn.
|
||||||
|
* If there are values in {@link #getAnimalList()} and this is false,
|
||||||
|
* those animals become the exceptions, and will spawn
|
||||||
|
*
|
||||||
|
* @param allowAnimalSpawn True to allow spawning of monsters, false to prevent.
|
||||||
|
*/
|
||||||
|
void setAllowAnimalSpawn(boolean allowAnimalSpawn);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of animals. This list always negates the {@link #canAnimalsSpawn()} result.
|
||||||
|
*
|
||||||
|
* @return A list of animals that will spawn if {@link #canAnimalsSpawn()} is false.
|
||||||
|
*/
|
||||||
|
List<String> getAnimalList();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets whether or not monsters are allowed to spawn in this world.
|
* Gets whether or not monsters are allowed to spawn in this world.
|
||||||
*
|
*
|
||||||
@ -219,7 +338,31 @@ public interface MultiverseWorld {
|
|||||||
boolean canMonstersSpawn();
|
boolean canMonstersSpawn();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Turn pvp on or off. This setting is used to set the world's PVP mode, and thus relies on fakePVP
|
* Sets whether or not monsters can spawn.
|
||||||
|
* If there are values in {@link #getMonsterList()} and this is false,
|
||||||
|
* those monsters become the exceptions, and will spawn
|
||||||
|
*
|
||||||
|
* @param allowMonsterSpawn True to allow spawning of monsters, false to prevent.
|
||||||
|
*/
|
||||||
|
void setAllowMonsterSpawn(boolean allowMonsterSpawn);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of monsters. This list always negates the {@link #canMonstersSpawn()} result.
|
||||||
|
*
|
||||||
|
* @return A list of monsters that will spawn if {@link #canMonstersSpawn()} is false.
|
||||||
|
*/
|
||||||
|
List<String> getMonsterList();
|
||||||
|
// end of animal&monster stuff
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets whether or not PVP is enabled in this world in some form (fake or not).
|
||||||
|
*
|
||||||
|
* @return True if players can take damage from other players.
|
||||||
|
*/
|
||||||
|
boolean isPVPEnabled();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turn pvp on or off. This setting is used to set the world's PVP mode.
|
||||||
*
|
*
|
||||||
* @param pvpMode True to enable PVP damage, false to disable it.
|
* @param pvpMode True to enable PVP damage, false to disable it.
|
||||||
*/
|
*/
|
||||||
@ -234,13 +377,6 @@ public interface MultiverseWorld {
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
boolean getFakePVP();
|
boolean getFakePVP();
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets whether or not PVP is enabled in this world in some form (fake or not).
|
|
||||||
*
|
|
||||||
* @return True if players can take damage from other players.
|
|
||||||
*/
|
|
||||||
boolean isPVPEnabled();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets whether or not this world will display in chat, mvw and mvl regardless if a user has the
|
* Gets whether or not this world will display in chat, mvw and mvl regardless if a user has the
|
||||||
* access permissions to go to this world.
|
* access permissions to go to this world.
|
||||||
@ -257,6 +393,13 @@ public interface MultiverseWorld {
|
|||||||
*/
|
*/
|
||||||
void setHidden(boolean hidden);
|
void setHidden(boolean hidden);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets whether weather is enabled in this world.
|
||||||
|
*
|
||||||
|
* @return True if weather events will occur, false if not.
|
||||||
|
*/
|
||||||
|
boolean isWeatherEnabled();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets whether or not there will be weather events in a given world.
|
* Sets whether or not there will be weather events in a given world.
|
||||||
* If set to false, Multiverse will disable the weather in the world immediately.
|
* If set to false, Multiverse will disable the weather in the world immediately.
|
||||||
@ -266,11 +409,11 @@ public interface MultiverseWorld {
|
|||||||
void setEnableWeather(boolean enableWeather);
|
void setEnableWeather(boolean enableWeather);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets whether weather is enabled in this world.
|
* Gets whether or not CraftBukkit is keeping the chunks for this world in memory.
|
||||||
*
|
*
|
||||||
* @return True if weather events will occur, false if not.
|
* @return True if CraftBukkit is keeping spawn chunks in memory.
|
||||||
*/
|
*/
|
||||||
boolean isWeatherEnabled();
|
boolean isKeepingSpawnInMemory();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If true, tells Craftbukkit to keep a worlds spawn chunks loaded in memory (default: true)
|
* If true, tells Craftbukkit to keep a worlds spawn chunks loaded in memory (default: true)
|
||||||
@ -282,29 +425,11 @@ public interface MultiverseWorld {
|
|||||||
void setKeepSpawnInMemory(boolean keepSpawnInMemory);
|
void setKeepSpawnInMemory(boolean keepSpawnInMemory);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets whether or not CraftBukkit is keeping the chunks for this world in memory.
|
* Gets the spawn location of this world.
|
||||||
*
|
*
|
||||||
* @return True if CraftBukkit is keeping spawn chunks in memory.
|
* @return The spawn location of this world.
|
||||||
*/
|
*/
|
||||||
boolean isKeepingSpawnInMemory();
|
Location getSpawnLocation();
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the difficulty of this world and returns true if success.
|
|
||||||
* Valid string values are either an integer of difficulty(0-3) or
|
|
||||||
* the name that resides in the Bukkit enum, ex. PEACEFUL
|
|
||||||
*
|
|
||||||
* @param difficulty The difficulty to set the world to as a string.
|
|
||||||
* @return True if success, false if the provided string
|
|
||||||
* could not be translated to a difficulty.
|
|
||||||
*/
|
|
||||||
boolean setDifficulty(String difficulty);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the difficulty of this world.
|
|
||||||
*
|
|
||||||
* @return The difficulty of this world.
|
|
||||||
*/
|
|
||||||
Difficulty getDifficulty();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the spawn location for a world.
|
* Sets the spawn location for a world.
|
||||||
@ -314,11 +439,11 @@ public interface MultiverseWorld {
|
|||||||
void setSpawnLocation(Location spawnLocation);
|
void setSpawnLocation(Location spawnLocation);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the spawn location of this world.
|
* Gets whether or not the hunger level of players will go down in a world.
|
||||||
*
|
*
|
||||||
* @return The spawn location of this world.
|
* @return True if it will go down, false if it will remain steady.
|
||||||
*/
|
*/
|
||||||
Location getSpawnLocation();
|
boolean getHunger();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets whether or not the hunger level of players will go down in a world.
|
* Sets whether or not the hunger level of players will go down in a world.
|
||||||
@ -328,22 +453,6 @@ public interface MultiverseWorld {
|
|||||||
*/
|
*/
|
||||||
void setHunger(boolean hungerEnabled);
|
void setHunger(boolean hungerEnabled);
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets whether or not the hunger level of players will go down in a world.
|
|
||||||
*
|
|
||||||
* @return True if it will go down, false if it will remain steady.
|
|
||||||
*/
|
|
||||||
boolean getHunger();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the game mode of this world.
|
|
||||||
*
|
|
||||||
* @param gameMode A valid game mode string (either
|
|
||||||
* an int ex. 0 or a string ex. creative).
|
|
||||||
* @return True if the game mode was successfully changed, false if not.
|
|
||||||
*/
|
|
||||||
boolean setGameMode(String gameMode);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the GameMode of this world.
|
* Gets the GameMode of this world.
|
||||||
*
|
*
|
||||||
@ -352,18 +461,31 @@ public interface MultiverseWorld {
|
|||||||
GameMode getGameMode();
|
GameMode getGameMode();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the permission required to enter this world.
|
* Sets the game mode of this world.
|
||||||
*
|
*
|
||||||
* @return The permission required to be exempt from charges to/from this world.
|
* @param gameMode A valid game mode string (either
|
||||||
|
* an int ex. 0 or a string ex. creative).
|
||||||
|
* @return True if the game mode was successfully changed, false if not.
|
||||||
|
* @deprecated Use {@link #setGameMode(GameMode)} instead. If you have to
|
||||||
|
* pass a string, use {@link #setPropertyValue(String, String)}.
|
||||||
*/
|
*/
|
||||||
Permission getAccessPermission();
|
@Deprecated
|
||||||
|
boolean setGameMode(String gameMode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the permission required to be exempt when entering.
|
* Sets the game mode of this world.
|
||||||
*
|
*
|
||||||
* @return The permission required to be exempt when entering.
|
* @param gameMode The new {@link GameMode}.
|
||||||
|
* @return True if the game mode was successfully changed, false if not.
|
||||||
*/
|
*/
|
||||||
Permission getExemptPermission();
|
boolean setGameMode(GameMode gameMode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the amount of currency it requires to enter this world.
|
||||||
|
*
|
||||||
|
* @return The amount it costs to enter this world.
|
||||||
|
*/
|
||||||
|
double getPrice();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the price for entry to this world.
|
* Sets the price for entry to this world.
|
||||||
@ -375,11 +497,11 @@ public interface MultiverseWorld {
|
|||||||
void setPrice(double price);
|
void setPrice(double price);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the amount of currency it requires to enter this world.
|
* Gets the Type of currency that will be used when users enter this world.
|
||||||
*
|
*
|
||||||
* @return The amount it costs to enter this world.
|
* @return The Type of currency that will be used when users enter this world.
|
||||||
*/
|
*/
|
||||||
double getPrice();
|
int getCurrency();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the type of item that will be required given the price is not 0.
|
* Sets the type of item that will be required given the price is not 0.
|
||||||
@ -390,11 +512,11 @@ public interface MultiverseWorld {
|
|||||||
void setCurrency(int item);
|
void setCurrency(int item);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the Type of currency that will be used when users enter this world.
|
* Gets the world players will respawn in if they die in this one.
|
||||||
*
|
*
|
||||||
* @return The Type of currency that will be used when users enter this world.
|
* @return A world that exists on the server.
|
||||||
*/
|
*/
|
||||||
int getCurrency();
|
World getRespawnToWorld();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the world players will respawn in if they die in this one.
|
* Sets the world players will respawn in if they die in this one.
|
||||||
@ -406,11 +528,12 @@ public interface MultiverseWorld {
|
|||||||
boolean setRespawnToWorld(String respawnWorld);
|
boolean setRespawnToWorld(String respawnWorld);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the world players will respawn in if they die in this one.
|
* Gets the scaling value of this world.Really only has an effect if you use
|
||||||
|
* Multiverse-NetherPortals.
|
||||||
*
|
*
|
||||||
* @return A world that exists on the server.
|
* @return This world's non-negative, non-zero scale.
|
||||||
*/
|
*/
|
||||||
World getRespawnToWorld();
|
double getScaling();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the scale of this world. Really only has an effect if you use
|
* Sets the scale of this world. Really only has an effect if you use
|
||||||
@ -422,60 +545,11 @@ public interface MultiverseWorld {
|
|||||||
boolean setScaling(double scaling);
|
boolean setScaling(double scaling);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the scaling value of this world.Really only has an effect if you use
|
* Gets whether or not a world will auto-heal players if the difficulty is on peaceful.
|
||||||
* Multiverse-NetherPortals.
|
|
||||||
*
|
*
|
||||||
* @return This world's non-negative, non-zero scale.
|
* @return True if the world should heal (default), false if not.
|
||||||
*/
|
*/
|
||||||
double getScaling();
|
boolean getAutoHeal();
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets a list of all the worlds that players CANNOT travel to from this world,
|
|
||||||
* regardless of their access permissions.
|
|
||||||
*
|
|
||||||
* @return A List of world names.
|
|
||||||
*/
|
|
||||||
List<String> getWorldBlacklist();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a list of animals. This list always negates the {@link #canAnimalsSpawn()} result.
|
|
||||||
*
|
|
||||||
* @return A list of animals that will spawn if {@link #canAnimalsSpawn()} is false.
|
|
||||||
*/
|
|
||||||
List<String> getAnimalList();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets whether or not animals can spawn.
|
|
||||||
* If there are values in {@link #getAnimalList()} and this is false,
|
|
||||||
* those animals become the exceptions, and will spawn
|
|
||||||
*
|
|
||||||
* @param allowAnimalSpawn True to allow spawning of monsters, false to prevent.
|
|
||||||
*/
|
|
||||||
void setAllowAnimalSpawn(boolean allowAnimalSpawn);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a list of monsters. This list always negates the {@link #canMonstersSpawn()} ()} result.
|
|
||||||
*
|
|
||||||
* @return A list of monsters that will spawn if {@link #canMonstersSpawn()} is false.
|
|
||||||
*/
|
|
||||||
List<String> getMonsterList();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets whether or not monsters can spawn.
|
|
||||||
* If there are values in {@link #getMonsterList()} and this is false,
|
|
||||||
* those monsters become the exceptions, and will spawn
|
|
||||||
*
|
|
||||||
* @param allowMonsterSpawn True to allow spawning of monsters, false to prevent.
|
|
||||||
*/
|
|
||||||
void setAllowMonsterSpawn(boolean allowMonsterSpawn);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Clears a list property (sets it to []).
|
|
||||||
*
|
|
||||||
* @param property The property to clear.
|
|
||||||
* @return True if success, false if fail.
|
|
||||||
*/
|
|
||||||
boolean clearList(String property);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets whether or not a world will auto-heal players if the difficulty is on peaceful.
|
* Sets whether or not a world will auto-heal players if the difficulty is on peaceful.
|
||||||
@ -485,11 +559,11 @@ public interface MultiverseWorld {
|
|||||||
void setAutoHeal(boolean heal);
|
void setAutoHeal(boolean heal);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets whether or not a world will auto-heal players if the difficulty is on peaceful.
|
* Gets whether or not Multiverse should auto-adjust the spawn for this world.
|
||||||
*
|
*
|
||||||
* @return True if the world should heal (default), false if not.
|
* @return True if Multiverse should adjust the spawn, false if not.
|
||||||
*/
|
*/
|
||||||
boolean getAutoHeal();
|
boolean getAdjustSpawn();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets whether or not Multiverse should auto-adjust the spawn for this world.
|
* Sets whether or not Multiverse should auto-adjust the spawn for this world.
|
||||||
@ -499,11 +573,11 @@ public interface MultiverseWorld {
|
|||||||
void setAdjustSpawn(boolean adjust);
|
void setAdjustSpawn(boolean adjust);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets whether or not Multiverse should auto-adjust the spawn for this world.
|
* Gets whether or not Multiverse should auto-load this world.
|
||||||
*
|
*
|
||||||
* @return True if Multiverse should adjust the spawn, false if not.
|
* @return True if Multiverse should auto-load this world.
|
||||||
*/
|
*/
|
||||||
boolean getAdjustSpawn();
|
boolean getAutoLoad();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets whether or not Multiverse should auto-load this world.
|
* Sets whether or not Multiverse should auto-load this world.
|
||||||
@ -515,11 +589,12 @@ public interface MultiverseWorld {
|
|||||||
void setAutoLoad(boolean autoLoad);
|
void setAutoLoad(boolean autoLoad);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets whether or not Multiverse should auto-load this world.
|
* Gets whether or not a player who dies in this world will respawn in their
|
||||||
|
* bed or follow the normal respawn pattern.
|
||||||
*
|
*
|
||||||
* @return True if Multiverse should auto-load this world.
|
* @return True if players dying in this world should respawn at their bed.
|
||||||
*/
|
*/
|
||||||
boolean getAutoLoad();
|
boolean getBedRespawn();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets whether or not a player who dies in this world will respawn in their
|
* Sets whether or not a player who dies in this world will respawn in their
|
||||||
@ -532,19 +607,10 @@ public interface MultiverseWorld {
|
|||||||
void setBedRespawn(boolean autoLoad);
|
void setBedRespawn(boolean autoLoad);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets whether or not a player who dies in this world will respawn in their
|
* Same as {@link #getTime()}, but returns a string.
|
||||||
* bed or follow the normal respawn pattern.
|
* @return The time as a short string: 12:34pm
|
||||||
*
|
|
||||||
* @return True if players dying in this world should respawn at their bed.
|
|
||||||
*/
|
*/
|
||||||
boolean getBedRespawn();
|
String getTime();
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets all the names of all properties that can be SET.
|
|
||||||
*
|
|
||||||
* @return All property names, with alternating colors.
|
|
||||||
*/
|
|
||||||
String getAllPropertyNames();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the current time in a world.
|
* Sets the current time in a world.
|
||||||
@ -559,22 +625,6 @@ public interface MultiverseWorld {
|
|||||||
*/
|
*/
|
||||||
boolean setTime(String timeAsString);
|
boolean setTime(String timeAsString);
|
||||||
|
|
||||||
/**
|
|
||||||
* Same as {@link #getTime()}, but returns a string.
|
|
||||||
* @return The time as a short string: 12:34pm
|
|
||||||
*/
|
|
||||||
String getTime();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the type of this world. As of 1.1-R1 this will be:
|
|
||||||
* FLAT or NORMAL
|
|
||||||
* <p>
|
|
||||||
* This is *not* the generator.
|
|
||||||
*
|
|
||||||
* @return The Type of this world.
|
|
||||||
*/
|
|
||||||
WorldType getWorldType();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets The types of portals that are allowed in this world.
|
* Sets The types of portals that are allowed in this world.
|
||||||
*
|
*
|
||||||
@ -588,4 +638,20 @@ public interface MultiverseWorld {
|
|||||||
* @return The type of portals that are allowed.
|
* @return The type of portals that are allowed.
|
||||||
*/
|
*/
|
||||||
AllowedPortalType getAllowedPortals();
|
AllowedPortalType getAllowedPortals();
|
||||||
|
|
||||||
|
// properties that are not "getter+setter" style
|
||||||
|
/**
|
||||||
|
* Gets a list of all the worlds that players CANNOT travel to from this world,
|
||||||
|
* regardless of their access permissions.
|
||||||
|
*
|
||||||
|
* @return A List of world names.
|
||||||
|
*/
|
||||||
|
List<String> getWorldBlacklist();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets all the names of all properties that can be SET.
|
||||||
|
*
|
||||||
|
* @return All property names, with alternating colors.
|
||||||
|
*/
|
||||||
|
String getAllPropertyNames();
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ public class ConfigCommand extends MultiverseCommand {
|
|||||||
sender.sendMessage(message);
|
sender.sendMessage(message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!this.plugin.getMVConfig().setProperty(args.get(0).toLowerCase(), args.get(1))) {
|
if (!this.plugin.getMVConfig().setConfigProperty(args.get(0).toLowerCase(), args.get(1))) {
|
||||||
sender.sendMessage(String.format("%sSetting '%s' to '%s' failed!", ChatColor.RED, args.get(0).toLowerCase(), args.get(1)));
|
sender.sendMessage(String.format("%sSetting '%s' to '%s' failed!", ChatColor.RED, args.get(0).toLowerCase(), args.get(1)));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -53,8 +53,8 @@ public class EnvironmentCommand extends MultiverseCommand {
|
|||||||
*/
|
*/
|
||||||
public static void showWorldTypes(CommandSender sender) {
|
public static void showWorldTypes(CommandSender sender) {
|
||||||
sender.sendMessage(ChatColor.YELLOW + "Valid World Types are:");
|
sender.sendMessage(ChatColor.YELLOW + "Valid World Types are:");
|
||||||
sender.sendMessage(String.format("%sNORMAL %sor %sFLAT",
|
sender.sendMessage(String.format("%sNORMAL%s, %sFLAT %sor %sVERSION_1_1",
|
||||||
ChatColor.GREEN, ChatColor.WHITE, ChatColor.AQUA));
|
ChatColor.GREEN, ChatColor.WHITE, ChatColor.AQUA, ChatColor.WHITE, ChatColor.GOLD));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -52,7 +52,7 @@ public class ImportCommand extends MultiverseCommand {
|
|||||||
* @param worldFolder The File that may be a world.
|
* @param worldFolder The File that may be a world.
|
||||||
* @return True if it looks like a world, false if not.
|
* @return True if it looks like a world, false if not.
|
||||||
*/
|
*/
|
||||||
private boolean checkIfIsWorld(File worldFolder) {
|
private static boolean checkIfIsWorld(File worldFolder) {
|
||||||
if (worldFolder.isDirectory()) {
|
if (worldFolder.isDirectory()) {
|
||||||
File[] files = worldFolder.listFiles(new FilenameFilter() {
|
File[] files = worldFolder.listFiles(new FilenameFilter() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -190,7 +190,7 @@ public class InfoCommand extends MultiverseCommand {
|
|||||||
return worldInfo;
|
return worldInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String toCommaSeperated(List<String> list) {
|
private static String toCommaSeperated(List<String> list) {
|
||||||
if (list == null || list.size() == 0) {
|
if (list == null || list.size() == 0) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
@ -216,7 +216,7 @@ public class InfoCommand extends MultiverseCommand {
|
|||||||
return positive ? ChatColor.GREEN : ChatColor.RED;
|
return positive ? ChatColor.GREEN : ChatColor.RED;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showPage(int page, CommandSender sender, List<List<FancyText>> doc) {
|
private static void showPage(int page, CommandSender sender, List<List<FancyText>> doc) {
|
||||||
page = page < 0 ? 0 : page;
|
page = page < 0 ? 0 : page;
|
||||||
page = page > doc.size() - 1 ? doc.size() - 1 : page;
|
page = page > doc.size() - 1 ? doc.size() - 1 : page;
|
||||||
boolean altColor = false;
|
boolean altColor = false;
|
||||||
|
@ -81,6 +81,7 @@ public class ModifyAddCommand extends MultiverseCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO fix this
|
||||||
if (world.addToVariable(property, value)) {
|
if (world.addToVariable(property, value)) {
|
||||||
sender.sendMessage(ChatColor.GREEN + "Success! " + ChatColor.AQUA
|
sender.sendMessage(ChatColor.GREEN + "Success! " + ChatColor.AQUA
|
||||||
+ value + ChatColor.WHITE + " was " + ChatColor.GREEN + "added to " + ChatColor.GREEN + property);
|
+ value + ChatColor.WHITE + " was " + ChatColor.GREEN + "added to " + ChatColor.GREEN + property);
|
||||||
|
@ -75,6 +75,7 @@ public class ModifyClearCommand extends MultiverseCommand {
|
|||||||
sender.sendMessage("Please visit our Github Wiki for more information: http://goo.gl/cgB2B");
|
sender.sendMessage("Please visit our Github Wiki for more information: http://goo.gl/cgB2B");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// TODO fix this
|
||||||
if (world.clearList(property)) {
|
if (world.clearList(property)) {
|
||||||
sender.sendMessage(property + " was cleared. It contains 0 values now.");
|
sender.sendMessage(property + " was cleared. It contains 0 values now.");
|
||||||
sender.sendMessage(ChatColor.GREEN + "Success! " + ChatColor.AQUA + property + ChatColor.WHITE + " was "
|
sender.sendMessage(ChatColor.GREEN + "Success! " + ChatColor.AQUA + property + ChatColor.WHITE + " was "
|
||||||
|
@ -81,6 +81,7 @@ public class ModifyRemoveCommand extends MultiverseCommand {
|
|||||||
sender.sendMessage("Please visit our Github Wiki for more information: http://goo.gl/4W8cY");
|
sender.sendMessage("Please visit our Github Wiki for more information: http://goo.gl/4W8cY");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// TODO fix this
|
||||||
if (world.removeFromVariable(property, value)) {
|
if (world.removeFromVariable(property, value)) {
|
||||||
sender.sendMessage(ChatColor.GREEN + "Success! " + ChatColor.AQUA + value + ChatColor.WHITE
|
sender.sendMessage(ChatColor.GREEN + "Success! " + ChatColor.AQUA + value + ChatColor.WHITE
|
||||||
+ " was " + ChatColor.RED + "removed from " + ChatColor.GREEN + property);
|
+ " was " + ChatColor.RED + "removed from " + ChatColor.GREEN + property);
|
||||||
|
@ -102,22 +102,21 @@ public class ModifySetCommand extends MultiverseCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((property.equalsIgnoreCase("aliascolor") || property.equalsIgnoreCase("color")) && !world.isValidAliasColor(value)) {
|
if ((property.equalsIgnoreCase("aliascolor") || property.equalsIgnoreCase("color")) && !EnglishChatColor.isValidAliasColor(value)) {
|
||||||
sender.sendMessage(value + " is not a valid color. Please pick one of the following:");
|
sender.sendMessage(value + " is not a valid color. Please pick one of the following:");
|
||||||
sender.sendMessage(EnglishChatColor.getAllColors());
|
sender.sendMessage(EnglishChatColor.getAllColors());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
if (world.setProperty(property, value, sender)) {
|
if (world.setPropertyValue(property, value)) {
|
||||||
sender.sendMessage(ChatColor.GREEN + "Success!" + ChatColor.WHITE + " Property " + ChatColor.AQUA + property
|
sender.sendMessage(ChatColor.GREEN + "Success!" + ChatColor.WHITE + " Property " + ChatColor.AQUA + property
|
||||||
+ ChatColor.WHITE + " was set to " + ChatColor.GREEN + value);
|
+ ChatColor.WHITE + " was set to " + ChatColor.GREEN + value);
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage(world.getProperty(property, Object.class).getHelp());
|
sender.sendMessage(ChatColor.RED + world.getPropertyHelp(property));
|
||||||
}
|
}
|
||||||
} catch (PropertyDoesNotExistException e) {
|
} catch (PropertyDoesNotExistException e) {
|
||||||
sender.sendMessage(ChatColor.RED + "Sorry, You can't set: '" + ChatColor.GRAY + property + ChatColor.RED + "'");
|
sender.sendMessage(ChatColor.RED + "Sorry, You can't set: '" + ChatColor.GRAY + property + ChatColor.RED + "'");
|
||||||
// TODO: Display the list
|
sender.sendMessage("Valid world-properties: " + world.getAllPropertyNames());
|
||||||
sender.sendMessage(ChatColor.GOLD + "For a full list of thingys, see our wiki.");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ public class PurgeCommand extends MultiverseCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!worldName.equalsIgnoreCase("all") && !this.worldManager.isMVWorld(worldName)) {
|
if (!worldName.equalsIgnoreCase("all") && !this.worldManager.isMVWorld(worldName)) {
|
||||||
((MultiverseCore) this.plugin).showNotMVWorldMessage(sender, worldName);
|
this.plugin.showNotMVWorldMessage(sender, worldName);
|
||||||
sender.sendMessage("It cannot be purged.");
|
sender.sendMessage("It cannot be purged.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* 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. *
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
/*
|
||||||
package com.onarandombox.MultiverseCore.commands;
|
package com.onarandombox.MultiverseCore.commands;
|
||||||
|
|
||||||
import com.onarandombox.MultiverseCore.MultiverseCore;
|
import com.onarandombox.MultiverseCore.MultiverseCore;
|
||||||
@ -21,7 +21,7 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Edit a world with spout.
|
* Edit a world with spout.
|
||||||
*/
|
* /
|
||||||
public class SpoutCommand extends MultiverseCommand {
|
public class SpoutCommand extends MultiverseCommand {
|
||||||
|
|
||||||
public SpoutCommand(MultiverseCore plugin) {
|
public SpoutCommand(MultiverseCore plugin) {
|
||||||
@ -51,7 +51,7 @@ public class SpoutCommand extends MultiverseCommand {
|
|||||||
}
|
}
|
||||||
PopupScreen pop = new GenericPopup();
|
PopupScreen pop = new GenericPopup();
|
||||||
GenericButton button = new GenericButton("Fish");
|
GenericButton button = new GenericButton("Fish");
|
||||||
// TODO maybe use constants for these
|
// TO-DO maybe use constants for these
|
||||||
// BEGIN CHECKSTYLE-SUPPRESSION: MagicNumberCheck
|
// BEGIN CHECKSTYLE-SUPPRESSION: MagicNumberCheck
|
||||||
button.setX(50);
|
button.setX(50);
|
||||||
button.setY(50);
|
button.setY(50);
|
||||||
@ -63,3 +63,4 @@ public class SpoutCommand extends MultiverseCommand {
|
|||||||
p.getMainScreen().attachPopupScreen(pop);
|
p.getMainScreen().attachPopupScreen(pop);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
@ -50,12 +50,8 @@ public class TeleportCommand extends MultiverseCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void runCommand(CommandSender sender, List<String> args) {
|
public void runCommand(CommandSender sender, List<String> args) {
|
||||||
// Check if the command was sent from a Player.
|
|
||||||
CommandSender teleporter = sender;
|
CommandSender teleporter = sender;
|
||||||
Player teleportee = null;
|
Player teleportee = null;
|
||||||
if (sender instanceof Player) {
|
|
||||||
teleporter = (Player) sender;
|
|
||||||
}
|
|
||||||
|
|
||||||
String destinationName;
|
String destinationName;
|
||||||
|
|
||||||
|
@ -9,10 +9,13 @@ package com.onarandombox.MultiverseCore.commands;
|
|||||||
|
|
||||||
import com.onarandombox.MultiverseCore.MultiverseCore;
|
import com.onarandombox.MultiverseCore.MultiverseCore;
|
||||||
import com.onarandombox.MultiverseCore.event.MVVersionEvent;
|
import com.onarandombox.MultiverseCore.event.MVVersionEvent;
|
||||||
|
import com.onarandombox.MultiverseCore.utils.webpaste.BitlyURLShortener;
|
||||||
import com.onarandombox.MultiverseCore.utils.webpaste.PasteFailedException;
|
import com.onarandombox.MultiverseCore.utils.webpaste.PasteFailedException;
|
||||||
import com.onarandombox.MultiverseCore.utils.webpaste.PasteService;
|
import com.onarandombox.MultiverseCore.utils.webpaste.PasteService;
|
||||||
import com.onarandombox.MultiverseCore.utils.webpaste.PasteServiceFactory;
|
import com.onarandombox.MultiverseCore.utils.webpaste.PasteServiceFactory;
|
||||||
import com.onarandombox.MultiverseCore.utils.webpaste.PasteServiceType;
|
import com.onarandombox.MultiverseCore.utils.webpaste.PasteServiceType;
|
||||||
|
import com.onarandombox.MultiverseCore.utils.webpaste.URLShortener;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -25,6 +28,7 @@ import java.util.logging.Level;
|
|||||||
* Dumps version info to the console.
|
* Dumps version info to the console.
|
||||||
*/
|
*/
|
||||||
public class VersionCommand extends MultiverseCommand {
|
public class VersionCommand extends MultiverseCommand {
|
||||||
|
private static final URLShortener SHORTENER = new BitlyURLShortener();
|
||||||
|
|
||||||
public VersionCommand(MultiverseCore plugin) {
|
public VersionCommand(MultiverseCore plugin) {
|
||||||
super(plugin);
|
super(plugin);
|
||||||
@ -39,7 +43,7 @@ public class VersionCommand extends MultiverseCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void runCommand(CommandSender sender, List<String> args) {
|
public void runCommand(final CommandSender sender, final List<String> args) {
|
||||||
// Check if the command was sent from a Player.
|
// Check if the command was sent from a Player.
|
||||||
if (sender instanceof Player) {
|
if (sender instanceof Player) {
|
||||||
sender.sendMessage("Version info dumped to console. Please check your server logs.");
|
sender.sendMessage("Version info dumped to console. Please check your server logs.");
|
||||||
@ -69,25 +73,30 @@ public class VersionCommand extends MultiverseCommand {
|
|||||||
this.plugin.getServer().getPluginManager().callEvent(versionEvent);
|
this.plugin.getServer().getPluginManager().callEvent(versionEvent);
|
||||||
|
|
||||||
// log to console
|
// log to console
|
||||||
String data = versionEvent.getVersionInfo();
|
final String data = versionEvent.getVersionInfo();
|
||||||
String[] lines = data.split("\n");
|
String[] lines = data.split("\n");
|
||||||
for (String line : lines) {
|
for (String line : lines) {
|
||||||
this.plugin.log(Level.INFO, line);
|
this.plugin.log(Level.INFO, line);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.size() == 1) {
|
this.plugin.getServer().getScheduler().scheduleAsyncDelayedTask(this.plugin, new Runnable() {
|
||||||
String pasteUrl = "";
|
@Override
|
||||||
if (args.get(0).equalsIgnoreCase("-p")) {
|
public void run() {
|
||||||
pasteUrl = postToService(PasteServiceType.PASTIE, true, data); // private post to pastie
|
if (args.size() == 1) {
|
||||||
} else if (args.get(0).equalsIgnoreCase("-b")) {
|
String pasteUrl;
|
||||||
pasteUrl = postToService(PasteServiceType.PASTEBIN, true, data); // private post to pastie
|
if (args.get(0).equalsIgnoreCase("-p")) {
|
||||||
} else {
|
pasteUrl = postToService(PasteServiceType.PASTIE, true, data); // private post to pastie
|
||||||
return;
|
} else if (args.get(0).equalsIgnoreCase("-b")) {
|
||||||
}
|
pasteUrl = postToService(PasteServiceType.PASTEBIN, true, data); // private post to pastie
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
sender.sendMessage("Version info dumped here: " + ChatColor.GREEN + pasteUrl);
|
sender.sendMessage("Version info dumped here: " + ChatColor.GREEN + pasteUrl);
|
||||||
this.plugin.log(Level.INFO, "Version info dumped here: " + pasteUrl);
|
plugin.log(Level.INFO, "Version info dumped here: " + pasteUrl);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -100,7 +109,7 @@ public class VersionCommand extends MultiverseCommand {
|
|||||||
private static String postToService(PasteServiceType type, boolean isPrivate, String pasteData) {
|
private static String postToService(PasteServiceType type, boolean isPrivate, String pasteData) {
|
||||||
PasteService ps = PasteServiceFactory.getService(type, isPrivate);
|
PasteService ps = PasteServiceFactory.getService(type, isPrivate);
|
||||||
try {
|
try {
|
||||||
return ps.postData(ps.encodeData(pasteData), ps.getPostURL());
|
return SHORTENER.shorten(ps.postData(ps.encodeData(pasteData), ps.getPostURL()));
|
||||||
} catch (PasteFailedException e) {
|
} catch (PasteFailedException e) {
|
||||||
System.out.print(e);
|
System.out.print(e);
|
||||||
return "Error posting to service";
|
return "Error posting to service";
|
||||||
|
@ -90,7 +90,7 @@ public class WhoCommand extends MultiverseCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String buildPlayerString(MultiverseWorld world) {
|
private static String buildPlayerString(MultiverseWorld world) {
|
||||||
List<Player> players = world.getCBWorld().getPlayers();
|
List<Player> players = world.getCBWorld().getPlayers();
|
||||||
if (players.size() == 0) {
|
if (players.size() == 0) {
|
||||||
return "No players found.";
|
return "No players found.";
|
||||||
|
@ -1,115 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link String} config-property that will NOT be saved to the config.
|
|
||||||
*/
|
|
||||||
public class ActiveStringConfigProperty implements MVActiveConfigProperty<String> {
|
|
||||||
private String name;
|
|
||||||
private String value;
|
|
||||||
private String method;
|
|
||||||
private String help;
|
|
||||||
|
|
||||||
public ActiveStringConfigProperty(String name, String defaultValue, String help) {
|
|
||||||
this.name = name;
|
|
||||||
this.help = help;
|
|
||||||
this.value = defaultValue;
|
|
||||||
this.parseValue(defaultValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ActiveStringConfigProperty(String name, String defaultValue, String help, String method) {
|
|
||||||
this(name, defaultValue, help);
|
|
||||||
this.method = method;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getValue() {
|
|
||||||
return this.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getMethod() {
|
|
||||||
return this.method;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void setMethod(String methodName) {
|
|
||||||
this.method = methodName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Class<?> getPropertyClass() {
|
|
||||||
return String.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean parseValue(String value) {
|
|
||||||
if (value == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.setValue(value);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getConfigNode() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getHelp() {
|
|
||||||
return this.help;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean setValue(String value) {
|
|
||||||
if (value == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.value = value;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,135 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
* Multiverse 2 Copyright (c) the Multiverse Team 2011. *
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link Boolean} config-property.
|
|
||||||
*/
|
|
||||||
public class BooleanConfigProperty implements MVActiveConfigProperty<Boolean> {
|
|
||||||
private String name;
|
|
||||||
private Boolean value;
|
|
||||||
private String configNode;
|
|
||||||
private ConfigurationSection section;
|
|
||||||
private String help;
|
|
||||||
private String method;
|
|
||||||
|
|
||||||
public BooleanConfigProperty(ConfigurationSection section, String name, Boolean defaultValue, String help) {
|
|
||||||
this(section, name, defaultValue, name, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
public BooleanConfigProperty(ConfigurationSection section, String name, Boolean defaultValue, String configNode, String help) {
|
|
||||||
this.name = name;
|
|
||||||
this.configNode = configNode;
|
|
||||||
this.section = section;
|
|
||||||
this.help = help;
|
|
||||||
this.value = 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}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Boolean getValue() {
|
|
||||||
return this.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean setValue(Boolean value) {
|
|
||||||
if (value == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.value = value;
|
|
||||||
this.section.set(configNode, this.value);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean parseValue(String value) {
|
|
||||||
if (value == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (value.toLowerCase().equals("true") || value.toLowerCase().equals("false")) {
|
|
||||||
this.setValue(Boolean.parseBoolean(value));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getConfigNode() {
|
|
||||||
return this.configNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getHelp() {
|
|
||||||
return this.help;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String 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,98 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
* Multiverse 2 Copyright (c) the Multiverse Team 2011. *
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
import com.onarandombox.MultiverseCore.enums.EnglishChatColor;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link EnglishChatColor} config-property.
|
|
||||||
*/
|
|
||||||
public class ColorConfigProperty implements MVConfigProperty<EnglishChatColor> {
|
|
||||||
private String name;
|
|
||||||
private EnglishChatColor value;
|
|
||||||
private String configNode;
|
|
||||||
private ConfigurationSection section;
|
|
||||||
private String help;
|
|
||||||
|
|
||||||
public ColorConfigProperty(ConfigurationSection section, String name, EnglishChatColor defaultValue, String help) {
|
|
||||||
this(section, name, defaultValue, name, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ColorConfigProperty(ConfigurationSection section, String name, EnglishChatColor defaultValue, String configNode, String help) {
|
|
||||||
this.name = name;
|
|
||||||
this.configNode = configNode;
|
|
||||||
this.section = section;
|
|
||||||
this.help = help;
|
|
||||||
this.value = defaultValue;
|
|
||||||
this.parseValue(this.section.getString(this.configNode, defaultValue.toString()));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public EnglishChatColor getValue() {
|
|
||||||
return this.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean setValue(EnglishChatColor value) {
|
|
||||||
if (value == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.value = value;
|
|
||||||
this.section.set(configNode, this.value.getText());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean parseValue(String value) {
|
|
||||||
EnglishChatColor color = EnglishChatColor.fromString(value);
|
|
||||||
if (color == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.setValue(color);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getConfigNode() {
|
|
||||||
return this.configNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getHelp() {
|
|
||||||
return this.help;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return value.toString();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,306 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
import com.onarandombox.MultiverseCore.enums.AllowedPortalType;
|
|
||||||
import com.onarandombox.MultiverseCore.enums.EnglishChatColor;
|
|
||||||
import org.bukkit.Difficulty;
|
|
||||||
import org.bukkit.GameMode;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
|
|
||||||
/** A factory to create config properties for a given world. */
|
|
||||||
public class ConfigPropertyFactory {
|
|
||||||
private ConfigurationSection section;
|
|
||||||
|
|
||||||
public ConfigPropertyFactory(ConfigurationSection section) {
|
|
||||||
this.section = section;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Booleans
|
|
||||||
/**
|
|
||||||
* Constructs a new ConfigProperty.
|
|
||||||
*
|
|
||||||
* @param name The name of this ConfigProperty.
|
|
||||||
* @param defaultValue The default-value.
|
|
||||||
* @param help The text that's displayed when a user failed to set the property.
|
|
||||||
* @return The ConfigProperty.
|
|
||||||
*/
|
|
||||||
public BooleanConfigProperty getNewProperty(String name, boolean defaultValue, String help) {
|
|
||||||
return new BooleanConfigProperty(this.section, name, defaultValue, 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 BooleanConfigProperty getNewProperty(String name, boolean defaultValue, String node, String 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 The name of the configuration-node this ConfigProperty will be stored as.
|
|
||||||
* @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
|
|
||||||
/**
|
|
||||||
* Constructs a new ConfigProperty.
|
|
||||||
*
|
|
||||||
* @param name The name of this ConfigProperty.
|
|
||||||
* @param defaultValue The default-value.
|
|
||||||
* @param help The text that's displayed when a user failed to set the property.
|
|
||||||
* @return The ConfigProperty.
|
|
||||||
*/
|
|
||||||
public IntegerConfigProperty getNewProperty(String name, int defaultValue, String help) {
|
|
||||||
return new IntegerConfigProperty(this.section, name, defaultValue, 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 IntegerConfigProperty getNewProperty(String name, int defaultValue, String node, String help) {
|
|
||||||
return new IntegerConfigProperty(this.section, name, defaultValue, node, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Doubles
|
|
||||||
/**
|
|
||||||
* Constructs a new ConfigProperty.
|
|
||||||
*
|
|
||||||
* @param name The name of this ConfigProperty.
|
|
||||||
* @param defaultValue The default-value.
|
|
||||||
* @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 help) {
|
|
||||||
return new DoubleConfigProperty(this.section, name, defaultValue, 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) {
|
|
||||||
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.
|
|
||||||
* @param method The name of the method that's used to set this 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
|
|
||||||
/**
|
|
||||||
* Constructs a new ConfigProperty.
|
|
||||||
*
|
|
||||||
* @param name The name of this ConfigProperty.
|
|
||||||
* @param defaultValue The default-value.
|
|
||||||
* @param help The text that's displayed when a user failed to set the property.
|
|
||||||
* @return The ConfigProperty.
|
|
||||||
*/
|
|
||||||
public StringConfigProperty getNewProperty(String name, String defaultValue, String help) {
|
|
||||||
return new StringConfigProperty(this.section, name, defaultValue, 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 StringConfigProperty getNewProperty(String name, String defaultValue, String node, String help) {
|
|
||||||
return new StringConfigProperty(this.section, name, defaultValue, node, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Colors
|
|
||||||
/**
|
|
||||||
* Constructs a new ConfigProperty.
|
|
||||||
*
|
|
||||||
* @param name The name of this ConfigProperty.
|
|
||||||
* @param defaultValue The default-value.
|
|
||||||
* @param help The text that's displayed when a user failed to set the property.
|
|
||||||
* @return The ConfigProperty.
|
|
||||||
*/
|
|
||||||
public ColorConfigProperty getNewProperty(String name, EnglishChatColor defaultValue, String help) {
|
|
||||||
return new ColorConfigProperty(this.section, name, defaultValue, 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 ColorConfigProperty getNewProperty(String name, EnglishChatColor defaultValue, String node, String help) {
|
|
||||||
return new ColorConfigProperty(this.section, name, defaultValue, node, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Difficulty
|
|
||||||
/**
|
|
||||||
* Constructs a new ConfigProperty.
|
|
||||||
*
|
|
||||||
* @param name The name of this ConfigProperty.
|
|
||||||
* @param defaultValue The default-value.
|
|
||||||
* @param help The text that's displayed when a user failed to set the property.
|
|
||||||
* @return The ConfigProperty.
|
|
||||||
*/
|
|
||||||
public DifficultyConfigProperty getNewProperty(String name, Difficulty defaultValue, String help) {
|
|
||||||
return new DifficultyConfigProperty(this.section, name, defaultValue, 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 DifficultyConfigProperty getNewProperty(String name, Difficulty defaultValue, String node, String help) {
|
|
||||||
return new DifficultyConfigProperty(this.section, name, defaultValue, node, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
// GameMode
|
|
||||||
/**
|
|
||||||
* Constructs a new ConfigProperty.
|
|
||||||
*
|
|
||||||
* @param name The name of this ConfigProperty.
|
|
||||||
* @param defaultValue The default-value.
|
|
||||||
* @param help The text that's displayed when a user failed to set the property.
|
|
||||||
* @return The ConfigProperty.
|
|
||||||
*/
|
|
||||||
public GameModeConfigProperty getNewProperty(String name, GameMode defaultValue, String help) {
|
|
||||||
return new GameModeConfigProperty(this.section, name, defaultValue, 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 GameModeConfigProperty getNewProperty(String name, GameMode defaultValue, String node, String help) {
|
|
||||||
return new GameModeConfigProperty(this.section, name, defaultValue, node, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Location
|
|
||||||
/**
|
|
||||||
* Constructs a new LocationConfigProperty.
|
|
||||||
*
|
|
||||||
* @param name The name of this ConfigProperty.
|
|
||||||
* @param defaultValue The default-value.
|
|
||||||
* @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 help) {
|
|
||||||
return new LocationConfigProperty(this.section, name, defaultValue, 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 LocationConfigProperty getNewProperty(String name, Location defaultValue, String node, String help) {
|
|
||||||
return new LocationConfigProperty(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.
|
|
||||||
* @param method The name of the method that's used to set this 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);
|
|
||||||
}
|
|
||||||
|
|
||||||
// GameMode
|
|
||||||
/**
|
|
||||||
* Constructs a new ConfigProperty.
|
|
||||||
*
|
|
||||||
* @param name The name of this ConfigProperty.
|
|
||||||
* @param defaultValue The default-value.
|
|
||||||
* @param help The text that's displayed when a user failed to set the property.
|
|
||||||
* @return The ConfigProperty.
|
|
||||||
*/
|
|
||||||
public PortalTypeConfigProperty getNewProperty(String name, AllowedPortalType defaultValue, String help) {
|
|
||||||
return new PortalTypeConfigProperty(this.section, name, defaultValue, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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 defaultValue The default value.
|
|
||||||
* @param help What string is shown for help.
|
|
||||||
* @param method The method that should be executed.
|
|
||||||
* @param saveToConfig Should the variable save to the config?
|
|
||||||
* @return The ActiveStringConfigProperty
|
|
||||||
*/
|
|
||||||
public ActiveStringConfigProperty getNewProperty(String name, String defaultValue, String help, String method, boolean saveToConfig) {
|
|
||||||
return new ActiveStringConfigProperty(name, defaultValue, help, method);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,129 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
* Multiverse 2 Copyright (c) the Multiverse Team 2011. *
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
import org.bukkit.Difficulty;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link Difficulty} config-property.
|
|
||||||
*/
|
|
||||||
public class DifficultyConfigProperty implements MVActiveConfigProperty<Difficulty> {
|
|
||||||
private String name;
|
|
||||||
private Difficulty value;
|
|
||||||
private String configNode;
|
|
||||||
private ConfigurationSection section;
|
|
||||||
private String help;
|
|
||||||
|
|
||||||
public DifficultyConfigProperty(ConfigurationSection section, String name, Difficulty defaultValue, String help) {
|
|
||||||
this(section, name, defaultValue, name, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DifficultyConfigProperty(ConfigurationSection section, String name, Difficulty defaultValue, String configNode, String help) {
|
|
||||||
this.name = name;
|
|
||||||
this.configNode = configNode;
|
|
||||||
this.section = section;
|
|
||||||
this.help = help;
|
|
||||||
this.value = defaultValue;
|
|
||||||
this.parseValue(this.section.getString(this.configNode, defaultValue.toString()));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Difficulty getValue() {
|
|
||||||
return this.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean setValue(Difficulty value) {
|
|
||||||
if (value == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.value = value;
|
|
||||||
this.section.set(configNode, this.value.toString());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean parseValue(String value) {
|
|
||||||
try {
|
|
||||||
return this.setValue(Difficulty.getByValue(Integer.parseInt(value)));
|
|
||||||
} catch (NumberFormatException nfe) {
|
|
||||||
try {
|
|
||||||
return this.setValue(Difficulty.valueOf(value.toUpperCase()));
|
|
||||||
} catch (Exception e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getConfigNode() {
|
|
||||||
return this.configNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getHelp() {
|
|
||||||
return this.help;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String 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 "setActualDifficulty";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,133 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
* Multiverse 2 Copyright (c) the Multiverse Team 2011. *
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link Double} config-property.
|
|
||||||
*/
|
|
||||||
public class DoubleConfigProperty implements MVActiveConfigProperty<Double> {
|
|
||||||
private String name;
|
|
||||||
private Double value;
|
|
||||||
private String configNode;
|
|
||||||
private ConfigurationSection section;
|
|
||||||
private String help;
|
|
||||||
private String method;
|
|
||||||
|
|
||||||
public DoubleConfigProperty(ConfigurationSection section, String name, Double defaultValue, String help) {
|
|
||||||
this(section, name, defaultValue, name, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DoubleConfigProperty(ConfigurationSection section, String name, Double defaultValue, String configNode, String help) {
|
|
||||||
this.name = name;
|
|
||||||
this.configNode = configNode;
|
|
||||||
this.section = section;
|
|
||||||
this.help = help;
|
|
||||||
this.value = 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}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Double getValue() {
|
|
||||||
return this.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean setValue(Double value) {
|
|
||||||
if (value == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.value = value;
|
|
||||||
this.section.set(configNode, this.value);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean parseValue(String value) {
|
|
||||||
try {
|
|
||||||
this.setValue(Double.parseDouble(value));
|
|
||||||
return true;
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getConfigNode() {
|
|
||||||
return this.configNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getHelp() {
|
|
||||||
return this.help;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String 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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,66 @@
|
|||||||
|
package com.onarandombox.MultiverseCore.configuration;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import me.main__.util.SerializationConfig.Property;
|
||||||
|
import me.main__.util.SerializationConfig.SerializationConfig;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.serialization.SerializableAs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Entryfee-settings.
|
||||||
|
*/
|
||||||
|
@SerializableAs("MVEntryFee")
|
||||||
|
public class EntryFee extends SerializationConfig {
|
||||||
|
@Property
|
||||||
|
private double amount;
|
||||||
|
@Property
|
||||||
|
private int currency;
|
||||||
|
|
||||||
|
public EntryFee() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntryFee(Map<String, Object> values) {
|
||||||
|
super(values);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void setDefaults() {
|
||||||
|
amount = 0D;
|
||||||
|
currency = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the amount
|
||||||
|
*/
|
||||||
|
public double getAmount() {
|
||||||
|
return amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the currency
|
||||||
|
*/
|
||||||
|
public int getCurrency() {
|
||||||
|
return currency;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the amount.
|
||||||
|
* @param amount The new value.
|
||||||
|
*/
|
||||||
|
public void setAmount(double amount) {
|
||||||
|
this.amount = amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the currency.
|
||||||
|
* @param currency The new value.
|
||||||
|
*/
|
||||||
|
public void setCurrency(int currency) {
|
||||||
|
this.currency = currency;
|
||||||
|
}
|
||||||
|
}
|
@ -1,129 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
* Multiverse 2 Copyright (c) the Multiverse Team 2011. *
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
import org.bukkit.GameMode;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link GameMode} config-property.
|
|
||||||
*/
|
|
||||||
public class GameModeConfigProperty implements MVActiveConfigProperty<GameMode> {
|
|
||||||
private String name;
|
|
||||||
private GameMode value;
|
|
||||||
private String configNode;
|
|
||||||
private ConfigurationSection section;
|
|
||||||
private String help;
|
|
||||||
|
|
||||||
public GameModeConfigProperty(ConfigurationSection section, String name, GameMode defaultValue, String help) {
|
|
||||||
this(section, name, defaultValue, name, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
public GameModeConfigProperty(ConfigurationSection section, String name, GameMode defaultValue, String configNode, String help) {
|
|
||||||
this.name = name;
|
|
||||||
this.configNode = configNode;
|
|
||||||
this.section = section;
|
|
||||||
this.help = help;
|
|
||||||
this.value = defaultValue;
|
|
||||||
this.parseValue(this.section.getString(this.configNode, defaultValue.toString()));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public GameMode getValue() {
|
|
||||||
return this.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean setValue(GameMode value) {
|
|
||||||
if (value == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.value = value;
|
|
||||||
this.section.set(configNode, this.value.toString());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean parseValue(String value) {
|
|
||||||
try {
|
|
||||||
return this.setValue(GameMode.getByValue(Integer.parseInt(value)));
|
|
||||||
} catch (NumberFormatException nfe) {
|
|
||||||
try {
|
|
||||||
return this.setValue(GameMode.valueOf(value.toUpperCase()));
|
|
||||||
} catch (Exception e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getConfigNode() {
|
|
||||||
return this.configNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getHelp() {
|
|
||||||
return this.help;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String 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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,97 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
* Multiverse 2 Copyright (c) the Multiverse Team 2011. *
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link Integer} config-property.
|
|
||||||
*/
|
|
||||||
public class IntegerConfigProperty implements MVConfigProperty<Integer> {
|
|
||||||
private String name;
|
|
||||||
private Integer value;
|
|
||||||
private String configNode;
|
|
||||||
private ConfigurationSection section;
|
|
||||||
private String help;
|
|
||||||
|
|
||||||
public IntegerConfigProperty(ConfigurationSection section, String name, Integer defaultValue, String help) {
|
|
||||||
this(section, name, defaultValue, name, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
public IntegerConfigProperty(ConfigurationSection section, String name, Integer defaultValue, String configNode, String help) {
|
|
||||||
this.name = name;
|
|
||||||
this.configNode = configNode;
|
|
||||||
this.section = section;
|
|
||||||
this.help = help;
|
|
||||||
this.value = defaultValue;
|
|
||||||
this.setValue(this.section.getInt(this.configNode, defaultValue));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Integer getValue() {
|
|
||||||
return this.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean setValue(Integer value) {
|
|
||||||
if (value == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.value = value;
|
|
||||||
this.section.set(configNode, this.value);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean parseValue(String value) {
|
|
||||||
try {
|
|
||||||
this.setValue(Integer.parseInt(value));
|
|
||||||
return true;
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getConfigNode() {
|
|
||||||
return this.configNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getHelp() {
|
|
||||||
return this.help;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return value.toString();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,154 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
* Multiverse 2 Copyright (c) the Multiverse Team 2011. *
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
import com.onarandombox.MultiverseCore.utils.LocationManipulation;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link Location} config-property.
|
|
||||||
*/
|
|
||||||
public class LocationConfigProperty implements MVActiveConfigProperty<Location> {
|
|
||||||
private String name;
|
|
||||||
private Location value;
|
|
||||||
private String configNode;
|
|
||||||
private ConfigurationSection section;
|
|
||||||
private String help;
|
|
||||||
private String method;
|
|
||||||
|
|
||||||
public LocationConfigProperty(ConfigurationSection section, String name, Location defaultValue, String help) {
|
|
||||||
this(section, name, defaultValue, name, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocationConfigProperty(ConfigurationSection section, String name, Location defaultValue, String configNode, String help) {
|
|
||||||
this.name = name;
|
|
||||||
this.configNode = configNode;
|
|
||||||
this.section = section;
|
|
||||||
this.help = help;
|
|
||||||
this.value = 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}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Location getValue() {
|
|
||||||
return this.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean parseValue(String value) {
|
|
||||||
// TODO: oh my god, what should we do here?
|
|
||||||
Location parsed = LocationManipulation.stringToLocation(value);
|
|
||||||
return this.setValue(parsed);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getConfigNode() {
|
|
||||||
return this.configNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getHelp() {
|
|
||||||
return this.help;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean setValue(Location value) {
|
|
||||||
if (value == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.value = value;
|
|
||||||
this.section.set(configNode + ".x", this.value.getX());
|
|
||||||
this.section.set(configNode + ".y", this.value.getY());
|
|
||||||
this.section.set(configNode + ".z", this.value.getZ());
|
|
||||||
this.section.set(configNode + ".pitch", this.value.getPitch());
|
|
||||||
this.section.set(configNode + ".yaw", this.value.getYaw());
|
|
||||||
this.section.set(configNode + ".world", this.value.getWorld().getName());
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Location getLocationFromConfig(Location defaultValue) {
|
|
||||||
double x = this.section.getDouble(this.configNode + ".x", defaultValue.getX());
|
|
||||||
double y = this.section.getDouble(this.configNode + ".y", defaultValue.getY());
|
|
||||||
double z = this.section.getDouble(this.configNode + ".z", defaultValue.getZ());
|
|
||||||
double pitch = this.section.getDouble(this.configNode + ".pitch", defaultValue.getPitch());
|
|
||||||
double yaw = this.section.getDouble(this.configNode + ".yaw", defaultValue.getYaw());
|
|
||||||
String w = this.section.getString(this.configNode + ".world", defaultValue.getWorld().getName());
|
|
||||||
Location found = LocationManipulation.stringToLocation(w + ":" + x + "," + y + "," + z + ":" + yaw + ":" + pitch);
|
|
||||||
// TODO: oh my god, what should we do here?
|
|
||||||
if (found != null) {
|
|
||||||
return found;
|
|
||||||
}
|
|
||||||
return defaultValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
// TODO: oh my god, what should we do here?
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -10,8 +10,10 @@ package com.onarandombox.MultiverseCore.configuration;
|
|||||||
/**
|
/**
|
||||||
* An "active" {@link MVConfigProperty} that uses the specified method to be "actually" set.
|
* An "active" {@link MVConfigProperty} that uses the specified method to be "actually" set.
|
||||||
* @param <T> The type of the config-property.
|
* @param <T> The type of the config-property.
|
||||||
|
* @deprecated This is deprecated.
|
||||||
* @see MVConfigProperty
|
* @see MVConfigProperty
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public interface MVActiveConfigProperty<T> extends MVConfigProperty<T> {
|
public interface MVActiveConfigProperty<T> extends MVConfigProperty<T> {
|
||||||
/**
|
/**
|
||||||
* Gets the method that will be executed.
|
* Gets the method that will be executed.
|
||||||
|
@ -11,7 +11,9 @@ package com.onarandombox.MultiverseCore.configuration;
|
|||||||
* A generic config-property.
|
* A generic config-property.
|
||||||
*
|
*
|
||||||
* @param <T> The type of the config-property.
|
* @param <T> The type of the config-property.
|
||||||
|
* @deprecated This is deprecated.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public interface MVConfigProperty<T> {
|
public interface MVConfigProperty<T> {
|
||||||
/**
|
/**
|
||||||
* Gets the name of this property.
|
* Gets the name of this property.
|
||||||
|
@ -1,97 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
import com.onarandombox.MultiverseCore.enums.AllowedPortalType;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link AllowedPortalType} config-property.
|
|
||||||
*/
|
|
||||||
public class PortalTypeConfigProperty implements MVConfigProperty<AllowedPortalType> {
|
|
||||||
private String name;
|
|
||||||
private AllowedPortalType value;
|
|
||||||
private String configNode;
|
|
||||||
private ConfigurationSection section;
|
|
||||||
private String help;
|
|
||||||
|
|
||||||
public PortalTypeConfigProperty(ConfigurationSection section, String name, AllowedPortalType defaultValue, String help) {
|
|
||||||
this(section, name, defaultValue, name, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PortalTypeConfigProperty(ConfigurationSection section, String name, AllowedPortalType defaultValue, String configNode, String help) {
|
|
||||||
this.name = name;
|
|
||||||
this.configNode = configNode;
|
|
||||||
this.section = section;
|
|
||||||
this.help = help;
|
|
||||||
this.value = defaultValue;
|
|
||||||
this.parseValue(this.section.getString(this.configNode, defaultValue.toString()));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public AllowedPortalType getValue() {
|
|
||||||
return this.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean setValue(AllowedPortalType value) {
|
|
||||||
if (value == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.value = value;
|
|
||||||
this.section.set(configNode, this.value.toString());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean parseValue(String value) {
|
|
||||||
try {
|
|
||||||
return this.setValue(AllowedPortalType.valueOf(value.toUpperCase()));
|
|
||||||
} catch (Exception e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getConfigNode() {
|
|
||||||
return this.configNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getHelp() {
|
|
||||||
return this.help;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return value.toString();
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,98 @@
|
|||||||
|
package com.onarandombox.MultiverseCore.configuration;
|
||||||
|
|
||||||
|
import java.lang.ref.Reference;
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.bukkit.Chunk;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||||
|
import org.bukkit.configuration.serialization.SerializableAs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Just like a regular {@link Location}, however {@code world} is usually {@code null}
|
||||||
|
* or just a weak reference and it implements {@link ConfigurationSerializable}.
|
||||||
|
*/
|
||||||
|
@SerializableAs("MVSpawnLocation")
|
||||||
|
public class SpawnLocation extends Location implements ConfigurationSerializable {
|
||||||
|
private Reference<World> worldRef;
|
||||||
|
|
||||||
|
public SpawnLocation(double x, double y, double z) {
|
||||||
|
super(null, x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SpawnLocation(double x, double y, double z, float yaw, float pitch) {
|
||||||
|
super(null, x, y, z, yaw, pitch);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SpawnLocation(Location loc) {
|
||||||
|
this(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public World getWorld() {
|
||||||
|
return (this.worldRef != null) ? this.worldRef.get() : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setWorld(World world) {
|
||||||
|
this.worldRef = new WeakReference<World>(world);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Chunk getChunk() {
|
||||||
|
if ((this.worldRef != null) && (this.worldRef.get() != null))
|
||||||
|
return this.worldRef.get().getChunkAt(this);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Block getBlock() {
|
||||||
|
if ((this.worldRef != null) && (this.worldRef.get() != null))
|
||||||
|
return this.worldRef.get().getBlockAt(this);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> serialize() {
|
||||||
|
Map<String, Object> serialized = new HashMap<String, Object>(5); // SUPPRESS CHECKSTYLE: MagicNumberCheck
|
||||||
|
serialized.put("x", this.getX());
|
||||||
|
serialized.put("y", this.getY());
|
||||||
|
serialized.put("z", this.getZ());
|
||||||
|
serialized.put("pitch", this.getPitch());
|
||||||
|
serialized.put("yaw", this.getYaw());
|
||||||
|
return serialized;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Let Bukkit be able to deserialize this.
|
||||||
|
* @param args The map.
|
||||||
|
* @return The deserialized object.
|
||||||
|
*/
|
||||||
|
public static SpawnLocation deserialize(Map<String, Object> args) {
|
||||||
|
double x = ((Number) args.get("x")).doubleValue();
|
||||||
|
double y = ((Number) args.get("y")).doubleValue();
|
||||||
|
double z = ((Number) args.get("z")).doubleValue();
|
||||||
|
float pitch = ((Number) args.get("pitch")).floatValue();
|
||||||
|
float yaw = ((Number) args.get("yaw")).floatValue();
|
||||||
|
return new SpawnLocation(x, y, z, yaw, pitch);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,50 @@
|
|||||||
|
package com.onarandombox.MultiverseCore.configuration;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import me.main__.util.SerializationConfig.Property;
|
||||||
|
import me.main__.util.SerializationConfig.SerializationConfig;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.serialization.SerializableAs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Spawning-Settings.
|
||||||
|
*/
|
||||||
|
@SerializableAs("MVSpawnSettings")
|
||||||
|
public class SpawnSettings extends SerializationConfig {
|
||||||
|
@Property
|
||||||
|
private SubSpawnSettings animals;
|
||||||
|
@Property
|
||||||
|
private SubSpawnSettings monsters;
|
||||||
|
|
||||||
|
public SpawnSettings() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public SpawnSettings(Map<String, Object> values) {
|
||||||
|
super(values);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setDefaults() {
|
||||||
|
animals = new SubSpawnSettings();
|
||||||
|
monsters = new SubSpawnSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the animal-settings
|
||||||
|
*/
|
||||||
|
public SubSpawnSettings getAnimalSettings() {
|
||||||
|
return animals;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the monster-settings
|
||||||
|
*/
|
||||||
|
public SubSpawnSettings getMonsterSettings() {
|
||||||
|
return monsters;
|
||||||
|
}
|
||||||
|
}
|
@ -1,96 +0,0 @@
|
|||||||
/******************************************************************************
|
|
||||||
* Multiverse 2 Copyright (c) the Multiverse Team 2011. *
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link String} config-property.
|
|
||||||
*/
|
|
||||||
public class StringConfigProperty implements MVConfigProperty<String> {
|
|
||||||
private String name;
|
|
||||||
private String value;
|
|
||||||
private String configNode;
|
|
||||||
private ConfigurationSection section;
|
|
||||||
private String help;
|
|
||||||
|
|
||||||
public StringConfigProperty(ConfigurationSection section, String name, String defaultValue, String help) {
|
|
||||||
this(section, name, defaultValue, defaultValue, help);
|
|
||||||
}
|
|
||||||
|
|
||||||
public StringConfigProperty(ConfigurationSection section, String name, String defaultValue, String configNode, String help) {
|
|
||||||
this.name = name;
|
|
||||||
this.configNode = configNode;
|
|
||||||
this.section = section;
|
|
||||||
this.help = help;
|
|
||||||
this.value = defaultValue;
|
|
||||||
this.parseValue(this.section.getString(this.configNode, defaultValue));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getValue() {
|
|
||||||
return this.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean parseValue(String value) {
|
|
||||||
if (value == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.setValue(value);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getConfigNode() {
|
|
||||||
return this.configNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String getHelp() {
|
|
||||||
return this.help;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean setValue(String value) {
|
|
||||||
if (value == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.value = value;
|
|
||||||
this.section.set(configNode, this.value);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,59 @@
|
|||||||
|
package com.onarandombox.MultiverseCore.configuration;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import me.main__.util.SerializationConfig.Property;
|
||||||
|
import me.main__.util.SerializationConfig.SerializationConfig;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.serialization.SerializableAs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SpawnSubSettings.
|
||||||
|
*/
|
||||||
|
@SerializableAs("MVSpawnSubSettings")
|
||||||
|
public class SubSpawnSettings extends SerializationConfig {
|
||||||
|
@Property
|
||||||
|
private boolean spawn;
|
||||||
|
@Property
|
||||||
|
private List<String> exceptions;
|
||||||
|
|
||||||
|
public SubSpawnSettings() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public SubSpawnSettings(Map<String, Object> values) {
|
||||||
|
super(values);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setDefaults() {
|
||||||
|
spawn = true;
|
||||||
|
exceptions = new ArrayList<String>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return spawn
|
||||||
|
*/
|
||||||
|
public boolean doSpawn() {
|
||||||
|
return spawn;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param spawn The new value.
|
||||||
|
*/
|
||||||
|
public void setSpawn(boolean spawn) {
|
||||||
|
this.spawn = spawn;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the exceptions
|
||||||
|
*/
|
||||||
|
public List<String> getExceptions() {
|
||||||
|
return exceptions;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package com.onarandombox.MultiverseCore.configuration;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
import com.onarandombox.MultiverseCore.MVWorld;
|
||||||
|
import com.onarandombox.MultiverseCore.event.MVWorldPropertyChangeEvent;
|
||||||
|
|
||||||
|
import me.main__.util.SerializationConfig.ChangeDeniedException;
|
||||||
|
import me.main__.util.SerializationConfig.ObjectUsingValidator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validates world-property-changes.
|
||||||
|
* @param <T> The type of the property that should be validated.
|
||||||
|
*/
|
||||||
|
public class WorldPropertyValidator<T> extends ObjectUsingValidator<T, MVWorld> {
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public T validateChange(String property, T newValue, T oldValue, MVWorld object) throws ChangeDeniedException {
|
||||||
|
MVWorldPropertyChangeEvent<T> event = new MVWorldPropertyChangeEvent<T>(object, null, property, newValue);
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
if (event.isCancelled())
|
||||||
|
throw new ChangeDeniedException();
|
||||||
|
return event.getTheNewValue();
|
||||||
|
}
|
||||||
|
}
|
@ -54,7 +54,7 @@ public class DestinationFactory {
|
|||||||
Class<? extends MVDestination> myClass = this.destList.get(idenChar);
|
Class<? extends MVDestination> myClass = this.destList.get(idenChar);
|
||||||
try {
|
try {
|
||||||
MVDestination mydest = myClass.newInstance();
|
MVDestination mydest = myClass.newInstance();
|
||||||
if (!mydest.isThisType((MultiverseCore) this.plugin, destination)) {
|
if (!mydest.isThisType(this.plugin, destination)) {
|
||||||
return new InvalidDestination();
|
return new InvalidDestination();
|
||||||
}
|
}
|
||||||
mydest.setDestination(this.plugin, destination);
|
mydest.setDestination(this.plugin, destination);
|
||||||
|
@ -70,7 +70,7 @@ public class WorldDestination implements MVDestination {
|
|||||||
return spawnLoc;
|
return spawnLoc;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Location getAcurateSpawnLocation(Entity e, MultiverseWorld world) {
|
private static Location getAcurateSpawnLocation(Entity e, MultiverseWorld world) {
|
||||||
if (world != null) {
|
if (world != null) {
|
||||||
return world.getSpawnLocation();
|
return world.getSpawnLocation();
|
||||||
} else {
|
} else {
|
||||||
|
@ -99,4 +99,13 @@ public enum EnglishChatColor {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Looks if the given-color name is a valid color.
|
||||||
|
* @param aliasColor A color-name.
|
||||||
|
* @return True if the name is a valid color, false if it isn't.
|
||||||
|
*/
|
||||||
|
public static boolean isValidAliasColor(String aliasColor) {
|
||||||
|
return (EnglishChatColor.fromString(aliasColor) != null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,6 @@ import java.util.List;
|
|||||||
* Called when the Multiverse-config should be reloaded.
|
* Called when the Multiverse-config should be reloaded.
|
||||||
*/
|
*/
|
||||||
public class MVConfigReloadEvent extends Event {
|
public class MVConfigReloadEvent extends Event {
|
||||||
private static final long serialVersionUID = 3647950355746345397L;
|
|
||||||
private List<String> configsLoaded;
|
private List<String> configsLoaded;
|
||||||
|
|
||||||
public MVConfigReloadEvent(List<String> configsLoaded) {
|
public MVConfigReloadEvent(List<String> configsLoaded) {
|
||||||
|
@ -20,6 +20,7 @@ public class MVPlayerTouchedPortalEvent extends Event implements Cancellable {
|
|||||||
private Player p;
|
private Player p;
|
||||||
private Location l;
|
private Location l;
|
||||||
private boolean isCancelled;
|
private boolean isCancelled;
|
||||||
|
private boolean canUse = true;
|
||||||
|
|
||||||
public MVPlayerTouchedPortalEvent(Player p, Location l) {
|
public MVPlayerTouchedPortalEvent(Player p, Location l) {
|
||||||
this.p = p;
|
this.p = p;
|
||||||
@ -60,6 +61,26 @@ public class MVPlayerTouchedPortalEvent extends Event implements Cancellable {
|
|||||||
return this.p;
|
return this.p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets whether or not the player in this event can use this portal.
|
||||||
|
*
|
||||||
|
* @return True if the player can use this portal.
|
||||||
|
*/
|
||||||
|
public boolean canUseThisPortal() {
|
||||||
|
return this.canUse;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether or not the player in this event can use this portal.
|
||||||
|
* <p>
|
||||||
|
* Setting this to false will cause the player to bounce back!
|
||||||
|
*
|
||||||
|
* @param canUse Whether or not the user can go through this portal.
|
||||||
|
*/
|
||||||
|
public void setCanUseThisPortal(boolean canUse) {
|
||||||
|
this.canUse = canUse;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isCancelled() {
|
public boolean isCancelled() {
|
||||||
return this.isCancelled;
|
return this.isCancelled;
|
||||||
|
@ -19,16 +19,18 @@ import org.bukkit.event.HandlerList;
|
|||||||
* If it is cancelled, no change will happen.
|
* If it is cancelled, no change will happen.
|
||||||
* <p>
|
* <p>
|
||||||
* If you want to get the values of the world before the change, query the world.
|
* If you want to get the values of the world before the change, query the world.
|
||||||
* If you want to get the value being changed, use getProperty()
|
* To get the name of the property that was changed, use {@link #getPropertyName()}.
|
||||||
|
* To get the new value, use {@link #getTheNewValue()}. To change it, use {@link #setTheNewValue(Object)}.
|
||||||
|
* @param <T> The type of the property that was set.
|
||||||
*/
|
*/
|
||||||
public class MVWorldPropertyChangeEvent extends Event implements Cancellable {
|
public class MVWorldPropertyChangeEvent<T> extends Event implements Cancellable {
|
||||||
private MultiverseWorld world;
|
private MultiverseWorld world;
|
||||||
private CommandSender changer;
|
private CommandSender changer;
|
||||||
private boolean isCancelled = false;
|
private boolean isCancelled = false;
|
||||||
private String value;
|
|
||||||
private String name;
|
private String name;
|
||||||
|
private T value;
|
||||||
|
|
||||||
public MVWorldPropertyChangeEvent(MultiverseWorld world, CommandSender changer, String name, String value) {
|
public MVWorldPropertyChangeEvent(MultiverseWorld world, CommandSender changer, String name, T value) {
|
||||||
this.world = world;
|
this.world = world;
|
||||||
this.changer = changer;
|
this.changer = changer;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
@ -64,16 +66,38 @@ public class MVWorldPropertyChangeEvent extends Event implements Cancellable {
|
|||||||
/**
|
/**
|
||||||
* Gets the new value.
|
* Gets the new value.
|
||||||
* @return The new value.
|
* @return The new value.
|
||||||
|
* @deprecated Use {@link #getTheNewValue()} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public String getNewValue() {
|
public String getNewValue() {
|
||||||
|
return this.value.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the new value.
|
||||||
|
* @return The new value.
|
||||||
|
*/
|
||||||
|
public T getTheNewValue() {
|
||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the new value.
|
* Sets the new value.
|
||||||
|
* <p>
|
||||||
|
* This method is only a stub, it'll <b>always</b> throw an {@link UnsupportedOperationException}!
|
||||||
* @param value The new new value.
|
* @param value The new new value.
|
||||||
|
* @deprecated Use {@link #setTheNewValue(Object)} instead.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public void setNewValue(String value) {
|
public void setNewValue(String value) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the new value.
|
||||||
|
* @param value The new value.
|
||||||
|
*/
|
||||||
|
public void setTheNewValue(T value) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,6 +112,8 @@ public class MVWorldPropertyChangeEvent extends Event implements Cancellable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the person (or console) who was responsible for the change.
|
* Gets the person (or console) who was responsible for the change.
|
||||||
|
* <p>
|
||||||
|
* This may be null!
|
||||||
*
|
*
|
||||||
* @return The person (or console) who was responsible for the change.
|
* @return The person (or console) who was responsible for the change.
|
||||||
*/
|
*/
|
||||||
|
@ -14,4 +14,8 @@ public class PropertyDoesNotExistException extends Exception {
|
|||||||
public PropertyDoesNotExistException(String name) {
|
public PropertyDoesNotExistException(String name) {
|
||||||
super(name);
|
super(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PropertyDoesNotExistException(String name, Throwable cause) {
|
||||||
|
super(name, cause);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ import com.onarandombox.MultiverseCore.api.MVWorldManager;
|
|||||||
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Animals;
|
import org.bukkit.entity.Animals;
|
||||||
import org.bukkit.entity.CreatureType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Ghast;
|
import org.bukkit.entity.Ghast;
|
||||||
import org.bukkit.entity.Monster;
|
import org.bukkit.entity.Monster;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -99,14 +99,13 @@ public class MVEntityListener implements Listener {
|
|||||||
if (!(this.worldManager.isMVWorld(world.getName())))
|
if (!(this.worldManager.isMVWorld(world.getName())))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
CreatureType creature = event.getCreatureType();
|
EntityType type = event.getEntityType();
|
||||||
|
|
||||||
MultiverseWorld mvworld = this.worldManager.getMVWorld(world.getName());
|
MultiverseWorld mvworld = this.worldManager.getMVWorld(world.getName());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle people with non-standard animals: ie a patched craftbukkit.
|
* Handle people with non-standard animals: ie a patched craftbukkit.
|
||||||
*/
|
*/
|
||||||
if (creature == null) {
|
if (type == null) {
|
||||||
this.plugin.log(Level.FINER, "Found a null typed creature.");
|
this.plugin.log(Level.FINER, "Found a null typed creature.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -114,18 +113,18 @@ public class MVEntityListener implements Listener {
|
|||||||
/**
|
/**
|
||||||
* Animal Handling
|
* Animal Handling
|
||||||
*/
|
*/
|
||||||
if (event.getEntity() instanceof Animals || event.getEntity() instanceof Squid) {
|
if (!event.isCancelled() && (event.getEntity() instanceof Animals || event.getEntity() instanceof Squid)) {
|
||||||
event.setCancelled(this.shouldWeKillThisCreature(mvworld.getAnimalList(), mvworld.canAnimalsSpawn(), creature.toString().toUpperCase()));
|
event.setCancelled(shouldWeKillThisCreature(mvworld.getAnimalList(), mvworld.canAnimalsSpawn(), type.getName().toUpperCase()));
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Monster Handling
|
* Monster Handling
|
||||||
*/
|
*/
|
||||||
if (event.getEntity() instanceof Monster || event.getEntity() instanceof Ghast || event.getEntity() instanceof Slime) {
|
if (!event.isCancelled() && (event.getEntity() instanceof Monster || event.getEntity() instanceof Ghast || event.getEntity() instanceof Slime)) {
|
||||||
event.setCancelled(this.shouldWeKillThisCreature(mvworld.getMonsterList(), mvworld.canMonstersSpawn(), creature.toString().toUpperCase()));
|
event.setCancelled(shouldWeKillThisCreature(mvworld.getMonsterList(), mvworld.canMonstersSpawn(), type.getName().toUpperCase()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean shouldWeKillThisCreature(List<String> creatureList, boolean allowCreatureSpawning, String creature) {
|
private static boolean shouldWeKillThisCreature(List<String> creatureList, boolean allowCreatureSpawning, String creature) {
|
||||||
if (creatureList.isEmpty() && allowCreatureSpawning) {
|
if (creatureList.isEmpty() && allowCreatureSpawning) {
|
||||||
// 1. There are no exceptions and animals are allowed. Save it.
|
// 1. There are no exceptions and animals are allowed. Save it.
|
||||||
return false;
|
return false;
|
||||||
|
@ -135,7 +135,8 @@ public class MVPlayerListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
this.plugin.log(Level.FINER, "Player joined AGAIN!");
|
this.plugin.log(Level.FINER, "Player joined AGAIN!");
|
||||||
if (!this.plugin.getMVPerms().hasPermission(p, "multiverse.access." + p.getWorld().getName(), false)) {
|
if (this.plugin.getMVConfig().getEnforceAccess() // check this only if we're enforcing access!
|
||||||
|
&& !this.plugin.getMVPerms().hasPermission(p, "multiverse.access." + p.getWorld().getName(), false)) {
|
||||||
p.sendMessage("[MV] - Sorry you can't be in this world anymore!");
|
p.sendMessage("[MV] - Sorry you can't be in this world anymore!");
|
||||||
this.sendPlayerToDefaultWorld(p);
|
this.sendPlayerToDefaultWorld(p);
|
||||||
}
|
}
|
||||||
@ -237,7 +238,6 @@ public class MVPlayerListener implements Listener {
|
|||||||
*/
|
*/
|
||||||
@EventHandler(priority = EventPriority.LOWEST)
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void playerPortalCheck(PlayerPortalEvent event) {
|
public void playerPortalCheck(PlayerPortalEvent event) {
|
||||||
this.plugin.log(Level.FINE, "CALLING CORE-ADJUST!!!");
|
|
||||||
if (event.isCancelled() || event.getFrom() == null) {
|
if (event.isCancelled() || event.getFrom() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -311,6 +311,9 @@ public class MVPlayerListener implements Listener {
|
|||||||
MultiverseWorld mvWorld = this.worldManager.getMVWorld(world.getName());
|
MultiverseWorld mvWorld = this.worldManager.getMVWorld(world.getName());
|
||||||
if (mvWorld != null) {
|
if (mvWorld != null) {
|
||||||
this.handleGameMode(player, mvWorld);
|
this.handleGameMode(player, mvWorld);
|
||||||
|
} else {
|
||||||
|
this.plugin.log(Level.FINER, String.format(
|
||||||
|
"Not handling gamemode for world '%s' not managed by Multiverse.", world.getName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,6 @@ import org.bukkit.event.server.PluginDisableEvent;
|
|||||||
import org.bukkit.event.server.PluginEnableEvent;
|
import org.bukkit.event.server.PluginEnableEvent;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.logging.Level;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Multiverse's Plugin {@link Listener}.
|
* Multiverse's Plugin {@link Listener}.
|
||||||
@ -40,10 +39,12 @@ public class MVPluginListener implements Listener {
|
|||||||
this.plugin.setBank(this.plugin.getBanker().loadEconPlugin());
|
this.plugin.setBank(this.plugin.getBanker().loadEconPlugin());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
if (event.getPlugin().getDescription().getName().equals("Spout")) {
|
if (event.getPlugin().getDescription().getName().equals("Spout")) {
|
||||||
this.plugin.setSpout();
|
this.plugin.setSpout();
|
||||||
this.plugin.log(Level.INFO, "Spout integration enabled.");
|
this.plugin.log(Level.INFO, "Spout integration enabled.");
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -41,7 +41,7 @@ public class MVPortalListener implements Listener {
|
|||||||
}
|
}
|
||||||
MultiverseWorld world = this.plugin.getMVWorldManager().getMVWorld(event.getBlocks().get(0).getWorld());
|
MultiverseWorld world = this.plugin.getMVWorldManager().getMVWorld(event.getBlocks().get(0).getWorld());
|
||||||
// We have to do it like this due to a bug in 1.1-R3
|
// We have to do it like this due to a bug in 1.1-R3
|
||||||
if (this.cancelPortalEvent(world, event.getPortalType())) {
|
if (cancelPortalEvent(world, event.getPortalType())) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,7 +59,7 @@ public class MVPortalListener implements Listener {
|
|||||||
for (Block b : event.getBlocks()) {
|
for (Block b : event.getBlocks()) {
|
||||||
if (b.getType() == Material.PORTAL) {
|
if (b.getType() == Material.PORTAL) {
|
||||||
MultiverseWorld world = this.plugin.getMVWorldManager().getMVWorld(b.getWorld());
|
MultiverseWorld world = this.plugin.getMVWorldManager().getMVWorld(b.getWorld());
|
||||||
if (this.cancelPortalEvent(world, PortalType.NETHER)) {
|
if (cancelPortalEvent(world, PortalType.NETHER)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -67,12 +67,12 @@ public class MVPortalListener implements Listener {
|
|||||||
}
|
}
|
||||||
// If We're here, then the Portal was an Ender type:
|
// If We're here, then the Portal was an Ender type:
|
||||||
MultiverseWorld world = this.plugin.getMVWorldManager().getMVWorld(event.getBlocks().get(0).getWorld());
|
MultiverseWorld world = this.plugin.getMVWorldManager().getMVWorld(event.getBlocks().get(0).getWorld());
|
||||||
if (this.cancelPortalEvent(world, PortalType.ENDER)) {
|
if (cancelPortalEvent(world, PortalType.ENDER)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean cancelPortalEvent(MultiverseWorld world, PortalType type) {
|
private static boolean cancelPortalEvent(MultiverseWorld world, PortalType type) {
|
||||||
if (world.getAllowedPortals() == AllowedPortalType.NONE) {
|
if (world.getAllowedPortals() == AllowedPortalType.NONE) {
|
||||||
return true;
|
return true;
|
||||||
} else if (world.getAllowedPortals() != AllowedPortalType.ALL) {
|
} else if (world.getAllowedPortals() != AllowedPortalType.ALL) {
|
||||||
|
@ -17,16 +17,15 @@ public interface LazyLocaleMessageProvider extends MessageProvider {
|
|||||||
*
|
*
|
||||||
* @param locale The desired {@link Locale}.
|
* @param locale The desired {@link Locale}.
|
||||||
* @throws LocalizationLoadingException When an error occurs while trying to load the specified localization.
|
* @throws LocalizationLoadingException When an error occurs while trying to load the specified localization.
|
||||||
* @throws NoSuchLocalizationException When no localization was found for the desired locale.
|
|
||||||
*/
|
*/
|
||||||
public void loadLocale(Locale locale) throws NoSuchLocalizationException, LocalizationLoadingException;
|
void loadLocale(Locale locale) throws LocalizationLoadingException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves all loaded localizations.
|
* Retrieves all loaded localizations.
|
||||||
*
|
*
|
||||||
* @return A {@link Set} of {@link Locale}s whose localizations are currently loaded.
|
* @return A {@link Set} of {@link Locale}s whose localizations are currently loaded.
|
||||||
*/
|
*/
|
||||||
public Set<Locale> getLoadedLocales();
|
Set<Locale> getLoadedLocales();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Detects if a localization is loaded for the specified {@link Locale}.
|
* Detects if a localization is loaded for the specified {@link Locale}.
|
||||||
@ -34,6 +33,6 @@ public interface LazyLocaleMessageProvider extends MessageProvider {
|
|||||||
* @param locale The {@link Locale}.
|
* @param locale The {@link Locale}.
|
||||||
* @return Whether a localization is loaded for the specified {@link Locale}.
|
* @return Whether a localization is loaded for the specified {@link Locale}.
|
||||||
*/
|
*/
|
||||||
public boolean isLocaleLoaded(Locale locale);
|
boolean isLocaleLoaded(Locale locale);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -35,8 +35,8 @@ public class LocalizationLoadingException extends IOException {
|
|||||||
return locale;
|
return locale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getMessage() {
|
public String getMessage() {
|
||||||
return super.getMessage() + " (While trying to load localization for locale " + getLocale() + ")";
|
return super.getMessage() + " (While trying to load localization for locale " + getLocale() + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,13 +5,13 @@ import java.util.Locale;
|
|||||||
/**
|
/**
|
||||||
* Multiverse 2 MessageProvider
|
* Multiverse 2 MessageProvider
|
||||||
* <p>
|
* <p>
|
||||||
* This interface describes a Multiverse-MessageProvider
|
* This interface describes a Multiverse-MessageProvider.
|
||||||
*/
|
*/
|
||||||
public interface MessageProvider {
|
public interface MessageProvider {
|
||||||
/**
|
/**
|
||||||
* The default locale.
|
* The default locale.
|
||||||
*/
|
*/
|
||||||
public static final Locale DEFAULT_LOCALE = Locale.ENGLISH;
|
Locale DEFAULT_LOCALE = Locale.ENGLISH;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a message (as {@link String}) for the specified key (as {@link MultiverseMessage}).
|
* Returns a message (as {@link String}) for the specified key (as {@link MultiverseMessage}).
|
||||||
@ -20,7 +20,7 @@ public interface MessageProvider {
|
|||||||
* @param args Args for String.format()
|
* @param args Args for String.format()
|
||||||
* @return The message
|
* @return The message
|
||||||
*/
|
*/
|
||||||
public String getMessage(MultiverseMessage key, Object... args);
|
String getMessage(MultiverseMessage key, Object... args);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a message (as {@link String}) in a specified {@link Locale} for the specified key (as {@link MultiverseMessage}).
|
* Returns a message (as {@link String}) in a specified {@link Locale} for the specified key (as {@link MultiverseMessage}).
|
||||||
@ -30,17 +30,17 @@ public interface MessageProvider {
|
|||||||
* @param args Args for String.format()
|
* @param args Args for String.format()
|
||||||
* @return The message
|
* @return The message
|
||||||
*/
|
*/
|
||||||
public String getMessage(MultiverseMessage key, Locale locale, Object... args);
|
String getMessage(MultiverseMessage key, Locale locale, Object... args);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the Locale this MessageProvider is currently using.
|
* @return the Locale this MessageProvider is currently using.
|
||||||
*/
|
*/
|
||||||
public Locale getLocale();
|
Locale getLocale();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the locale for this MessageProvider.
|
* Sets the locale for this MessageProvider.
|
||||||
*
|
*
|
||||||
* @param locale The new {@link Locale}.
|
* @param locale The new {@link Locale}.
|
||||||
*/
|
*/
|
||||||
public void setLocale(Locale locale);
|
void setLocale(Locale locale);
|
||||||
}
|
}
|
||||||
|
@ -6,17 +6,15 @@ package com.onarandombox.MultiverseCore.localization;
|
|||||||
* This interface is implemented by classes that use a {@link MessageProvider}.
|
* This interface is implemented by classes that use a {@link MessageProvider}.
|
||||||
*/
|
*/
|
||||||
public interface MessageProviding {
|
public interface MessageProviding {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return The {@link MessageProvider} used by the Core.
|
* @return The {@link MessageProvider} used by the Core.
|
||||||
*/
|
*/
|
||||||
public abstract MessageProvider getMessageProvider();
|
MessageProvider getMessageProvider();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the {@link MessageProvider} used by the core.
|
* Sets the {@link MessageProvider} used by the core.
|
||||||
*
|
*
|
||||||
* @param provider The new {@link MessageProvider}. Must not be null!
|
* @param provider The new {@link MessageProvider}. Must not be null!
|
||||||
*/
|
*/
|
||||||
public abstract void setMessageProvider(MessageProvider provider);
|
void setMessageProvider(MessageProvider provider);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
package com.onarandombox.MultiverseCore.localization;
|
package com.onarandombox.MultiverseCore.localization;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An enum containing all messages/strings used by Multiverse.
|
* An enum containing all messages/strings used by Multiverse.
|
||||||
*/
|
*/
|
||||||
public enum MultiverseMessage {
|
public enum MultiverseMessage {
|
||||||
|
// BEGIN CHECKSTYLE-SUPPRESSION: JavadocVariable
|
||||||
TEST_STRING("a test-string from the enum"),
|
TEST_STRING("a test-string from the enum"),
|
||||||
|
|
||||||
// Generic Strings
|
// Generic Strings
|
||||||
@ -22,6 +24,7 @@ public enum MultiverseMessage {
|
|||||||
LIST_DESC("Displays a listing of all worlds that you can enter."),
|
LIST_DESC("Displays a listing of all worlds that you can enter."),
|
||||||
LIST_TITLE("Multiverse World List"),
|
LIST_TITLE("Multiverse World List"),
|
||||||
LIST_NO_MATCH("No worlds matched your filter:");
|
LIST_NO_MATCH("No worlds matched your filter:");
|
||||||
|
// END CHECKSTYLE-SUPPRESSION: JavadocVariable
|
||||||
|
|
||||||
private final String def;
|
private final String def;
|
||||||
|
|
||||||
@ -35,5 +38,4 @@ public enum MultiverseMessage {
|
|||||||
public String getDefault() {
|
public String getDefault() {
|
||||||
return def;
|
return def;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -22,5 +22,4 @@ public class NoSuchLocalizationException extends LocalizationLoadingException {
|
|||||||
public NoSuchLocalizationException(Throwable cause, Locale locale) {
|
public NoSuchLocalizationException(Throwable cause, Locale locale) {
|
||||||
super(cause, locale);
|
super(cause, locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -13,17 +13,19 @@ import org.bukkit.configuration.file.YamlConfiguration;
|
|||||||
|
|
||||||
import com.onarandombox.MultiverseCore.MultiverseCore;
|
import com.onarandombox.MultiverseCore.MultiverseCore;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The normal {@link MessageProvider}-implementation.
|
||||||
|
*/
|
||||||
public class SimpleMessageProvider implements LazyLocaleMessageProvider {
|
public class SimpleMessageProvider implements LazyLocaleMessageProvider {
|
||||||
|
private static final String LOCALIZATION_FOLDER_NAME = "localization";
|
||||||
private final static String LOCALIZATION_FOLDER_NAME = "localization";
|
|
||||||
|
|
||||||
// Regex 1: replace all single & with the section char
|
// Regex 1: replace all single & with the section char
|
||||||
private final static String FORMAT_PATTERN_1 = "([^&])(&)([^&])";
|
private static final String FORMAT_PATTERN_1 = "([^&])(&)([^&])";
|
||||||
private final static String FORMAT_REPL_1 = "$1\u00A7$3";
|
private static final String FORMAT_REPL_1 = "$1\u00A7$3";
|
||||||
|
|
||||||
// Regex 2: replace all double & with single &
|
// Regex 2: replace all double & with single &
|
||||||
private final static String FORMAT_PATTERN_2 = "&&";
|
private static final String FORMAT_PATTERN_2 = "&&";
|
||||||
private final static String FORMAT_REPL_2 = "&";
|
private static final String FORMAT_REPL_2 = "&";
|
||||||
|
|
||||||
private final HashMap<Locale, HashMap<MultiverseMessage, String>> messages;
|
private final HashMap<Locale, HashMap<MultiverseMessage, String>> messages;
|
||||||
private final MultiverseCore core;
|
private final MultiverseCore core;
|
||||||
@ -41,6 +43,11 @@ public class SimpleMessageProvider implements LazyLocaleMessageProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads a given {@link Locale} if and only if it wasn't already loaded.
|
||||||
|
* @param locale The locale
|
||||||
|
* @throws LocalizationLoadingException If the locale wasn't loaded successfully.
|
||||||
|
*/
|
||||||
public void maybeLoadLocale(Locale locale) throws LocalizationLoadingException {
|
public void maybeLoadLocale(Locale locale) throws LocalizationLoadingException {
|
||||||
if (!isLocaleLoaded(locale)) {
|
if (!isLocaleLoaded(locale)) {
|
||||||
try {
|
try {
|
||||||
@ -131,9 +138,8 @@ public class SimpleMessageProvider implements LazyLocaleMessageProvider {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getMessage(MultiverseMessage key, Object... args) {
|
public String getMessage(MultiverseMessage key, Object... args) {
|
||||||
if (!isLocaleLoaded(locale)) {
|
if (!isLocaleLoaded(locale))
|
||||||
return format(key.getDefault(), args);
|
return format(key.getDefault(), args);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
return format(messages.get(locale).get(key), args);
|
return format(messages.get(locale).get(key), args);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
/**
|
||||||
|
* Contains localization.
|
||||||
|
*/
|
||||||
|
package com.onarandombox.MultiverseCore.localization;
|
@ -20,9 +20,11 @@ public class FancyMessage implements FancyText {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows easy creation of an alternating colored list.
|
* Allows easy creation of an alternating colored list.
|
||||||
|
* TODO: Documentation! Why does CheckStyle just ignore this?
|
||||||
*
|
*
|
||||||
* @param title
|
* @param title
|
||||||
* @param message
|
* @param message
|
||||||
|
* @param scheme
|
||||||
*/
|
*/
|
||||||
public FancyMessage(String title, String message, FancyColorScheme scheme) {
|
public FancyMessage(String title, String message, FancyColorScheme scheme) {
|
||||||
this.title = title;
|
this.title = title;
|
||||||
|
@ -25,19 +25,16 @@ public class FileUtils {
|
|||||||
*/
|
*/
|
||||||
public static boolean deleteFolder(File file) {
|
public static boolean deleteFolder(File file) {
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
|
boolean ret = true;
|
||||||
// If the file exists, and it has more than one file in it.
|
// If the file exists, and it has more than one file in it.
|
||||||
if (file.isDirectory()) {
|
if (file.isDirectory()) {
|
||||||
for (File f : file.listFiles()) {
|
for (File f : file.listFiles()) {
|
||||||
if (!FileUtils.deleteFolder(f)) {
|
ret = ret && deleteFolder(f);
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file.delete();
|
return ret && file.delete();
|
||||||
return !file.exists();
|
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -51,17 +51,17 @@ public class MVMessaging implements MultiverseMessaging {
|
|||||||
public boolean sendMessages(CommandSender sender, String[] messages, boolean ignoreCooldown) {
|
public boolean sendMessages(CommandSender sender, String[] messages, boolean ignoreCooldown) {
|
||||||
if (!(sender instanceof Player) || ignoreCooldown) {
|
if (!(sender instanceof Player) || ignoreCooldown) {
|
||||||
|
|
||||||
this.sendMessages(sender, messages);
|
sendMessages(sender, messages);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (!this.sentList.containsKey(sender.getName())) {
|
if (!this.sentList.containsKey(sender.getName())) {
|
||||||
this.sendMessages(sender, messages);
|
sendMessages(sender, messages);
|
||||||
this.sentList.put(sender.getName(), System.currentTimeMillis());
|
this.sentList.put(sender.getName(), System.currentTimeMillis());
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
long time = System.currentTimeMillis();
|
long time = System.currentTimeMillis();
|
||||||
if (time >= this.sentList.get(sender.getName()) + this.cooldown) {
|
if (time >= this.sentList.get(sender.getName()) + this.cooldown) {
|
||||||
this.sendMessages(sender, messages);
|
sendMessages(sender, messages);
|
||||||
this.sentList.put(sender.getName(), System.currentTimeMillis());
|
this.sentList.put(sender.getName(), System.currentTimeMillis());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -77,7 +77,7 @@ public class MVMessaging implements MultiverseMessaging {
|
|||||||
return this.sendMessages(sender, messages.toArray(new String[0]), ignoreCooldown);
|
return this.sendMessages(sender, messages.toArray(new String[0]), ignoreCooldown);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendMessages(CommandSender sender, String[] messages) {
|
private static void sendMessages(CommandSender sender, String[] messages) {
|
||||||
for (String s : messages) {
|
for (String s : messages) {
|
||||||
sender.sendMessage(s);
|
sender.sendMessage(s);
|
||||||
}
|
}
|
||||||
|
@ -229,6 +229,7 @@ public class MVPermissions implements PermissionsInterface {
|
|||||||
* @param isOpRequired @Deprecated. This is not used for anything anymore.
|
* @param isOpRequired @Deprecated. This is not used for anything anymore.
|
||||||
* @return True if they have that permission or any parent.
|
* @return True if they have that permission or any parent.
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public boolean hasPermission(CommandSender sender, String node, boolean isOpRequired) {
|
public boolean hasPermission(CommandSender sender, String node, boolean isOpRequired) {
|
||||||
if (!(sender instanceof Player)) {
|
if (!(sender instanceof Player)) {
|
||||||
return true;
|
return true;
|
||||||
@ -251,10 +252,15 @@ public class MVPermissions implements PermissionsInterface {
|
|||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
|
|
||||||
boolean hasPermission = sender.hasPermission(node);
|
boolean hasPermission = sender.hasPermission(node);
|
||||||
|
if (!sender.isPermissionSet(node)) {
|
||||||
|
this.plugin.log(Level.FINER, String.format("The node [%s%s%s] was %sNOT%s set for [%s%s%s].",
|
||||||
|
ChatColor.RED, node, ChatColor.WHITE, ChatColor.RED, ChatColor.WHITE, ChatColor.AQUA,
|
||||||
|
player.getDisplayName(), ChatColor.WHITE));
|
||||||
|
}
|
||||||
if (hasPermission) {
|
if (hasPermission) {
|
||||||
this.plugin.log(Level.FINEST, "Checking to see if player [" + player.getName() + "] has permission [" + node + "]... YES");
|
this.plugin.log(Level.FINER, "Checking to see if player [" + player.getName() + "] has permission [" + node + "]... YES");
|
||||||
} else {
|
} else {
|
||||||
this.plugin.log(Level.FINEST, "Checking to see if player [" + player.getName() + "] has permission [" + node + "]... NO");
|
this.plugin.log(Level.FINER, "Checking to see if player [" + player.getName() + "] has permission [" + node + "]... NO");
|
||||||
}
|
}
|
||||||
return hasPermission;
|
return hasPermission;
|
||||||
}
|
}
|
||||||
@ -268,6 +274,7 @@ public class MVPermissions implements PermissionsInterface {
|
|||||||
* @param node The permission node to check (possibly already a parent).
|
* @param node The permission node to check (possibly already a parent).
|
||||||
* @return True if they have any parent perm, false if none.
|
* @return True if they have any parent perm, false if none.
|
||||||
*/
|
*/
|
||||||
|
// TODO remove this...?
|
||||||
private boolean hasAnyParentPermission(CommandSender sender, String node) {
|
private boolean hasAnyParentPermission(CommandSender sender, String node) {
|
||||||
String parentPerm = this.pullOneLevelOff(node);
|
String parentPerm = this.pullOneLevelOff(node);
|
||||||
// Base case
|
// Base case
|
||||||
@ -288,7 +295,7 @@ public class MVPermissions implements PermissionsInterface {
|
|||||||
* @param node The root node to check.
|
* @param node The root node to check.
|
||||||
* @return The parent of the node
|
* @return The parent of the node
|
||||||
*/
|
*/
|
||||||
private String pullOneLevelOff(String node) {
|
private static String pullOneLevelOff(String node) {
|
||||||
if (node == null) {
|
if (node == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -393,7 +400,7 @@ public class MVPermissions implements PermissionsInterface {
|
|||||||
/**
|
/**
|
||||||
* If the given permission was 'multiverse.core.tp.self', this would return 'multiverse.core.tp.*'.
|
* If the given permission was 'multiverse.core.tp.self', this would return 'multiverse.core.tp.*'.
|
||||||
*/
|
*/
|
||||||
private String getParentPerm(String[] seperated) {
|
private static String getParentPerm(String[] seperated) {
|
||||||
if (seperated.length == 1) {
|
if (seperated.length == 1) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -403,5 +410,4 @@ public class MVPermissions implements PermissionsInterface {
|
|||||||
}
|
}
|
||||||
return returnString + "*";
|
return returnString + "*";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -78,7 +78,7 @@ public class PermissionTools {
|
|||||||
* @param separatedPermissionString The array of a dot separated perm string.
|
* @param separatedPermissionString The array of a dot separated perm string.
|
||||||
* @return The dot separated parent permission string.
|
* @return The dot separated parent permission string.
|
||||||
*/
|
*/
|
||||||
private String getParentPerm(String[] separatedPermissionString) {
|
private static String getParentPerm(String[] separatedPermissionString) {
|
||||||
if (separatedPermissionString.length == 1) {
|
if (separatedPermissionString.length == 1) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -65,24 +65,24 @@ public class SimpleBlockSafety implements BlockSafety {
|
|||||||
upOne.setY(upOne.getY() + 1);
|
upOne.setY(upOne.getY() + 1);
|
||||||
downOne.setY(downOne.getY() - 1);
|
downOne.setY(downOne.getY() - 1);
|
||||||
|
|
||||||
if (this.isSolidBlock(world.getBlockAt(actual).getType())
|
if (isSolidBlock(world.getBlockAt(actual).getType())
|
||||||
|| this.isSolidBlock(upOne.getBlock().getType())) {
|
|| isSolidBlock(upOne.getBlock().getType())) {
|
||||||
MultiverseCore.staticLog(Level.FINER, "Error Here (Actual)? ("
|
MultiverseCore.staticLog(Level.FINER, "Error Here (Actual)? ("
|
||||||
+ actual.getBlock().getType() + ")[" + this.isSolidBlock(actual.getBlock().getType()) + "]");
|
+ actual.getBlock().getType() + ")[" + isSolidBlock(actual.getBlock().getType()) + "]");
|
||||||
MultiverseCore.staticLog(Level.FINER, "Error Here (upOne)? ("
|
MultiverseCore.staticLog(Level.FINER, "Error Here (upOne)? ("
|
||||||
+ upOne.getBlock().getType() + ")[" + this.isSolidBlock(upOne.getBlock().getType()) + "]");
|
+ upOne.getBlock().getType() + ")[" + isSolidBlock(upOne.getBlock().getType()) + "]");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (downOne.getBlock().getType() == Material.LAVA || downOne.getBlock().getType() == Material.STATIONARY_LAVA) {
|
if (downOne.getBlock().getType() == Material.LAVA || downOne.getBlock().getType() == Material.STATIONARY_LAVA) {
|
||||||
MultiverseCore.staticLog(Level.FINER, "Error Here (downOne)? ("
|
MultiverseCore.staticLog(Level.FINER, "Error Here (downOne)? ("
|
||||||
+ downOne.getBlock().getType() + ")[" + this.isSolidBlock(downOne.getBlock().getType()) + "]");
|
+ downOne.getBlock().getType() + ")[" + isSolidBlock(downOne.getBlock().getType()) + "]");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (downOne.getBlock().getType() == Material.FIRE) {
|
if (downOne.getBlock().getType() == Material.FIRE) {
|
||||||
MultiverseCore.staticLog(Level.FINER, "There's fire below! ("
|
MultiverseCore.staticLog(Level.FINER, "There's fire below! ("
|
||||||
+ actual.getBlock().getType() + ")[" + this.isSolidBlock(actual.getBlock().getType()) + "]");
|
+ actual.getBlock().getType() + ")[" + isSolidBlock(actual.getBlock().getType()) + "]");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,7 +129,7 @@ public class SimpleBlockSafety implements BlockSafety {
|
|||||||
/*
|
/*
|
||||||
* If someone has a better way of this... Please either tell us, or submit a pull request!
|
* If someone has a better way of this... Please either tell us, or submit a pull request!
|
||||||
*/
|
*/
|
||||||
private boolean isSolidBlock(Material type) {
|
private static boolean isSolidBlock(Material type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case AIR:
|
case AIR:
|
||||||
return false;
|
return false;
|
||||||
|
@ -15,6 +15,10 @@ import org.bukkit.World;
|
|||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Animals;
|
import org.bukkit.entity.Animals;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.Ghast;
|
||||||
|
import org.bukkit.entity.Monster;
|
||||||
|
import org.bukkit.entity.Slime;
|
||||||
import org.bukkit.entity.Squid;
|
import org.bukkit.entity.Squid;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -76,7 +80,7 @@ public class SimpleWorldPurger implements WorldPurger {
|
|||||||
boolean specifiedAnimals = thingsToKill.contains("ANIMALS") || specifiedAll;
|
boolean specifiedAnimals = thingsToKill.contains("ANIMALS") || specifiedAll;
|
||||||
boolean specifiedMonsters = thingsToKill.contains("MONSTERS") || specifiedAll;
|
boolean specifiedMonsters = thingsToKill.contains("MONSTERS") || specifiedAll;
|
||||||
for (Entity e : world.getEntities()) {
|
for (Entity e : world.getEntities()) {
|
||||||
boolean negate;
|
boolean negate = false;
|
||||||
boolean specified = false;
|
boolean specified = false;
|
||||||
if (e instanceof Squid || e instanceof Animals) {
|
if (e instanceof Squid || e instanceof Animals) {
|
||||||
// it's an animal
|
// it's an animal
|
||||||
@ -89,7 +93,7 @@ public class SimpleWorldPurger implements WorldPurger {
|
|||||||
if (specifiedAnimals)
|
if (specifiedAnimals)
|
||||||
specified = true;
|
specified = true;
|
||||||
negate = negateAnimals;
|
negate = negateAnimals;
|
||||||
} else {
|
} else if (e instanceof Monster || e instanceof Ghast || e instanceof Slime) {
|
||||||
// it's a monster
|
// it's a monster
|
||||||
if (specifiedMonsters && !negateMonsters) {
|
if (specifiedMonsters && !negateMonsters) {
|
||||||
this.plugin.log(Level.FINEST, "Removing an entity because I was told to remove all monsters: " + e);
|
this.plugin.log(Level.FINEST, "Removing an entity because I was told to remove all monsters: " + e);
|
||||||
@ -102,7 +106,8 @@ public class SimpleWorldPurger implements WorldPurger {
|
|||||||
negate = negateMonsters;
|
negate = negateMonsters;
|
||||||
}
|
}
|
||||||
for (String s : thingsToKill) {
|
for (String s : thingsToKill) {
|
||||||
if (e.getType().getName().equalsIgnoreCase(s)) {
|
EntityType type = EntityType.fromName(s);
|
||||||
|
if (type != null && type.equals(e.getType())) {
|
||||||
specified = true;
|
specified = true;
|
||||||
if (!negate) {
|
if (!negate) {
|
||||||
this.plugin.log(Level.FINEST, "Removing an entity because it WAS specified and we are NOT negating: " + e);
|
this.plugin.log(Level.FINEST, "Removing an entity because it WAS specified and we are NOT negating: " + e);
|
||||||
|
@ -4,14 +4,14 @@
|
|||||||
* 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. *
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
/*
|
||||||
package com.onarandombox.MultiverseCore.utils;
|
package com.onarandombox.MultiverseCore.utils;
|
||||||
|
|
||||||
import org.getspout.spoutapi.SpoutManager;
|
import org.getspout.spoutapi.SpoutManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A helper-class holding the {@link SpoutManager}.
|
* A helper-class holding the {@link SpoutManager}.
|
||||||
*/
|
* /
|
||||||
public class SpoutInterface {
|
public class SpoutInterface {
|
||||||
private SpoutManager spoutManager;
|
private SpoutManager spoutManager;
|
||||||
|
|
||||||
@ -22,8 +22,9 @@ public class SpoutInterface {
|
|||||||
/**
|
/**
|
||||||
* Gets the {@link SpoutManager}.
|
* Gets the {@link SpoutManager}.
|
||||||
* @return The {@link SpoutManager}.
|
* @return The {@link SpoutManager}.
|
||||||
*/
|
* /
|
||||||
public SpoutManager getManager() {
|
public SpoutManager getManager() {
|
||||||
return this.spoutManager;
|
return this.spoutManager;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
package com.onarandombox.MultiverseCore.utils;
|
package com.onarandombox.MultiverseCore.utils;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
@ -54,6 +55,7 @@ public class UpdateChecker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void checkUpdate() {
|
public void checkUpdate() {
|
||||||
|
BufferedReader rd = null;
|
||||||
try {
|
try {
|
||||||
URL url = new URL("http://bukkit.onarandombox.com/multiverse/version.php?n=" + URLEncoder.encode(this.name, "UTF-8") + "&v=" + this.cversion);
|
URL url = new URL("http://bukkit.onarandombox.com/multiverse/version.php?n=" + URLEncoder.encode(this.name, "UTF-8") + "&v=" + this.cversion);
|
||||||
URLConnection conn = url.openConnection();
|
URLConnection conn = url.openConnection();
|
||||||
@ -65,7 +67,7 @@ public class UpdateChecker {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
|
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
|
||||||
String line;
|
String line;
|
||||||
String version = null;
|
String version = null;
|
||||||
|
|
||||||
@ -76,7 +78,6 @@ public class UpdateChecker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (version == null) {
|
if (version == null) {
|
||||||
rd.close();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,6 +93,12 @@ public class UpdateChecker {
|
|||||||
rd.close();
|
rd.close();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// No need to alert the user of any error here... it's not important.
|
// No need to alert the user of any error here... it's not important.
|
||||||
|
} finally {
|
||||||
|
if (rd != null) {
|
||||||
|
try {
|
||||||
|
rd.close();
|
||||||
|
} catch (IOException ignore) { }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,12 +13,12 @@ import com.onarandombox.MultiverseCore.api.MVWorldManager;
|
|||||||
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
||||||
import com.onarandombox.MultiverseCore.api.SafeTTeleporter;
|
import com.onarandombox.MultiverseCore.api.SafeTTeleporter;
|
||||||
import com.onarandombox.MultiverseCore.api.WorldPurger;
|
import com.onarandombox.MultiverseCore.api.WorldPurger;
|
||||||
import com.onarandombox.MultiverseCore.commands.EnvironmentCommand;
|
|
||||||
import com.onarandombox.MultiverseCore.event.MVWorldDeleteEvent;
|
import com.onarandombox.MultiverseCore.event.MVWorldDeleteEvent;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.World.Environment;
|
import org.bukkit.World.Environment;
|
||||||
import org.bukkit.WorldCreator;
|
import org.bukkit.WorldCreator;
|
||||||
import org.bukkit.WorldType;
|
import org.bukkit.WorldType;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -36,6 +36,7 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.Stack;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -44,16 +45,16 @@ import java.util.logging.Level;
|
|||||||
public class WorldManager implements MVWorldManager {
|
public class WorldManager implements MVWorldManager {
|
||||||
private MultiverseCore plugin;
|
private MultiverseCore plugin;
|
||||||
private WorldPurger worldPurger;
|
private WorldPurger worldPurger;
|
||||||
|
private Map<String, MVWorld> worldsFromTheConfig;
|
||||||
private Map<String, MultiverseWorld> worlds;
|
private Map<String, MultiverseWorld> worlds;
|
||||||
private List<String> unloadedWorlds;
|
|
||||||
private FileConfiguration configWorlds = null;
|
private FileConfiguration configWorlds = null;
|
||||||
private Map<String, String> defaultGens;
|
private Map<String, String> defaultGens;
|
||||||
private String firstSpawn;
|
private String firstSpawn;
|
||||||
|
|
||||||
public WorldManager(MultiverseCore core) {
|
public WorldManager(MultiverseCore core) {
|
||||||
this.plugin = core;
|
this.plugin = core;
|
||||||
|
this.worldsFromTheConfig = new HashMap<String, MVWorld>();
|
||||||
this.worlds = new HashMap<String, MultiverseWorld>();
|
this.worlds = new HashMap<String, MultiverseWorld>();
|
||||||
this.unloadedWorlds = new ArrayList<String>();
|
|
||||||
this.worldPurger = new SimpleWorldPurger(plugin);
|
this.worldPurger = new SimpleWorldPurger(plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,7 +70,7 @@ public class WorldManager implements MVWorldManager {
|
|||||||
return s.equalsIgnoreCase("bukkit.yml");
|
return s.equalsIgnoreCase("bukkit.yml");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (files.length == 1) {
|
if (files != null && files.length == 1) {
|
||||||
FileConfiguration bukkitConfig = YamlConfiguration.loadConfiguration(files[0]);
|
FileConfiguration bukkitConfig = YamlConfiguration.loadConfiguration(files[0]);
|
||||||
if (bukkitConfig.isConfigurationSection("worlds")) {
|
if (bukkitConfig.isConfigurationSection("worlds")) {
|
||||||
Set<String> keys = bukkitConfig.getConfigurationSection("worlds").getKeys(false);
|
Set<String> keys = bukkitConfig.getConfigurationSection("worlds").getKeys(false);
|
||||||
@ -77,6 +78,8 @@ public class WorldManager implements MVWorldManager {
|
|||||||
defaultGens.put(key, bukkitConfig.getString("worlds." + key + ".generator", ""));
|
defaultGens.put(key, bukkitConfig.getString("worlds." + key + ".generator", ""));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
this.plugin.log(Level.WARNING, "Could not read 'bukkit.yml'. Any Default worldgenerators will not be loaded!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,7 +121,10 @@ public class WorldManager implements MVWorldManager {
|
|||||||
c.generateStructures(generateStructures);
|
c.generateStructures(generateStructures);
|
||||||
}
|
}
|
||||||
|
|
||||||
World world;
|
// Important: doLoad() needs the MVWorld-object in worldsFromTheConfig
|
||||||
|
if (!worldsFromTheConfig.containsKey(name))
|
||||||
|
worldsFromTheConfig.put(name, new MVWorld(useSpawnAdjust));
|
||||||
|
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append("Loading World & Settings - '").append(name).append("'");
|
builder.append("Loading World & Settings - '").append(name).append("'");
|
||||||
builder.append(" - Env: ").append(env);
|
builder.append(" - Env: ").append(env);
|
||||||
@ -131,40 +137,16 @@ public class WorldManager implements MVWorldManager {
|
|||||||
}
|
}
|
||||||
this.plugin.log(Level.INFO, builder.toString());
|
this.plugin.log(Level.INFO, builder.toString());
|
||||||
|
|
||||||
try {
|
if (!doLoad(c)) {
|
||||||
world = c.createWorld();
|
|
||||||
} catch (Exception e) {
|
|
||||||
this.plugin.log(Level.SEVERE, "The world '" + name + "' could NOT be loaded because it contains errors!");
|
|
||||||
this.plugin.log(Level.SEVERE, "Try using Chukster to repair your world! '" + name + "'");
|
|
||||||
this.plugin.log(Level.SEVERE, "http://forums.bukkit.org/threads/admin-chunkster.8186/");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (world == null) {
|
|
||||||
this.plugin.log(Level.SEVERE, "Failed to Create/Load the world '" + name + "'");
|
this.plugin.log(Level.SEVERE, "Failed to Create/Load the world '" + name + "'");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
MultiverseWorld mvworld = new MVWorld(world, this.configWorlds, this.plugin,
|
// set generator (special case because we can't read it from org.bukkit.World)
|
||||||
this.plugin.getServer().getWorld(name).getSeed(), generator, useSpawnAdjust);
|
this.worlds.get(name).setGenerator(generator);
|
||||||
this.worldPurger.purgeWorld(mvworld);
|
|
||||||
this.worlds.put(name, mvworld);
|
|
||||||
if (this.unloadedWorlds.contains(name)) {
|
|
||||||
this.unloadedWorlds.remove(name);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
this.saveWorldsConfig();
|
||||||
* Verifies that a given Plugin generator string exists.
|
return true;
|
||||||
*
|
|
||||||
* @param generator The name of the generator plugin. This should be something like CleanRoomGenerator.
|
|
||||||
* @return True if the plugin exists and is enabled, false if not.
|
|
||||||
*/
|
|
||||||
// TODO maybe remove this since it's unused?
|
|
||||||
private boolean pluginExists(String generator) {
|
|
||||||
Plugin myPlugin = this.plugin.getServer().getPluginManager().getPlugin(generator);
|
|
||||||
return myPlugin != null && myPlugin.isEnabled();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -192,15 +174,11 @@ public class WorldManager implements MVWorldManager {
|
|||||||
if (!unloadWorld(name)) {
|
if (!unloadWorld(name)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (this.configWorlds.get("worlds." + name) != null) {
|
if (this.worldsFromTheConfig.containsKey(name)) {
|
||||||
|
this.worldsFromTheConfig.remove(name);
|
||||||
this.plugin.log(Level.INFO, "World '" + name + "' was removed from config.yml");
|
this.plugin.log(Level.INFO, "World '" + name + "' was removed from config.yml");
|
||||||
this.configWorlds.set("worlds." + name, null);
|
|
||||||
|
|
||||||
this.saveWorldsConfig();
|
this.saveWorldsConfig();
|
||||||
// Remove it from the list of unloaded worlds.
|
|
||||||
if (this.unloadedWorlds.contains(name)) {
|
|
||||||
this.unloadedWorlds.remove(name);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
this.plugin.log(Level.INFO, "World '" + name + "' was already removed from config.yml");
|
this.plugin.log(Level.INFO, "World '" + name + "' was already removed from config.yml");
|
||||||
@ -248,15 +226,17 @@ public class WorldManager implements MVWorldManager {
|
|||||||
if (this.unloadWorldFromBukkit(name, true)) {
|
if (this.unloadWorldFromBukkit(name, true)) {
|
||||||
this.worlds.remove(name);
|
this.worlds.remove(name);
|
||||||
this.plugin.log(Level.INFO, "World '" + name + "' was unloaded from memory.");
|
this.plugin.log(Level.INFO, "World '" + name + "' was unloaded from memory.");
|
||||||
this.unloadedWorlds.add(name);
|
|
||||||
|
this.worldsFromTheConfig.get(name).tearDown();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
this.plugin.log(Level.WARNING, "World '" + name + "' could not be unloaded. Is it a default world?");
|
this.plugin.log(Level.WARNING, "World '" + name + "' could not be unloaded. Is it a default world?");
|
||||||
}
|
}
|
||||||
} else if (this.plugin.getServer().getWorld(name) != null) {
|
} else if (this.plugin.getServer().getWorld(name) != null) {
|
||||||
this.plugin.log(Level.WARNING, "Hmm Multiverse does not know about this world but it's loaded in memory.");
|
this.plugin.log(Level.WARNING, "Hmm Multiverse does not know about this world but it's loaded in memory.");
|
||||||
this.plugin.log(Level.WARNING, "To unload it using multiverse, use:");
|
this.plugin.log(Level.WARNING, "To let Multiverse know about it, use:");
|
||||||
this.plugin.log(Level.WARNING, "/mv import " + name + " " + this.plugin.getServer().getWorld(name).getEnvironment().toString());
|
this.plugin.log(Level.WARNING, String.format("/mv import %s %s", name, this.plugin.getServer().getWorld(name).getEnvironment().toString()));
|
||||||
} else {
|
} else {
|
||||||
this.plugin.log(Level.INFO, "Multiverse does not know about " + name + " and it's not loaded by Bukkit.");
|
this.plugin.log(Level.INFO, "Multiverse does not know about " + name + " and it's not loaded by Bukkit.");
|
||||||
}
|
}
|
||||||
@ -270,36 +250,58 @@ public class WorldManager implements MVWorldManager {
|
|||||||
public boolean loadWorld(String name) {
|
public boolean loadWorld(String name) {
|
||||||
// Check if the World is already loaded
|
// Check if the World is already loaded
|
||||||
if (this.worlds.containsKey(name)) {
|
if (this.worlds.containsKey(name)) {
|
||||||
// Ensure it's not unloaded, since it IS loaded.
|
|
||||||
if (this.unloadedWorlds.contains(name)) {
|
|
||||||
this.unloadedWorlds.remove(name);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Grab all the Worlds from the Config.
|
// Check that the world is in the config
|
||||||
Set<String> worldKeys = this.configWorlds.getConfigurationSection("worlds").getKeys(false);
|
if (worldsFromTheConfig.containsKey(name)) {
|
||||||
|
return doLoad(name);
|
||||||
// Check that the list is not null and that the config contains the world
|
|
||||||
if ((worldKeys != null) && (worldKeys.contains(name))) {
|
|
||||||
// Grab the initial values from the config file.
|
|
||||||
String environment = this.configWorlds.getString("worlds." + name + ".environment", "NORMAL"); // Grab the Environment as a String.
|
|
||||||
String type = this.configWorlds.getString("worlds." + name + ".type", "NORMAL");
|
|
||||||
String seedString = this.configWorlds.getString("worlds." + name + ".seed", "");
|
|
||||||
String generatorString = this.configWorlds.getString("worlds." + name + ".generator");
|
|
||||||
boolean generateStructures = this.configWorlds.getBoolean("worlds." + name + ".generatestructures", true);
|
|
||||||
|
|
||||||
this.addWorld(name, EnvironmentCommand.getEnvFromString(environment), seedString,
|
|
||||||
EnvironmentCommand.getWorldTypeFromString(type), generateStructures, generatorString);
|
|
||||||
if (this.unloadedWorlds.contains(name)) {
|
|
||||||
this.unloadedWorlds.remove(name);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void brokenWorld(String name) {
|
||||||
|
this.plugin.log(Level.SEVERE, "The world '" + name + "' could NOT be loaded because it contains errors!");
|
||||||
|
this.plugin.log(Level.SEVERE, "Try using Chukster to repair your world! '" + name + "'");
|
||||||
|
this.plugin.log(Level.SEVERE, "http://forums.bukkit.org/threads/admin-chunkster.8186/");
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean doLoad(String name) {
|
||||||
|
if (!worldsFromTheConfig.containsKey(name))
|
||||||
|
throw new IllegalArgumentException("That world doesn't exist!");
|
||||||
|
|
||||||
|
MVWorld world = worldsFromTheConfig.get(name);
|
||||||
|
WorldCreator creator = WorldCreator.name(name);
|
||||||
|
|
||||||
|
creator.environment(world.getEnvironment()).seed(world.getSeed());
|
||||||
|
if ((world.getGenerator() != null) && (!world.getGenerator().equals("null")))
|
||||||
|
creator.generator(world.getGenerator());
|
||||||
|
|
||||||
|
return doLoad(creator);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean doLoad(WorldCreator creator) {
|
||||||
|
String worldName = creator.name();
|
||||||
|
if (!worldsFromTheConfig.containsKey(worldName))
|
||||||
|
throw new IllegalArgumentException("That world doesn't exist!");
|
||||||
|
if (worlds.containsKey(worldName))
|
||||||
|
throw new IllegalArgumentException("That world is already loaded!");
|
||||||
|
MVWorld mvworld = worldsFromTheConfig.get(worldName);
|
||||||
|
World cbworld;
|
||||||
|
try {
|
||||||
|
cbworld = creator.createWorld();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
brokenWorld(worldName);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
mvworld.init(cbworld, plugin);
|
||||||
|
this.worldPurger.purgeWorld(mvworld);
|
||||||
|
this.worlds.put(worldName, mvworld);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@ -471,30 +473,22 @@ public class WorldManager implements MVWorldManager {
|
|||||||
public void loadDefaultWorlds() {
|
public void loadDefaultWorlds() {
|
||||||
this.ensureConfigIsPrepared();
|
this.ensureConfigIsPrepared();
|
||||||
List<World> myWorlds = this.plugin.getServer().getWorlds();
|
List<World> myWorlds = this.plugin.getServer().getWorlds();
|
||||||
Set<String> worldStrings = this.configWorlds.getConfigurationSection("worlds").getKeys(false);
|
|
||||||
for (World w : myWorlds) {
|
for (World w : myWorlds) {
|
||||||
String name = w.getName();
|
String name = w.getName();
|
||||||
if (!worldStrings.contains(name)) {
|
if (!worldsFromTheConfig.containsKey(name)) {
|
||||||
|
String generator = null;
|
||||||
if (this.defaultGens.containsKey(name)) {
|
if (this.defaultGens.containsKey(name)) {
|
||||||
this.addWorld(name, w.getEnvironment(), w.getSeed() + "", w.getWorldType(),
|
generator = this.defaultGens.get(name);
|
||||||
w.canGenerateStructures(), this.defaultGens.get(name));
|
|
||||||
} else {
|
|
||||||
this.addWorld(name, w.getEnvironment(), w.getSeed() + "", w.getWorldType(),
|
|
||||||
w.canGenerateStructures(), null);
|
|
||||||
}
|
}
|
||||||
|
this.addWorld(name, w.getEnvironment(), String.valueOf(w.getSeed()), w.getWorldType(), w.canGenerateStructures(), generator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ensureConfigIsPrepared() {
|
private void ensureConfigIsPrepared() {
|
||||||
|
this.configWorlds.options().pathSeparator(SEPARATOR);
|
||||||
if (this.configWorlds.getConfigurationSection("worlds") == null) {
|
if (this.configWorlds.getConfigurationSection("worlds") == null) {
|
||||||
this.configWorlds.createSection("worlds");
|
this.configWorlds.createSection("worlds");
|
||||||
try {
|
|
||||||
this.configWorlds.save(new File(this.plugin.getDataFolder(), "worlds.yml"));
|
|
||||||
} catch (IOException e) {
|
|
||||||
this.plugin.log(Level.SEVERE, "Failed to save worlds.yml. Please check your file permissions.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -507,13 +501,10 @@ public class WorldManager implements MVWorldManager {
|
|||||||
int count = 0;
|
int count = 0;
|
||||||
this.ensureConfigIsPrepared();
|
this.ensureConfigIsPrepared();
|
||||||
this.ensureSecondNamespaceIsPrepared();
|
this.ensureSecondNamespaceIsPrepared();
|
||||||
// Grab all the Worlds from the Config.
|
|
||||||
Set<String> worldKeys = this.configWorlds.getConfigurationSection("worlds").getKeys(false);
|
|
||||||
|
|
||||||
// Force the worlds to be loaded, ie don't just load new worlds.
|
// Force the worlds to be loaded, ie don't just load new worlds.
|
||||||
if (forceLoad) {
|
if (forceLoad) {
|
||||||
// Remove all world permissions.
|
// Remove all world permissions.
|
||||||
|
|
||||||
Permission allAccess = this.plugin.getServer().getPluginManager().getPermission("multiverse.access.*");
|
Permission allAccess = this.plugin.getServer().getPluginManager().getPermission("multiverse.access.*");
|
||||||
Permission allExempt = this.plugin.getServer().getPluginManager().getPermission("multiverse.exempt.*");
|
Permission allExempt = this.plugin.getServer().getPluginManager().getPermission("multiverse.exempt.*");
|
||||||
for (MultiverseWorld w : this.worlds.values()) {
|
for (MultiverseWorld w : this.worlds.values()) {
|
||||||
@ -535,45 +526,19 @@ public class WorldManager implements MVWorldManager {
|
|||||||
this.worlds.clear();
|
this.worlds.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that the list is not null.
|
for (Map.Entry<String, MVWorld> entry : worldsFromTheConfig.entrySet()) {
|
||||||
if (worldKeys != null) {
|
if (worlds.containsKey(entry.getKey()))
|
||||||
for (String worldKey : worldKeys) {
|
continue;
|
||||||
// Check if the World is already loaded within the Plugin.
|
if (!entry.getValue().getAutoLoad())
|
||||||
if (this.worlds.containsKey(worldKey)) {
|
continue;
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If autoload was set to false, don't load this one.
|
if (doLoad(entry.getKey()))
|
||||||
if (!this.configWorlds.getBoolean("worlds." + worldKey + ".autoload", true)) {
|
|
||||||
if (!this.unloadedWorlds.contains(worldKey)) {
|
|
||||||
this.unloadedWorlds.add(worldKey);
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Grab the initial values from the config file.
|
|
||||||
String environment = this.configWorlds.getString("worlds." + worldKey + ".environment", "NORMAL");
|
|
||||||
String type = this.configWorlds.getString("worlds." + worldKey + ".type", "NORMAL");
|
|
||||||
String seedString = this.configWorlds.getString("worlds." + worldKey + ".seed", null);
|
|
||||||
boolean generateStructures = this.configWorlds.getBoolean("worlds." + worldKey + ".generatestructures", true);
|
|
||||||
if (seedString == null) {
|
|
||||||
seedString = this.configWorlds.getLong("worlds." + worldKey + ".seed") + "";
|
|
||||||
}
|
|
||||||
|
|
||||||
String generatorString = this.configWorlds.getString("worlds." + worldKey + ".generator");
|
|
||||||
if (environment.equalsIgnoreCase("skylands")) {
|
|
||||||
this.plugin.log(Level.WARNING, "Found SKYLANDS world. Not importing automatically, as it won't work atm :(");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
addWorld(worldKey, EnvironmentCommand.getEnvFromString(environment), seedString,
|
|
||||||
EnvironmentCommand.getWorldTypeFromString(type), generateStructures, generatorString);
|
|
||||||
|
|
||||||
// Increment the world count
|
|
||||||
count++;
|
count++;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Simple Output to the Console to show how many Worlds were loaded.
|
// Simple Output to the Console to show how many Worlds were loaded.
|
||||||
this.plugin.log(Level.INFO, count + " - World(s) loaded.");
|
this.plugin.log(Level.INFO, count + " - World(s) loaded.");
|
||||||
|
this.saveWorldsConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ensureSecondNamespaceIsPrepared() {
|
private void ensureSecondNamespaceIsPrepared() {
|
||||||
@ -602,15 +567,54 @@ public class WorldManager implements MVWorldManager {
|
|||||||
return worldPurger;
|
return worldPurger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final char SEPARATOR = '\uF8FF';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load the config from a file.
|
* {@inheritDoc}
|
||||||
*
|
|
||||||
* @param file The file to load.
|
|
||||||
* @return A loaded configuration.
|
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public FileConfiguration loadWorldConfig(File file) {
|
public FileConfiguration loadWorldConfig(File file) {
|
||||||
this.configWorlds = YamlConfiguration.loadConfiguration(file);
|
this.configWorlds = YamlConfiguration.loadConfiguration(file);
|
||||||
|
this.ensureConfigIsPrepared();
|
||||||
|
try {
|
||||||
|
this.configWorlds.save(new File(this.plugin.getDataFolder(), "worlds.yml"));
|
||||||
|
} catch (IOException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
// load world-objects
|
||||||
|
Stack<String> worldKeys = new Stack<String>();
|
||||||
|
worldKeys.addAll(this.configWorlds.getConfigurationSection("worlds").getKeys(false));
|
||||||
|
Map<String, MVWorld> newWorldsFromTheConfig = new HashMap<String, MVWorld>();
|
||||||
|
while (!worldKeys.isEmpty()) {
|
||||||
|
String key = worldKeys.pop();
|
||||||
|
String path = "worlds" + SEPARATOR + key;
|
||||||
|
Object obj = this.configWorlds.get(path);
|
||||||
|
if ((obj != null) && (obj instanceof MVWorld)) {
|
||||||
|
String worldName = key.replaceAll(String.valueOf(SEPARATOR), ".");
|
||||||
|
if (this.worldsFromTheConfig.containsKey(worldName)) {
|
||||||
|
// Object-Recycling :D
|
||||||
|
MVWorld oldMVWorld = (MVWorld) this.worlds.get(worldName);
|
||||||
|
oldMVWorld.copyValues((MVWorld) obj);
|
||||||
|
newWorldsFromTheConfig.put(worldName, oldMVWorld);
|
||||||
|
} else {
|
||||||
|
// we have to use a new one
|
||||||
|
World cbworld = this.plugin.getServer().getWorld(worldName);
|
||||||
|
MVWorld mvworld = (MVWorld) obj;
|
||||||
|
if (cbworld != null)
|
||||||
|
mvworld.init(cbworld, this.plugin);
|
||||||
|
newWorldsFromTheConfig.put(worldName, mvworld);
|
||||||
|
}
|
||||||
|
} else if (this.configWorlds.isConfigurationSection(path)) {
|
||||||
|
ConfigurationSection section = this.configWorlds.getConfigurationSection(path);
|
||||||
|
Set<String> subkeys = section.getKeys(false);
|
||||||
|
for (String subkey : subkeys) {
|
||||||
|
worldKeys.push(key + SEPARATOR + subkey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.worldsFromTheConfig = newWorldsFromTheConfig;
|
||||||
|
this.worlds.keySet().retainAll(this.worldsFromTheConfig.keySet());
|
||||||
return this.configWorlds;
|
return this.configWorlds;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -620,6 +624,11 @@ public class WorldManager implements MVWorldManager {
|
|||||||
@Override
|
@Override
|
||||||
public boolean saveWorldsConfig() {
|
public boolean saveWorldsConfig() {
|
||||||
try {
|
try {
|
||||||
|
this.configWorlds.options().pathSeparator(SEPARATOR);
|
||||||
|
this.configWorlds.set("worlds", null);
|
||||||
|
for (Map.Entry<String, ? extends MultiverseWorld> entry : worldsFromTheConfig.entrySet()) {
|
||||||
|
this.configWorlds.set("worlds" + SEPARATOR + entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
this.configWorlds.save(new File(this.plugin.getDataFolder(), "worlds.yml"));
|
this.configWorlds.save(new File(this.plugin.getDataFolder(), "worlds.yml"));
|
||||||
return true;
|
return true;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@ -641,7 +650,9 @@ public class WorldManager implements MVWorldManager {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<String> getUnloadedWorlds() {
|
public List<String> getUnloadedWorlds() {
|
||||||
return this.unloadedWorlds;
|
List<String> allNames = new ArrayList<String>(this.worldsFromTheConfig.keySet());
|
||||||
|
allNames.removeAll(worlds.keySet());
|
||||||
|
return allNames;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.onarandombox.MultiverseCore.utils.webpaste;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An {@link URLShortener} using {@code bit.ly}.
|
||||||
|
*/
|
||||||
|
public class BitlyURLShortener extends HttpAPIClient implements URLShortener {
|
||||||
|
private static final String GENERIC_BITLY_REQUEST_FORMAT = "https://api-ssl.bitly.com/v3/shorten?format=txt&apiKey=%s&login=%s&longUrl=%s";
|
||||||
|
|
||||||
|
// I think it's no problem that these are public
|
||||||
|
private static final String USERNAME = "multiverse2";
|
||||||
|
private static final String API_KEY = "R_9dbff4862a3bc0c4218a7d78cc10d0e0";
|
||||||
|
|
||||||
|
public BitlyURLShortener() {
|
||||||
|
super(String.format(GENERIC_BITLY_REQUEST_FORMAT, API_KEY, USERNAME, "%s"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String shorten(String longUrl) {
|
||||||
|
try {
|
||||||
|
String result = this.exec(longUrl);
|
||||||
|
if (!result.startsWith("http://j.mp/")) // ... then it's failed :/
|
||||||
|
throw new IOException(result);
|
||||||
|
return result;
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return longUrl; // sorry ...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,50 @@
|
|||||||
|
package com.onarandombox.MultiverseCore.utils.webpaste;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLConnection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HTTP API-client.
|
||||||
|
*/
|
||||||
|
public abstract class HttpAPIClient {
|
||||||
|
/**
|
||||||
|
* The URL for this API-request.
|
||||||
|
*/
|
||||||
|
protected final String urlFormat;
|
||||||
|
|
||||||
|
public HttpAPIClient(String urlFormat) {
|
||||||
|
this.urlFormat = urlFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Executes this API-Request.
|
||||||
|
* @param args Format-args.
|
||||||
|
* @return The result (as text).
|
||||||
|
* @throws IOException When the I/O-operation failed.
|
||||||
|
*/
|
||||||
|
protected final String exec(Object... args) throws IOException {
|
||||||
|
|
||||||
|
URLConnection conn = new URL(String.format(this.urlFormat, args)).openConnection();
|
||||||
|
conn.connect();
|
||||||
|
StringBuilder ret = new StringBuilder();
|
||||||
|
BufferedReader reader = null;
|
||||||
|
try {
|
||||||
|
reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
|
||||||
|
while (!reader.ready()); // wait until reader is ready, may not be necessary, SUPPRESS CHECKSTYLE: EmptyStatement
|
||||||
|
|
||||||
|
while (reader.ready()) {
|
||||||
|
ret.append(reader.readLine()).append('\n');
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (reader != null) {
|
||||||
|
try {
|
||||||
|
reader.close();
|
||||||
|
} catch (IOException ignore) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package com.onarandombox.MultiverseCore.utils.webpaste;
|
package com.onarandombox.MultiverseCore.utils.webpaste;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.OutputStreamWriter;
|
import java.io.OutputStreamWriter;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
@ -8,7 +9,6 @@ import java.net.MalformedURLException;
|
|||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLConnection;
|
import java.net.URLConnection;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pastes to {@code pastebin.com}.
|
* Pastes to {@code pastebin.com}.
|
||||||
@ -55,38 +55,35 @@ public class PastebinPasteService implements PasteService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String postData(String encodedData, URL url) throws PasteFailedException {
|
public String postData(String encodedData, URL url) throws PasteFailedException {
|
||||||
|
OutputStreamWriter wr = null;
|
||||||
|
BufferedReader rd = null;
|
||||||
try {
|
try {
|
||||||
URLConnection conn = url.openConnection();
|
URLConnection conn = url.openConnection();
|
||||||
conn.setDoOutput(true);
|
conn.setDoOutput(true);
|
||||||
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
|
wr = new OutputStreamWriter(conn.getOutputStream());
|
||||||
wr.write(encodedData);
|
wr.write(encodedData);
|
||||||
wr.flush();
|
wr.flush();
|
||||||
|
|
||||||
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
|
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
|
||||||
String line;
|
String line;
|
||||||
String pastebinUrl = "";
|
String pastebinUrl = "";
|
||||||
while ((line = rd.readLine()) != null) {
|
while ((line = rd.readLine()) != null) {
|
||||||
pastebinUrl = line;
|
pastebinUrl = line;
|
||||||
}
|
}
|
||||||
wr.close();
|
|
||||||
rd.close();
|
|
||||||
return pastebinUrl;
|
return pastebinUrl;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new PasteFailedException(e);
|
throw new PasteFailedException(e);
|
||||||
|
} finally {
|
||||||
|
if (wr != null) {
|
||||||
|
try {
|
||||||
|
wr.close();
|
||||||
|
} catch (IOException ignore) { }
|
||||||
|
}
|
||||||
|
if (rd != null) {
|
||||||
|
try {
|
||||||
|
rd.close();
|
||||||
|
} catch (IOException ignore) { }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO maybe remove this?
|
|
||||||
private Pattern getURLMatchingPattern() {
|
|
||||||
if (this.isPrivate) {
|
|
||||||
return Pattern.compile(".*http://pastie.org/.*key=([0-9a-z]+).*");
|
|
||||||
} else {
|
|
||||||
return Pattern.compile(".*http://pastie.org/([0-9]+).*");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO maybe remove this?
|
|
||||||
private String formatURL(String pastieID) {
|
|
||||||
return "http://pastie.org/" + (this.isPrivate ? "private/" : "") + pastieID;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.onarandombox.MultiverseCore.utils.webpaste;
|
package com.onarandombox.MultiverseCore.utils.webpaste;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.OutputStreamWriter;
|
import java.io.OutputStreamWriter;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
@ -55,14 +56,16 @@ public class PastiePasteService implements PasteService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String postData(String encodedData, URL url) throws PasteFailedException {
|
public String postData(String encodedData, URL url) throws PasteFailedException {
|
||||||
|
OutputStreamWriter wr = null;
|
||||||
|
BufferedReader rd = null;
|
||||||
try {
|
try {
|
||||||
URLConnection conn = url.openConnection();
|
URLConnection conn = url.openConnection();
|
||||||
conn.setDoOutput(true);
|
conn.setDoOutput(true);
|
||||||
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
|
wr = new OutputStreamWriter(conn.getOutputStream());
|
||||||
wr.write(encodedData);
|
wr.write(encodedData);
|
||||||
wr.flush();
|
wr.flush();
|
||||||
|
|
||||||
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
|
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
|
||||||
String line;
|
String line;
|
||||||
String pastieUrl = "";
|
String pastieUrl = "";
|
||||||
Pattern pastiePattern = this.getURLMatchingPattern();
|
Pattern pastiePattern = this.getURLMatchingPattern();
|
||||||
@ -73,11 +76,20 @@ public class PastiePasteService implements PasteService {
|
|||||||
pastieUrl = this.formatURL(pastieID);
|
pastieUrl = this.formatURL(pastieID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wr.close();
|
|
||||||
rd.close();
|
|
||||||
return pastieUrl;
|
return pastieUrl;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new PasteFailedException(e);
|
throw new PasteFailedException(e);
|
||||||
|
} finally {
|
||||||
|
if (wr != null) {
|
||||||
|
try {
|
||||||
|
wr.close();
|
||||||
|
} catch (IOException ignore) { }
|
||||||
|
}
|
||||||
|
if (rd != null) {
|
||||||
|
try {
|
||||||
|
rd.close();
|
||||||
|
} catch (IOException ignore) { }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.onarandombox.MultiverseCore.utils.webpaste;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* URL-Shortener.
|
||||||
|
*/
|
||||||
|
public interface URLShortener {
|
||||||
|
/**
|
||||||
|
* Shorten an URL.
|
||||||
|
* @param longUrl The long form.
|
||||||
|
* @return The shortened URL.
|
||||||
|
*/
|
||||||
|
String shorten(String longUrl);
|
||||||
|
}
|
@ -20,6 +20,7 @@ import org.bukkit.Server;
|
|||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Ignore;
|
import org.junit.Ignore;
|
||||||
@ -33,7 +34,7 @@ import com.onarandombox.MultiverseCore.api.Core;
|
|||||||
import com.onarandombox.MultiverseCore.test.utils.TestInstanceCreator;
|
import com.onarandombox.MultiverseCore.test.utils.TestInstanceCreator;
|
||||||
|
|
||||||
@RunWith(PowerMockRunner.class)
|
@RunWith(PowerMockRunner.class)
|
||||||
@PrepareForTest({ MultiverseCore.class })
|
@PrepareForTest({ MultiverseCore.class, PluginDescriptionFile.class })
|
||||||
public class TestDebugMode {
|
public class TestDebugMode {
|
||||||
TestInstanceCreator creator;
|
TestInstanceCreator creator;
|
||||||
Server mockServer;
|
Server mockServer;
|
||||||
|
@ -20,6 +20,7 @@ import java.util.Locale;
|
|||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -36,7 +37,7 @@ import com.onarandombox.MultiverseCore.localization.SimpleMessageProvider;
|
|||||||
import com.onarandombox.MultiverseCore.test.utils.TestInstanceCreator;
|
import com.onarandombox.MultiverseCore.test.utils.TestInstanceCreator;
|
||||||
|
|
||||||
@RunWith(PowerMockRunner.class)
|
@RunWith(PowerMockRunner.class)
|
||||||
@PrepareForTest({ MultiverseCore.class })
|
@PrepareForTest({ MultiverseCore.class, PluginDescriptionFile.class })
|
||||||
public class TestLocalization {
|
public class TestLocalization {
|
||||||
TestInstanceCreator creator;
|
TestInstanceCreator creator;
|
||||||
Server mockServer;
|
Server mockServer;
|
||||||
|
@ -0,0 +1,61 @@
|
|||||||
|
package com.onarandombox.MultiverseCore.test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
import org.bukkit.Server;
|
||||||
|
import org.bukkit.World.Environment;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||||
|
import org.powermock.modules.junit4.PowerMockRunner;
|
||||||
|
|
||||||
|
import com.onarandombox.MultiverseCore.MultiverseCore;
|
||||||
|
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
||||||
|
import com.onarandombox.MultiverseCore.test.utils.TestInstanceCreator;
|
||||||
|
|
||||||
|
|
||||||
|
@RunWith(PowerMockRunner.class)
|
||||||
|
@PrepareForTest({ MultiverseCore.class, PluginDescriptionFile.class })
|
||||||
|
public class TestModifyCommand {
|
||||||
|
TestInstanceCreator creator;
|
||||||
|
Server mockServer;
|
||||||
|
MultiverseCore core;
|
||||||
|
CommandSender mockCommandSender;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() throws Exception {
|
||||||
|
creator = new TestInstanceCreator();
|
||||||
|
assertTrue(creator.setUp());
|
||||||
|
mockServer = creator.getServer();
|
||||||
|
mockCommandSender = creator.getCommandSender();
|
||||||
|
core = creator.getCore();
|
||||||
|
|
||||||
|
// create world
|
||||||
|
assertTrue(core.getMVWorldManager().addWorld("world", Environment.NORMAL, null, null, null, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void tearDown() throws Exception {
|
||||||
|
creator.tearDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSetHidden() {
|
||||||
|
Command cmd = mock(Command.class);
|
||||||
|
when(cmd.getName()).thenReturn("mv");
|
||||||
|
|
||||||
|
MultiverseWorld world = core.getMVWorldManager().getMVWorld("world");
|
||||||
|
assertNotNull(world);
|
||||||
|
|
||||||
|
assertFalse(world.isHidden()); // ensure it's not hidden now
|
||||||
|
assertTrue(core.onCommand(mockCommandSender, cmd, "", // run the command
|
||||||
|
new String[] { "modify", "set", "hidden", "true", "world" }));
|
||||||
|
assertTrue(world.isHidden()); // test if it worked
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,91 @@
|
|||||||
|
package com.onarandombox.MultiverseCore.test;
|
||||||
|
|
||||||
|
import com.onarandombox.MultiverseCore.MultiverseCore;
|
||||||
|
import com.onarandombox.MultiverseCore.test.utils.TestInstanceCreator;
|
||||||
|
import com.onarandombox.MultiverseCore.utils.WorldManager;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.configuration.Configuration;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Ignore;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.internal.verification.VerificationModeFactory;
|
||||||
|
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||||
|
import org.powermock.modules.junit4.PowerMockRunner;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
@RunWith(PowerMockRunner.class)
|
||||||
|
@PrepareForTest({ MultiverseCore.class, PluginDescriptionFile.class })
|
||||||
|
public class TestWorldCreation {
|
||||||
|
|
||||||
|
private TestInstanceCreator creator;
|
||||||
|
private MultiverseCore core;
|
||||||
|
private CommandSender mockCommandSender;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() throws Exception {
|
||||||
|
this.creator = new TestInstanceCreator();
|
||||||
|
assertTrue(this.creator.setUp());
|
||||||
|
this.core = this.creator.getCore();
|
||||||
|
this.mockCommandSender = this.creator.getCommandSender();
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void tearDown() throws Exception {
|
||||||
|
creator.tearDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Ignore
|
||||||
|
public void test() {
|
||||||
|
// Initialize a fake command
|
||||||
|
Command mockCommand = mock(Command.class);
|
||||||
|
when(mockCommand.getName()).thenReturn("mv");
|
||||||
|
|
||||||
|
// Try to create a world that exists
|
||||||
|
String[] normalArgs = new String[] { "create", "world", "normal" };
|
||||||
|
core.onCommand(mockCommandSender, mockCommand, "", normalArgs);
|
||||||
|
verify(mockCommandSender).sendMessage(ChatColor.RED + "A Folder/World already exists with this name!");
|
||||||
|
verify(mockCommandSender).sendMessage(ChatColor.RED + "If you are confident it is a world you can import with /mvimport");
|
||||||
|
|
||||||
|
// Try to create a world that is new
|
||||||
|
String[] newArgs = new String[] { "create", "world2", "normal" };
|
||||||
|
core.onCommand(mockCommandSender, mockCommand, "", newArgs);
|
||||||
|
verify(mockCommandSender).sendMessage("Starting creation of world 'world2'...");
|
||||||
|
|
||||||
|
String[] dottedWorld = new String[] { "create", "fish.world", "normal" };
|
||||||
|
core.onCommand(mockCommandSender, mockCommand, "", dottedWorld);
|
||||||
|
verify(mockCommandSender).sendMessage("Starting creation of world 'fish.world'...");
|
||||||
|
verify(mockCommandSender, VerificationModeFactory.times(2)).sendMessage("Complete!");
|
||||||
|
|
||||||
|
// Grab the Config
|
||||||
|
Field worldConfigField = null;
|
||||||
|
ConfigurationSection worldsSection = null;
|
||||||
|
try {
|
||||||
|
worldConfigField = WorldManager.class.getDeclaredField("configWorlds");
|
||||||
|
worldConfigField.setAccessible(true);
|
||||||
|
Configuration rootConfig = (Configuration) worldConfigField.get(this.core.getMVWorldManager());
|
||||||
|
worldsSection = rootConfig.getConfigurationSection("worlds");
|
||||||
|
} catch (NoSuchFieldException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify that the world was added to the configs
|
||||||
|
// TODO: Expand this.
|
||||||
|
assertNotNull(worldsSection);
|
||||||
|
assertEquals(2, worldsSection.getKeys(false).size());
|
||||||
|
assertTrue(worldsSection.getKeys(false).contains("world2"));
|
||||||
|
assertTrue(worldsSection.getKeys(false).contains("fish.world"));
|
||||||
|
}
|
||||||
|
}
|
@ -12,15 +12,17 @@ import static org.mockito.Matchers.any;
|
|||||||
import static org.mockito.Matchers.anyString;
|
import static org.mockito.Matchers.anyString;
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Difficulty;
|
import org.bukkit.Difficulty;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.bukkit.entity.HumanEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.entity.EntityRegainHealthEvent;
|
import org.bukkit.event.entity.EntityRegainHealthEvent;
|
||||||
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
|
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
|
||||||
@ -31,10 +33,10 @@ import org.bukkit.event.player.PlayerRespawnEvent;
|
|||||||
import org.bukkit.event.weather.ThunderChangeEvent;
|
import org.bukkit.event.weather.ThunderChangeEvent;
|
||||||
import org.bukkit.event.weather.WeatherChangeEvent;
|
import org.bukkit.event.weather.WeatherChangeEvent;
|
||||||
import org.bukkit.permissions.Permission;
|
import org.bukkit.permissions.Permission;
|
||||||
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Ignore;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.internal.verification.VerificationModeFactory;
|
import org.mockito.internal.verification.VerificationModeFactory;
|
||||||
@ -42,9 +44,11 @@ import org.powermock.api.mockito.PowerMockito;
|
|||||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||||
import org.powermock.modules.junit4.PowerMockRunner;
|
import org.powermock.modules.junit4.PowerMockRunner;
|
||||||
|
|
||||||
|
import com.onarandombox.MultiverseCore.MVWorld;
|
||||||
import com.onarandombox.MultiverseCore.MultiverseCore;
|
import com.onarandombox.MultiverseCore.MultiverseCore;
|
||||||
import com.onarandombox.MultiverseCore.api.MVWorldManager;
|
import com.onarandombox.MultiverseCore.api.MVWorldManager;
|
||||||
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
||||||
|
import com.onarandombox.MultiverseCore.configuration.SpawnLocation;
|
||||||
import com.onarandombox.MultiverseCore.test.utils.TestInstanceCreator;
|
import com.onarandombox.MultiverseCore.test.utils.TestInstanceCreator;
|
||||||
import com.onarandombox.MultiverseCore.utils.WorldManager;
|
import com.onarandombox.MultiverseCore.utils.WorldManager;
|
||||||
|
|
||||||
@ -52,9 +56,8 @@ import com.onarandombox.MultiverseCore.utils.WorldManager;
|
|||||||
@PrepareForTest({ PluginManager.class, MultiverseCore.class, Permission.class, Bukkit.class,
|
@PrepareForTest({ PluginManager.class, MultiverseCore.class, Permission.class, Bukkit.class,
|
||||||
WeatherChangeEvent.class, ThunderChangeEvent.class, PlayerChatEvent.class,
|
WeatherChangeEvent.class, ThunderChangeEvent.class, PlayerChatEvent.class,
|
||||||
PlayerJoinEvent.class, PlayerRespawnEvent.class, EntityRegainHealthEvent.class,
|
PlayerJoinEvent.class, PlayerRespawnEvent.class, EntityRegainHealthEvent.class,
|
||||||
FoodLevelChangeEvent.class, WorldManager.class })
|
FoodLevelChangeEvent.class, WorldManager.class, PluginDescriptionFile.class })
|
||||||
public class TestWorldProperties {
|
public class TestWorldProperties {
|
||||||
|
|
||||||
private TestInstanceCreator creator;
|
private TestInstanceCreator creator;
|
||||||
private MultiverseCore core;
|
private MultiverseCore core;
|
||||||
private CommandSender mockCommandSender;
|
private CommandSender mockCommandSender;
|
||||||
@ -71,7 +74,7 @@ public class TestWorldProperties {
|
|||||||
private PlayerJoinEvent playerJoinEvent;
|
private PlayerJoinEvent playerJoinEvent;
|
||||||
private PlayerRespawnEvent playerRespawnBed;
|
private PlayerRespawnEvent playerRespawnBed;
|
||||||
private PlayerRespawnEvent playerRespawnNormal;
|
private PlayerRespawnEvent playerRespawnNormal;
|
||||||
private Entity mockEntity;
|
private HumanEntity mockHumanEntity;
|
||||||
private EntityRegainHealthEvent entityRegainHealthEvent;
|
private EntityRegainHealthEvent entityRegainHealthEvent;
|
||||||
private FoodLevelChangeEvent entityFoodLevelChangeEvent;
|
private FoodLevelChangeEvent entityFoodLevelChangeEvent;
|
||||||
private FoodLevelChangeEvent entityFoodLevelRiseEvent;
|
private FoodLevelChangeEvent entityFoodLevelRiseEvent;
|
||||||
@ -90,7 +93,7 @@ public class TestWorldProperties {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test() {
|
public void test() throws Exception {
|
||||||
// Initialize a fake command
|
// Initialize a fake command
|
||||||
Command mockCommand = mock(Command.class);
|
Command mockCommand = mock(Command.class);
|
||||||
when(mockCommand.getName()).thenReturn("mv");
|
when(mockCommand.getName()).thenReturn("mv");
|
||||||
@ -128,12 +131,9 @@ public class TestWorldProperties {
|
|||||||
assertEquals(mvWorld.getName(), mvWorld.getAlias());
|
assertEquals(mvWorld.getName(), mvWorld.getAlias());
|
||||||
assertEquals(ChatColor.WHITE, mvWorld.getColor());
|
assertEquals(ChatColor.WHITE, mvWorld.getColor());
|
||||||
assertTrue(mvWorld.isPVPEnabled());
|
assertTrue(mvWorld.isPVPEnabled());
|
||||||
assertEquals((Object) 1D, (Object) mvWorld.getScaling()); // we're casting this to objects to use
|
assertEquals(1D, mvWorld.getScaling(), 0);
|
||||||
// assertEquals(Object,Object) instead of assertEquals(double,double)
|
|
||||||
assertNull(mvWorld.getRespawnToWorld());
|
assertNull(mvWorld.getRespawnToWorld());
|
||||||
assertTrue(mvWorld.isWeatherEnabled());
|
assertTrue(mvWorld.isWeatherEnabled());
|
||||||
World cbWorld = mvWorld.getCBWorld();
|
|
||||||
when(cbWorld.getDifficulty()).thenReturn(Difficulty.NORMAL);
|
|
||||||
assertEquals(Difficulty.NORMAL, mvWorld.getDifficulty());
|
assertEquals(Difficulty.NORMAL, mvWorld.getDifficulty());
|
||||||
assertTrue(mvWorld.canAnimalsSpawn());
|
assertTrue(mvWorld.canAnimalsSpawn());
|
||||||
assertTrue(mvWorld.canMonstersSpawn());
|
assertTrue(mvWorld.canMonstersSpawn());
|
||||||
@ -146,7 +146,7 @@ public class TestWorldProperties {
|
|||||||
assertTrue(mvWorld.isKeepingSpawnInMemory());
|
assertTrue(mvWorld.isKeepingSpawnInMemory());
|
||||||
assertTrue(mvWorld.getBedRespawn());
|
assertTrue(mvWorld.getBedRespawn());
|
||||||
assertTrue(mvWorld.getAutoLoad());
|
assertTrue(mvWorld.getAutoLoad());
|
||||||
assertEquals(new Location(mvWorld.getCBWorld(), 0, 64, 0), mvWorld.getSpawnLocation());
|
assertEquals(new SpawnLocation(0, 64, 0), mvWorld.getSpawnLocation());
|
||||||
|
|
||||||
/* ****************************************** *
|
/* ****************************************** *
|
||||||
* Call some events and verify behavior
|
* Call some events and verify behavior
|
||||||
@ -200,24 +200,21 @@ public class TestWorldProperties {
|
|||||||
mvWorld.setAlias("alias");
|
mvWorld.setAlias("alias");
|
||||||
assertEquals("alias", mvWorld.getAlias());
|
assertEquals("alias", mvWorld.getAlias());
|
||||||
assertTrue(mvWorld.setColor("BLACK"));
|
assertTrue(mvWorld.setColor("BLACK"));
|
||||||
ChatColor oldColor = mvWorld.getColor();
|
|
||||||
assertFalse(mvWorld.setColor("INVALID COLOR"));
|
assertFalse(mvWorld.setColor("INVALID COLOR"));
|
||||||
assertEquals(oldColor, mvWorld.getColor());
|
assertEquals(ChatColor.BLACK, mvWorld.getColor());
|
||||||
assertEquals(oldColor.toString() + "alias" + ChatColor.WHITE.toString(), mvWorld.getColoredWorldString());
|
assertEquals(ChatColor.BLACK.toString() + "alias" + ChatColor.WHITE.toString(), mvWorld.getColoredWorldString());
|
||||||
mvWorld.setPVPMode(false);
|
mvWorld.setPVPMode(false);
|
||||||
assertEquals(false, mvWorld.isPVPEnabled());
|
assertEquals(false, mvWorld.isPVPEnabled());
|
||||||
assertTrue(mvWorld.setScaling(2D));
|
assertTrue(mvWorld.setScaling(2D));
|
||||||
assertEquals((Object) 2D, (Object) mvWorld.getScaling());
|
assertEquals(2D, mvWorld.getScaling(), 0);
|
||||||
assertFalse(mvWorld.setRespawnToWorld("INVALID WORLD"));
|
assertFalse(mvWorld.setRespawnToWorld("INVALID WORLD"));
|
||||||
assertTrue(mvWorld.setRespawnToWorld("world_nether"));
|
assertTrue(mvWorld.setRespawnToWorld("world_nether"));
|
||||||
assertSame(worldManager.getMVWorld("world_nether").getCBWorld(),
|
assertSame(worldManager.getMVWorld("world_nether").getCBWorld(),
|
||||||
mvWorld.getRespawnToWorld());
|
mvWorld.getRespawnToWorld());
|
||||||
mvWorld.setEnableWeather(false);
|
mvWorld.setEnableWeather(false);
|
||||||
assertEquals(false, mvWorld.isWeatherEnabled());
|
assertEquals(false, mvWorld.isWeatherEnabled());
|
||||||
assertTrue(mvWorld.setDifficulty("PEACEFUL"));
|
assertTrue(mvWorld.setDifficulty(Difficulty.PEACEFUL));
|
||||||
Difficulty oldDifficulty = mvWorld.getDifficulty();
|
assertEquals(Difficulty.PEACEFUL, mvWorld.getDifficulty());
|
||||||
assertFalse(mvWorld.setDifficulty("INVALID DIFFICULTY"));
|
|
||||||
assertEquals(oldDifficulty, mvWorld.getDifficulty());
|
|
||||||
mvWorld.setAllowAnimalSpawn(false);
|
mvWorld.setAllowAnimalSpawn(false);
|
||||||
assertEquals(false, mvWorld.canAnimalsSpawn());
|
assertEquals(false, mvWorld.canAnimalsSpawn());
|
||||||
mvWorld.setAllowMonsterSpawn(false);
|
mvWorld.setAllowMonsterSpawn(false);
|
||||||
@ -225,17 +222,15 @@ public class TestWorldProperties {
|
|||||||
mvWorld.setCurrency(1);
|
mvWorld.setCurrency(1);
|
||||||
assertEquals(1, mvWorld.getCurrency());
|
assertEquals(1, mvWorld.getCurrency());
|
||||||
mvWorld.setPrice(1D);
|
mvWorld.setPrice(1D);
|
||||||
assertEquals((Object) 1D, (Object) mvWorld.getPrice());
|
assertEquals(1D, mvWorld.getPrice(), 0);
|
||||||
mvWorld.setHunger(false);
|
mvWorld.setHunger(false);
|
||||||
assertEquals(false, mvWorld.getHunger());
|
assertEquals(false, mvWorld.getHunger());
|
||||||
mvWorld.setAutoHeal(false);
|
mvWorld.setAutoHeal(false);
|
||||||
assertEquals(false, mvWorld.getAutoHeal());
|
assertEquals(false, mvWorld.getAutoHeal());
|
||||||
mvWorld.setAdjustSpawn(false);
|
mvWorld.setAdjustSpawn(false);
|
||||||
assertEquals(false, mvWorld.getAdjustSpawn());
|
assertEquals(false, mvWorld.getAdjustSpawn());
|
||||||
assertTrue(mvWorld.setGameMode("CREATIVE"));
|
assertTrue(mvWorld.setGameMode(GameMode.CREATIVE));
|
||||||
GameMode oldGamemode = mvWorld.getGameMode();
|
assertEquals(GameMode.CREATIVE, mvWorld.getGameMode());
|
||||||
assertFalse(mvWorld.setGameMode("INVALID GAMEMODE"));
|
|
||||||
assertEquals(oldGamemode, mvWorld.getGameMode());
|
|
||||||
mvWorld.setKeepSpawnInMemory(false);
|
mvWorld.setKeepSpawnInMemory(false);
|
||||||
assertEquals(false, mvWorld.isKeepingSpawnInMemory());
|
assertEquals(false, mvWorld.isKeepingSpawnInMemory());
|
||||||
mvWorld.setBedRespawn(false);
|
mvWorld.setBedRespawn(false);
|
||||||
@ -243,7 +238,8 @@ public class TestWorldProperties {
|
|||||||
mvWorld.setAutoLoad(false);
|
mvWorld.setAutoLoad(false);
|
||||||
assertEquals(false, mvWorld.getAutoLoad());
|
assertEquals(false, mvWorld.getAutoLoad());
|
||||||
mvWorld.setSpawnLocation(new Location(mvWorld.getCBWorld(), 1, 1, 1));
|
mvWorld.setSpawnLocation(new Location(mvWorld.getCBWorld(), 1, 1, 1));
|
||||||
assertEquals(new Location(mvWorld.getCBWorld(), 1, 1, 1), mvWorld.getSpawnLocation());
|
assertEquals(new SpawnLocation(1, 1, 1), mvWorld.getSpawnLocation());
|
||||||
|
|
||||||
|
|
||||||
/* ****************************************** *
|
/* ****************************************** *
|
||||||
* Call some events and verify behavior
|
* Call some events and verify behavior
|
||||||
@ -275,12 +271,13 @@ public class TestWorldProperties {
|
|||||||
core.getMVConfig().setPrefixChat(false);
|
core.getMVConfig().setPrefixChat(false);
|
||||||
core.getPlayerListener().playerChat(playerChatEvent);
|
core.getPlayerListener().playerChat(playerChatEvent);
|
||||||
verify(playerChatEvent, times(1)).setFormat(anyString()); // only ONE TIME (not the 2nd time!)
|
verify(playerChatEvent, times(1)).setFormat(anyString()); // only ONE TIME (not the 2nd time!)
|
||||||
|
mvWorld.setHidden(true); // reset hidden-state
|
||||||
|
|
||||||
// call player join events
|
// call player join events
|
||||||
core.getPlayerListener().playerJoin(playerJoinEvent);
|
core.getPlayerListener().playerJoin(playerJoinEvent);
|
||||||
verify(mockPlayer, never()).teleport(any(Location.class));
|
verify(mockPlayer, never()).teleport(any(Location.class));
|
||||||
core.getPlayerListener().playerJoin(playerNewJoinEvent);
|
core.getPlayerListener().playerJoin(playerNewJoinEvent);
|
||||||
verify(mockNewPlayer).teleport(new Location(mvWorld.getCBWorld(), 1, 1, 1));
|
verify(mockNewPlayer).teleport(new SpawnLocation(1, 1, 1));
|
||||||
|
|
||||||
// call player respawn events
|
// call player respawn events
|
||||||
core.getPlayerListener().playerRespawn(playerRespawnBed);
|
core.getPlayerListener().playerRespawn(playerRespawnBed);
|
||||||
@ -293,6 +290,44 @@ public class TestWorldProperties {
|
|||||||
core.getEntityListener().entityRegainHealth(entityRegainHealthEvent);
|
core.getEntityListener().entityRegainHealth(entityRegainHealthEvent);
|
||||||
// autoheal is off so something should happen
|
// autoheal is off so something should happen
|
||||||
verify(entityRegainHealthEvent).setCancelled(true);
|
verify(entityRegainHealthEvent).setCancelled(true);
|
||||||
|
|
||||||
|
|
||||||
|
/* ****************************************** *
|
||||||
|
* Test saving/loading
|
||||||
|
* ****************************************** */
|
||||||
|
assertTrue(core.saveMVConfigs());
|
||||||
|
// change a value here
|
||||||
|
FileConfiguration config = YamlConfiguration.loadConfiguration(new File(core.getDataFolder(), "worlds.yml"));
|
||||||
|
MVWorld worldObj = (MVWorld) config.get("worlds.world");
|
||||||
|
assertTrue(worldObj.setColor("GREEN"));
|
||||||
|
config.set("worlds.world", worldObj);
|
||||||
|
config.save(new File(core.getDataFolder(), "worlds.yml"));
|
||||||
|
// load
|
||||||
|
core.loadConfigs();
|
||||||
|
|
||||||
|
mvWorld = worldManager.getMVWorld("world");
|
||||||
|
assertEquals(true, mvWorld.isHidden());
|
||||||
|
assertEquals("alias", mvWorld.getAlias());
|
||||||
|
assertEquals(ChatColor.GREEN, mvWorld.getColor());
|
||||||
|
assertEquals(ChatColor.GREEN.toString() + "alias" + ChatColor.WHITE.toString(), mvWorld.getColoredWorldString());
|
||||||
|
assertEquals(false, mvWorld.isPVPEnabled());
|
||||||
|
assertEquals(2D, mvWorld.getScaling(), 0);
|
||||||
|
assertSame(worldManager.getMVWorld("world_nether").getCBWorld(),
|
||||||
|
mvWorld.getRespawnToWorld());
|
||||||
|
assertEquals(false, mvWorld.isWeatherEnabled());
|
||||||
|
assertEquals(Difficulty.PEACEFUL, mvWorld.getDifficulty());
|
||||||
|
assertEquals(false, mvWorld.canAnimalsSpawn());
|
||||||
|
assertEquals(false, mvWorld.canMonstersSpawn());
|
||||||
|
assertEquals(1, mvWorld.getCurrency());
|
||||||
|
assertEquals(1D, mvWorld.getPrice(), 0);
|
||||||
|
assertEquals(false, mvWorld.getHunger());
|
||||||
|
assertEquals(false, mvWorld.getAutoHeal());
|
||||||
|
assertEquals(false, mvWorld.getAdjustSpawn());
|
||||||
|
assertEquals(GameMode.CREATIVE, mvWorld.getGameMode());
|
||||||
|
assertEquals(false, mvWorld.isKeepingSpawnInMemory());
|
||||||
|
assertEquals(false, mvWorld.getBedRespawn());
|
||||||
|
assertEquals(false, mvWorld.getAutoLoad());
|
||||||
|
assertEquals(new SpawnLocation(1, 1, 1), mvWorld.getSpawnLocation());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createEvents(MultiverseWorld mvWorld) {
|
public void createEvents(MultiverseWorld mvWorld) {
|
||||||
@ -327,17 +362,17 @@ public class TestWorldProperties {
|
|||||||
when(playerRespawnNormal.getPlayer()).thenReturn(mockPlayer);
|
when(playerRespawnNormal.getPlayer()).thenReturn(mockPlayer);
|
||||||
when(playerRespawnNormal.isBedSpawn()).thenReturn(false);
|
when(playerRespawnNormal.isBedSpawn()).thenReturn(false);
|
||||||
//// Entity events
|
//// Entity events
|
||||||
mockEntity = mock(Entity.class);
|
mockHumanEntity = mock(HumanEntity.class);
|
||||||
// entity regain health
|
// entity regain health
|
||||||
entityRegainHealthEvent = PowerMockito.mock(EntityRegainHealthEvent.class);
|
entityRegainHealthEvent = PowerMockito.mock(EntityRegainHealthEvent.class);
|
||||||
when(entityRegainHealthEvent.getRegainReason()).thenReturn(RegainReason.REGEN);
|
when(entityRegainHealthEvent.getRegainReason()).thenReturn(RegainReason.REGEN);
|
||||||
when(mockEntity.getLocation()).thenReturn(new Location(mvWorld.getCBWorld(), 0, 0, 0));
|
when(mockHumanEntity.getLocation()).thenReturn(new Location(mvWorld.getCBWorld(), 0, 0, 0));
|
||||||
when(entityRegainHealthEvent.getEntity()).thenReturn(mockEntity);
|
when(entityRegainHealthEvent.getEntity()).thenReturn(mockHumanEntity);
|
||||||
// entity food level change event
|
// entity food level change event
|
||||||
entityFoodLevelChangeEvent = PowerMockito.mock(FoodLevelChangeEvent.class);
|
entityFoodLevelChangeEvent = PowerMockito.mock(FoodLevelChangeEvent.class);
|
||||||
// this won't do anything since we're not mocking a player,
|
// this won't do anything since we're not mocking a player,
|
||||||
// but the plugin should be able to handle this!
|
// but the plugin should be able to handle this!
|
||||||
when(entityFoodLevelChangeEvent.getEntity()).thenReturn(mockEntity);
|
when(entityFoodLevelChangeEvent.getEntity()).thenReturn(mockHumanEntity);
|
||||||
entityFoodLevelRiseEvent = PowerMockito.mock(FoodLevelChangeEvent.class);
|
entityFoodLevelRiseEvent = PowerMockito.mock(FoodLevelChangeEvent.class);
|
||||||
when(mockPlayer.getFoodLevel()).thenReturn(2);
|
when(mockPlayer.getFoodLevel()).thenReturn(2);
|
||||||
when(entityFoodLevelRiseEvent.getEntity()).thenReturn(mockPlayer);
|
when(entityFoodLevelRiseEvent.getEntity()).thenReturn(mockPlayer);
|
||||||
|
@ -10,6 +10,7 @@ import org.bukkit.entity.Entity;
|
|||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Sheep;
|
import org.bukkit.entity.Sheep;
|
||||||
import org.bukkit.entity.Zombie;
|
import org.bukkit.entity.Zombie;
|
||||||
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -23,7 +24,7 @@ import com.onarandombox.MultiverseCore.api.WorldPurger;
|
|||||||
import com.onarandombox.MultiverseCore.test.utils.TestInstanceCreator;
|
import com.onarandombox.MultiverseCore.test.utils.TestInstanceCreator;
|
||||||
|
|
||||||
@RunWith(PowerMockRunner.class)
|
@RunWith(PowerMockRunner.class)
|
||||||
@PrepareForTest({ MultiverseCore.class })
|
@PrepareForTest({ MultiverseCore.class, PluginDescriptionFile.class })
|
||||||
public class TestWorldPurger {
|
public class TestWorldPurger {
|
||||||
TestInstanceCreator creator;
|
TestInstanceCreator creator;
|
||||||
MultiverseCore core;
|
MultiverseCore core;
|
||||||
|
@ -18,6 +18,7 @@ import org.bukkit.command.Command;
|
|||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.permissions.Permission;
|
import org.bukkit.permissions.Permission;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@ -34,7 +35,7 @@ import static junit.framework.Assert.*;
|
|||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
@RunWith(PowerMockRunner.class)
|
@RunWith(PowerMockRunner.class)
|
||||||
@PrepareForTest({ PluginManager.class, MultiverseCore.class, Permission.class, Bukkit.class, WorldManager.class })
|
@PrepareForTest({ PluginManager.class, MultiverseCore.class, Permission.class, Bukkit.class, WorldManager.class, PluginDescriptionFile.class })
|
||||||
public class TestWorldStuff {
|
public class TestWorldStuff {
|
||||||
|
|
||||||
private TestInstanceCreator creator;
|
private TestInstanceCreator creator;
|
||||||
@ -234,13 +235,13 @@ public class TestWorldStuff {
|
|||||||
// Now fail one.
|
// Now fail one.
|
||||||
plugin.onCommand(mockCommandSender, mockCommand, "", new String[]{ "modify", "set", "mode", "fish", "world" });
|
plugin.onCommand(mockCommandSender, mockCommand, "", new String[]{ "modify", "set", "mode", "fish", "world" });
|
||||||
try {
|
try {
|
||||||
verify(mockCommandSender).sendMessage(mainWorld.getProperty("mode", Object.class).getHelp());
|
verify(mockCommandSender).sendMessage(ChatColor.RED + mainWorld.getPropertyHelp("mode"));
|
||||||
} catch (PropertyDoesNotExistException e) {
|
} catch (PropertyDoesNotExistException e) {
|
||||||
fail("Mode property did not exist.");
|
fail("Mode property did not exist.");
|
||||||
}
|
}
|
||||||
|
|
||||||
plugin.onCommand(mockCommandSender, mockCommand, "", new String[]{ "modify", "set", "blah", "fish", "world" });
|
plugin.onCommand(mockCommandSender, mockCommand, "", new String[]{ "modify", "set", "blah", "fish", "world" });
|
||||||
verify(mockCommandSender).sendMessage(ChatColor.RED + "Sorry, You can't set: '"+ChatColor.GRAY+ "blah" + ChatColor.RED + "'");
|
verify(mockCommandSender).sendMessage(ChatColor.RED + "Sorry, You can't set: '" + ChatColor.GRAY + "blah" + ChatColor.RED + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createInitialWorlds(Plugin plugin, Command command) {
|
private void createInitialWorlds(Plugin plugin, Command command) {
|
||||||
|
@ -14,7 +14,9 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.WeakHashMap;
|
||||||
|
|
||||||
|
import org.bukkit.Difficulty;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
@ -28,6 +30,10 @@ public class MockWorldFactory {
|
|||||||
|
|
||||||
private static final Map<String, World> createdWorlds = new HashMap<String, World>();
|
private static final Map<String, World> createdWorlds = new HashMap<String, World>();
|
||||||
|
|
||||||
|
private static final Map<World, Boolean> pvpStates = new WeakHashMap<World, Boolean>();
|
||||||
|
private static final Map<World, Boolean> keepSpawnInMemoryStates = new WeakHashMap<World, Boolean>();
|
||||||
|
private static final Map<World, Difficulty> difficultyStates = new WeakHashMap<World, Difficulty>();
|
||||||
|
|
||||||
private MockWorldFactory() {
|
private MockWorldFactory() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,10 +44,59 @@ public class MockWorldFactory {
|
|||||||
private static World basics(String world, World.Environment env, WorldType type) {
|
private static World basics(String world, World.Environment env, WorldType type) {
|
||||||
World mockWorld = mock(World.class);
|
World mockWorld = mock(World.class);
|
||||||
when(mockWorld.getName()).thenReturn(world);
|
when(mockWorld.getName()).thenReturn(world);
|
||||||
|
when(mockWorld.getPVP()).thenAnswer(new Answer<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public Boolean answer(InvocationOnMock invocation) throws Throwable {
|
||||||
|
World w = (World) invocation.getMock();
|
||||||
|
if (!pvpStates.containsKey(w))
|
||||||
|
pvpStates.put(w, true); // default value
|
||||||
|
return pvpStates.get(w);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
doAnswer(new Answer<Void>() {
|
||||||
|
@Override
|
||||||
|
public Void answer(InvocationOnMock invocation) throws Throwable {
|
||||||
|
pvpStates.put((World) invocation.getMock(), (Boolean) invocation.getArguments()[0]);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}).when(mockWorld).setPVP(anyBoolean());
|
||||||
|
when(mockWorld.getKeepSpawnInMemory()).thenAnswer(new Answer<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public Boolean answer(InvocationOnMock invocation) throws Throwable {
|
||||||
|
World w = (World) invocation.getMock();
|
||||||
|
if (!keepSpawnInMemoryStates.containsKey(w))
|
||||||
|
keepSpawnInMemoryStates.put(w, true); // default value
|
||||||
|
return keepSpawnInMemoryStates.get(w);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
doAnswer(new Answer<Void>() {
|
||||||
|
@Override
|
||||||
|
public Void answer(InvocationOnMock invocation) throws Throwable {
|
||||||
|
keepSpawnInMemoryStates.put((World) invocation.getMock(), (Boolean) invocation.getArguments()[0]);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}).when(mockWorld).setKeepSpawnInMemory(anyBoolean());
|
||||||
|
when(mockWorld.getDifficulty()).thenAnswer(new Answer<Difficulty>() {
|
||||||
|
@Override
|
||||||
|
public Difficulty answer(InvocationOnMock invocation) throws Throwable {
|
||||||
|
World w = (World) invocation.getMock();
|
||||||
|
if (!difficultyStates.containsKey(w))
|
||||||
|
difficultyStates.put(w, Difficulty.NORMAL); // default value
|
||||||
|
return difficultyStates.get(w);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
doAnswer(new Answer<Void>() {
|
||||||
|
@Override
|
||||||
|
public Void answer(InvocationOnMock invocation) throws Throwable {
|
||||||
|
difficultyStates.put((World) invocation.getMock(), (Difficulty) invocation.getArguments()[0]);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}).when(mockWorld).setDifficulty(any(Difficulty.class));
|
||||||
when(mockWorld.getEnvironment()).thenReturn(env);
|
when(mockWorld.getEnvironment()).thenReturn(env);
|
||||||
when(mockWorld.getWorldType()).thenReturn(type);
|
when(mockWorld.getWorldType()).thenReturn(type);
|
||||||
when(mockWorld.getSpawnLocation()).thenReturn(new Location(mockWorld, 0, 64, 0));
|
when(mockWorld.getSpawnLocation()).thenReturn(new Location(mockWorld, 0, 64, 0));
|
||||||
when(mockWorld.getWorldFolder()).thenAnswer(new Answer<File>() {
|
when(mockWorld.getWorldFolder()).thenAnswer(new Answer<File>() {
|
||||||
|
@Override
|
||||||
public File answer(InvocationOnMock invocation) throws Throwable {
|
public File answer(InvocationOnMock invocation) throws Throwable {
|
||||||
if (!(invocation.getMock() instanceof World))
|
if (!(invocation.getMock() instanceof World))
|
||||||
return null;
|
return null;
|
||||||
@ -51,6 +106,7 @@ public class MockWorldFactory {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
when(mockWorld.getBlockAt(any(Location.class))).thenAnswer(new Answer<Block>() {
|
when(mockWorld.getBlockAt(any(Location.class))).thenAnswer(new Answer<Block>() {
|
||||||
|
@Override
|
||||||
public Block answer(InvocationOnMock invocation) throws Throwable {
|
public Block answer(InvocationOnMock invocation) throws Throwable {
|
||||||
Location loc;
|
Location loc;
|
||||||
try {
|
try {
|
||||||
@ -85,6 +141,7 @@ public class MockWorldFactory {
|
|||||||
when(mockWorld.getWorldType()).thenReturn(type);
|
when(mockWorld.getWorldType()).thenReturn(type);
|
||||||
when(mockWorld.getSpawnLocation()).thenReturn(new Location(mockWorld, 0, 64, 0));
|
when(mockWorld.getSpawnLocation()).thenReturn(new Location(mockWorld, 0, 64, 0));
|
||||||
when(mockWorld.getWorldFolder()).thenAnswer(new Answer<File>() {
|
when(mockWorld.getWorldFolder()).thenAnswer(new Answer<File>() {
|
||||||
|
@Override
|
||||||
public File answer(InvocationOnMock invocation) throws Throwable {
|
public File answer(InvocationOnMock invocation) throws Throwable {
|
||||||
if (!(invocation.getMock() instanceof World))
|
if (!(invocation.getMock() instanceof World))
|
||||||
return null;
|
return null;
|
||||||
@ -94,6 +151,7 @@ public class MockWorldFactory {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
when(mockWorld.getBlockAt(any(Location.class))).thenAnswer(new Answer<Block>() {
|
when(mockWorld.getBlockAt(any(Location.class))).thenAnswer(new Answer<Block>() {
|
||||||
|
@Override
|
||||||
public Block answer(InvocationOnMock invocation) throws Throwable {
|
public Block answer(InvocationOnMock invocation) throws Throwable {
|
||||||
Location loc;
|
Location loc;
|
||||||
try {
|
try {
|
||||||
|
@ -35,6 +35,7 @@ import org.mockito.Matchers;
|
|||||||
import org.mockito.invocation.InvocationOnMock;
|
import org.mockito.invocation.InvocationOnMock;
|
||||||
import org.mockito.stubbing.Answer;
|
import org.mockito.stubbing.Answer;
|
||||||
import org.powermock.api.mockito.PowerMockito;
|
import org.powermock.api.mockito.PowerMockito;
|
||||||
|
import org.powermock.core.MockGateway;
|
||||||
|
|
||||||
import com.onarandombox.MultiverseCore.MultiverseCore;
|
import com.onarandombox.MultiverseCore.MultiverseCore;
|
||||||
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
||||||
@ -60,14 +61,17 @@ public class TestInstanceCreator {
|
|||||||
pluginDirectory.mkdirs();
|
pluginDirectory.mkdirs();
|
||||||
Assert.assertTrue(pluginDirectory.exists());
|
Assert.assertTrue(pluginDirectory.exists());
|
||||||
|
|
||||||
|
MockGateway.MOCK_STANDARD_METHODS = false;
|
||||||
|
|
||||||
core = PowerMockito.spy(new MultiverseCore());
|
core = PowerMockito.spy(new MultiverseCore());
|
||||||
|
|
||||||
// Let's let all MV files go to bin/test
|
// Let's let all MV files go to bin/test
|
||||||
doReturn(pluginDirectory).when(core).getDataFolder();
|
doReturn(pluginDirectory).when(core).getDataFolder();
|
||||||
|
|
||||||
// Return a fake PDF file.
|
// Return a fake PDF file.
|
||||||
PluginDescriptionFile pdf = new PluginDescriptionFile("Multiverse-Core", "2.2-Test",
|
PluginDescriptionFile pdf = PowerMockito.spy(new PluginDescriptionFile("Multiverse-Core", "2.2-Test",
|
||||||
"com.onarandombox.MultiverseCore.MultiverseCore");
|
"com.onarandombox.MultiverseCore.MultiverseCore"));
|
||||||
|
when(pdf.getAuthors()).thenReturn(new ArrayList<String>());
|
||||||
doReturn(pdf).when(core).getDescription();
|
doReturn(pdf).when(core).getDescription();
|
||||||
doReturn(true).when(core).isEnabled();
|
doReturn(true).when(core).isEnabled();
|
||||||
doReturn(null).when(core).getResource(anyString());
|
doReturn(null).when(core).getResource(anyString());
|
||||||
@ -102,6 +106,7 @@ public class TestInstanceCreator {
|
|||||||
|
|
||||||
// Give the server some worlds
|
// Give the server some worlds
|
||||||
when(mockServer.getWorld(anyString())).thenAnswer(new Answer<World>() {
|
when(mockServer.getWorld(anyString())).thenAnswer(new Answer<World>() {
|
||||||
|
@Override
|
||||||
public World answer(InvocationOnMock invocation) throws Throwable {
|
public World answer(InvocationOnMock invocation) throws Throwable {
|
||||||
String arg;
|
String arg;
|
||||||
try {
|
try {
|
||||||
@ -114,6 +119,7 @@ public class TestInstanceCreator {
|
|||||||
});
|
});
|
||||||
|
|
||||||
when(mockServer.getWorlds()).thenAnswer(new Answer<List<World>>() {
|
when(mockServer.getWorlds()).thenAnswer(new Answer<List<World>>() {
|
||||||
|
@Override
|
||||||
public List<World> answer(InvocationOnMock invocation) throws Throwable {
|
public List<World> answer(InvocationOnMock invocation) throws Throwable {
|
||||||
return MockWorldFactory.getWorlds();
|
return MockWorldFactory.getWorlds();
|
||||||
}
|
}
|
||||||
@ -123,6 +129,7 @@ public class TestInstanceCreator {
|
|||||||
|
|
||||||
when(mockServer.createWorld(Matchers.isA(WorldCreator.class))).thenAnswer(
|
when(mockServer.createWorld(Matchers.isA(WorldCreator.class))).thenAnswer(
|
||||||
new Answer<World>() {
|
new Answer<World>() {
|
||||||
|
@Override
|
||||||
public World answer(InvocationOnMock invocation) throws Throwable {
|
public World answer(InvocationOnMock invocation) throws Throwable {
|
||||||
WorldCreator arg;
|
WorldCreator arg;
|
||||||
try {
|
try {
|
||||||
@ -145,6 +152,7 @@ public class TestInstanceCreator {
|
|||||||
BukkitScheduler mockScheduler = mock(BukkitScheduler.class);
|
BukkitScheduler mockScheduler = mock(BukkitScheduler.class);
|
||||||
when(mockScheduler.scheduleSyncDelayedTask(any(Plugin.class), any(Runnable.class), anyLong())).
|
when(mockScheduler.scheduleSyncDelayedTask(any(Plugin.class), any(Runnable.class), anyLong())).
|
||||||
thenAnswer(new Answer<Integer>() {
|
thenAnswer(new Answer<Integer>() {
|
||||||
|
@Override
|
||||||
public Integer answer(InvocationOnMock invocation) throws Throwable {
|
public Integer answer(InvocationOnMock invocation) throws Throwable {
|
||||||
Runnable arg;
|
Runnable arg;
|
||||||
try {
|
try {
|
||||||
@ -157,6 +165,7 @@ public class TestInstanceCreator {
|
|||||||
}});
|
}});
|
||||||
when(mockScheduler.scheduleSyncDelayedTask(any(Plugin.class), any(Runnable.class))).
|
when(mockScheduler.scheduleSyncDelayedTask(any(Plugin.class), any(Runnable.class))).
|
||||||
thenAnswer(new Answer<Integer>() {
|
thenAnswer(new Answer<Integer>() {
|
||||||
|
@Override
|
||||||
public Integer answer(InvocationOnMock invocation) throws Throwable {
|
public Integer answer(InvocationOnMock invocation) throws Throwable {
|
||||||
Runnable arg;
|
Runnable arg;
|
||||||
try {
|
try {
|
||||||
@ -207,6 +216,7 @@ public class TestInstanceCreator {
|
|||||||
commandSenderLogger.setParent(Util.logger);
|
commandSenderLogger.setParent(Util.logger);
|
||||||
commandSender = mock(CommandSender.class);
|
commandSender = mock(CommandSender.class);
|
||||||
doAnswer(new Answer<Void>() {
|
doAnswer(new Answer<Void>() {
|
||||||
|
@Override
|
||||||
public Void answer(InvocationOnMock invocation) throws Throwable {
|
public Void answer(InvocationOnMock invocation) throws Throwable {
|
||||||
commandSenderLogger.info(ChatColor.stripColor((String) invocation.getArguments()[0]));
|
commandSenderLogger.info(ChatColor.stripColor((String) invocation.getArguments()[0]));
|
||||||
return null;
|
return null;
|
||||||
|
Loading…
Reference in New Issue
Block a user