mirror of
https://github.com/Multiverse/Multiverse-Core.git
synced 2024-11-22 10:36:06 +01:00
Add time, remove global gamemode, see below:
- Add Time as a settable (but not stored) function proptery. - Add Function properties (They're called tempStringConfigProperties until I make them more generic. deal with it :P) - Remove the globalgamemode setting, since it's already covered with the new perms. When I move TempStringConfigProperty to a seperate superclass (ActiveConfigProperty) we won't have the issue of things getting set anymore, as ActiveConfigProperties will change an active setting (gamemode for example) **when** they're set, not after some cleanup function gets run. Hell. Yes. Off to bed... I promised this commit to someone which is why it's a lil' sloppy. Sorry :( Will fix tomorrow!
This commit is contained in:
parent
b69403e00c
commit
10d849dc51
@ -8,14 +8,15 @@
|
|||||||
package com.onarandombox.MultiverseCore;
|
package com.onarandombox.MultiverseCore;
|
||||||
|
|
||||||
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
||||||
import com.onarandombox.MultiverseCore.configuration.*;
|
import com.onarandombox.MultiverseCore.configuration.ConfigPropertyFactory;
|
||||||
|
import com.onarandombox.MultiverseCore.configuration.MVConfigProperty;
|
||||||
|
import com.onarandombox.MultiverseCore.configuration.TempStringConfigProperty;
|
||||||
import com.onarandombox.MultiverseCore.enums.EnglishChatColor;
|
import com.onarandombox.MultiverseCore.enums.EnglishChatColor;
|
||||||
import com.onarandombox.MultiverseCore.event.MVWorldPropertyChangeEvent;
|
import com.onarandombox.MultiverseCore.event.MVWorldPropertyChangeEvent;
|
||||||
import com.onarandombox.MultiverseCore.exceptions.PropertyDoesNotExistException;
|
import com.onarandombox.MultiverseCore.exceptions.PropertyDoesNotExistException;
|
||||||
import com.onarandombox.MultiverseCore.utils.BlockSafety;
|
import com.onarandombox.MultiverseCore.utils.BlockSafety;
|
||||||
import com.onarandombox.MultiverseCore.utils.LocationManipulation;
|
import com.onarandombox.MultiverseCore.utils.LocationManipulation;
|
||||||
import com.onarandombox.MultiverseCore.utils.SafeTTeleporter;
|
import com.onarandombox.MultiverseCore.utils.SafeTTeleporter;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Difficulty;
|
import org.bukkit.Difficulty;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
@ -31,11 +32,15 @@ import org.bukkit.permissions.PermissionDefault;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.util.ArrayList;
|
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.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The implementation of a Multiverse handled world.
|
* The implementation of a Multiverse handled world.
|
||||||
@ -61,6 +66,16 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
private Map<String, String> propertyAliases;
|
private Map<String, String> propertyAliases;
|
||||||
private Permission ignoreperm;
|
private Permission ignoreperm;
|
||||||
|
|
||||||
|
private static final Map<String, String> staticTimes = new HashMap<String, String>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
staticTimes.put("morning", "8:00");
|
||||||
|
staticTimes.put("day", "12:00");
|
||||||
|
staticTimes.put("noon", "12:00");
|
||||||
|
staticTimes.put("midnight", "0:00");
|
||||||
|
staticTimes.put("night", "20:00");
|
||||||
|
}
|
||||||
|
|
||||||
public MVWorld(World world, FileConfiguration config, MultiverseCore instance, Long seed, String generatorString, boolean fixSpawn) {
|
public MVWorld(World world, FileConfiguration config, MultiverseCore instance, Long seed, String generatorString, boolean fixSpawn) {
|
||||||
this.config = config;
|
this.config = config;
|
||||||
this.plugin = instance;
|
this.plugin = instance;
|
||||||
@ -141,6 +156,7 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
this.propertyList.put("autoload", fac.getNewProperty("autoload", true,
|
this.propertyList.put("autoload", fac.getNewProperty("autoload", true,
|
||||||
"Set this to false ONLY if you don't want this world to load itself on server restart."));
|
"Set this to false ONLY if you don't want this world to load itself on server restart."));
|
||||||
this.propertyList.put("bedrespawn", fac.getNewProperty("bedrespawn", true, "If a player dies in this world, shoudld they go to their bed?"));
|
this.propertyList.put("bedrespawn", fac.getNewProperty("bedrespawn", true, "If a player dies in this world, shoudld they go to their bed?"));
|
||||||
|
this.propertyList.put("time", fac.getNewProperty("time", "", "Set the time to whatever you want! (Will NOT freeze time)", "setTime", true));
|
||||||
this.getKnownProperty("spawn", Location.class).setValue(this.readSpawnFromConfig(this.getCBWorld()));
|
this.getKnownProperty("spawn", Location.class).setValue(this.readSpawnFromConfig(this.getCBWorld()));
|
||||||
|
|
||||||
|
|
||||||
@ -210,15 +226,12 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
this.plugin.log(Level.WARNING, "Someone tried to set a scale <= 0, defaulting to 1.");
|
this.plugin.log(Level.WARNING, "Someone tried to set a scale <= 0, defaulting to 1.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the gamemode
|
|
||||||
// TODO: Move this to a per world gamemode
|
|
||||||
if (MultiverseCore.EnforceGameModes) {
|
|
||||||
for (Player p : this.plugin.getServer().getWorld(this.getName()).getPlayers()) {
|
for (Player p : this.plugin.getServer().getWorld(this.getName()).getPlayers()) {
|
||||||
this.plugin.log(Level.FINER, "Setting " + p.getName() + "'s GameMode to "
|
this.plugin.log(Level.FINER, "Setting " + p.getName() + "'s GameMode to "
|
||||||
+ this.getKnownProperty("mode", GameMode.class).getValue().toString());
|
+ this.getKnownProperty("mode", GameMode.class).getValue().toString());
|
||||||
this.plugin.getPlayerListener().handleGameMode(p, this);
|
this.plugin.getPlayerListener().handleGameMode(p, this);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Set the difficulty
|
// Set the difficulty
|
||||||
this.getCBWorld().setDifficulty(this.getKnownProperty("diff", Difficulty.class).getValue());
|
this.getCBWorld().setDifficulty(this.getKnownProperty("diff", Difficulty.class).getValue());
|
||||||
@ -420,6 +433,7 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
* @deprecated Use {@link #getProperty(String, Class)} instead
|
* @deprecated Use {@link #getProperty(String, Class)} instead
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@ -489,12 +503,33 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
value = propertyChangeEvent.getNewValue();
|
value = propertyChangeEvent.getNewValue();
|
||||||
}
|
}
|
||||||
if (property.parseValue(value)) {
|
if (property.parseValue(value)) {
|
||||||
|
if (property instanceof TempStringConfigProperty) {
|
||||||
|
return this.setActiveProperty((TempStringConfigProperty) property);
|
||||||
|
}
|
||||||
this.saveConfig();
|
this.saveConfig();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean setActiveProperty(TempStringConfigProperty property) {
|
||||||
|
try {
|
||||||
|
Method method = this.getClass().getMethod(property.getMethod(), String.class);
|
||||||
|
Object returnVal = method.invoke(this, (String) property.getValue());
|
||||||
|
if (returnVal instanceof Boolean) {
|
||||||
|
return (Boolean) returnVal;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (NoSuchMethodException e) {
|
||||||
|
return false;
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
return false;
|
||||||
|
} catch (InvocationTargetException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@ -706,6 +741,7 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
|
*
|
||||||
* @deprecated This is deprecated.
|
* @deprecated This is deprecated.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@ -1008,6 +1044,73 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getTime() {
|
||||||
|
long time = this.getCBWorld().getTime();
|
||||||
|
// I'm tired, so they get time in 24 hour for now.
|
||||||
|
// Someone else can add 12 hr format if they want :P
|
||||||
|
int hours = (int) ((time / 1000 + 8) % 24);
|
||||||
|
int minutes = (int) (60 * (time % 1000) / 1000);
|
||||||
|
return String.format("%d:%02d", hours, minutes);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean setTime(String timeAsString) {
|
||||||
|
if (staticTimes.containsKey(timeAsString.toLowerCase())) {
|
||||||
|
return this.setTime(staticTimes.get(timeAsString.toLowerCase()));
|
||||||
|
}
|
||||||
|
// Regex that extracts a time in the following formats:
|
||||||
|
// 11:11pm, 11:11, 23:11, 1111, 1111p, and the aliases at the top of this file.
|
||||||
|
String timeRegex = "(\\d\\d?):?(\\d\\d)(a|p)?m?";
|
||||||
|
Pattern pattern = Pattern.compile(timeRegex, Pattern.CASE_INSENSITIVE);
|
||||||
|
Matcher matcher = pattern.matcher(timeAsString);
|
||||||
|
matcher.find();
|
||||||
|
int hour = 0;
|
||||||
|
double minute = 0;
|
||||||
|
int count = matcher.groupCount();
|
||||||
|
if (count >= 2) {
|
||||||
|
hour = Integer.parseInt(matcher.group(1));
|
||||||
|
minute = Integer.parseInt(matcher.group(2));
|
||||||
|
}
|
||||||
|
// If there were 4 matches (all, hour, min, ampm)
|
||||||
|
if (count == 4) {
|
||||||
|
// We want 24 hour time for calcs, but if they
|
||||||
|
// added a p[m], turn it into a 24 hr one.
|
||||||
|
if (matcher.group(3).equals("p")) {
|
||||||
|
hour += 12;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Translate 24th hour to 0th hour.
|
||||||
|
if (hour == 24) {
|
||||||
|
hour = 0;
|
||||||
|
}
|
||||||
|
// Clamp the hour
|
||||||
|
if (hour > 23 || hour < 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Clamp the minute
|
||||||
|
if (minute > 59 || minute < 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 60 seconds in a minute, time needs to be in hrs * 1000, per
|
||||||
|
// the bukkit docs.
|
||||||
|
double totaltime = (hour + (minute / 60.0)) * 1000;
|
||||||
|
// Somehow there's an 8 hour offset...
|
||||||
|
totaltime -= 8000;
|
||||||
|
if (totaltime < 0) {
|
||||||
|
totaltime = 24000 + totaltime;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.getCBWorld().setTime((long) totaltime);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder toStringBuilder = new StringBuilder();
|
StringBuilder toStringBuilder = new StringBuilder();
|
||||||
|
@ -71,7 +71,6 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core {
|
|||||||
// to worlds.
|
// to worlds.
|
||||||
// TODO This is REALLY bad style! We have to change this!
|
// TODO This is REALLY bad style! We have to change this!
|
||||||
public static boolean EnforceAccess;
|
public static boolean EnforceAccess;
|
||||||
public static boolean EnforceGameModes;
|
|
||||||
public static boolean PrefixChat;
|
public static boolean PrefixChat;
|
||||||
public static boolean DisplayPermErrors;
|
public static boolean DisplayPermErrors;
|
||||||
public static boolean TeleportIntercept;
|
public static boolean TeleportIntercept;
|
||||||
@ -360,7 +359,6 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core {
|
|||||||
GlobalDebug = this.multiverseConfig.getInt("debug", 0);
|
GlobalDebug = this.multiverseConfig.getInt("debug", 0);
|
||||||
// Lets cache these values due to the fact that they will be accessed many times.
|
// Lets cache these values due to the fact that they will be accessed many times.
|
||||||
EnforceAccess = this.multiverseConfig.getBoolean("enforceaccess", false);
|
EnforceAccess = this.multiverseConfig.getBoolean("enforceaccess", false);
|
||||||
EnforceGameModes = this.multiverseConfig.getBoolean("enforcegamemodes", true);
|
|
||||||
PrefixChat = this.multiverseConfig.getBoolean("worldnameprefix", true);
|
PrefixChat = this.multiverseConfig.getBoolean("worldnameprefix", true);
|
||||||
// Should MV Intercept teleports by other plugins?
|
// Should MV Intercept teleports by other plugins?
|
||||||
TeleportIntercept = this.multiverseConfig.getBoolean("teleportintercept", true);
|
TeleportIntercept = this.multiverseConfig.getBoolean("teleportintercept", true);
|
||||||
@ -370,6 +368,14 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core {
|
|||||||
DisplayPermErrors = this.multiverseConfig.getBoolean("displaypermerrors", true);
|
DisplayPermErrors = this.multiverseConfig.getBoolean("displaypermerrors", true);
|
||||||
|
|
||||||
this.messaging.setCooldown(this.multiverseConfig.getInt("messagecooldown", 5000));
|
this.messaging.setCooldown(this.multiverseConfig.getInt("messagecooldown", 5000));
|
||||||
|
// Update the version of the config!
|
||||||
|
this.multiverseConfig.set("version", coreDefaults.get("version"));
|
||||||
|
|
||||||
|
// Remove old values.
|
||||||
|
this.multiverseConfig.set("enforcegamemodes", null);
|
||||||
|
this.multiverseConfig.set("bedrespawn", null);
|
||||||
|
this.multiverseConfig.set("opfallback", null);
|
||||||
|
|
||||||
this.saveMVConfigs();
|
this.saveMVConfigs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -533,4 +533,23 @@ public interface MultiverseWorld {
|
|||||||
* @return All property names, with alternating colors.
|
* @return All property names, with alternating colors.
|
||||||
*/
|
*/
|
||||||
String getAllPropertyNames();
|
String getAllPropertyNames();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the current time in a world.
|
||||||
|
*
|
||||||
|
* This method will take the following formats:
|
||||||
|
* 11:37am
|
||||||
|
* 4:30p
|
||||||
|
* day(morning), night, noon, midnight
|
||||||
|
*
|
||||||
|
* @param timeAsString The formatted time to set the world to.
|
||||||
|
* @return True if the time was set, false if not.
|
||||||
|
*/
|
||||||
|
boolean setTime(String timeAsString);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Same as {@link #getTime()}, but returns a string.
|
||||||
|
* @return The time as a short string: 12:34pm
|
||||||
|
*/
|
||||||
|
String getTime();
|
||||||
}
|
}
|
||||||
|
@ -109,11 +109,7 @@ public class InfoCommand extends MultiverseCommand {
|
|||||||
message.add(new FancyHeader("General Info", colors));
|
message.add(new FancyHeader("General Info", colors));
|
||||||
message.add(new FancyMessage("World Name: ", world.getName(), colors));
|
message.add(new FancyMessage("World Name: ", world.getName(), colors));
|
||||||
message.add(new FancyMessage("World Alias: ", world.getColoredWorldString(), colors));
|
message.add(new FancyMessage("World Alias: ", world.getColoredWorldString(), colors));
|
||||||
String enforced = "";
|
message.add(new FancyMessage("Game Mode: ", world.getGameMode().toString(), colors));
|
||||||
if (!MultiverseCore.EnforceGameModes) {
|
|
||||||
enforced = ChatColor.RED + " Not Enforced!";
|
|
||||||
}
|
|
||||||
message.add(new FancyMessage("Game Mode: ", world.getGameMode() + enforced, colors));
|
|
||||||
//message.add(new FancyMessage("Game Mode: ", StringUtils.capitalize(world.getGameMode().toString()), colors));
|
//message.add(new FancyMessage("Game Mode: ", StringUtils.capitalize(world.getGameMode().toString()), colors));
|
||||||
Location spawn = world.getSpawnLocation();
|
Location spawn = world.getSpawnLocation();
|
||||||
message.add(new FancyMessage("Spawn Location: ", LocationManipulation.strCoords(spawn), colors));
|
message.add(new FancyMessage("Spawn Location: ", LocationManipulation.strCoords(spawn), colors));
|
||||||
|
@ -58,7 +58,6 @@ public class VersionCommand extends MultiverseCommand {
|
|||||||
buffer.append("[Multiverse-Core] teleportcooldown: ").append("Not yet IMPLEMENTED").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] worldnameprefix: ").append(MultiverseCore.PrefixChat).append('\n');
|
||||||
buffer.append("[Multiverse-Core] enforceaccess: ").append(MultiverseCore.EnforceAccess).append('\n');
|
buffer.append("[Multiverse-Core] enforceaccess: ").append(MultiverseCore.EnforceAccess).append('\n');
|
||||||
buffer.append("[Multiverse-Core] enforcegamemodes: ").append(MultiverseCore.EnforceGameModes).append('\n');
|
|
||||||
buffer.append("[Multiverse-Core] displaypermerrors: ").append(MultiverseCore.DisplayPermErrors).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] teleportintercept: ").append(MultiverseCore.TeleportIntercept).append('\n');
|
||||||
buffer.append("[Multiverse-Core] firstspawnoverride: ").append(MultiverseCore.FirstSpawnOverride).append('\n');
|
buffer.append("[Multiverse-Core] firstspawnoverride: ").append(MultiverseCore.FirstSpawnOverride).append('\n');
|
||||||
|
@ -228,4 +228,20 @@ public class ConfigPropertyFactory {
|
|||||||
public LocationConfigProperty getNewProperty(String name, Location defaultValue, String node, String help) {
|
public LocationConfigProperty getNewProperty(String name, Location defaultValue, String node, String help) {
|
||||||
return new LocationConfigProperty(this.section, name, defaultValue, node, help);
|
return new LocationConfigProperty(this.section, name, defaultValue, node, help);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new TempStringConfigProperty
|
||||||
|
*
|
||||||
|
* The boolean is a dummy. This is so I can differentiate from the non-temp one.
|
||||||
|
*
|
||||||
|
* @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 b Dummy.
|
||||||
|
* @return The TempStringConfigProperty
|
||||||
|
*/
|
||||||
|
public TempStringConfigProperty getNewProperty(String name, String defaultValue, String help, String method, boolean b) {
|
||||||
|
return new TempStringConfigProperty(name, defaultValue, help, method);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,77 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* 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 TempStringConfigProperty implements MVConfigProperty<String> {
|
||||||
|
private String name;
|
||||||
|
private String value;
|
||||||
|
private String method;
|
||||||
|
private String help;
|
||||||
|
|
||||||
|
public TempStringConfigProperty(String name, String defaultValue, String help) {
|
||||||
|
this.name = name;
|
||||||
|
this.help = help;
|
||||||
|
this.value = defaultValue;
|
||||||
|
this.parseValue(defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TempStringConfigProperty(String name, String defaultValue, String help, String method) {
|
||||||
|
this(name, defaultValue, help);
|
||||||
|
this.method = method;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getValue() {
|
||||||
|
return this.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMethod() {
|
||||||
|
return this.method;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean parseValue(String value) {
|
||||||
|
if (value == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this.setValue(value);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getConfigNode() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getHelp() {
|
||||||
|
return this.help;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setValue(String value) {
|
||||||
|
if (value == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this.value = value;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -23,10 +23,6 @@ public enum ConfigProperty {
|
|||||||
* Prefix chat-messages with world-names.
|
* Prefix chat-messages with world-names.
|
||||||
*/
|
*/
|
||||||
worldnameprefix,
|
worldnameprefix,
|
||||||
/**
|
|
||||||
* If value is set to false, Multiverse will NOT enforce world-gamemodes.
|
|
||||||
*/
|
|
||||||
enforcegamemodes,
|
|
||||||
/**
|
/**
|
||||||
* If value is set to false, Multiverse will NOT enforce world access permissions.
|
* If value is set to false, Multiverse will NOT enforce world access permissions.
|
||||||
*/
|
*/
|
||||||
|
@ -122,20 +122,14 @@ public class MVPlayerListener extends PlayerListener {
|
|||||||
this.plugin.log(Level.FINE, "Player joined AGAIN!");
|
this.plugin.log(Level.FINE, "Player joined AGAIN!");
|
||||||
}
|
}
|
||||||
// Handle the Players GameMode setting for the new world.
|
// Handle the Players GameMode setting for the new world.
|
||||||
if (MultiverseCore.EnforceGameModes) {
|
|
||||||
this.handleGameMode(event.getPlayer(), event.getPlayer().getWorld());
|
this.handleGameMode(event.getPlayer(), event.getPlayer().getWorld());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerChangedWorld(PlayerChangedWorldEvent event) {
|
public void onPlayerChangedWorld(PlayerChangedWorldEvent event) {
|
||||||
// Handle the Players GameMode setting for the new world.
|
// Permissions now determine whether or not to handle a gamemode.
|
||||||
if (MultiverseCore.EnforceGameModes) {
|
|
||||||
// Not yet implemented, but eventually we'll switch to this!
|
|
||||||
//if (this.plugin.getMVWorldManager().getMVWorld(event.getPlayer().getWorld()).getEnforceGameMode())
|
|
||||||
this.handleGameMode(event.getPlayer(), event.getPlayer().getWorld());
|
this.handleGameMode(event.getPlayer(), event.getPlayer().getWorld());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||||
@ -232,6 +226,7 @@ public class MVPlayerListener extends PlayerListener {
|
|||||||
}
|
}
|
||||||
}, 1L);
|
}, 1L);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FOLLOWING 2 Methods and Private class handle Per Player GameModes.
|
// FOLLOWING 2 Methods and Private class handle Per Player GameModes.
|
||||||
private void handleGameMode(Player player, World world) {
|
private void handleGameMode(Player player, World world) {
|
||||||
|
|
||||||
|
@ -43,11 +43,6 @@ public class MVPermissions implements PermissionsInterface {
|
|||||||
* @return True if they should bypass restrictions.
|
* @return True if they should bypass restrictions.
|
||||||
*/
|
*/
|
||||||
public boolean canIgnoreGameModeRestriction(Player p, MultiverseWorld w) {
|
public boolean canIgnoreGameModeRestriction(Player p, MultiverseWorld w) {
|
||||||
// If we're not enforcing gamemodes, won't change for anyone.
|
|
||||||
if (!MultiverseCore.EnforceGameModes) {
|
|
||||||
this.plugin.log(Level.FINER, "Enforce gamemodes is OFF, all players roam freely!");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (p.hasPermission("mv.bypass.gamemode.*")) {
|
if (p.hasPermission("mv.bypass.gamemode.*")) {
|
||||||
this.plugin.log(Level.FINER, "Player has mv.bypass.gamemode.* their gamemode is ignored!");
|
this.plugin.log(Level.FINER, "Player has mv.bypass.gamemode.* their gamemode is ignored!");
|
||||||
return true;
|
return true;
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
# This is the MV2 Config. If you mess it up, copy the values out
|
# This is the MV2 Config. If you mess it up, copy the values out
|
||||||
# Delete it, and it will be regenerated. Then use the ingame interface
|
# delete it, and it will be regenerated. Then use the ingame interface
|
||||||
# to add your values back.
|
# to add your values back via the "/mv conf" command.
|
||||||
|
# When in-game, simply type: "/mv conf ?" for help.
|
||||||
# A config with explanations can be found here:
|
# A config with explanations can be found here:
|
||||||
# https://github.com/Multiverse/Multiverse-Core/wiki/config.yml
|
# https://github.com/Multiverse/Multiverse-Core/wiki/config.yml
|
||||||
|
|
||||||
worldnameprefix: true
|
worldnameprefix: true
|
||||||
enforceaccess: true
|
enforceaccess: true
|
||||||
enforcegamemodes: true
|
|
||||||
bedrespawn: true
|
|
||||||
version: 2.6
|
|
||||||
displaypermerrors: true
|
displaypermerrors: true
|
||||||
teleportintercept: true
|
teleportintercept: true
|
||||||
firstspawnoverride: true
|
firstspawnoverride: true
|
||||||
messagecooldown: 5000
|
messagecooldown: 5000
|
||||||
|
version: 2.7
|
||||||
|
Loading…
Reference in New Issue
Block a user