Now using SerializationConfig.

This commit is contained in:
main() 2012-02-01 16:28:23 +01:00
parent d595cb9a31
commit 44df567936
10 changed files with 220 additions and 54 deletions

View File

@ -33,6 +33,9 @@ import com.onarandombox.MultiverseCore.listeners.MVWeatherListener;
import com.onarandombox.MultiverseCore.listeners.MVPortalListener;
import com.onarandombox.MultiverseCore.utils.*;
import com.pneumaticraft.commandhandler.CommandHandler;
import me.main__.util.SerializationConfig.SerializationConfig;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.Command;
@ -60,20 +63,12 @@ import java.util.logging.Logger;
*/
public class MultiverseCore extends JavaPlugin implements MVPlugin, Core {
private static final int PROTOCOL = 12;
// Global Multiverse config variable, states whether or not
// Multiverse should stop other plugins from teleporting players
// to worlds.
// TODO This is REALLY bad style! We have to change this!
// No, I'm NOT going to suppress these warnings because we HAVE TO CHANGE THIS!
public static boolean EnforceAccess;
public static boolean PrefixChat;
public static boolean DisplayPermErrors;
public static boolean TeleportIntercept;
public static boolean FirstSpawnOverride;
public static Map<String, String> teleportQueue = new HashMap<String, String>();
public static int GlobalDebug = 0;
// TODO maybe add deprecated stubs for the old globals
private static Map<String, String> teleportQueue = new HashMap<String, String>();
private AnchorManager anchorManager = new AnchorManager(this);
private static MultiverseCoreConfiguration config;
/**
* This method is used to find out who is teleporting a player.
@ -176,6 +171,8 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core {
@Override
public void onLoad() {
// Register our config
SerializationConfig.registerAll(MultiverseCoreConfiguration.class);
// Create our DataFolder
getDataFolder().mkdirs();
// Setup our Debug Log
@ -344,21 +341,18 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core {
this.multiverseConfig = YamlConfiguration.loadConfiguration(new File(getDataFolder(), "config.yml"));
this.worldManager.loadWorldConfig(new File(getDataFolder(), "worlds.yml"));
// Setup the Debug option, we'll default to false because this option will not be in the default config.
GlobalDebug = this.multiverseConfig.getInt("debug", 0);
// Lets cache these values due to the fact that they will be accessed many times.
EnforceAccess = this.multiverseConfig.getBoolean("enforceaccess", false);
PrefixChat = this.multiverseConfig.getBoolean("worldnameprefix", true);
// Should MV Intercept teleports by other plugins?
TeleportIntercept = this.multiverseConfig.getBoolean("teleportintercept", true);
// Should MV do the first spawn stuff?
FirstSpawnOverride = this.multiverseConfig.getBoolean("firstspawnoverride", true);
// Should permissions errors display to users?
DisplayPermErrors = this.multiverseConfig.getBoolean("displaypermerrors", true);
MultiverseCoreConfiguration wantedConfig = null;
try {
wantedConfig = (MultiverseCoreConfiguration) multiverseConfig.get("multiverse-configuration");
} catch (Exception e) {
// We're just thinking "no risk no fun" and therefore have to catch and forget this exception
} finally {
config = ((wantedConfig == null) ? new MultiverseCoreConfiguration() : wantedConfig);
}
// ... and save it
multiverseConfig.set("multiverse-configuration", config);
this.messaging.setCooldown(this.multiverseConfig.getInt("messagecooldown", 5000)); // SUPPRESS CHECKSTYLE: MagicNumberCheck
// Update the version of the config!
this.multiverseConfig.set("version", coreDefaults.get("version"));
this.messaging.setCooldown(config.getMessageCooldown());
// Remove old values.
this.multiverseConfig.set("enforcegamemodes", null);
@ -483,7 +477,7 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core {
}
ArrayList<String> allArgs = new ArrayList<String>(Arrays.asList(args));
allArgs.add(0, command.getName());
return this.commandHandler.locateAndRunCommand(sender, allArgs, DisplayPermErrors);
return this.commandHandler.locateAndRunCommand(sender, allArgs, config.getDisplayPermErrors());
}
/**
@ -501,13 +495,13 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core {
* @param msg The message to log.
*/
public static void staticLog(Level level, String msg) {
if (level == Level.FINE && GlobalDebug >= 1) {
if (level == Level.FINE && config.getGlobalDebug() >= 1) {
staticDebugLog(Level.INFO, msg);
return;
} else if (level == Level.FINER && GlobalDebug >= 2) {
} else if (level == Level.FINER && config.getGlobalDebug() >= 2) {
staticDebugLog(Level.INFO, msg);
return;
} else if (level == Level.FINEST && GlobalDebug >= 3) {
} else if (level == Level.FINEST && config.getGlobalDebug() >= 3) {
staticDebugLog(Level.INFO, msg);
return;
} else if (level != Level.FINE && level != Level.FINER && level != Level.FINEST) {
@ -858,4 +852,12 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core {
public void setSafeTTeleporter(SafeTTeleporter safeTTeleporter) {
this.safeTTeleporter = safeTTeleporter;
}
/**
* Gets our {@link MultiverseCoreConfiguration}.
* @return The {@link MultiverseCoreConfiguration} we're using.
*/
public static MultiverseCoreConfiguration getStaticConfig() {
return config;
}
}

View File

@ -0,0 +1,164 @@
package com.onarandombox.MultiverseCore;
import java.util.Map;
import me.main__.util.SerializationConfig.Property;
import me.main__.util.SerializationConfig.SerializationConfig;
/**
* Our configuration.
*/
public class MultiverseCoreConfiguration extends SerializationConfig {
@Property
private boolean enforceAccess;
@Property
private boolean prefixChat;
@Property
private boolean teleportIntercept;
@Property
private boolean firstSpawnOverride;
@Property
private boolean displayPermErrors;
@Property
private int globalDebug;
@Property
private int messageCooldown;
public MultiverseCoreConfiguration() {
super();
}
public MultiverseCoreConfiguration(Map<String, Object> values) {
super(values);
}
/**
* {@inheritDoc}
*/
@Override
public void setDefaults() {
// BEGIN CHECKSTYLE-SUPPRESSION: MagicNumberCheck
enforceAccess = false;
prefixChat = true;
teleportIntercept = true;
firstSpawnOverride = true;
displayPermErrors = true;
globalDebug = 0;
messageCooldown = 5000;
// END CHECKSTYLE-SUPPRESSION: MagicNumberCheck
}
// And here we go:
/**
* Gets enforceAccess.
* @return enforceAccess.
*/
public boolean getEnforceAccess() {
return enforceAccess;
}
/**
* Sets enforceAccess.
* @param enforceAccess The new value.
*/
public void setEnforceAccess(boolean enforceAccess) {
this.enforceAccess = enforceAccess;
}
/**
* Gets prefixChat.
* @return prefixChat.
*/
public boolean getPrefixChat() {
return prefixChat;
}
/**
* Sets prefixChat.
* @param prefixChat The new value.
*/
public void setPrefixChat(boolean prefixChat) {
this.prefixChat = prefixChat;
}
/**
* Gets teleportIntercept.
* @return teleportIntercept.
*/
public boolean getTeleportIntercept() {
return teleportIntercept;
}
/**
* Sets teleportIntercept.
* @param teleportIntercept The new value.
*/
public void setTeleportIntercept(boolean teleportIntercept) {
this.teleportIntercept = teleportIntercept;
}
/**
* Gets firstSpawnOverride.
* @return firstSpawnOverride.
*/
public boolean getFirstSpawnOverride() {
return firstSpawnOverride;
}
/**
* Sets firstSpawnOverride.
* @param firstSpawnOverride The new value.
*/
public void setFirstSpawnOverride(boolean firstSpawnOverride) {
this.firstSpawnOverride = firstSpawnOverride;
}
/**
* Gets displayPermErrors.
* @return displayPermErrors.
*/
public boolean getDisplayPermErrors() {
return displayPermErrors;
}
/**
* Sets displayPermErrors.
* @param displayPermErrors The new value.
*/
public void setDisplayPermErrors(boolean displayPermErrors) {
this.displayPermErrors = displayPermErrors;
}
/**
* Gets globalDebug.
* @return globalDebug.
*/
public int getGlobalDebug() {
return globalDebug;
}
/**
* Sets globalDebug.
* @param globalDebug The new value.
*/
public void setGlobalDebug(int globalDebug) {
this.globalDebug = globalDebug;
}
/**
* Gets messageCooldown.
* @return messageCooldown.
*/
public int getMessageCooldown() {
return messageCooldown;
}
/**
* Sets messageCooldown.
* @param messageCooldown The new value.
*/
public void setMessageCooldown(int messageCooldown) {
this.messageCooldown = messageCooldown;
}
}

View File

@ -36,14 +36,14 @@ public class DebugCommand extends MultiverseCommand {
public void runCommand(CommandSender sender, List<String> args) {
if (args.size() == 1) {
if (args.get(0).equalsIgnoreCase("off")) {
MultiverseCore.GlobalDebug = 0;
MultiverseCore.getStaticConfig().setGlobalDebug(0);
} else {
try {
int debugLevel = Integer.parseInt(args.get(0));
if (debugLevel > 3 || debugLevel < 0) {
throw new NumberFormatException();
}
MultiverseCore.GlobalDebug = debugLevel;
MultiverseCore.getStaticConfig().setGlobalDebug(debugLevel);
} catch (NumberFormatException e) {
sender.sendMessage(ChatColor.RED + "Error" + ChatColor.WHITE
+ " setting debug level. Please use a number 0-3 " + ChatColor.AQUA + "(3 being many many messages!)");
@ -55,10 +55,10 @@ public class DebugCommand extends MultiverseCommand {
}
private void displayDebugMode(CommandSender sender) {
if (MultiverseCore.GlobalDebug == 0) {
if (MultiverseCore.getStaticConfig().getGlobalDebug() == 0) {
sender.sendMessage("Multiverse Debug mode is " + ChatColor.RED + "OFF");
} else {
sender.sendMessage("Multiverse Debug mode is " + ChatColor.GREEN + MultiverseCore.GlobalDebug);
sender.sendMessage("Multiverse Debug mode is " + ChatColor.GREEN + MultiverseCore.getStaticConfig().getGlobalDebug());
this.plugin.log(Level.FINE, "Multiverse Debug ENABLED");
}
}

View File

@ -110,7 +110,7 @@ public class TeleportCommand extends MultiverseCommand {
return;
}
if (MultiverseCore.EnforceAccess && teleporter != null && !this.plugin.getMVPerms().canEnterDestination(teleporter, d)) {
if (MultiverseCore.getStaticConfig().getEnforceAccess() && teleporter != null && !this.plugin.getMVPerms().canEnterDestination(teleporter, d)) {
if (teleportee.equals(teleporter)) {
teleporter.sendMessage("Doesn't look like you're allowed to go " + ChatColor.RED + "there...");
} else {

View File

@ -56,13 +56,13 @@ public class VersionCommand extends MultiverseCommand {
.append(this.plugin.getMVConfiguration().getDouble("version", -1)).append(")").append('\n');
buffer.append("[Multiverse-Core] messagecooldown: ").append(this.plugin.getMessaging().getCooldown()).append('\n');
buffer.append("[Multiverse-Core] teleportcooldown: ").append("Not yet IMPLEMENTED").append('\n');
buffer.append("[Multiverse-Core] worldnameprefix: ").append(MultiverseCore.PrefixChat).append('\n');
buffer.append("[Multiverse-Core] enforceaccess: ").append(MultiverseCore.EnforceAccess).append('\n');
buffer.append("[Multiverse-Core] displaypermerrors: ").append(MultiverseCore.DisplayPermErrors).append('\n');
buffer.append("[Multiverse-Core] teleportintercept: ").append(MultiverseCore.TeleportIntercept).append('\n');
buffer.append("[Multiverse-Core] firstspawnoverride: ").append(MultiverseCore.FirstSpawnOverride).append('\n');
buffer.append("[Multiverse-Core] worldnameprefix: ").append(MultiverseCore.getStaticConfig().getPrefixChat()).append('\n');
buffer.append("[Multiverse-Core] enforceaccess: ").append(MultiverseCore.getStaticConfig().getEnforceAccess()).append('\n');
buffer.append("[Multiverse-Core] displaypermerrors: ").append(MultiverseCore.getStaticConfig().getDisplayPermErrors()).append('\n');
buffer.append("[Multiverse-Core] teleportintercept: ").append(MultiverseCore.getStaticConfig().getTeleportIntercept()).append('\n');
buffer.append("[Multiverse-Core] firstspawnoverride: ").append(MultiverseCore.getStaticConfig().getFirstSpawnOverride()).append('\n');
buffer.append("[Multiverse-Core] firstspawnworld: ").append(this.plugin.getMVConfiguration().getString("firstspawnworld", "NOT SET")).append('\n');
buffer.append("[Multiverse-Core] debug: ").append(MultiverseCore.GlobalDebug).append('\n');
buffer.append("[Multiverse-Core] debug: ").append(MultiverseCore.getStaticConfig().getGlobalDebug()).append('\n');
buffer.append("[Multiverse-Core] Special Code: FRN002").append('\n');
MVVersionEvent versionEvent = new MVVersionEvent(buffer.toString());

View File

@ -55,7 +55,7 @@ public class MVPlayerListener implements Listener {
}
// Check whether the Server is set to prefix the chat with the World name.
// If not we do nothing, if so we need to check if the World has an Alias.
if (MultiverseCore.PrefixChat) {
if (MultiverseCore.getStaticConfig().getPrefixChat()) {
String world = event.getPlayer().getWorld().getName();
String prefix = "";
// If we're not a MV world, don't do anything
@ -127,7 +127,7 @@ public class MVPlayerListener implements Listener {
Player p = event.getPlayer();
if (!p.hasPlayedBefore()) {
this.plugin.log(Level.FINE, "Player joined first!");
if (MultiverseCore.FirstSpawnOverride) {
if (MultiverseCore.getStaticConfig().getFirstSpawnOverride()) {
this.plugin.log(Level.FINE, "Moving NEW player to(firstspawnoverride): " + worldManager.getFirstSpawnWorld().getSpawnLocation());
this.spawnNewPlayer(p);
}
@ -197,7 +197,7 @@ public class MVPlayerListener implements Listener {
teleportee.getName(), event.getTo().getWorld().getName(), teleporter.getName()));
return;
}
if (MultiverseCore.EnforceAccess) {
if (MultiverseCore.getStaticConfig().getEnforceAccess()) {
event.setCancelled(!pt.playerCanGoFromTo(fromWorld, toWorld, teleporter, teleportee));
if (event.isCancelled() && teleporter != null) {
this.plugin.log(Level.FINE, String.format("Player '%s' was DENIED ACCESS to '%s' because '%s' don't have: multiverse.access.%s",
@ -262,7 +262,7 @@ public class MVPlayerListener implements Listener {
event.getPlayer().getName(), event.getTo().getWorld().getName()));
return;
}
if (MultiverseCore.EnforceAccess) {
if (MultiverseCore.getStaticConfig().getEnforceAccess()) {
event.setCancelled(!pt.playerCanGoFromTo(fromWorld, toWorld, event.getPlayer(), event.getPlayer()));
if (event.isCancelled()) {
this.plugin.log(Level.FINE, String.format("Player '%s' was DENIED ACCESS to '%s' because they don't have: multiverse.access.%s",

View File

@ -98,7 +98,7 @@ public class MVPermissions implements PermissionsInterface {
*/
public boolean canEnterWorld(Player p, MultiverseWorld w) {
// If we're not enforcing access, anyone can enter.
if (!MultiverseCore.EnforceAccess) {
if (!MultiverseCore.getStaticConfig().getEnforceAccess()) {
return true;
}
return this.hasPermission(p, "multiverse.access." + w.getName(), false);

View File

@ -100,7 +100,7 @@ public class PermissionTools {
*/
public boolean playerHasMoneyToEnter(MultiverseWorld fromWorld, MultiverseWorld toWorld, CommandSender teleporter, Player teleportee, boolean pay) {
Player teleporterPlayer;
if (MultiverseCore.TeleportIntercept) {
if (MultiverseCore.getStaticConfig().getTeleportIntercept()) {
if (teleporter instanceof ConsoleCommandSender) {
return true;
}
@ -171,7 +171,7 @@ public class PermissionTools {
this.plugin.log(Level.FINEST, "Checking '" + teleporter + "' can send '" + teleportee + "' somewhere");
Player teleporterPlayer;
if (MultiverseCore.TeleportIntercept) {
if (MultiverseCore.getStaticConfig().getTeleportIntercept()) {
// The console can send anyone anywhere
if (teleporter instanceof ConsoleCommandSender) {
return true;

View File

@ -70,12 +70,12 @@ public class TestDebugMode {
when(mockCommand.getName()).thenReturn("mv");
// Assert debug mode is off
Assert.assertEquals(0, MultiverseCore.GlobalDebug);
Assert.assertEquals(0, MultiverseCore.getStaticConfig().getGlobalDebug());
// Send the debug command.
String[] debugArgs = new String[] { "debug", "3" };
plugin.onCommand(mockCommandSender, mockCommand, "", debugArgs);
Assert.assertEquals(3, MultiverseCore.GlobalDebug);
Assert.assertEquals(3, MultiverseCore.getStaticConfig().getGlobalDebug());
}
}

View File

@ -165,10 +165,10 @@ public class TestWorldProperties {
assertFalse(thunderChangeOnEvent.isCancelled());
// call player chat event
MultiverseCore.PrefixChat = true;
MultiverseCore.getStaticConfig().setPrefixChat(true);
core.getPlayerListener().playerChat(playerChatEvent);
verify(playerChatEvent).setFormat("[" + mvWorld.getColoredWorldString() + "]" + "format");
MultiverseCore.PrefixChat = false;
MultiverseCore.getStaticConfig().setPrefixChat(false);
core.getPlayerListener().playerChat(playerChatEvent);
verify(playerChatEvent, times(1)).setFormat(anyString()); // only ONE TIME (not the 2nd time!)
@ -263,7 +263,7 @@ public class TestWorldProperties {
assertTrue(thunderChangeOnEvent.isCancelled());
// call player chat event
MultiverseCore.PrefixChat = true;
MultiverseCore.getStaticConfig().setPrefixChat(true);
core.getPlayerListener().playerChat(playerChatEvent);
// never because it's hidden!
verify(playerChatEvent, never()).setFormat(
@ -271,7 +271,7 @@ public class TestWorldProperties {
mvWorld.setHidden(false);
core.getPlayerListener().playerChat(playerChatEvent);
verify(playerChatEvent).setFormat("[" + mvWorld.getColoredWorldString() + "]" + "format");
MultiverseCore.PrefixChat = false;
MultiverseCore.getStaticConfig().setPrefixChat(false);
core.getPlayerListener().playerChat(playerChatEvent);
verify(playerChatEvent, times(1)).setFormat(anyString()); // only ONE TIME (not the 2nd time!)