diff --git a/build.gradle b/build.gradle index 9c053260..e81e15a2 100644 --- a/build.gradle +++ b/build.gradle @@ -26,9 +26,9 @@ } dependencies { - classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.1' - classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:3.0.1' - classpath 'org.ajoberstar:gradle-git:0.12.0' + classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3' + classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.7.5' + classpath 'org.ajoberstar:gradle-git:1.7.2' } } @@ -50,7 +50,7 @@ apply plugin: 'maven' apply plugin: 'checkstyle' apply plugin: 'com.github.johnrengelman.shadow' - apply plugin: 'com.jfrog.artifactory-upload' + apply plugin: 'com.jfrog.artifactory' group = 'com.sk89q.worldguard' version = '7.0.0-SNAPSHOT' @@ -62,6 +62,7 @@ checkstyle.configFile = new File(rootProject.projectDir, "config/checkstyle/checkstyle.xml") repositories { + mavenLocal() mavenCentral() maven { url "http://repo.spongepowered.org/maven/" } maven { url "https://hub.spigotmc.org/nexus/content/groups/public" } @@ -101,6 +102,10 @@ task javadocJar(type: Jar, dependsOn: javadoc) { classifier 'dist' dependencies { include(dependency('org.khelekore:prtree:1.5.0')) + include(dependency('com.sk89q:squirrelid:0.1.0')) + include(dependency('org.flywaydb:flyway-core:3.0')) + include(dependency('com.googlecode.json-simple:json-simple:1.1.1')) + include(dependency('net.sf.opencsv:opencsv:2.0')) } exclude 'GradleStart**' exclude '.cache' diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index 1f45fb65..2b4bac35 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -27,7 +27,6 @@ - diff --git a/config/checkstyle/import-control.xml b/config/checkstyle/import-control.xml index 636bbc0f..fbba4f1f 100644 --- a/config/checkstyle/import-control.xml +++ b/config/checkstyle/import-control.xml @@ -14,6 +14,8 @@ + + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index b7612167..1948b907 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a64bece0..d2c45a4b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Fri Nov 13 12:12:21 EST 2015 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-bin.zip diff --git a/gradlew b/gradlew index 91a7e269..cccdd3d5 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -6,47 +6,6 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - # Attempt to set APP_HOME # Resolve links: $0 may be a link PRG="$0" @@ -61,9 +20,49 @@ while [ -h "$PRG" ] ; do fi done SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- +cd "`dirname \"$PRG\"`/" >/dev/null APP_HOME="`pwd -P`" -cd "$SAVED" >&- +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -90,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -114,6 +113,7 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 8a0b282a..f9553162 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -8,14 +8,14 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @@ -46,10 +46,9 @@ echo location of your Java installation. goto fail :init -@rem Get command-line arguments, handling Windowz variants +@rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -60,11 +59,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ :execute @rem Setup the command line diff --git a/worldguard-core/build.gradle b/worldguard-core/build.gradle index 0a0e9f6d..a4da0a37 100644 --- a/worldguard-core/build.gradle +++ b/worldguard-core/build.gradle @@ -2,11 +2,14 @@ apply plugin: 'idea' dependencies { - compile 'com.sk89q.worldedit:worldedit-core:6.1.1-SNAPSHOT' + compile 'com.sk89q.worldedit:worldedit-core:7.0.0-SNAPSHOT' compile 'com.sk89q.intake:intake:4.2-SNAPSHOT' compile 'com.sk89q:squirrelid:0.1.0' compile 'org.flywaydb:flyway-core:3.0' compile 'org.khelekore:prtree:1.5.0' + compile 'net.sf.opencsv:opencsv:2.0' + compile 'com.googlecode.json-simple:json-simple:1.1.1' + compile 'com.google.code.findbugs:jsr305:1.3.9' } sourceSets { diff --git a/worldguard-core/config/checkstyle/checkstyle.xml b/worldguard-core/config/checkstyle/checkstyle.xml new file mode 100644 index 00000000..a79be7ef --- /dev/null +++ b/worldguard-core/config/checkstyle/checkstyle.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/worldguard-core/config/checkstyle/import-control.xml b/worldguard-core/config/checkstyle/import-control.xml new file mode 100644 index 00000000..0fdb4ff3 --- /dev/null +++ b/worldguard-core/config/checkstyle/import-control.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/LocalPlayer.java b/worldguard-core/src/main/java/com/sk89q/worldguard/LocalPlayer.java new file mode 100644 index 00000000..7c518932 --- /dev/null +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/LocalPlayer.java @@ -0,0 +1,163 @@ +/* + * WorldGuard, a suite of tools for Minecraft + * Copyright (C) sk89q + * Copyright (C) WorldGuard team and contributors + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldguard; + +import com.sk89q.worldedit.extension.platform.AbstractPlayerActor; +import com.sk89q.worldedit.world.weather.WeatherType; +import com.sk89q.worldguard.domains.Association; +import com.sk89q.worldguard.protection.association.RegionAssociable; +import com.sk89q.worldguard.protection.regions.ProtectedRegion; + +import java.util.List; + +public abstract class LocalPlayer extends AbstractPlayerActor implements RegionAssociable { + + /** + * Returns true if this player is inside a group. + * + * @param group The group to check + * @return Whether this player is in {@code group} + */ + public abstract boolean hasGroup(String group); + + /** + * Kick this player. + * + * @param msg The message to kick the player with + */ + public abstract void kick(String msg); + + /** + * Ban this player. + * + * @param msg The message to ban the player with + */ + public abstract void ban(String msg); + + @Override + public Association getAssociation(List regions) { + boolean member = false; + + for (ProtectedRegion region : regions) { + if (region.isOwner(this)) { + return Association.OWNER; + } else if (!member && region.isMember(this)) { + member = true; + } + } + + return member ? Association.MEMBER : Association.NON_MEMBER; + } + + /** + * Gets the health of this player. + * + * @return The health + */ + public abstract double getHealth(); + + /** + * Sets the health of this player. + * + * @param health The health + */ + public abstract void setHealth(double health); + + /** + * Gets the max health of this player. + * + * @return The max health + */ + public abstract double getMaxHealth(); + + /** + * Gets the food level of this player. + * + * @return The food level + */ + public abstract double getFoodLevel(); + + /** + * Sets the food level of this player. + * + * @param foodLevel The food level + */ + public abstract void setFoodLevel(double foodLevel); + + /** + * Gets the saturation of this player. + * + * @return The saturation + */ + public abstract double getSaturation(); + + /** + * Sets the saturation of this player. + * + * @param saturation The saturation + */ + public abstract void setSaturation(double saturation); + + /** + * Gets the players weather + * + * @return The players weather + */ + public abstract WeatherType getPlayerWeather(); + + /** + * Sets the players WeatherType + * + * @param weather The weather type + */ + public abstract void setPlayerWeather(WeatherType weather); + + /** + * Resets the players weather to normal. + */ + public abstract void resetPlayerWeather(); + + /** + * Gets if the players time is relative. + * + * @return If the time is relative + */ + public abstract boolean isPlayerTimeRelative(); + + /** + * Gets the time offset of the player. + * + * @return The players time offset + */ + public abstract long getPlayerTimeOffset(); + + /** + * Sets the players time. + * + * @param time The players time + * @param relative If it's relative + */ + public abstract void setPlayerTime(long time, boolean relative); + + /** + * Resets the players time to normal. + */ + public abstract void resetPlayerTime(); +} diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/WorldGuard.java b/worldguard-core/src/main/java/com/sk89q/worldguard/WorldGuard.java new file mode 100644 index 00000000..9b3f83de --- /dev/null +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/WorldGuard.java @@ -0,0 +1,69 @@ +/* + * WorldGuard, a suite of tools for Minecraft + * Copyright (C) sk89q + * Copyright (C) WorldGuard team and contributors + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldguard; + +import static com.google.common.base.Preconditions.checkNotNull; + +import com.sk89q.worldguard.internal.platform.WorldGuardPlatform; +import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; +import com.sk89q.worldguard.protection.flags.registry.SimpleFlagRegistry; + +import java.util.logging.Logger; + +public class WorldGuard { + + public static final Logger logger = Logger.getLogger(WorldGuard.class.getCanonicalName()); + + private static final WorldGuard instance = new WorldGuard(); + private WorldGuardPlatform platform; + private final SimpleFlagRegistry flagRegistry = new SimpleFlagRegistry(); + + public static WorldGuard getInstance() { + return instance; + } + + public WorldGuard() { + flagRegistry.setInitialized(true); + } + + /** + * The WorldGuard Platform. + * + * @return The platform + */ + public WorldGuardPlatform getPlatform() { + checkNotNull(platform); + return platform; + } + + public void setPlatform(WorldGuardPlatform platform) { + checkNotNull(platform); + this.platform = platform; + } + + /** + * Get the flag registry. + * + * @return the flag registry + */ + public FlagRegistry getFlagRegistry() { + return this.flagRegistry; + } +} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/Blacklist.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/Blacklist.java similarity index 87% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/Blacklist.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/Blacklist.java index 9ccc19ae..53296f09 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/Blacklist.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/Blacklist.java @@ -19,6 +19,10 @@ package com.sk89q.worldguard.blacklist; +import com.sk89q.worldedit.util.formatting.ColorCodeBuilder; +import com.sk89q.worldedit.util.formatting.Style; +import com.sk89q.worldedit.util.formatting.StyledFragment; +import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.blacklist.action.Action; import com.sk89q.worldguard.blacklist.action.ActionType; import com.sk89q.worldguard.blacklist.event.BlacklistEvent; @@ -29,8 +33,6 @@ import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; -import com.sk89q.worldguard.bukkit.commands.CommandUtils; -import org.bukkit.ChatColor; import java.io.BufferedReader; import java.io.File; @@ -42,7 +44,7 @@ import java.util.logging.Level; import java.util.logging.Logger; -public abstract class Blacklist { +public class Blacklist { private static final Logger log = Logger.getLogger(Blacklist.class.getCanonicalName()); @@ -133,12 +135,10 @@ public boolean check(BlacklistEvent event, boolean forceRepeat, boolean silent) * @throws IOException if an error occurred reading from the file */ public void load(File file) throws IOException { - FileReader input = null; + MatcherIndex.Builder builder = new MatcherIndex.Builder(); TargetMatcherParser targetMatcherParser = new TargetMatcherParser(); - - try { - input = new FileReader(file); + try (FileReader input = new FileReader(file)) { BufferedReader buff = new BufferedReader(input); String line; @@ -155,7 +155,7 @@ public void load(File file) throws IOException { if (line.matches("^\\[.*\\]$")) { String[] items = line.substring(1, line.length() - 1).split(","); - currentEntries = new ArrayList(); + currentEntries = new ArrayList<>(); for (String item : items) { try { @@ -185,10 +185,10 @@ public void load(File file) throws IOException { entry.setIgnorePermissions(parts[1].split(",")); } else if (parts[0].equalsIgnoreCase("message")) { - entry.setMessage(CommandUtils.replaceColorMacros(parts[1].trim())); + entry.setMessage(WorldGuard.getInstance().getPlatform().replaceColorMacros(parts[1].trim())); } else if (parts[0].equalsIgnoreCase("comment")) { - entry.setComment(CommandUtils.replaceColorMacros(parts[1].trim())); + entry.setComment(WorldGuard.getInstance().getPlatform().replaceColorMacros(parts[1].trim())); } else { boolean found = false; @@ -217,19 +217,12 @@ public void load(File file) throws IOException { } this.index = builder.build(); - } finally { - try { - if (input != null) { - input.close(); - } - } catch (IOException ignore) { - } } } private List parseActions(BlacklistEntry entry, String raw) { String[] split = raw.split(","); - List actions = new ArrayList(); + List actions = new ArrayList<>(); for (String name : split) { name = name.trim(); @@ -270,12 +263,11 @@ public BlacklistEvent getLastEvent() { public void notify(BlacklistEvent event, String comment) { lastEvent = event; - broadcastNotification(ChatColor.GRAY + "WG: " - + ChatColor.LIGHT_PURPLE + event.getCauseName() - + ChatColor.GOLD + " (" + event.getDescription() + ") " - + ChatColor.WHITE - + event.getTarget().getFriendlyName() - + (comment != null ? " (" + comment + ")" : "") + "."); + StyledFragment fragment = new StyledFragment().append(new StyledFragment(Style.GRAY).append("WG: ")) + .append(new StyledFragment(Style.PURPLE).append(event.getCauseName())) + .append(new StyledFragment(Style.YELLOW_DARK).append(" (" + event.getDescription() + ") ")) + .append(new StyledFragment(Style.WHITE).append(event.getTarget().getFriendlyName() + (comment != null ? " (" + comment + ")" : "") + ".")); + broadcastNotification(ColorCodeBuilder.asColorCodes(fragment)); } /** @@ -283,7 +275,9 @@ public void notify(BlacklistEvent event, String comment) { * * @param msg The message to broadcast */ - public abstract void broadcastNotification(String msg); + public void broadcastNotification(String msg) { + WorldGuard.getInstance().getPlatform().broadcastNotification(msg); + } public LoadingCache getRepeatingEventCache() { return repeatingEventCache; diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/BlacklistEntry.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/BlacklistEntry.java similarity index 95% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/BlacklistEntry.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/BlacklistEntry.java index cd747d8e..a817c522 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/BlacklistEntry.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/BlacklistEntry.java @@ -33,7 +33,7 @@ public class BlacklistEntry { private Blacklist blacklist; private Set ignoreGroups; private Set ignorePermissions; - private Map, List> actions = new HashMap, List>(); + private Map, List> actions = new HashMap<>(); private String message; private String comment; @@ -146,12 +146,7 @@ public boolean shouldIgnore(@Nullable LocalPlayer player) { * @return The actions for the given event */ public List getActions(Class eventCls) { - List ret = actions.get(eventCls); - if (ret == null) { - ret = new ArrayList(); - actions.put(eventCls, ret); - } - return ret; + return actions.computeIfAbsent(eventCls, k -> new ArrayList<>()); } /** diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/BlacklistLoggerHandler.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/BlacklistLoggerHandler.java similarity index 97% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/BlacklistLoggerHandler.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/BlacklistLoggerHandler.java index 196676da..9cd3e929 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/BlacklistLoggerHandler.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/BlacklistLoggerHandler.java @@ -31,7 +31,7 @@ public class BlacklistLoggerHandler implements LoggerHandler { * List of logger handlers. */ private Set handlers - = new HashSet(); + = new HashSet<>(); /** * Add a handler. diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/MatcherIndex.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/MatcherIndex.java similarity index 85% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/MatcherIndex.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/MatcherIndex.java index a68d314e..76bcb915 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/MatcherIndex.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/MatcherIndex.java @@ -32,16 +32,16 @@ class MatcherIndex { - private static final MatcherIndex EMPTY_INSTANCE = new MatcherIndex(HashBasedTable.create()); - private final Table entries; + private static final MatcherIndex EMPTY_INSTANCE = new MatcherIndex(HashBasedTable.create()); + private final Table entries; - private MatcherIndex(Table entries) { + private MatcherIndex(Table entries) { checkNotNull(entries); this.entries = entries; } public List getEntries(Target target) { - List found = new ArrayList(); + List found = new ArrayList<>(); for (Entry entry : entries.row(target.getTypeId()).entrySet()) { if (entry.getKey().test(target)) { found.add(entry.getValue()); @@ -63,7 +63,7 @@ public static MatcherIndex getEmptyInstance() { } public static class Builder { - private final Table entries = HashBasedTable.create(); + private final Table entries = HashBasedTable.create(); public Builder add(TargetMatcher matcher, BlacklistEntry entry) { checkNotNull(matcher); diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/TrackedEvent.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/TrackedEvent.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/TrackedEvent.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/TrackedEvent.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/Action.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/Action.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/Action.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/Action.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/ActionResult.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/ActionResult.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/ActionResult.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/ActionResult.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/ActionType.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/ActionType.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/ActionType.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/ActionType.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/AllowAction.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/AllowAction.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/AllowAction.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/AllowAction.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/BanAction.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/BanAction.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/BanAction.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/BanAction.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/DenyAction.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/DenyAction.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/DenyAction.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/DenyAction.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/KickAction.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/KickAction.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/KickAction.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/KickAction.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/LogAction.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/LogAction.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/LogAction.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/LogAction.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/NotifyAction.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/NotifyAction.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/NotifyAction.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/NotifyAction.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/RepeatGuardedAction.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/RepeatGuardedAction.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/RepeatGuardedAction.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/RepeatGuardedAction.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/TellAction.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/TellAction.java similarity index 82% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/TellAction.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/TellAction.java index ec0934e5..f3886a47 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/action/TellAction.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/action/TellAction.java @@ -21,7 +21,6 @@ import com.sk89q.worldguard.blacklist.BlacklistEntry; import com.sk89q.worldguard.blacklist.event.BlacklistEvent; -import org.bukkit.ChatColor; import static com.google.common.base.Preconditions.checkNotNull; @@ -44,10 +43,9 @@ protected ActionResult applyNonRepeated(BlacklistEvent event, boolean silent) { if (event.getPlayer() != null) { if (message != null) { - event.getPlayer().printRaw(ChatColor.YELLOW + String.format(message, event.getTarget().getFriendlyName())); + event.getPlayer().print(String.format(message, event.getTarget().getFriendlyName())); } else { - event.getPlayer().printRaw(ChatColor.YELLOW + "You're not allowed to " + event.getDescription() + " " + - event.getTarget().getFriendlyName() + "."); + event.getPlayer().printError("You're not allowed to " + event.getDescription() + " " + event.getTarget().getFriendlyName() + "."); } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/AbstractBlacklistEvent.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/AbstractBlacklistEvent.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/AbstractBlacklistEvent.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/AbstractBlacklistEvent.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/BlacklistEvent.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/BlacklistEvent.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/BlacklistEvent.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/BlacklistEvent.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/BlockBlacklistEvent.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/BlockBlacklistEvent.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/BlockBlacklistEvent.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/BlockBlacklistEvent.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/BlockBreakBlacklistEvent.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/BlockBreakBlacklistEvent.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/BlockBreakBlacklistEvent.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/BlockBreakBlacklistEvent.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/BlockDispenseBlacklistEvent.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/BlockDispenseBlacklistEvent.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/BlockDispenseBlacklistEvent.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/BlockDispenseBlacklistEvent.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/BlockInteractBlacklistEvent.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/BlockInteractBlacklistEvent.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/BlockInteractBlacklistEvent.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/BlockInteractBlacklistEvent.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/BlockPlaceBlacklistEvent.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/BlockPlaceBlacklistEvent.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/BlockPlaceBlacklistEvent.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/BlockPlaceBlacklistEvent.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/EventType.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/EventType.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/EventType.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/EventType.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/ItemAcquireBlacklistEvent.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/ItemAcquireBlacklistEvent.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/ItemAcquireBlacklistEvent.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/ItemAcquireBlacklistEvent.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/ItemBlacklistEvent.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/ItemBlacklistEvent.java similarity index 94% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/ItemBlacklistEvent.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/ItemBlacklistEvent.java index fa0a8565..36b30416 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/ItemBlacklistEvent.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/ItemBlacklistEvent.java @@ -45,7 +45,7 @@ public String getLoggerMessage() { @Override public Vector getLoggedPosition() { - return getPlayer() != null ? getPlayer().getPosition() : getPosition(); + return getPlayer() != null ? getPlayer().getLocation().toVector() : getPosition(); } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/ItemDestroyWithBlacklistEvent.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/ItemDestroyWithBlacklistEvent.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/ItemDestroyWithBlacklistEvent.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/ItemDestroyWithBlacklistEvent.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/ItemDropBlacklistEvent.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/ItemDropBlacklistEvent.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/ItemDropBlacklistEvent.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/ItemDropBlacklistEvent.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/ItemUseBlacklistEvent.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/ItemUseBlacklistEvent.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/event/ItemUseBlacklistEvent.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/event/ItemUseBlacklistEvent.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/logger/ConsoleHandler.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/logger/ConsoleHandler.java similarity index 77% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/logger/ConsoleHandler.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/logger/ConsoleHandler.java index 2430b338..8925a3ec 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/logger/ConsoleHandler.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/logger/ConsoleHandler.java @@ -19,7 +19,6 @@ package com.sk89q.worldguard.blacklist.logger; -import com.sk89q.worldedit.blocks.ItemType; import com.sk89q.worldguard.blacklist.event.BlacklistEvent; import java.util.logging.Level; @@ -41,21 +40,6 @@ public void logEvent(BlacklistEvent event, String comment) { (comment != null ? " (" + comment + ")" : "")); } - /** - * Get an item's friendly name with its ID. - * - * @param id The item id - * @return The friendly name of the item - */ - private static String getFriendlyItemName(int id) { - ItemType type = ItemType.fromID(id); - if (type != null) { - return type.getName() + " (#" + id + ")"; - } else { - return "#" + id; - } - } - @Override public void close() { } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/logger/DatabaseHandler.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/logger/DatabaseHandler.java similarity index 97% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/logger/DatabaseHandler.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/logger/DatabaseHandler.java index b958f1f7..b446405c 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/logger/DatabaseHandler.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/logger/DatabaseHandler.java @@ -84,7 +84,7 @@ private Connection getConnection() throws SQLException { * @param item The item used * @param comment The comment associated with the event */ - private void logEvent(EventType eventType, @Nullable LocalPlayer player, Vector pos, int item, String comment) { + private void logEvent(EventType eventType, @Nullable LocalPlayer player, Vector pos, String item, String comment) { try { Connection conn = getConnection(); PreparedStatement stmt = conn.prepareStatement( @@ -97,7 +97,7 @@ private void logEvent(EventType eventType, @Nullable LocalPlayer player, Vector stmt.setInt(4, pos.getBlockX()); stmt.setInt(5, pos.getBlockY()); stmt.setInt(6, pos.getBlockZ()); - stmt.setInt(7, item); + stmt.setString(7, item); stmt.setInt(8, (int)(System.currentTimeMillis() / 1000)); stmt.setString(9, comment); stmt.executeUpdate(); diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/logger/FileHandler.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/logger/FileHandler.java similarity index 95% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/logger/FileHandler.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/logger/FileHandler.java index b52286a6..62d6129c 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/logger/FileHandler.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/logger/FileHandler.java @@ -20,7 +20,6 @@ package com.sk89q.worldguard.blacklist.logger; import com.sk89q.worldedit.Vector; -import com.sk89q.worldedit.blocks.ItemType; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.blacklist.event.BlacklistEvent; import com.sk89q.worldguard.blacklist.target.Target; @@ -231,21 +230,6 @@ public void logEvent(BlacklistEvent event, String comment) { logEvent(event, event.getDescription(), event.getTarget(), event.getPosition(), comment); } - /** - * Get an item's friendly name with its ID. - * - * @param id The id to get a friendly name for - * @return The friendly name - */ - private static String getFriendlyItemName(int id) { - ItemType type = ItemType.fromID(id); - if (type != null) { - return type.getName() + " (#" + id + ")"; - } else { - return "#" + id + ""; - } - } - @Override public void close() { for (Map.Entry entry : writers.entrySet()) { diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/logger/LogFileWriter.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/logger/LogFileWriter.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/logger/LogFileWriter.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/logger/LogFileWriter.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/logger/LoggerHandler.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/logger/LoggerHandler.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/logger/LoggerHandler.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/logger/LoggerHandler.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/DataMask.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/DataMask.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/DataMask.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/DataMask.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/internal/BukkitBlacklist.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/ItemMatcher.java similarity index 64% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/internal/BukkitBlacklist.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/ItemMatcher.java index 0b94bf0f..6a782008 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/internal/BukkitBlacklist.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/ItemMatcher.java @@ -17,23 +17,26 @@ * along with this program. If not, see . */ -package com.sk89q.worldguard.bukkit.internal; +package com.sk89q.worldguard.blacklist.target; -import com.sk89q.worldguard.blacklist.Blacklist; -import com.sk89q.worldguard.bukkit.WorldGuardPlugin; +import com.sk89q.worldedit.world.item.ItemType; -public class BukkitBlacklist extends Blacklist { +public class ItemMatcher implements TargetMatcher { - private WorldGuardPlugin plugin; - - public BukkitBlacklist(Boolean useAsWhitelist, WorldGuardPlugin plugin) { - super(useAsWhitelist); - this.plugin = plugin; + private final ItemType type; + + public ItemMatcher(ItemType type) { + this.type = type; } - + @Override - public void broadcastNotification(String msg) { - plugin.broadcastNotification(msg); + public String getMatchedTypeId() { + return this.type.getId(); + } + + @Override + public boolean test(Target target) { + return target.getTypeId().equals(getMatchedTypeId()); } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/WildcardDataMatcher.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/ItemTarget.java similarity index 74% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/WildcardDataMatcher.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/ItemTarget.java index 21a4a140..e04dbb88 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/WildcardDataMatcher.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/ItemTarget.java @@ -19,22 +19,24 @@ package com.sk89q.worldguard.blacklist.target; -public class WildcardDataMatcher implements TargetMatcher { +import com.sk89q.worldedit.world.item.ItemType; - private final int typeId; +public class ItemTarget implements Target { - public WildcardDataMatcher(int typeId) { - this.typeId = typeId; + private ItemType type; + + public ItemTarget(ItemType type) { + this.type = type; } @Override - public int getMatchedTypeId() { - return typeId; + public String getTypeId() { + return type.getId(); } @Override - public boolean test(Target target) { - return target.getTypeId() == typeId; + public String getFriendlyName() { + return type.getName(); } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/RangeMask.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/RangeMask.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/RangeMask.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/RangeMask.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/Target.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/Target.java similarity index 90% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/Target.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/Target.java index dd6438fa..f26a8cc5 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/Target.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/Target.java @@ -29,14 +29,7 @@ public interface Target { * * @return the type ID */ - int getTypeId(); - - /** - * Get the data value. - * - * @return the data value - */ - short getData(); + String getTypeId(); /** * Get a friendly name to be printed. diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcher.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcher.java similarity index 97% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcher.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcher.java index 08ef4772..9694e086 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcher.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcher.java @@ -29,7 +29,7 @@ public interface TargetMatcher { * * @return the type ID */ - int getMatchedTypeId(); + String getMatchedTypeId(); /** * Return whether the given target is matched by this matcher. diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcherParseException.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcherParseException.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcherParseException.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcherParseException.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/MaterialTarget.java b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcherParser.java similarity index 58% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/MaterialTarget.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcherParser.java index 8797aaa2..b568a475 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/MaterialTarget.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcherParser.java @@ -19,36 +19,22 @@ package com.sk89q.worldguard.blacklist.target; -import com.sk89q.worldedit.blocks.ItemType; +import com.sk89q.worldedit.world.item.ItemType; +import com.sk89q.worldedit.world.item.ItemTypes; -public class MaterialTarget implements Target { +public class TargetMatcherParser { - private int id; - private short data; - - public MaterialTarget(int id, short data) { - this.id = id; - this.data = data; + public TargetMatcher fromInput(String input) throws TargetMatcherParseException { + return new ItemMatcher(parseType(input)); } - @Override - public int getTypeId() { - return id; - } + private ItemType parseType(String input) throws TargetMatcherParseException { + input = input.trim(); - @Override - public short getData() { - return data; - } - - @Override - public String getFriendlyName() { - ItemType type = ItemType.fromID(id); - if (type != null) { - return type.getName() + " (#" + id + ":" + data + ")"; - } else { - return "#" + id + ":" + data; + ItemType itemType = ItemTypes.get(input); + if (itemType == null) { + throw new TargetMatcherParseException("Unknown block or item name: " + input); } + return itemType; } - } diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/config/ConfigurationManager.java b/worldguard-core/src/main/java/com/sk89q/worldguard/config/ConfigurationManager.java new file mode 100644 index 00000000..d2c1159b --- /dev/null +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/config/ConfigurationManager.java @@ -0,0 +1,171 @@ +/* + * WorldGuard, a suite of tools for Minecraft + * Copyright (C) sk89q + * Copyright (C) WorldGuard team and contributors + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldguard.config; + +import com.sk89q.worldedit.world.World; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.protection.managers.storage.DriverType; +import com.sk89q.worldguard.protection.managers.storage.RegionDriver; +import com.sk89q.worldguard.session.handler.WaterBreathing; +import com.sk89q.worldguard.util.report.Unreported; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Logger; + +/** + * Represents the global configuration and also delegates configuration + * for individual worlds. + * + * @author sk89q + * @author Michael + */ +public abstract class ConfigurationManager { + + protected static final Logger log = Logger.getLogger(ConfigurationManager.class.getCanonicalName()); + + static final String CONFIG_HEADER = "#\r\n" + + "# WorldGuard's main configuration file\r\n" + + "#\r\n" + + "# This is the global configuration file. Anything placed into here will\r\n" + + "# be applied to all worlds. However, each world has its own configuration\r\n" + + "# file to allow you to replace most settings in here for that world only.\r\n" + + "#\r\n" + + "# About editing this file:\r\n" + + "# - DO NOT USE TABS. You MUST use spaces or Bukkit will complain. If\r\n" + + "# you use an editor like Notepad++ (recommended for Windows users), you\r\n" + + "# must configure it to \"replace tabs with spaces.\" In Notepad++, this can\r\n" + + "# be changed in Settings > Preferences > Language Menu.\r\n" + + "# - Don't get rid of the indents. They are indented so some entries are\r\n" + + "# in categories (like \"enforce-single-session\" is in the \"protection\"\r\n" + + "# category.\r\n" + + "# - If you want to check the format of this file before putting it\r\n" + + "# into WorldGuard, paste it into http://yaml-online-parser.appspot.com/\r\n" + + "# and see if it gives \"ERROR:\".\r\n" + + "# - Lines starting with # are comments and so they are ignored.\r\n" + + "#\r\n"; + + private boolean hasCommandBookGodMode = false; + + public boolean useRegionsCreatureSpawnEvent; + public boolean activityHaltToggle = false; + public boolean useGodPermission; + public boolean useGodGroup; + public boolean useAmphibiousGroup; + public boolean usePlayerMove; + public boolean usePlayerTeleports; + public boolean deopOnJoin; + public boolean blockInGameOp; + public boolean migrateRegionsToUuid; + public boolean keepUnresolvedNames; + + @Unreported public Map hostKeys = new HashMap<>(); + public boolean hostKeysAllowFMLClients; + + /** + * Region Storage Configuration method, and config values + */ + @Unreported public RegionDriver selectedRegionStoreDriver; + @Unreported public Map regionStoreDriverMap; + + /** + * Get the folder for storing data files and configuration. + * + * @return the data folder + */ + public abstract File getDataFolder(); + + /** + * Get the folder for storing data files and configuration for each + * world. + * + * @return the data folder + */ + public File getWorldsDataFolder() { + return new File(getDataFolder(), "worlds"); + } + + /** + * Load the configuration. + */ + public abstract void load(); + + /** + * Unload the configuration. + */ + public abstract void unload(); + + /** + * Get the configuration for a world. + * + * @param world The world to get the configuration for + * @return {@code world}'s configuration + */ + public abstract WorldConfiguration get(World world); + + public abstract void disableUuidMigration(); + + /** + * Check to see if god mode is enabled for a player. + * + * @param player The player to check + * @return Whether the player has godmode through WorldGuard or CommandBook + */ + public boolean hasGodMode(LocalPlayer player) { + return WorldGuard.getInstance().getPlatform().getSessionManager().get(player).isInvincible(player); + } + + /** + * Enable amphibious mode for a player. + * + * @param player The player to enable amphibious mode for + */ + public void enableAmphibiousMode(LocalPlayer player) { + WaterBreathing handler = WorldGuard.getInstance().getPlatform().getSessionManager().get(player).getHandler(WaterBreathing.class); + if (handler != null) { + handler.setWaterBreathing(true); + } + } + + /** + * Disable amphibious mode for a player. + * + * @param player The player to disable amphibious mode for + */ + public void disableAmphibiousMode(LocalPlayer player) { + WaterBreathing handler = WorldGuard.getInstance().getPlatform().getSessionManager().get(player).getHandler(WaterBreathing.class); + if (handler != null) { + handler.setWaterBreathing(false); + } + } + + /** + * Check to see if amphibious mode is enabled for a player. + * + * @param player The player to check + * @return Whether {@code player} has amphibious mode + */ + public boolean hasAmphibiousMode(LocalPlayer player) { + WaterBreathing handler = WorldGuard.getInstance().getPlatform().getSessionManager().get(player).getHandler(WaterBreathing.class); + return handler != null && handler.hasWaterBreathing(); + } +} diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/config/WorldConfiguration.java b/worldguard-core/src/main/java/com/sk89q/worldguard/config/WorldConfiguration.java new file mode 100644 index 00000000..1873f0a3 --- /dev/null +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/config/WorldConfiguration.java @@ -0,0 +1,69 @@ +/* + * WorldGuard, a suite of tools for Minecraft + * Copyright (C) sk89q + * Copyright (C) WorldGuard team and contributors + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldguard.config; + +import com.sk89q.worldguard.blacklist.Blacklist; +import com.sk89q.worldguard.util.report.Unreported; + +import java.io.File; +import java.util.logging.Logger; + +/** + * Holds the configuration for individual worlds. + * + * @author sk89q + * @author Michael + */ +public abstract class WorldConfiguration { + + public static final Logger log = Logger.getLogger(WorldConfiguration.class.getCanonicalName()); + + public static final String CONFIG_HEADER = "#\r\n" + + "# WorldGuard's world configuration file\r\n" + + "#\r\n" + + "# This is a world configuration file. Anything placed into here will only\r\n" + + "# affect this world. If you don't put anything in this file, then the\r\n" + + "# settings will be inherited from the main configuration file.\r\n" + + "#\r\n" + + "# If you see {} below, that means that there are NO entries in this file.\r\n" + + "# Remove the {} and add your own entries.\r\n" + + "#\r\n"; + + @Unreported private String worldName; + protected File blacklistFile; + + @Unreported protected Blacklist blacklist; + + public boolean boundedLocationFlags; + public boolean useRegions; + + /** + * Load the configuration. + */ + public abstract void loadConfiguration(); + + public Blacklist getBlacklist() { + return this.blacklist; + } + + public String getWorldName() { + return this.worldName; + } +} diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/config/YamlConfigurationManager.java b/worldguard-core/src/main/java/com/sk89q/worldguard/config/YamlConfigurationManager.java new file mode 100644 index 00000000..8588fef4 --- /dev/null +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/config/YamlConfigurationManager.java @@ -0,0 +1,120 @@ +/* + * WorldGuard, a suite of tools for Minecraft + * Copyright (C) sk89q + * Copyright (C) WorldGuard team and contributors + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldguard.config; + +import com.google.common.collect.ImmutableMap; +import com.sk89q.util.yaml.YAMLFormat; +import com.sk89q.util.yaml.YAMLProcessor; +import com.sk89q.worldguard.protection.managers.storage.DriverType; +import com.sk89q.worldguard.protection.managers.storage.RegionDriver; +import com.sk89q.worldguard.protection.managers.storage.file.DirectoryYamlDriver; +import com.sk89q.worldguard.protection.managers.storage.sql.SQLDriver; +import com.sk89q.worldguard.util.report.Unreported; +import com.sk89q.worldguard.util.sql.DataSourceConfig; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +public abstract class YamlConfigurationManager extends ConfigurationManager { + + @Unreported private YAMLProcessor config; + + public abstract void copyDefaults(); + + @Override + public void load() { + copyDefaults(); + + config = new YAMLProcessor(new File(getDataFolder(), "config.yml"), true, YAMLFormat.EXTENDED); + try { + config.load(); + } catch (IOException e) { + log.severe("Error reading configuration for global config: "); + e.printStackTrace(); + } + + config.removeProperty("suppress-tick-sync-warnings"); + migrateRegionsToUuid = config.getBoolean("regions.uuid-migration.perform-on-next-start", true); + keepUnresolvedNames = config.getBoolean("regions.uuid-migration.keep-names-that-lack-uuids", true); + useRegionsCreatureSpawnEvent = config.getBoolean("regions.use-creature-spawn-event", true); + useGodPermission = config.getBoolean("auto-invincible", config.getBoolean("auto-invincible-permission", false)); + useGodGroup = config.getBoolean("auto-invincible-group", false); + useAmphibiousGroup = config.getBoolean("auto-no-drowning-group", false); + config.removeProperty("auto-invincible-permission"); + usePlayerMove = config.getBoolean("use-player-move-event", true); + usePlayerTeleports = config.getBoolean("use-player-teleports", true); + + deopOnJoin = config.getBoolean("security.deop-everyone-on-join", false); + blockInGameOp = config.getBoolean("security.block-in-game-op-command", false); + + hostKeys = new HashMap<>(); + Object hostKeysRaw = config.getProperty("host-keys"); + if (!(hostKeysRaw instanceof Map)) { + config.setProperty("host-keys", new HashMap()); + } else { + for (Map.Entry entry : ((Map) hostKeysRaw).entrySet()) { + String key = String.valueOf(entry.getKey()); + String value = String.valueOf(entry.getValue()); + hostKeys.put(key.toLowerCase(), value); + } + } + hostKeysAllowFMLClients = config.getBoolean("security.host-keys-allow-forge-clients", false); + + // ==================================================================== + // Region store drivers + // ==================================================================== + + boolean useSqlDatabase = config.getBoolean("regions.sql.use", false); + String sqlDsn = config.getString("regions.sql.dsn", "jdbc:mysql://localhost/worldguard"); + String sqlUsername = config.getString("regions.sql.username", "worldguard"); + String sqlPassword = config.getString("regions.sql.password", "worldguard"); + String sqlTablePrefix = config.getString("regions.sql.table-prefix", ""); + + DataSourceConfig dataSourceConfig = new DataSourceConfig(sqlDsn, sqlUsername, sqlPassword, sqlTablePrefix); + SQLDriver sqlDriver = new SQLDriver(dataSourceConfig); + DirectoryYamlDriver yamlDriver = new DirectoryYamlDriver(getWorldsDataFolder(), "regions.yml"); + + this.regionStoreDriverMap = ImmutableMap.builder() + .put(DriverType.MYSQL, sqlDriver) + .put(DriverType.YAML, yamlDriver) + .build(); + this.selectedRegionStoreDriver = useSqlDatabase ? sqlDriver : yamlDriver; + + postLoad(); + + config.setHeader(CONFIG_HEADER); + } + + public void postLoad() {} + + public YAMLProcessor getConfig() { + return config; + } + + @Override + public void disableUuidMigration() { + config.setProperty("regions.uuid-migration.perform-on-next-start", false); + if (!config.save()) { + log.severe("Error saving configuration!"); + } + } +} diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/config/YamlWorldConfiguration.java b/worldguard-core/src/main/java/com/sk89q/worldguard/config/YamlWorldConfiguration.java new file mode 100644 index 00000000..7fde19f4 --- /dev/null +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/config/YamlWorldConfiguration.java @@ -0,0 +1,125 @@ +/* + * WorldGuard, a suite of tools for Minecraft + * Copyright (C) sk89q + * Copyright (C) WorldGuard team and contributors + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldguard.config; + +import com.sk89q.util.yaml.YAMLProcessor; +import com.sk89q.worldguard.util.report.Unreported; + +import java.util.ArrayList; +import java.util.List; + +public abstract class YamlWorldConfiguration extends WorldConfiguration { + + @Unreported private YAMLProcessor parentConfig; + @Unreported private YAMLProcessor config; + + public boolean getBoolean(String node, boolean def) { + boolean val = parentConfig.getBoolean(node, def); + + if (config.getProperty(node) != null) { + return config.getBoolean(node, def); + } else { + return val; + } + } + + public String getString(String node, String def) { + String val = parentConfig.getString(node, def); + + if (config.getProperty(node) != null) { + return config.getString(node, def); + } else { + return val; + } + } + + public int getInt(String node, int def) { + int val = parentConfig.getInt(node, def); + + if (config.getProperty(node) != null) { + return config.getInt(node, def); + } else { + return val; + } + } + + @SuppressWarnings("unused") + private double getDouble(String node, double def) { + double val = parentConfig.getDouble(node, def); + + if (config.getProperty(node) != null) { + return config.getDouble(node, def); + } else { + return val; + } + } + + public List getIntList(String node, List def) { + List res = parentConfig.getIntList(node, def); + + if (res == null || res.size() == 0) { + parentConfig.setProperty(node, new ArrayList()); + } + + if (config.getProperty(node) != null) { + res = config.getIntList(node, def); + } + + return res; + } + + public List getStringList(String node, List def) { + List res = parentConfig.getStringList(node, def); + + if (res == null || res.size() == 0) { + parentConfig.setProperty(node, new ArrayList()); + } + + if (config.getProperty(node) != null) { + res = config.getStringList(node, def); + } + + return res; + } + + public List getKeys(String node) { + List res = parentConfig.getKeys(node); + + if (res == null || res.size() == 0) { + res = config.getKeys(node); + } + if (res == null) { + res = new ArrayList(); + } + + return res; + } + + public Object getProperty(String node) { + Object res = parentConfig.getProperty(node); + + if (config.getProperty(node) != null) { + res = config.getProperty(node); + } + + return res; + } + +} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/Association.java b/worldguard-core/src/main/java/com/sk89q/worldguard/domains/Association.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/Association.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/domains/Association.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/DefaultDomain.java b/worldguard-core/src/main/java/com/sk89q/worldguard/domains/DefaultDomain.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/DefaultDomain.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/domains/DefaultDomain.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/Domain.java b/worldguard-core/src/main/java/com/sk89q/worldguard/domains/Domain.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/Domain.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/domains/Domain.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/GroupDomain.java b/worldguard-core/src/main/java/com/sk89q/worldguard/domains/GroupDomain.java similarity index 98% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/GroupDomain.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/domains/GroupDomain.java index d9a0386b..83d6d9c3 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/GroupDomain.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/domains/GroupDomain.java @@ -34,7 +34,7 @@ */ public class GroupDomain implements Domain, ChangeTracked { - private final Set groups = new CopyOnWriteArraySet(); + private final Set groups = new CopyOnWriteArraySet<>(); private boolean dirty = true; /** diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/PlayerDomain.java b/worldguard-core/src/main/java/com/sk89q/worldguard/domains/PlayerDomain.java similarity index 98% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/PlayerDomain.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/domains/PlayerDomain.java index 58e589ea..3d82a66d 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/PlayerDomain.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/domains/PlayerDomain.java @@ -34,8 +34,8 @@ */ public class PlayerDomain implements Domain, ChangeTracked { - private final Set uniqueIds = new CopyOnWriteArraySet(); - private final Set names = new CopyOnWriteArraySet(); + private final Set uniqueIds = new CopyOnWriteArraySet<>(); + private final Set names = new CopyOnWriteArraySet<>(); private boolean dirty = true; /** diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/internal/PermissionModel.java b/worldguard-core/src/main/java/com/sk89q/worldguard/internal/PermissionModel.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/internal/PermissionModel.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/internal/PermissionModel.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/permission/AbstractPermissionModel.java b/worldguard-core/src/main/java/com/sk89q/worldguard/internal/permission/AbstractPermissionModel.java similarity index 62% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/permission/AbstractPermissionModel.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/internal/permission/AbstractPermissionModel.java index ff7538f3..65619470 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/permission/AbstractPermissionModel.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/internal/permission/AbstractPermissionModel.java @@ -17,32 +17,25 @@ * along with this program. If not, see . */ -package com.sk89q.worldguard.bukkit.permission; +package com.sk89q.worldguard.internal.permission; -import com.sk89q.worldguard.bukkit.WorldGuardPlugin; -import org.bukkit.command.CommandSender; +import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldguard.internal.PermissionModel; -abstract class AbstractPermissionModel implements PermissionModel { +public abstract class AbstractPermissionModel implements PermissionModel { - private final WorldGuardPlugin plugin; - private final CommandSender sender; + private final Actor sender; - public AbstractPermissionModel(WorldGuardPlugin plugin, CommandSender sender) { - this.plugin = plugin; + public AbstractPermissionModel(Actor sender) { this.sender = sender; } - - protected WorldGuardPlugin getPlugin() { - return plugin; - } - public CommandSender getSender() { + public Actor getSender() { return sender; } protected boolean hasPluginPermission(String permission) { - return plugin.hasPermission(getSender(), "worldguard." + permission); + return getSender().hasPermission("worldguard." + permission); } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/permission/RegionPermissionModel.java b/worldguard-core/src/main/java/com/sk89q/worldguard/internal/permission/RegionPermissionModel.java similarity index 91% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/permission/RegionPermissionModel.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/internal/permission/RegionPermissionModel.java index da017a04..6dfee460 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/permission/RegionPermissionModel.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/internal/permission/RegionPermissionModel.java @@ -17,15 +17,14 @@ * along with this program. If not, see . */ -package com.sk89q.worldguard.bukkit.permission; +package com.sk89q.worldguard.internal.permission; +import com.sk89q.worldedit.extension.platform.Actor; +import com.sk89q.worldedit.world.World; import com.sk89q.worldguard.LocalPlayer; -import com.sk89q.worldguard.bukkit.WorldGuardPlugin; +import com.sk89q.worldguard.internal.permission.AbstractPermissionModel; import com.sk89q.worldguard.protection.flags.Flag; import com.sk89q.worldguard.protection.regions.ProtectedRegion; -import org.bukkit.World; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; import javax.annotation.Nullable; @@ -34,8 +33,8 @@ */ public class RegionPermissionModel extends AbstractPermissionModel { - public RegionPermissionModel(WorldGuardPlugin plugin, CommandSender sender) { - super(plugin, sender); + public RegionPermissionModel(Actor sender) { + super(sender); } public boolean mayIgnoreRegionProtection(World world) { @@ -171,18 +170,17 @@ public boolean mayRemoveOwners(ProtectedRegion region) { * @param region the region */ private boolean hasPatternPermission(String perm, ProtectedRegion region) { - if (!(getSender() instanceof Player)) { + if (!(getSender() instanceof LocalPlayer)) { return true; // Non-players (i.e. console, command blocks, etc.) have full power } - LocalPlayer localPlayer = getPlugin().wrapPlayer((Player) getSender()); String idLower = region.getId().toLowerCase(); String effectivePerm; - if (region.isOwner(localPlayer)) { + if (region.isOwner((LocalPlayer) getSender())) { return hasPluginPermission("region." + perm + ".own." + idLower) || hasPluginPermission("region." + perm + ".member." + idLower); - } else if (region.isMember(localPlayer)) { + } else if (region.isMember((LocalPlayer) getSender())) { return hasPluginPermission("region." + perm + ".member." + idLower); } else { effectivePerm = "region." + perm + "." + idLower; diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/internal/platform/WorldGuardPlatform.java b/worldguard-core/src/main/java/com/sk89q/worldguard/internal/platform/WorldGuardPlatform.java new file mode 100644 index 00000000..30dfbf37 --- /dev/null +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/internal/platform/WorldGuardPlatform.java @@ -0,0 +1,117 @@ +/* + * WorldGuard, a suite of tools for Minecraft + * Copyright (C) sk89q + * Copyright (C) WorldGuard team and contributors + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldguard.internal.platform; + +import com.sk89q.worldedit.extension.platform.Actor; +import com.sk89q.worldedit.world.World; +import com.sk89q.worldedit.world.gamemode.GameMode; +import com.sk89q.worldguard.config.ConfigurationManager; +import com.sk89q.worldguard.protection.flags.FlagContext; +import com.sk89q.worldguard.protection.regions.RegionContainer; +import com.sk89q.worldguard.session.SessionManager; + +/** + * A platform for implementing. + */ +public interface WorldGuardPlatform { + + /** + * Notifies the platform when a flag context is created. + * + * @param flagContextBuilder The flag context + */ + void notifyFlagContextCreate(FlagContext.FlagContextBuilder flagContextBuilder); + + /** + * Get the global ConfigurationManager. + * Use this to access global configuration values and per-world configuration values. + * + * @return The global ConfigurationManager + */ + ConfigurationManager getGlobalStateManager(); + + /** + * Gets a world by name, if possible. + * + * @param worldName The name + * @return The world + */ + World getWorldByName(String worldName); + + /** + * Replaces colour macros. + * + * @param string The string + * @return The replaced string + */ + String replaceColorMacros(String string); + + /** + * Replace macros in the text. + * + * The macros replaced are as follows: + * %name%: The name of {@code sender}. + * %id%: The unique name of the sender. + * %online%: The number of players currently online on the server + * If {@code sender} is a Player: + * %world%: The name of the world {@code sender} is located in + * %health%: The health of {@code sender}. + * + * @param sender The sender to check + * @param message The message to replace macros in + * @return The message with macros replaced + */ + String replaceMacros(Actor sender, String message); + + /** + * Gets the session manager. + * + * @return The session manager + */ + SessionManager getSessionManager(); + + /** + * Notifies all with the worldguard.notify permission. + * This will check both superperms and WEPIF, + * but makes sure WEPIF checks don't result in duplicate notifications + * + * @param message The notification to broadcast + */ + void broadcastNotification(String message); + + /** + * Unload the platform + */ + void unload(); + + /** + * Gets a RegionContainer. + * + * @return The region container + */ + RegionContainer getRegionContainer(); + + /** + * Gets the servers default game mode. + * + * @return The default game mode + */ + GameMode getDefaultGameMode(); +} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/internal/util/sql/StatementUtils.java b/worldguard-core/src/main/java/com/sk89q/worldguard/internal/util/sql/StatementUtils.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/internal/util/sql/StatementUtils.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/internal/util/sql/StatementUtils.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/AbstractRegionSet.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/AbstractRegionSet.java similarity index 93% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/AbstractRegionSet.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/AbstractRegionSet.java index 848c90c3..af347032 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/AbstractRegionSet.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/AbstractRegionSet.java @@ -21,7 +21,7 @@ import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.protection.association.RegionAssociable; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.Flag; import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.flags.StateFlag.State; @@ -37,7 +37,7 @@ public abstract class AbstractRegionSet implements ApplicableRegionSet { @Deprecated public boolean canBuild(LocalPlayer player) { checkNotNull(player); - return test(queryState(player, DefaultFlag.BUILD)); + return test(queryState(player, Flags.BUILD)); } @Override @@ -65,7 +65,7 @@ public State queryState(@Nullable RegionAssociable subject, StateFlag... flags) public boolean allows(StateFlag flag) { checkNotNull(flag); - if (flag == DefaultFlag.BUILD) { + if (flag == Flags.BUILD) { throw new IllegalArgumentException("Can't use build flag with allows()"); } @@ -77,7 +77,7 @@ public boolean allows(StateFlag flag) { public boolean allows(StateFlag flag, @Nullable LocalPlayer player) { checkNotNull(flag); - if (flag == DefaultFlag.BUILD) { + if (flag == Flags.BUILD) { throw new IllegalArgumentException("Can't use build flag with allows()"); } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/ApplicableRegionSet.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/ApplicableRegionSet.java similarity index 91% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/ApplicableRegionSet.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/ApplicableRegionSet.java index eed54aef..ab7c7b01 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/ApplicableRegionSet.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/ApplicableRegionSet.java @@ -20,9 +20,8 @@ package com.sk89q.worldguard.protection; import com.sk89q.worldguard.LocalPlayer; -import com.sk89q.worldguard.bukkit.RegionQuery; import com.sk89q.worldguard.protection.association.RegionAssociable; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.Flag; import com.sk89q.worldguard.protection.flags.RegionGroup; import com.sk89q.worldguard.protection.flags.StateFlag; @@ -52,7 +51,7 @@ public interface ApplicableRegionSet extends Iterable { *

* *

Be sure to check the value of this flag if an instance of this - * interface is being retrieved from {@link RegionQuery} as it may + * interface is being retrieved from RegionQuery as it may * return an instance of {@link PermissiveRegionSet} or * {@link FailedLoadRegionSet}, among other possibilities.

* @@ -62,7 +61,7 @@ public interface ApplicableRegionSet extends Iterable { boolean isVirtual(); /** - * Tests whether the {@link DefaultFlag#BUILD} flag or membership + * Tests whether the {@link Flags#BUILD} flag or membership * requirements permit the given player. * * @param player the player to check @@ -78,9 +77,9 @@ public interface ApplicableRegionSet extends Iterable { * *

{@code subject} can be non-null to satisfy region group requirements, * otherwise it will be assumed that the caller that is not a member of any - * regions. (Flags on a region can be changed so that they only apply + * regions. (FlagUtil on a region can be changed so that they only apply * to certain users.) The subject argument is required if the - * {@link DefaultFlag#BUILD} flag is in the list of flags.

+ * {@link Flags#BUILD} flag is in the list of flags.

* * @param subject an optional subject, which would be used to determine the region groups that apply * @param flags a list of flags to check @@ -96,9 +95,9 @@ public interface ApplicableRegionSet extends Iterable { * *

{@code subject} can be non-null to satisfy region group requirements, * otherwise it will be assumed that the caller that is not a member of any - * regions. (Flags on a region can be changed so that they only apply + * regions. (FlagUtil on a region can be changed so that they only apply * to certain users.) The subject argument is required if the - * {@link DefaultFlag#BUILD} flag is in the list of flags.

+ * {@link Flags#BUILD} flag is in the list of flags.

* * @param subject an optional subject, which would be used to determine the region groups that apply * @param flags a list of flags to check @@ -121,9 +120,9 @@ public interface ApplicableRegionSet extends Iterable { * *

{@code subject} can be non-null to satisfy region group requirements, * otherwise it will be assumed that the caller that is not a member of any - * regions. (Flags on a region can be changed so that they only apply + * regions. (FlagUtil on a region can be changed so that they only apply * to certain users.) The subject argument is required if the - * {@link DefaultFlag#BUILD} flag is the flag being queried.

+ * {@link Flags#BUILD} flag is the flag being queried.

* * @param subject an optional subject, which would be used to determine the region group to apply * @param flag the flag @@ -139,9 +138,9 @@ public interface ApplicableRegionSet extends Iterable { * *

{@code subject} can be non-null to satisfy region group requirements, * otherwise it will be assumed that the caller that is not a member of any - * regions. (Flags on a region can be changed so that they only apply + * regions. (FlagUtil on a region can be changed so that they only apply * to certain users.) The subject argument is required if the - * {@link DefaultFlag#BUILD} flag is the flag being queried.

+ * {@link Flags#BUILD} flag is the flag being queried.

* * @param subject an optional subject, which would be used to determine the region group to apply * @param flag the flag diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/FailedLoadRegionSet.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/FailedLoadRegionSet.java similarity index 88% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/FailedLoadRegionSet.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/FailedLoadRegionSet.java index f0f5b307..452c516a 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/FailedLoadRegionSet.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/FailedLoadRegionSet.java @@ -22,11 +22,10 @@ import com.google.common.collect.ImmutableList; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.protection.association.RegionAssociable; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.Flag; import com.sk89q.worldguard.protection.flags.StateFlag.State; import com.sk89q.worldguard.protection.regions.ProtectedRegion; -import org.bukkit.ChatColor; import javax.annotation.Nullable; import java.util.Collection; @@ -42,7 +41,7 @@ public class FailedLoadRegionSet extends AbstractRegionSet { private static final FailedLoadRegionSet INSTANCE = new FailedLoadRegionSet(); - private final String denyMessage = ChatColor.RED + "Region data for WorldGuard failed to load for this world, so " + + private final String denyMessage = "Region data for WorldGuard failed to load for this world, so " + "everything has been protected as a precaution. Please inform a server administrator."; private final Collection denyMessageCollection = ImmutableList.of(denyMessage); @@ -58,9 +57,9 @@ public boolean isVirtual() { @Nullable @Override public V queryValue(@Nullable RegionAssociable subject, Flag flag) { - if (flag == DefaultFlag.BUILD) { + if (flag == Flags.BUILD) { return (V) State.DENY; - } else if (flag == DefaultFlag.DENY_MESSAGE) { + } else if (flag == Flags.DENY_MESSAGE) { return (V) denyMessage; } return flag.getDefault(); @@ -69,9 +68,9 @@ public V queryValue(@Nullable RegionAssociable subject, Flag flag) { @SuppressWarnings("unchecked") @Override public Collection queryAllValues(@Nullable RegionAssociable subject, Flag flag) { - if (flag == DefaultFlag.BUILD) { + if (flag == Flags.BUILD) { return (Collection) ImmutableList.of(State.DENY); - } else if (flag == DefaultFlag.DENY_MESSAGE) { + } else if (flag == Flags.DENY_MESSAGE) { return (Collection) denyMessageCollection; } V fallback = flag.getDefault(); diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/FlagValueCalculator.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/FlagValueCalculator.java similarity index 97% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/FlagValueCalculator.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/FlagValueCalculator.java index a3eca128..39b3cad4 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/FlagValueCalculator.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/FlagValueCalculator.java @@ -24,7 +24,7 @@ import com.google.common.collect.Sets; import com.sk89q.worldguard.domains.Association; import com.sk89q.worldguard.protection.association.RegionAssociable; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.Flag; import com.sk89q.worldguard.protection.flags.RegionGroup; import com.sk89q.worldguard.protection.flags.StateFlag; @@ -90,7 +90,7 @@ private Iterable getApplicable() { * the region is not a member of all regions. * *

A region is "counted" if it doesn't have the - * {@link DefaultFlag#PASSTHROUGH} flag set to {@code ALLOW}. (The + * {@link Flags#PASSTHROUGH} flag set to {@code ALLOW}. (The * explicit purpose of the PASSTHROUGH flag is to have the region * be skipped over in this check.)

* @@ -118,7 +118,7 @@ public Result getMembership(RegionAssociable subject) { } // If PASSTHROUGH is set, ignore this region - if (getEffectiveFlag(region, DefaultFlag.PASSTHROUGH, subject) == State.ALLOW) { + if (getEffectiveFlag(region, Flags.PASSTHROUGH, subject) == State.ALLOW) { continue; } @@ -306,7 +306,7 @@ private Collection queryAllValues(@Nullable RegionAssociable subject, Fla // The BUILD flag is implicitly set on every region where // PASSTHROUGH is not set to ALLOW if (priority != minimumPriority && flag.implicitlySetWithMembership() - && getEffectiveFlag(region, DefaultFlag.PASSTHROUGH, subject) != State.ALLOW) { + && getEffectiveFlag(region, Flags.PASSTHROUGH, subject) != State.ALLOW) { minimumPriority = getPriority(region); } } @@ -355,10 +355,10 @@ public int getPriority(final ProtectedRegion region) { @SuppressWarnings("unchecked") public V getEffectiveFlag(final ProtectedRegion region, Flag flag, @Nullable RegionAssociable subject) { if (region == globalRegion) { - if (flag == DefaultFlag.PASSTHROUGH) { + if (flag == Flags.PASSTHROUGH) { // Has members/owners -> the global region acts like // a regular region without PASSTHROUGH - if (region.hasMembersOrOwners() || region.getFlag(DefaultFlag.PASSTHROUGH) == State.DENY) { + if (region.hasMembersOrOwners() || region.getFlag(Flags.PASSTHROUGH) == State.DENY) { return null; } else { return (V) State.ALLOW; @@ -432,7 +432,7 @@ private void addParents(Set ignored, ProtectedRegion region) { public static enum Result { /** * Indicates that there are no regions or the only regions are - * ones with {@link DefaultFlag#PASSTHROUGH} enabled. + * ones with {@link Flags#PASSTHROUGH} enabled. */ NO_REGIONS, diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/PermissiveRegionSet.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/PermissiveRegionSet.java similarity index 95% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/PermissiveRegionSet.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/PermissiveRegionSet.java index 320a9499..91dccc05 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/PermissiveRegionSet.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/PermissiveRegionSet.java @@ -22,7 +22,7 @@ import com.google.common.collect.ImmutableList; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.protection.association.RegionAssociable; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.Flag; import com.sk89q.worldguard.protection.flags.StateFlag.State; import com.sk89q.worldguard.protection.regions.ProtectedRegion; @@ -53,7 +53,7 @@ public boolean isVirtual() { @Nullable @Override public V queryValue(@Nullable RegionAssociable subject, Flag flag) { - if (flag == DefaultFlag.BUILD) { + if (flag == Flags.BUILD) { return (V) State.DENY; } return flag.getDefault(); @@ -62,7 +62,7 @@ public V queryValue(@Nullable RegionAssociable subject, Flag flag) { @SuppressWarnings("unchecked") @Override public Collection queryAllValues(@Nullable RegionAssociable subject, Flag flag) { - if (flag == DefaultFlag.BUILD) { + if (flag == Flags.BUILD) { return (Collection) ImmutableList.of(State.DENY); } V fallback = flag.getDefault(); diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/RegionResultSet.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/RegionResultSet.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/RegionResultSet.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/RegionResultSet.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/association/Associables.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/association/Associables.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/association/Associables.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/association/Associables.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/association/ConstantAssociation.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/association/ConstantAssociation.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/association/ConstantAssociation.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/association/ConstantAssociation.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/association/RegionAssociable.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/association/RegionAssociable.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/association/RegionAssociable.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/association/RegionAssociable.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/association/RegionOverlapAssociation.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/association/RegionOverlapAssociation.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/association/RegionOverlapAssociation.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/association/RegionOverlapAssociation.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/BooleanFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/BooleanFlag.java similarity index 95% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/BooleanFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/BooleanFlag.java index d9ec0174..3d5145c9 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/BooleanFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/BooleanFlag.java @@ -19,10 +19,6 @@ package com.sk89q.worldguard.protection.flags; -import org.bukkit.command.CommandSender; - -import com.sk89q.worldguard.bukkit.WorldGuardPlugin; - /** * A boolean flag. */ diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/BuildFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/BuildFlag.java similarity index 97% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/BuildFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/BuildFlag.java index 9f67825e..17398363 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/BuildFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/BuildFlag.java @@ -21,7 +21,7 @@ /** * A special implementation of the {@link StateFlag} for - * {@link DefaultFlag#BUILD}. + * {@link Flags#BUILD}. */ class BuildFlag extends StateFlag { diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/CommandStringFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/CommandStringFlag.java similarity index 94% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/CommandStringFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/CommandStringFlag.java index b945dfa5..dd3afc60 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/CommandStringFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/CommandStringFlag.java @@ -19,10 +19,6 @@ package com.sk89q.worldguard.protection.flags; -import org.bukkit.command.CommandSender; - -import com.sk89q.worldguard.bukkit.WorldGuardPlugin; - /** * Stores a command/ */ diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/DoubleFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/DoubleFlag.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/DoubleFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/DoubleFlag.java diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/EntityTypeFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/EntityTypeFlag.java new file mode 100644 index 00000000..5e4c0e07 --- /dev/null +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/EntityTypeFlag.java @@ -0,0 +1,63 @@ +/* + * WorldGuard, a suite of tools for Minecraft + * Copyright (C) sk89q + * Copyright (C) WorldGuard team and contributors + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldguard.protection.flags; + +import com.sk89q.worldedit.world.entity.EntityType; +import com.sk89q.worldedit.world.entity.EntityTypes; + +import javax.annotation.Nullable; + +/** + * Stores an entity type. + */ +public class EntityTypeFlag extends Flag { + + protected EntityTypeFlag(String name, @Nullable RegionGroup defaultGroup) { + super(name, defaultGroup); + } + + protected EntityTypeFlag(String name) { + super(name); + } + + @Override + public EntityType parseInput(FlagContext context) throws InvalidFlagFormat { + String input = context.getUserInput(); + input = input.trim(); + if (!input.startsWith("/")) { + input = "/" + input; + } + EntityType entityType = unmarshal(input); + if (entityType == null) { + throw new InvalidFlagFormat("Unknown entity type: " + input); + } + return entityType; + } + + @Override + public EntityType unmarshal(@Nullable Object o) { + return EntityTypes.get(String.valueOf(o)); + } + + @Override + public Object marshal(EntityType o) { + return o.getId(); + } +} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/EnumFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/EnumFlag.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/EnumFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/EnumFlag.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/Flag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/Flag.java similarity index 97% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/Flag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/Flag.java index 60801620..1cd145b9 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/Flag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/Flag.java @@ -19,15 +19,16 @@ package com.sk89q.worldguard.protection.flags; +import static com.google.common.base.Preconditions.checkNotNull; + import com.google.common.collect.Iterators; import com.sk89q.worldguard.protection.FlagValueCalculator; import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; -import javax.annotation.Nullable; import java.util.Collection; import java.util.regex.Pattern; -import static com.google.common.base.Preconditions.checkNotNull; +import javax.annotation.Nullable; /** * A flag carries extra data on a region. @@ -126,10 +127,10 @@ public boolean hasConflictStrategy() { /** * Whether the flag implicitly has a value set as long as - * {@link DefaultFlag#PASSTHROUGH} is not set. + * {@link Flags#PASSTHROUGH} is not set. * *

This value is only changed, at least in WorldGuard, for the - * {@link DefaultFlag#BUILD} flag.

+ * {@link Flags#BUILD} flag.

* * @return Whether the flag is ignored */ @@ -142,7 +143,7 @@ public boolean implicitlySetWithMembership() { * from membership. * *

This value is only changed, at least in WorldGuard, for the - * {@link DefaultFlag#BUILD} flag.

+ * {@link Flags#BUILD} flag.

* * @return Whether membership is used */ @@ -155,7 +156,7 @@ public boolean usesMembershipAsDefault() { * {@link FlagValueCalculator}. * *

This value is only changed, at least in WorldGuard, for the - * {@link DefaultFlag#BUILD} flag.

+ * {@link Flags#BUILD} flag.

* * @return Whether a subject is required */ diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/FlagContext.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/FlagContext.java similarity index 82% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/FlagContext.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/FlagContext.java index 57dc1530..ba1becb2 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/FlagContext.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/FlagContext.java @@ -20,23 +20,22 @@ package com.sk89q.worldguard.protection.flags; import com.google.common.collect.Maps; -import com.sk89q.minecraft.util.commands.CommandException; -import com.sk89q.worldguard.bukkit.WorldGuardPlugin; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; +import com.sk89q.worldedit.extension.platform.Actor; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.WorldGuard; + +import java.util.Map; import javax.annotation.Nullable; -import java.util.Map; public final class FlagContext { - private final CommandSender sender; + private final Actor sender; private final String input; private Map context; - private FlagContext(CommandSender sender, String input, Map values) { + private FlagContext(Actor sender, String input, Map values) { this.sender = sender; this.input = input; this.context = values; @@ -50,7 +49,7 @@ public void put(String name, Object value) { context.put(name, value); } - public CommandSender getSender() { + public Actor getSender() { return sender; } @@ -64,11 +63,11 @@ public String getUserInput() { * @return Player * @throws InvalidFlagFormat if the sender is not a player */ - public Player getPlayerSender() throws InvalidFlagFormat { - try { - return WorldGuardPlugin.inst().checkPlayer(sender); - } catch (CommandException e) { - throw new InvalidFlagFormat(e.getMessage()); + public LocalPlayer getPlayerSender() throws InvalidFlagFormat { + if (sender.isPlayer() && sender instanceof LocalPlayer) { + return (LocalPlayer) sender; + } else { + throw new InvalidFlagFormat("Not a player"); } } @@ -128,7 +127,7 @@ public Object get(String name, Object defaultValue) { * @param values map of values to override from the current FlagContext * @return a copy of this FlagContext */ - public FlagContext copyWith(@Nullable CommandSender commandSender, @Nullable String s, @Nullable Map values) { + public FlagContext copyWith(@Nullable Actor commandSender, @Nullable String s, @Nullable Map values) { Map map = Maps.newHashMap(); map.putAll(context); if (values != null) { @@ -138,11 +137,11 @@ public FlagContext copyWith(@Nullable CommandSender commandSender, @Nullable Str } public static class FlagContextBuilder { - private CommandSender sender; + private Actor sender; private String input; private Map map = Maps.newHashMap(); - public FlagContextBuilder setSender(CommandSender sender) { + public FlagContextBuilder setSender(Actor sender) { this.sender = sender; return this; } @@ -164,7 +163,7 @@ protected boolean tryAddToMap(String key, Object value) { } public FlagContext build() { - Bukkit.getServer().getPluginManager().callEvent(new FlagContextCreateEvent(this)); + WorldGuard.getInstance().getPlatform().notifyFlagContextCreate(this); return new FlagContext(sender, input, map); } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/Flags.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/FlagUtil.java similarity index 93% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/Flags.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/FlagUtil.java index 2ac64989..972a6ae0 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/Flags.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/FlagUtil.java @@ -28,11 +28,11 @@ import static com.google.common.base.Preconditions.checkNotNull; -public final class Flags { +public final class FlagUtil { - private static final Logger log = Logger.getLogger(Flags.class.getCanonicalName()); + private static final Logger log = Logger.getLogger(FlagUtil.class.getCanonicalName()); - private Flags() { + private FlagUtil() { } /** diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/DefaultFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/Flags.java similarity index 75% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/DefaultFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/Flags.java index fcb7a189..7490420f 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/DefaultFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/Flags.java @@ -19,22 +19,25 @@ package com.sk89q.worldguard.protection.flags; +import com.sk89q.worldedit.util.formatting.ColorCodeBuilder; +import com.sk89q.worldedit.util.formatting.Style; +import com.sk89q.worldedit.util.formatting.StyledFragment; +import com.sk89q.worldedit.world.entity.EntityType; +import com.sk89q.worldedit.world.gamemode.GameMode; +import com.sk89q.worldedit.world.weather.WeatherType; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.protection.flags.registry.FlagConflictException; import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; -import org.bukkit.ChatColor; -import org.bukkit.GameMode; -import org.bukkit.WeatherType; -import org.bukkit.entity.EntityType; -import java.util.Arrays; -import java.util.List; +import javax.annotation.Nullable; /** * The flags that are used in WorldGuard. */ -public final class DefaultFlag { +public final class Flags { // Overrides membership check - public static final StateFlag PASSTHROUGH = new StateFlag("passthrough", false); + public static final StateFlag PASSTHROUGH = register(new StateFlag("passthrough", false)); // This flag is unlike the others. It forces the checking of region membership public static final StateFlag BUILD = new BuildFlag("build", true); @@ -104,23 +107,26 @@ public final class DefaultFlag { public static final StateFlag ENTITY_ITEM_FRAME_DESTROY = new StateFlag("entity-item-frame-destroy", true); public static final StateFlag FALL_DAMAGE = new StateFlag("fall-damage", true); - // Flags that adjust behaviors that aren't state flags + // FlagUtil that adjust behaviors that aren't state flags public static final StringFlag DENY_MESSAGE = new StringFlag("deny-message", - "" + ChatColor.RED + ChatColor.BOLD + "Hey!" + ChatColor.GRAY + " Sorry, but you can't %what% here."); + ColorCodeBuilder.asColorCodes(new StyledFragment().append(new StyledFragment(Style.RED, Style.BOLD).append("Hey!")) + .append(new StyledFragment(Style.GRAY).append(" Sorry, but you can't %what% here.")))); public static final StringFlag ENTRY_DENY_MESSAGE = new StringFlag("entry-deny-message", - "" + ChatColor.RED + ChatColor.BOLD + "Hey!" + ChatColor.GRAY + " You are not permitted to enter this area."); + ColorCodeBuilder.asColorCodes(new StyledFragment().append(new StyledFragment(Style.RED, Style.BOLD).append("Hey!")) + .append(new StyledFragment(Style.GRAY).append(" You are not permitted to enter this area.")))); public static final StringFlag EXIT_DENY_MESSAGE = new StringFlag("exit-deny-message", - "" + ChatColor.RED + ChatColor.BOLD + "Hey!" + ChatColor.GRAY + " You are not permitted to leave this area."); + ColorCodeBuilder.asColorCodes(new StyledFragment().append(new StyledFragment(Style.RED, Style.BOLD).append("Hey!")) + .append(new StyledFragment(Style.GRAY).append(" You are not permitted to leave this area.")))); public static final BooleanFlag EXIT_OVERRIDE = new BooleanFlag("exit-override"); public static final StateFlag EXIT_VIA_TELEPORT = new StateFlag("exit-via-teleport", true); public static final StringFlag GREET_MESSAGE = new StringFlag("greeting"); public static final StringFlag FAREWELL_MESSAGE = new StringFlag("farewell"); public static final BooleanFlag NOTIFY_ENTER = new BooleanFlag("notify-enter"); public static final BooleanFlag NOTIFY_LEAVE = new BooleanFlag("notify-leave"); - public static final SetFlag DENY_SPAWN = new SetFlag("deny-spawn", new EntityTypeFlag(null)); - public static final EnumFlag GAME_MODE = new EnumFlag("game-mode", GameMode.class); + public static final SetFlag DENY_SPAWN = new SetFlag<>("deny-spawn", new EntityTypeFlag(null)); + public static final Flag GAME_MODE = new GameModeTypeFlag("game-mode"); public static final StringFlag TIME_LOCK = new StringFlag("time-lock"); - public static final EnumFlag WEATHER_LOCK = new EnumFlag("weather-lock", WeatherType.class); + public static final Flag WEATHER_LOCK = new WeatherTypeFlag("weather-lock"); public static final IntegerFlag HEAL_DELAY = new IntegerFlag("heal-delay"); public static final IntegerFlag HEAL_AMOUNT = new IntegerFlag("heal-amount"); public static final DoubleFlag MIN_HEAL = new DoubleFlag("heal-min-health"); @@ -133,8 +139,8 @@ public final class DefaultFlag { // public static final StringFlag MAX_PLAYERS_MESSAGE = new StringFlag("max-players-reject-message"); public static final LocationFlag TELE_LOC = new LocationFlag("teleport", RegionGroup.MEMBERS); public static final LocationFlag SPAWN_LOC = new LocationFlag("spawn", RegionGroup.MEMBERS); - public static final SetFlag BLOCKED_CMDS = new SetFlag("blocked-cmds", new CommandStringFlag(null)); - public static final SetFlag ALLOWED_CMDS = new SetFlag("allowed-cmds", new CommandStringFlag(null)); + public static final SetFlag BLOCKED_CMDS = register(new SetFlag<>("blocked-cmds", new CommandStringFlag(null))); + public static final SetFlag ALLOWED_CMDS = register(new SetFlag<>("allowed-cmds", new CommandStringFlag(null))); // these 3 are not used by worldguard and should be re-implemented in plugins that may use them using custom flag api @Deprecated @@ -144,45 +150,16 @@ public final class DefaultFlag { @Deprecated public static final DoubleFlag PRICE = new DoubleFlag("price"); - public static final Flag[] flagsList = new Flag[] { - PASSTHROUGH, BUILD, BLOCK_BREAK, BLOCK_PLACE, PVP, CHEST_ACCESS, PISTONS, - TNT, LIGHTER, RIDE, USE, INTERACT, PLACE_VEHICLE, DESTROY_VEHICLE, DAMAGE_ANIMALS, SLEEP, - MOB_DAMAGE, MOB_SPAWNING, DENY_SPAWN, INVINCIBILITY, EXP_DROPS, FIREWORK_DAMAGE, WITHER_DAMAGE, - CREEPER_EXPLOSION, OTHER_EXPLOSION, ENDERDRAGON_BLOCK_DAMAGE, GHAST_FIREBALL, ENDER_BUILD, - DENY_MESSAGE, ENTRY_DENY_MESSAGE, EXIT_DENY_MESSAGE, EXIT_OVERRIDE, EXIT_VIA_TELEPORT, - GREET_MESSAGE, FAREWELL_MESSAGE, NOTIFY_ENTER, NOTIFY_LEAVE, - EXIT, ENTRY, LIGHTNING, ENTITY_PAINTING_DESTROY, ENDERPEARL, CHORUS_TELEPORT, - ENTITY_ITEM_FRAME_DESTROY, FALL_DAMAGE, ITEM_PICKUP, ITEM_DROP, /*MAX_PLAYERS, MAX_PLAYERS_MESSAGE,*/ - HEAL_AMOUNT, HEAL_DELAY, MIN_HEAL, MAX_HEAL, - FEED_DELAY, FEED_AMOUNT, MIN_FOOD, MAX_FOOD, - SNOW_FALL, SNOW_MELT, ICE_FORM, ICE_MELT, SOIL_DRY, GAME_MODE, - MUSHROOMS, LEAF_DECAY, GRASS_SPREAD, MYCELIUM_SPREAD, VINE_GROWTH, - SEND_CHAT, RECEIVE_CHAT, FIRE_SPREAD, LAVA_FIRE, LAVA_FLOW, WATER_FLOW, - TELE_LOC, SPAWN_LOC, POTION_SPLASH, TIME_LOCK, WEATHER_LOCK, - BLOCKED_CMDS, ALLOWED_CMDS, PRICE, BUYABLE, ENABLE_SHOP - }; - - private DefaultFlag() { + private Flags() { } - /** - * Get a list of default flags. - * - * @deprecated Use {@link FlagRegistry} - * @return An array of flags - */ - @Deprecated - public static Flag[] getFlags() { - return flagsList; + public static T register(final T flag) throws FlagConflictException { + WorldGuard.getInstance().getFlagRegistry().register(flag); + return flag; } - /** - * Get a list of default flags. - * - * @return An array of flags - */ - public static List> getDefaultFlags() { - return Arrays.asList(flagsList); + public static @Nullable Flag get(final String id) { + return WorldGuard.getInstance().getFlagRegistry().get(id); } /** diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/GameModeTypeFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/GameModeTypeFlag.java new file mode 100644 index 00000000..67122de5 --- /dev/null +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/GameModeTypeFlag.java @@ -0,0 +1,60 @@ +/* + * WorldGuard, a suite of tools for Minecraft + * Copyright (C) sk89q + * Copyright (C) WorldGuard team and contributors + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldguard.protection.flags; + +import com.sk89q.worldedit.world.gamemode.GameMode; +import com.sk89q.worldedit.world.gamemode.GameModes; + +import javax.annotation.Nullable; + +public class GameModeTypeFlag extends Flag { + + protected GameModeTypeFlag(String name, @Nullable RegionGroup defaultGroup) { + super(name, defaultGroup); + } + + protected GameModeTypeFlag(String name) { + super(name); + } + + @Override + public GameMode parseInput(FlagContext context) throws InvalidFlagFormat { + String input = context.getUserInput(); + input = input.trim(); + if (!input.startsWith("/")) { + input = "/" + input; + } + GameMode gamemode = unmarshal(input); + if (gamemode == null) { + throw new InvalidFlagFormat("Unknown game mode: " + input); + } + return gamemode; + } + + @Override + public GameMode unmarshal(@Nullable Object o) { + return GameModes.get(String.valueOf(o)); + } + + @Override + public Object marshal(GameMode o) { + return o.getId(); + } +} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/IntegerFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/IntegerFlag.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/IntegerFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/IntegerFlag.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/InvalidFlagFormat.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/InvalidFlagFormat.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/InvalidFlagFormat.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/InvalidFlagFormat.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/LazyLocation.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/LazyLocation.java similarity index 79% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/LazyLocation.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/LazyLocation.java index fc363f23..6f904d92 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/LazyLocation.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/LazyLocation.java @@ -19,11 +19,10 @@ package com.sk89q.worldguard.protection.flags; -import com.sk89q.worldedit.LocalWorld; -import com.sk89q.worldedit.Location; import com.sk89q.worldedit.Vector; -import com.sk89q.worldedit.bukkit.BukkitUtil; -import org.bukkit.Bukkit; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.world.World; +import com.sk89q.worldguard.WorldGuard; import javax.annotation.Nullable; @@ -35,8 +34,8 @@ class LazyLocation extends Location { private final String worldName; @Nullable - private static LocalWorld findWorld(String worldName) { - return BukkitUtil.getLocalWorld(Bukkit.getServer().getWorld(worldName)); + private static World findWorld(String worldName) { + return WorldGuard.getInstance().getPlatform().getWorldByName(worldName); } public LazyLocation(String worldName, Vector position, float yaw, float pitch) { @@ -54,7 +53,7 @@ public String getWorldName() { } public LazyLocation setAngles(float yaw, float pitch) { - return new LazyLocation(worldName, getPosition(), yaw, pitch); + return new LazyLocation(worldName, toVector(), yaw, pitch); } public LazyLocation setPosition(Vector position) { @@ -62,11 +61,11 @@ public LazyLocation setPosition(Vector position) { } public LazyLocation add(Vector other) { - return this.setPosition(getPosition().add(other)); + return this.setPosition(toVector().add(other)); } public LazyLocation add(double x, double y, double z) { - return this.setPosition(getPosition().add(x, y, z)); + return this.setPosition(toVector().add(x, y, z)); } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/LocationFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/LocationFlag.java similarity index 79% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/LocationFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/LocationFlag.java index b8782bf7..86fb2b01 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/LocationFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/LocationFlag.java @@ -19,15 +19,13 @@ package com.sk89q.worldguard.protection.flags; -import com.sk89q.worldedit.Location; import com.sk89q.worldedit.Vector; -import com.sk89q.worldedit.bukkit.BukkitUtil; -import com.sk89q.worldguard.bukkit.WorldGuardPlugin; -import com.sk89q.worldguard.bukkit.permission.RegionPermissionModel; +import com.sk89q.worldedit.entity.Player; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.world.World; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.internal.permission.RegionPermissionModel; import com.sk89q.worldguard.protection.regions.ProtectedRegion; -import org.bukkit.ChatColor; -import org.bukkit.World; -import org.bukkit.entity.Player; import java.util.HashMap; import java.util.Map; @@ -49,7 +47,7 @@ public Location parseInput(FlagContext context) throws InvalidFlagFormat { Location loc = null; if ("here".equalsIgnoreCase(input)) { - loc = toLazyLocation(player.getLocation()); + loc = player.getLocation(); } else if ("none".equalsIgnoreCase(input)) { return null; } else { @@ -72,17 +70,17 @@ public Location parseInput(FlagContext context) throws InvalidFlagFormat { Object obj = context.get("region"); if (obj instanceof ProtectedRegion) { ProtectedRegion rg = (ProtectedRegion) obj; - if (WorldGuardPlugin.inst().getGlobalStateManager().get(player.getWorld()).boundedLocationFlags) { - if (!rg.contains(loc.getPosition())) { - if (new RegionPermissionModel(WorldGuardPlugin.inst(), player).mayOverrideLocationFlagBounds(rg)) { - player.sendMessage(ChatColor.GRAY + "WARNING: Flag location is outside of region."); + if (WorldGuard.getInstance().getPlatform().getGlobalStateManager().get(player.getWorld()).boundedLocationFlags) { + if (!rg.contains(loc.toVector())) { + if (new RegionPermissionModel(player).mayOverrideLocationFlagBounds(rg)) { + player.printDebug("WARNING: Flag location is outside of region."); } else { // no permission throw new InvalidFlagFormat("You can't set that flag outside of the region boundaries."); } } // clamp height to world limits - loc.setPosition(loc.getPosition().clampY(0, player.getWorld().getMaxHeight())); + loc.setPosition(loc.toVector().clampY(0, player.getWorld().getMaxY())); return loc; } } @@ -91,10 +89,6 @@ public Location parseInput(FlagContext context) throws InvalidFlagFormat { throw new InvalidFlagFormat("Expected 'here' or x,y,z."); } - private Location toLazyLocation(org.bukkit.Location location) { - return new LazyLocation(location.getWorld().getName(), BukkitUtil.toVector(location), location.getYaw(), location.getPitch()); - } - @Override public Location unmarshal(Object o) { if (o instanceof Map) { @@ -130,13 +124,15 @@ public Location unmarshal(Object o) { @Override public Object marshal(Location o) { - Vector position = o.getPosition(); - Map vec = new HashMap(); + Vector position = o.toVector(); + Map vec = new HashMap<>(); if (o instanceof LazyLocation) { vec.put("world", ((LazyLocation) o).getWorldName()); } else { try { - vec.put("world", o.getWorld().getName()); + if (o.getExtent() instanceof World) { + vec.put("world", ((World) o.getExtent()).getName()); + } } catch (NullPointerException e) { return null; } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/RegionGroup.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/RegionGroup.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/RegionGroup.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/RegionGroup.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/RegionGroupFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/RegionGroupFlag.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/RegionGroupFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/RegionGroupFlag.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/SetFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/SetFlag.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/SetFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/SetFlag.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/StateFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/StateFlag.java similarity index 97% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/StateFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/StateFlag.java index ca2dac5a..8e21589d 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/StateFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/StateFlag.java @@ -19,9 +19,6 @@ package com.sk89q.worldguard.protection.flags; -import com.sk89q.worldguard.bukkit.WorldGuardPlugin; -import org.bukkit.command.CommandSender; - import javax.annotation.Nullable; import java.util.Collection; @@ -72,7 +69,7 @@ public State chooseValue(Collection values) { * the global region. * *

This value is only changed, at least in WorldGuard, for the - * {@link DefaultFlag#BUILD} flag.

+ * {@link Flags#BUILD} flag.

* * @return Whether {@code ALLOW} is prevented */ diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/StringFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/StringFlag.java similarity index 95% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/StringFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/StringFlag.java index 0ce76918..5e0e7fe4 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/StringFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/StringFlag.java @@ -19,10 +19,6 @@ package com.sk89q.worldguard.protection.flags; -import org.bukkit.command.CommandSender; - -import com.sk89q.worldguard.bukkit.WorldGuardPlugin; - import javax.annotation.Nullable; /** diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/VectorFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/VectorFlag.java similarity index 93% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/VectorFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/VectorFlag.java index 134ff23f..300eca56 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/VectorFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/VectorFlag.java @@ -20,7 +20,6 @@ package com.sk89q.worldguard.protection.flags; import com.sk89q.worldedit.Vector; -import com.sk89q.worldguard.bukkit.BukkitUtil; import java.util.HashMap; import java.util.Map; @@ -43,7 +42,7 @@ public Vector parseInput(FlagContext context) throws InvalidFlagFormat { String input = context.getUserInput(); if ("here".equalsIgnoreCase(input)) { - return BukkitUtil.toVector(context.getPlayerSender().getLocation()); + return context.getPlayerSender().getLocation().toVector(); } else { String[] split = input.split(","); if (split.length == 3) { @@ -82,7 +81,7 @@ public Vector unmarshal(Object o) { @Override public Object marshal(Vector o) { - Map vec = new HashMap(); + Map vec = new HashMap<>(); vec.put("x", o.getX()); vec.put("y", o.getY()); vec.put("z", o.getZ()); diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/WeatherTypeFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/WeatherTypeFlag.java new file mode 100644 index 00000000..44e0173f --- /dev/null +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/WeatherTypeFlag.java @@ -0,0 +1,60 @@ +/* + * WorldGuard, a suite of tools for Minecraft + * Copyright (C) sk89q + * Copyright (C) WorldGuard team and contributors + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldguard.protection.flags; + +import com.sk89q.worldedit.world.weather.WeatherType; +import com.sk89q.worldedit.world.weather.WeatherTypes; + +import javax.annotation.Nullable; + +public class WeatherTypeFlag extends Flag { + + protected WeatherTypeFlag(String name, @Nullable RegionGroup defaultGroup) { + super(name, defaultGroup); + } + + protected WeatherTypeFlag(String name) { + super(name); + } + + @Override + public WeatherType parseInput(FlagContext context) throws InvalidFlagFormat { + String input = context.getUserInput(); + input = input.trim(); + if (!input.startsWith("/")) { + input = "/" + input; + } + WeatherType weatherType = unmarshal(input); + if (weatherType == null) { + throw new InvalidFlagFormat("Unknown game mode: " + input); + } + return weatherType; + } + + @Override + public WeatherType unmarshal(@Nullable Object o) { + return WeatherTypes.get(String.valueOf(o)); + } + + @Override + public Object marshal(WeatherType o) { + return o.getId(); + } +} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/registry/FlagConflictException.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/registry/FlagConflictException.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/registry/FlagConflictException.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/registry/FlagConflictException.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/registry/FlagRegistry.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/registry/FlagRegistry.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/registry/FlagRegistry.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/registry/FlagRegistry.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/registry/SimpleFlagRegistry.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/registry/SimpleFlagRegistry.java similarity index 97% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/registry/SimpleFlagRegistry.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/registry/SimpleFlagRegistry.java index 015ba2e9..46a317df 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/registry/SimpleFlagRegistry.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/registry/SimpleFlagRegistry.java @@ -19,6 +19,7 @@ package com.sk89q.worldguard.protection.flags.registry; +import com.google.common.base.Preconditions; import com.google.common.collect.Iterators; import com.google.common.collect.Maps; import com.sk89q.worldguard.protection.flags.Flag; @@ -76,7 +77,7 @@ public void registerAll(Collection> flags) { private Flag forceRegister(Flag flag) throws FlagConflictException { checkNotNull(flag, "flag"); - checkNotNull(flag.getName(), "flag.getName()"); + Preconditions.checkNotNull(flag.getName(), "flag.getName()"); synchronized (lock) { String name = flag.getName().toLowerCase(); diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/registry/UnknownFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/registry/UnknownFlag.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/registry/UnknownFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/registry/UnknownFlag.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/RegionContainerImpl.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/RegionContainerImpl.java similarity index 96% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/RegionContainerImpl.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/RegionContainerImpl.java index ace80f3b..bf4cd158 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/RegionContainerImpl.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/RegionContainerImpl.java @@ -19,7 +19,6 @@ package com.sk89q.worldguard.protection.managers; -import com.google.common.base.Supplier; import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; import com.sk89q.worldguard.protection.managers.index.ChunkHashTable; import com.sk89q.worldguard.protection.managers.index.ConcurrentRegionIndex; @@ -33,6 +32,7 @@ import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import java.util.function.Supplier; import java.util.logging.Level; import java.util.logging.Logger; @@ -49,16 +49,16 @@ public class RegionContainerImpl { private static final int LOAD_ATTEMPT_INTERVAL = 1000 * 30; private static final int SAVE_INTERVAL = 1000 * 30; - private final ConcurrentMap mapping = new ConcurrentHashMap(); + private final ConcurrentMap mapping = new ConcurrentHashMap<>(); private final Object lock = new Object(); private final RegionDriver driver; private final Supplier indexFactory = new ChunkHashTable.Factory(new PriorityRTreeIndex.Factory()); private final Timer timer = new Timer(); private final FlagRegistry flagRegistry; - private final Set failingLoads = new HashSet(); + private final Set failingLoads = new HashSet<>(); private final Set failingSaves = Collections.synchronizedSet( - Collections.newSetFromMap(new WeakHashMap())); + Collections.newSetFromMap(new WeakHashMap<>())); /** * Create a new instance. @@ -200,7 +200,7 @@ public RegionManager get(String name) { * @return an immutable list */ public List getLoaded() { - return Collections.unmodifiableList(new ArrayList(mapping.values())); + return Collections.unmodifiableList(new ArrayList<>(mapping.values())); } /** @@ -209,7 +209,7 @@ public List getLoaded() { * @return a set of region managers */ public Set getSaveFailures() { - return new HashSet(failingSaves); + return new HashSet<>(failingSaves); } /** diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/RegionDifference.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/RegionDifference.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/RegionDifference.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/RegionDifference.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/RegionManager.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/RegionManager.java similarity index 88% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/RegionManager.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/RegionManager.java index 5a671a2b..b1ceab85 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/RegionManager.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/RegionManager.java @@ -19,8 +19,8 @@ package com.sk89q.worldguard.protection.managers; -import com.google.common.base.Predicate; -import com.google.common.base.Supplier; +import static com.google.common.base.Preconditions.checkNotNull; + import com.google.common.collect.Sets; import com.sk89q.worldedit.Vector; import com.sk89q.worldedit.Vector2D; @@ -37,7 +37,6 @@ import com.sk89q.worldguard.protection.util.RegionCollectionConsumer; import com.sk89q.worldguard.util.Normal; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -48,8 +47,9 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Supplier; -import static com.google.common.base.Preconditions.checkNotNull; +import javax.annotation.Nullable; /** * A region manager holds the regions for a world. @@ -74,7 +74,7 @@ public RegionManager(RegionDatabase store, Supplier(getFilteredValuesCopy())); + store.saveAll(new HashSet<>(getFilteredValuesCopy())); } /** @@ -186,7 +186,7 @@ public void unloadChunk(Vector2D position) { * @return a map of regions */ public Map getRegions() { - Map map = new HashMap(); + Map map = new HashMap<>(); for (ProtectedRegion region : index.values()) { map.put(Normal.normalize(region.getId()), region); } @@ -352,14 +352,9 @@ public ApplicableRegionSet getApplicableRegions(ProtectedRegion region) { public List getApplicableRegionsIDs(Vector position) { checkNotNull(position); - final List names = new ArrayList(); + final List names = new ArrayList<>(); - index.applyContaining(position, new Predicate() { - @Override - public boolean apply(ProtectedRegion region) { - return names.add(region.getId()); - } - }); + index.applyContaining(position, region -> names.add(region.getId())); return names; } @@ -380,15 +375,12 @@ public boolean overlapsUnownedRegion(ProtectedRegion region, final LocalPlayer p final AtomicBoolean overlapsUnowned = new AtomicBoolean(); - index.applyIntersecting(region, new Predicate() { - @Override - public boolean apply(ProtectedRegion test) { - if (!test.getOwners().contains(player)) { - overlapsUnowned.set(true); - return false; - } else { - return true; - } + index.applyIntersecting(region, test -> { + if (!test.getOwners().contains(player)) { + overlapsUnowned.set(true); + return false; + } else { + return true; } }); @@ -415,14 +407,11 @@ public int getRegionCountOfPlayer(final LocalPlayer player) { final AtomicInteger count = new AtomicInteger(); - index.apply(new Predicate() { - @Override - public boolean apply(ProtectedRegion test) { - if (test.getOwners().contains(player)) { - count.incrementAndGet(); - } - return true; + index.apply(test -> { + if (test.getOwners().contains(player)) { + count.incrementAndGet(); } + return true; }); return count.get(); @@ -434,7 +423,7 @@ public boolean apply(ProtectedRegion test) { * @return a list */ private List getFilteredValuesCopy() { - List filteredValues = new ArrayList(); + List filteredValues = new ArrayList<>(); for (ProtectedRegion region : index.values()) { if (!region.isTransient()) { filteredValues.add(region); @@ -443,17 +432,4 @@ private List getFilteredValuesCopy() { return filteredValues; } - // =============== HELPER METHODS =============== - - /** - * Helper method for {@link #getApplicableRegions(Vector)} using Bukkit - * locations. - * - * @param loc the location - * @return an {@code ApplicableRegionSet} - */ - public ApplicableRegionSet getApplicableRegions(org.bukkit.Location loc) { - return getApplicableRegions(com.sk89q.worldedit.bukkit.BukkitUtil.toVector(loc).floor()); - } - } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/RemovalStrategy.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/RemovalStrategy.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/RemovalStrategy.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/RemovalStrategy.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/index/AbstractRegionIndex.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/index/AbstractRegionIndex.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/index/AbstractRegionIndex.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/index/AbstractRegionIndex.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/index/ChunkHashTable.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/index/ChunkHashTable.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/index/ChunkHashTable.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/index/ChunkHashTable.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/index/ConcurrentRegionIndex.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/index/ConcurrentRegionIndex.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/index/ConcurrentRegionIndex.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/index/ConcurrentRegionIndex.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/index/HashMapIndex.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/index/HashMapIndex.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/index/HashMapIndex.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/index/HashMapIndex.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/index/PriorityRTreeIndex.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/index/PriorityRTreeIndex.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/index/PriorityRTreeIndex.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/index/PriorityRTreeIndex.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/index/RegionIndex.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/index/RegionIndex.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/index/RegionIndex.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/index/RegionIndex.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/migration/AbstractMigration.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/migration/AbstractMigration.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/migration/AbstractMigration.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/migration/AbstractMigration.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/migration/DriverMigration.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/migration/DriverMigration.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/migration/DriverMigration.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/migration/DriverMigration.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/migration/Migration.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/migration/Migration.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/migration/Migration.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/migration/Migration.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/migration/MigrationException.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/migration/MigrationException.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/migration/MigrationException.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/migration/MigrationException.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/migration/UUIDMigration.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/migration/UUIDMigration.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/migration/UUIDMigration.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/migration/UUIDMigration.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/DifferenceSaveException.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/DifferenceSaveException.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/DifferenceSaveException.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/DifferenceSaveException.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/DriverType.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/DriverType.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/DriverType.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/DriverType.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/MemoryRegionDatabase.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/MemoryRegionDatabase.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/MemoryRegionDatabase.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/MemoryRegionDatabase.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/RegionDatabase.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/RegionDatabase.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/RegionDatabase.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/RegionDatabase.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/RegionDatabaseUtils.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/RegionDatabaseUtils.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/RegionDatabaseUtils.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/RegionDatabaseUtils.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/RegionDriver.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/RegionDriver.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/RegionDriver.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/RegionDriver.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/StorageException.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/StorageException.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/StorageException.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/StorageException.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/file/DirectoryYamlDriver.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/file/DirectoryYamlDriver.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/file/DirectoryYamlDriver.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/file/DirectoryYamlDriver.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/file/YamlRegionFile.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/file/YamlRegionFile.java similarity index 99% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/file/YamlRegionFile.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/file/YamlRegionFile.java index 01106ca6..e00a85af 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/file/YamlRegionFile.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/file/YamlRegionFile.java @@ -26,7 +26,7 @@ import com.sk89q.worldedit.BlockVector2D; import com.sk89q.worldedit.Vector; import com.sk89q.worldguard.domains.DefaultDomain; -import com.sk89q.worldguard.protection.flags.Flags; +import com.sk89q.worldguard.protection.flags.FlagUtil; import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; import com.sk89q.worldguard.protection.managers.RegionDifference; import com.sk89q.worldguard.protection.managers.storage.DifferenceSaveException; @@ -280,7 +280,7 @@ private DefaultDomain parseDomain(YAMLNode node) { } private Map getFlagData(ProtectedRegion region) { - return Flags.marshal(region.getFlags()); + return FlagUtil.marshal(region.getFlags()); } private void setFlags(FlagRegistry flagRegistry, ProtectedRegion region, YAMLNode flagsData) { diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/DataLoader.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/DataLoader.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/DataLoader.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/DataLoader.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/DataUpdater.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/DataUpdater.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/DataUpdater.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/DataUpdater.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/DomainTableCache.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/DomainTableCache.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/DomainTableCache.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/DomainTableCache.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/RegionInserter.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/RegionInserter.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/RegionInserter.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/RegionInserter.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/RegionRemover.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/RegionRemover.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/RegionRemover.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/RegionRemover.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/RegionUpdater.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/RegionUpdater.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/RegionUpdater.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/RegionUpdater.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/SQLDriver.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/SQLDriver.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/SQLDriver.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/SQLDriver.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/SQLRegionDatabase.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/SQLRegionDatabase.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/SQLRegionDatabase.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/SQLRegionDatabase.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/StatementBatch.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/StatementBatch.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/StatementBatch.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/StatementBatch.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/TableCache.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/TableCache.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/TableCache.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/managers/storage/sql/TableCache.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/regions/GlobalProtectedRegion.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/GlobalProtectedRegion.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/regions/GlobalProtectedRegion.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/GlobalProtectedRegion.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedCuboidRegion.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedCuboidRegion.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedCuboidRegion.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedCuboidRegion.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedPolygonalRegion.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedPolygonalRegion.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedPolygonalRegion.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedPolygonalRegion.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedRegion.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedRegion.java similarity index 99% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedRegion.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedRegion.java index 9c58fb8a..1f07f89b 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedRegion.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedRegion.java @@ -19,6 +19,8 @@ package com.sk89q.worldguard.protection.regions; +import static com.google.common.base.Preconditions.checkNotNull; + import com.google.common.collect.Lists; import com.sk89q.worldedit.BlockVector; import com.sk89q.worldedit.BlockVector2D; @@ -29,7 +31,6 @@ import com.sk89q.worldguard.util.ChangeTracked; import com.sk89q.worldguard.util.Normal; -import javax.annotation.Nullable; import java.awt.geom.Area; import java.awt.geom.Line2D; import java.util.Collection; @@ -39,7 +40,7 @@ import java.util.concurrent.ConcurrentMap; import java.util.regex.Pattern; -import static com.google.common.base.Preconditions.checkNotNull; +import javax.annotation.Nullable; /** * Represents a region that can be indexed and have spatial queries performed diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedRegionMBRConverter.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedRegionMBRConverter.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedRegionMBRConverter.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/ProtectedRegionMBRConverter.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/QueryCache.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/QueryCache.java similarity index 91% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/QueryCache.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/QueryCache.java index cd32b97d..620c0a13 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/QueryCache.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/QueryCache.java @@ -17,13 +17,13 @@ * along with this program. If not, see . */ -package com.sk89q.worldguard.bukkit; +package com.sk89q.worldguard.protection.regions; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.world.World; import com.sk89q.worldguard.protection.ApplicableRegionSet; import com.sk89q.worldguard.protection.RegionResultSet; import com.sk89q.worldguard.protection.managers.RegionManager; -import org.bukkit.Location; -import org.bukkit.World; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -36,9 +36,9 @@ * *

This class is fully concurrent.

*/ -class QueryCache { +public class QueryCache { - private final ConcurrentMap cache = new ConcurrentHashMap(16, 0.75f, 2); + private final ConcurrentMap cache = new ConcurrentHashMap<>(16, 0.75f, 2); /** * Get from the cache a {@code ApplicableRegionSet} if an entry exists; @@ -55,7 +55,7 @@ public ApplicableRegionSet queryContains(RegionManager manager, Location locatio CacheKey key = new CacheKey(location); ApplicableRegionSet result = cache.get(key); if (result == null) { - result = manager.getApplicableRegions(location); + result = manager.getApplicableRegions(location.toVector()); cache.put(key, result); } @@ -80,7 +80,7 @@ private static class CacheKey { private final int hashCode; private CacheKey(Location location) { - this.world = location.getWorld(); + this.world = (World) location.getExtent(); this.x = location.getBlockX(); this.y = location.getBlockY(); this.z = location.getBlockZ(); diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/RegionContainer.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/RegionContainer.java new file mode 100644 index 00000000..07e33fdd --- /dev/null +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/RegionContainer.java @@ -0,0 +1,119 @@ +/* + * WorldGuard, a suite of tools for Minecraft + * Copyright (C) sk89q + * Copyright (C) WorldGuard team and contributors + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldguard.protection.regions; + +import com.sk89q.worldedit.world.World; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.config.ConfigurationManager; +import com.sk89q.worldguard.protection.managers.RegionContainerImpl; +import com.sk89q.worldguard.protection.managers.RegionManager; +import com.sk89q.worldguard.protection.managers.storage.RegionDriver; + +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import javax.annotation.Nullable; + +/** + * A region container creates {@link RegionManager}s for loaded worlds, which + * allows access to the region data of a world. Generally, only data is + * loaded for worlds that are loaded in the server. + * + *

This class is thread safe and its contents can be accessed from + * multiple concurrent threads.

+ */ +public abstract class RegionContainer { + + protected final Object lock = new Object(); + protected final QueryCache cache = new QueryCache(); + protected RegionContainerImpl container; + + /** + * Initialize the region container. + */ + public void initialize() { + ConfigurationManager config = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); + container = new RegionContainerImpl(config.selectedRegionStoreDriver, WorldGuard.getInstance().getFlagRegistry()); + } + + /** + * Get the region store driver. + * + * @return the driver + */ + public RegionDriver getDriver() { + return container.getDriver(); + } + + /** + * Reload the region container. + * + *

This method may block until the data for all loaded worlds has been + * unloaded and new data has been loaded.

+ */ + public abstract void reload(); + + /** + * Get the region manager for a world if one exists. + * + *

If you wish to make queries and performance is more important + * than accuracy, use {@link #createQuery()} instead.

+ * + *

This method may return {@code null} if region data for the given + * world has not been loaded, has failed to load, or support for regions + * has been disabled.

+ * + * @param world the world + * @return a region manager, or {@code null} if one is not available + */ + @Nullable + public RegionManager get(World world) { + return container.get(world.getName()); + } + + /** + * Get an immutable list of loaded {@link RegionManager}s. + * + * @return a list of managers + */ + public List getLoaded() { + return Collections.unmodifiableList(container.getLoaded()); + } + + /** + * Get the a set of region managers that are failing to save. + * + * @return a set of region managers + */ + public Set getSaveFailures() { + return container.getSaveFailures(); + } + + /** + * Create a new region query. + * + * @return a new query + */ + public RegionQuery createQuery() { + return new RegionQuery(cache); + } + +} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/RegionQuery.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/RegionQuery.java similarity index 82% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/RegionQuery.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/RegionQuery.java index 272bc2c4..01087e57 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/RegionQuery.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/RegionQuery.java @@ -17,28 +17,30 @@ * along with this program. If not, see . */ -package com.sk89q.worldguard.bukkit; +package com.sk89q.worldguard.protection.regions; +import static com.google.common.base.Preconditions.checkNotNull; + +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.world.World; import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.config.ConfigurationManager; +import com.sk89q.worldguard.config.WorldConfiguration; import com.sk89q.worldguard.protection.ApplicableRegionSet; import com.sk89q.worldguard.protection.FailedLoadRegionSet; -import com.sk89q.worldguard.protection.GlobalRegionManager; import com.sk89q.worldguard.protection.PermissiveRegionSet; import com.sk89q.worldguard.protection.RegionResultSet; import com.sk89q.worldguard.protection.association.RegionAssociable; -import com.sk89q.worldguard.protection.flags.DefaultFlag; import com.sk89q.worldguard.protection.flags.Flag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.flags.StateFlag.State; import com.sk89q.worldguard.protection.managers.RegionManager; -import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.entity.Player; -import javax.annotation.Nullable; import java.util.Collection; -import static com.google.common.base.Preconditions.checkNotNull; +import javax.annotation.Nullable; /** * This object allows easy spatial queries involving region data for the @@ -52,27 +54,20 @@ */ public class RegionQuery { - private final WorldGuardPlugin plugin; private final ConfigurationManager config; - @SuppressWarnings("deprecation") - private final GlobalRegionManager globalManager; private final QueryCache cache; /** * Create a new instance. * - * @param plugin the plugin * @param cache the query cache */ - RegionQuery(WorldGuardPlugin plugin, QueryCache cache) { - checkNotNull(plugin); + public RegionQuery(QueryCache cache) { checkNotNull(cache); - this.plugin = plugin; - this.config = plugin.getGlobalStateManager(); + this.config = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); this.cache = cache; //noinspection deprecation - this.globalManager = plugin.getGlobalRegionManager(); } /** @@ -90,14 +85,14 @@ public class RegionQuery { public ApplicableRegionSet getApplicableRegions(Location location) { checkNotNull(location); - World world = location.getWorld(); + World world = (World) location.getExtent(); WorldConfiguration worldConfig = config.get(world); if (!worldConfig.useRegions) { return PermissiveRegionSet.getInstance(); } - RegionManager manager = globalManager.get(location.getWorld()); + RegionManager manager = WorldGuard.getInstance().getPlatform().getRegionContainer().get((World) location.getExtent()); if (manager != null) { return cache.queryContains(manager, location); } else { @@ -131,13 +126,13 @@ public ApplicableRegionSet getApplicableRegions(Location location) { * @return true if the result was {@code ALLOW} * @see RegionResultSet#queryValue(RegionAssociable, Flag) */ - public boolean testBuild(Location location, Player player, StateFlag... flag) { + public boolean testBuild(Location location, LocalPlayer player, StateFlag... flag) { if (flag.length == 0) { - return testState(location, player, DefaultFlag.BUILD); + return testState(location, player, Flags.BUILD); } return StateFlag.test(StateFlag.combine( - StateFlag.denyToNone(queryState(location, player, DefaultFlag.BUILD)), + StateFlag.denyToNone(queryState(location, player, Flags.BUILD)), queryState(location, player, flag))); } @@ -169,11 +164,11 @@ public boolean testBuild(Location location, Player player, StateFlag... flag) { */ public boolean testBuild(Location location, RegionAssociable associable, StateFlag... flag) { if (flag.length == 0) { - return testState(location, associable, DefaultFlag.BUILD); + return testState(location, associable, Flags.BUILD); } return StateFlag.test(StateFlag.combine( - StateFlag.denyToNone(queryState(location, associable, DefaultFlag.BUILD)), + StateFlag.denyToNone(queryState(location, associable, Flags.BUILD)), queryState(location, associable, flag))); } @@ -183,9 +178,9 @@ public boolean testBuild(Location location, RegionAssociable associable, StateFl * *

{@code player} can be non-null to satisfy region group requirements, * otherwise it will be assumed that the caller that is not a member of any - * regions. (Flags on a region can be changed so that they only apply + * regions. (FlagUtil on a region can be changed so that they only apply * to certain users.) The player argument is required if the - * {@link DefaultFlag#BUILD} flag is in the list of flags.

+ * {@link Flags#BUILD} flag is in the list of flags.

* *

This method does not check the region bypass permission. That must * be done by the calling code.

@@ -196,7 +191,7 @@ public boolean testBuild(Location location, RegionAssociable associable, StateFl * @return true if the result was {@code ALLOW} * @see RegionResultSet#queryValue(RegionAssociable, Flag) */ - public boolean testState(Location location, @Nullable Player player, StateFlag... flag) { + public boolean testState(Location location, @Nullable LocalPlayer player, StateFlag... flag) { return StateFlag.test(queryState(location, player, flag)); } @@ -206,9 +201,9 @@ public boolean testState(Location location, @Nullable Player player, StateFlag.. * *

{@code player} can be non-null to satisfy region group requirements, * otherwise it will be assumed that the caller that is not a member of any - * regions. (Flags on a region can be changed so that they only apply + * regions. (FlagUtil on a region can be changed so that they only apply * to certain users.) The player argument is required if the - * {@link DefaultFlag#BUILD} flag is in the list of flags.

+ * {@link Flags#BUILD} flag is in the list of flags.

* *

This method does not check the region bypass permission. That must * be done by the calling code.

@@ -230,9 +225,9 @@ public boolean testState(Location location, @Nullable RegionAssociable associabl * *

{@code player} can be non-null to satisfy region group requirements, * otherwise it will be assumed that the caller that is not a member of any - * regions. (Flags on a region can be changed so that they only apply + * regions. (FlagUtil on a region can be changed so that they only apply * to certain users.) The player argument is required if the - * {@link DefaultFlag#BUILD} flag is in the list of flags.

+ * {@link Flags#BUILD} flag is in the list of flags.

* * @param location the location * @param player an optional player, which would be used to determine the region groups that apply @@ -241,9 +236,8 @@ public boolean testState(Location location, @Nullable RegionAssociable associabl * @see RegionResultSet#queryState(RegionAssociable, StateFlag...) */ @Nullable - public State queryState(Location location, @Nullable Player player, StateFlag... flags) { - LocalPlayer localPlayer = player != null ? plugin.wrapPlayer(player) : null; - return getApplicableRegions(location).queryState(localPlayer, flags); + public State queryState(Location location, @Nullable LocalPlayer player, StateFlag... flags) { + return getApplicableRegions(location).queryState(player, flags); } /** @@ -253,9 +247,9 @@ public State queryState(Location location, @Nullable Player player, StateFlag... * *

{@code player} can be non-null to satisfy region group requirements, * otherwise it will be assumed that the caller that is not a member of any - * regions. (Flags on a region can be changed so that they only apply + * regions. (FlagUtil on a region can be changed so that they only apply * to certain users.) The player argument is required if the - * {@link DefaultFlag#BUILD} flag is in the list of flags.

+ * {@link Flags#BUILD} flag is in the list of flags.

* * @param location the location * @param associable an optional associable @@ -282,9 +276,9 @@ public State queryState(Location location, @Nullable RegionAssociable associable * *

{@code player} can be non-null to satisfy region group requirements, * otherwise it will be assumed that the caller that is not a member of any - * regions. (Flags on a region can be changed so that they only apply + * regions. (FlagUtil on a region can be changed so that they only apply * to certain users.) The player argument is required if the - * {@link DefaultFlag#BUILD} flag is the flag being queried.

+ * {@link Flags#BUILD} flag is the flag being queried.

* * @param location the location * @param player an optional player, which would be used to determine the region group to apply @@ -293,9 +287,8 @@ public State queryState(Location location, @Nullable RegionAssociable associable * @see RegionResultSet#queryValue(RegionAssociable, Flag) */ @Nullable - public V queryValue(Location location, @Nullable Player player, Flag flag) { - LocalPlayer localPlayer = player != null ? plugin.wrapPlayer(player) : null; - return getApplicableRegions(location).queryValue(localPlayer, flag); + public V queryValue(Location location, @Nullable LocalPlayer player, Flag flag) { + return getApplicableRegions(location).queryValue(player, flag); } /** @@ -312,9 +305,9 @@ public V queryValue(Location location, @Nullable Player player, Flag flag * *

{@code player} can be non-null to satisfy region group requirements, * otherwise it will be assumed that the caller that is not a member of any - * regions. (Flags on a region can be changed so that they only apply + * regions. (FlagUtil on a region can be changed so that they only apply * to certain users.) The player argument is required if the - * {@link DefaultFlag#BUILD} flag is the flag being queried.

+ * {@link Flags#BUILD} flag is the flag being queried.

* * @param location the location * @param associable an optional associable @@ -334,9 +327,9 @@ public V queryValue(Location location, @Nullable RegionAssociable associable * *

{@code player} can be non-null to satisfy region group requirements, * otherwise it will be assumed that the caller that is not a member of any - * regions. (Flags on a region can be changed so that they only apply + * regions. (FlagUtil on a region can be changed so that they only apply * to certain users.) The player argument is required if the - * {@link DefaultFlag#BUILD} flag is the flag being queried.

+ * {@link Flags#BUILD} flag is the flag being queried.

* * @param location the location * @param player an optional player, which would be used to determine the region group to apply @@ -344,9 +337,8 @@ public V queryValue(Location location, @Nullable RegionAssociable associable * @return a collection of values * @see RegionResultSet#queryAllValues(RegionAssociable, Flag) */ - public Collection queryAllValues(Location location, @Nullable Player player, Flag flag) { - LocalPlayer localPlayer = player != null ? plugin.wrapPlayer(player) : null; - return getApplicableRegions(location).queryAllValues(localPlayer, flag); + public Collection queryAllValues(Location location, @Nullable LocalPlayer player, Flag flag) { + return getApplicableRegions(location).queryAllValues(player, flag); } /** @@ -356,9 +348,9 @@ public Collection queryAllValues(Location location, @Nullable Player play * *

{@code player} can be non-null to satisfy region group requirements, * otherwise it will be assumed that the caller that is not a member of any - * regions. (Flags on a region can be changed so that they only apply + * regions. (FlagUtil on a region can be changed so that they only apply * to certain users.) The player argument is required if the - * {@link DefaultFlag#BUILD} flag is the flag being queried.

+ * {@link Flags#BUILD} flag is the flag being queried.

* * @param location the location * @param associable an optional associable diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/regions/RegionType.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/RegionType.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/regions/RegionType.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/regions/RegionType.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/util/DomainInputResolver.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/util/DomainInputResolver.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/util/DomainInputResolver.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/util/DomainInputResolver.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/util/NormativeOrders.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/util/NormativeOrders.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/util/NormativeOrders.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/util/NormativeOrders.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/util/RegionCollectionConsumer.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/util/RegionCollectionConsumer.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/util/RegionCollectionConsumer.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/util/RegionCollectionConsumer.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/util/UnresolvedNamesException.java b/worldguard-core/src/main/java/com/sk89q/worldguard/protection/util/UnresolvedNamesException.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/util/UnresolvedNamesException.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/protection/util/UnresolvedNamesException.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/MoveType.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/MoveType.java similarity index 93% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/MoveType.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/MoveType.java index 7079ebcf..0cb50757 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/MoveType.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/MoveType.java @@ -19,12 +19,10 @@ package com.sk89q.worldguard.session; -import org.bukkit.Location; - /** * Types of movements. * - *

Used with {@link Session#testMoveTo(Location, MoveType)}.

+ *

Used with Session#testMoveTo(Location, MoveType).

*/ public enum MoveType { diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/Session.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/Session.java similarity index 85% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/Session.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/Session.java index fb05e96c..e31bf7d3 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/Session.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/Session.java @@ -21,15 +21,15 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import com.sk89q.worldguard.bukkit.RegionQuery; -import com.sk89q.worldguard.bukkit.WorldGuardPlugin; -import com.sk89q.worldguard.bukkit.util.Locations; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.protection.ApplicableRegionSet; import com.sk89q.worldguard.protection.flags.StateFlag.State; import com.sk89q.worldguard.protection.regions.ProtectedRegion; +import com.sk89q.worldguard.protection.regions.RegionQuery; import com.sk89q.worldguard.session.handler.Handler; -import org.bukkit.Location; -import org.bukkit.entity.Player; +import com.sk89q.worldguard.util.Locations; import javax.annotation.Nullable; import java.util.HashMap; @@ -68,15 +68,6 @@ void register(Handler handler) { handlers.put(handler.getClass(), handler); } - /** - * Get the plugin. - * - * @return The plugin - */ - public WorldGuardPlugin getPlugin() { - return getManager().getPlugin(); - } - /** * Get the session manager. * @@ -104,8 +95,8 @@ public T getHandler(Class type) { * * @param player The player */ - void initialize(Player player) { - RegionQuery query = getManager().getPlugin().getRegionContainer().createQuery(); + void initialize(LocalPlayer player) { + RegionQuery query = WorldGuard.getInstance().getPlatform().getRegionContainer().createQuery(); Location location = player.getLocation(); ApplicableRegionSet set = query.getApplicableRegions(location); @@ -122,8 +113,8 @@ void initialize(Player player) { * * @param player The player */ - void tick(Player player) { - RegionQuery query = getManager().getPlugin().getRegionContainer().createQuery(); + void tick(LocalPlayer player) { + RegionQuery query = WorldGuard.getInstance().getPlatform().getRegionContainer().createQuery(); Location location = player.getLocation(); ApplicableRegionSet set = query.getApplicableRegions(location); @@ -137,7 +128,7 @@ void tick(Player player) { * * @param player The player */ - void resetState(Player player) { + void resetState(LocalPlayer player) { initialize(player); needRefresh.set(true); } @@ -147,7 +138,7 @@ void resetState(Player player) { * * @return Whether invincibility is enabled */ - public boolean isInvincible(Player player) { + public boolean isInvincible(LocalPlayer player) { boolean invincible = false; for (Handler handler : handlers.values()) { @@ -170,10 +161,10 @@ public boolean isInvincible(Player player) { * @param to The new location * @param moveType The type of move * @return The overridden location, if the location is being overridden - * @see #testMoveTo(Player, Location, MoveType, boolean) For an explanation + * @see #testMoveTo(LocalPlayer, Location, MoveType, boolean) For an explanation */ @Nullable - public Location testMoveTo(Player player, Location to, MoveType moveType) { + public Location testMoveTo(LocalPlayer player, Location to, MoveType moveType) { return testMoveTo(player, to, moveType, false); } @@ -194,8 +185,8 @@ public Location testMoveTo(Player player, Location to, MoveType moveType) { * @return The overridden location, if the location is being overridden */ @Nullable - public Location testMoveTo(Player player, Location to, MoveType moveType, boolean forced) { - RegionQuery query = getManager().getPlugin().getRegionContainer().createQuery(); + public Location testMoveTo(LocalPlayer player, Location to, MoveType moveType, boolean forced) { + RegionQuery query = WorldGuard.getInstance().getPlatform().getRegionContainer().createQuery(); if (!forced && needRefresh.getAndSet(false)) { forced = true; diff --git a/worldguard-core/src/main/java/com/sk89q/worldguard/session/SessionManager.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/SessionManager.java new file mode 100644 index 00000000..99e2e2ab --- /dev/null +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/SessionManager.java @@ -0,0 +1,116 @@ +/* + * WorldGuard, a suite of tools for Minecraft + * Copyright (C) sk89q + * Copyright (C) WorldGuard team and contributors + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldguard.session; + +import com.sk89q.worldedit.world.World; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.session.handler.Handler; + +import java.util.Collection; + +import javax.annotation.Nullable; + +public interface SessionManager { + + /** + * Check whether a player has the region bypass permission. + * + *

The return value may be cached for a few seconds.

+ * + * @param player The player + * @param world The world + * @return A value + */ + boolean hasBypass(LocalPlayer player, World world); + + /** + * Re-initialize handlers and clear "last position," "last state," etc. + * information for all players. + */ + void resetAllStates(); + + /** + * Re-initialize handlers and clear "last position," "last state," etc. + * information. + * + * @param player The player + */ + void resetState(LocalPlayer player); + + /** + * Register a handler with the BukkitSessionManager. + * + * You may specify another handler class to ensure your handler is always registered after that class. + * If that class is not already registered, this method will return false. + * + * For example, flags that always act on a player in a region (like HealFlag and FeedFlag) + * should be registered earlier, whereas flags that only take effect when a player leaves the region (like + * FarewellFlag and GreetingFlag) should be registered after the ExitFlag.Factory.class handler factory. + * + * @param factory a factory which takes a session and returns an instance of your handler + * @param after the handler factory to insert the first handler after, to ensure a specific order when creating new sessions + * + * @return {@code true} (as specified by {@link Collection#add}) + * {@code false} if {@param after} is not registered, or {@param factory} is null + */ + boolean registerHandler(Handler.Factory factory, @Nullable Handler.Factory after); + + /** + * Unregister a handler. + * + * This will prevent it from being added to newly created sessions only. Existing + * sessions with the handler will continue to use it. + * + * Will return false if the handler was not registered to begin with. + * + * @param factory the handler factory to unregister + * @return true if the handler was registered and is now unregistered, false otherwise + */ + boolean unregisterHandler(Handler.Factory factory); + + /** + * Create a session for a player. + * + * @param player The player + * @return The new session + */ + Session createSession(LocalPlayer player); + + /** + * Get a player's session, if one exists. + * + * @param player The player + * @return The session + */ + @Nullable Session getIfPresent(LocalPlayer player); + + /** + * Get a player's session. A session will be created if there is no + * existing session for the player. + * + *

This method can only be called from the main thread. While the + * session manager itself is thread-safe, some of the handlers may + * require initialization that requires the server main thread.

+ * + * @param player The player to get a session for + * @return The {@code player}'s session + */ + Session get(LocalPlayer player); +} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/WorldPlayerTuple.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/WorldPlayerTuple.java similarity index 89% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/WorldPlayerTuple.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/WorldPlayerTuple.java index 02d4d115..cd79ea83 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/WorldPlayerTuple.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/WorldPlayerTuple.java @@ -19,15 +19,15 @@ package com.sk89q.worldguard.session; -import org.bukkit.World; -import org.bukkit.entity.Player; +import com.sk89q.worldedit.world.World; +import com.sk89q.worldguard.LocalPlayer; class WorldPlayerTuple { final World world; - final Player player; + final LocalPlayer player; - WorldPlayerTuple(World world, Player player) { + WorldPlayerTuple(World world, LocalPlayer player) { this.world = world; this.player = player; } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/EntryFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/EntryFlag.java similarity index 70% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/EntryFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/EntryFlag.java index a01a0cc1..c6660201 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/EntryFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/EntryFlag.java @@ -19,15 +19,15 @@ package com.sk89q.worldguard.session.handler; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.world.World; import com.sk89q.worldguard.LocalPlayer; -import com.sk89q.worldguard.bukkit.commands.CommandUtils; +import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; -import org.bukkit.Location; -import org.bukkit.entity.Player; import java.util.Set; @@ -49,16 +49,15 @@ public EntryFlag(Session session) { } @Override - public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set entered, Set exited, MoveType moveType) { - LocalPlayer localPlayer = getPlugin().wrapPlayer(player); - boolean allowed = toSet.testState(localPlayer, DefaultFlag.ENTRY); + public boolean onCrossBoundary(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, Set entered, Set exited, MoveType moveType) { + boolean allowed = toSet.testState(player, Flags.ENTRY); - if (!getSession().getManager().hasBypass(player, to.getWorld()) && !allowed && moveType.isCancellable()) { - String message = toSet.queryValue(localPlayer, DefaultFlag.ENTRY_DENY_MESSAGE); + if (!getSession().getManager().hasBypass(player, (World) to.getExtent()) && !allowed && moveType.isCancellable()) { + String message = toSet.queryValue(player, Flags.ENTRY_DENY_MESSAGE); long now = System.currentTimeMillis(); if ((now - lastMessage) > MESSAGE_THRESHOLD && message != null && !message.isEmpty()) { - player.sendMessage(CommandUtils.replaceColorMacros(message)); + player.printRaw(WorldGuard.getInstance().getPlatform().replaceColorMacros(message)); lastMessage = now; } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/ExitFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/ExitFlag.java similarity index 66% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/ExitFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/ExitFlag.java index 2ef727d6..ba39f493 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/ExitFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/ExitFlag.java @@ -19,16 +19,16 @@ package com.sk89q.worldguard.session.handler; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.world.World; import com.sk89q.worldguard.LocalPlayer; -import com.sk89q.worldguard.bukkit.commands.CommandUtils; +import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.flags.StateFlag.State; import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; -import org.bukkit.Location; -import org.bukkit.entity.Player; public class ExitFlag extends FlagValueChangeHandler { @@ -46,63 +46,61 @@ public ExitFlag create(Session session) { private long lastMessage; public ExitFlag(Session session) { - super(session, DefaultFlag.EXIT); + super(session, Flags.EXIT); } private void update(LocalPlayer localPlayer, ApplicableRegionSet set, boolean allowed) { if (!allowed) { - storedMessage = set.queryValue(localPlayer, DefaultFlag.EXIT_DENY_MESSAGE); - exitViaTeleport = set.testState(localPlayer, DefaultFlag.EXIT_VIA_TELEPORT); + storedMessage = set.queryValue(localPlayer, Flags.EXIT_DENY_MESSAGE); + exitViaTeleport = set.testState(localPlayer, Flags.EXIT_VIA_TELEPORT); } } - private void sendMessage(Player player) { + private void sendMessage(LocalPlayer player) { long now = System.currentTimeMillis(); if ((now - lastMessage) > MESSAGE_THRESHOLD && storedMessage != null && !storedMessage.isEmpty()) { - player.sendMessage(CommandUtils.replaceColorMacros(storedMessage)); + player.printRaw(WorldGuard.getInstance().getPlatform().replaceColorMacros(storedMessage)); lastMessage = now; } } @Override - protected void onInitialValue(Player player, ApplicableRegionSet set, State value) { - update(getPlugin().wrapPlayer(player), set, StateFlag.test(value)); + protected void onInitialValue(LocalPlayer player, ApplicableRegionSet set, State value) { + update(player, set, StateFlag.test(value)); } @Override - protected boolean onSetValue(Player player, Location from, Location to, ApplicableRegionSet toSet, State currentValue, State lastValue, MoveType moveType) { - if (getSession().getManager().hasBypass(player, from.getWorld())) { + protected boolean onSetValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, State currentValue, State lastValue, MoveType moveType) { + if (getSession().getManager().hasBypass(player, (World) from.getExtent())) { return true; } boolean lastAllowed = StateFlag.test(lastValue); boolean allowed = StateFlag.test(currentValue); - LocalPlayer localPlayer = getPlugin().wrapPlayer(player); - if (allowed && !lastAllowed && !(moveType.isTeleport() && exitViaTeleport) && moveType.isCancellable()) { - Boolean override = toSet.queryValue(localPlayer, DefaultFlag.EXIT_OVERRIDE); + Boolean override = toSet.queryValue(player, Flags.EXIT_OVERRIDE); if (override == null || !override) { sendMessage(player); return false; } } - update(localPlayer, toSet, allowed); + update(player, toSet, allowed); return true; } @Override - protected boolean onAbsentValue(Player player, Location from, Location to, ApplicableRegionSet toSet, State lastValue, MoveType moveType) { - if (getSession().getManager().hasBypass(player, from.getWorld())) { + protected boolean onAbsentValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, State lastValue, MoveType moveType) { + if (getSession().getManager().hasBypass(player, (World) from.getExtent())) { return true; } boolean lastAllowed = StateFlag.test(lastValue); if (!lastAllowed && moveType.isCancellable()) { - Boolean override = toSet.queryValue(getPlugin().wrapPlayer(player), DefaultFlag.EXIT_OVERRIDE); + Boolean override = toSet.queryValue(player, Flags.EXIT_OVERRIDE); if (override == null || !override) { sendMessage(player); return false; diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/FarewellFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/FarewellFlag.java similarity index 68% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/FarewellFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/FarewellFlag.java index 1037b0e6..93d519eb 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/FarewellFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/FarewellFlag.java @@ -20,14 +20,14 @@ package com.sk89q.worldguard.session.handler; import com.google.common.collect.Sets; -import com.sk89q.worldguard.bukkit.commands.CommandUtils; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; -import org.bukkit.Location; -import org.bukkit.entity.Player; import java.util.Collections; import java.util.Set; @@ -48,24 +48,24 @@ public FarewellFlag(Session session) { super(session); } - private Set getMessages(Player player, ApplicableRegionSet set) { - return Sets.newLinkedHashSet(set.queryAllValues(getPlugin().wrapPlayer(player), DefaultFlag.FAREWELL_MESSAGE)); + private Set getMessages(LocalPlayer player, ApplicableRegionSet set) { + return Sets.newLinkedHashSet(set.queryAllValues(player, Flags.FAREWELL_MESSAGE)); } @Override - public void initialize(Player player, Location current, ApplicableRegionSet set) { + public void initialize(LocalPlayer player, Location current, ApplicableRegionSet set) { lastMessageStack = getMessages(player, set); } @Override - public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set entered, Set exited, MoveType moveType) { + public boolean onCrossBoundary(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, Set entered, Set exited, MoveType moveType) { Set messages = getMessages(player, toSet); if (!messages.isEmpty()) { // Due to flag priorities, we have to collect the lower // priority flag values separately for (ProtectedRegion region : toSet) { - String message = region.getFlag(DefaultFlag.FAREWELL_MESSAGE); + String message = region.getFlag(Flags.FAREWELL_MESSAGE); if (message != null) { messages.add(message); } @@ -74,9 +74,11 @@ public boolean onCrossBoundary(Player player, Location from, Location to, Applic for (String message : lastMessageStack) { if (!messages.contains(message)) { - String effective = CommandUtils.replaceColorMacros(message); - effective = getPlugin().replaceMacros(player, effective); - player.sendMessage(effective.replaceAll("\\\\n", "\n").split("\\n")); + String effective = WorldGuard.getInstance().getPlatform().replaceColorMacros(message); + effective = WorldGuard.getInstance().getPlatform().replaceMacros(player, effective); + for (String mess : effective.replaceAll("\\\\n", "\n").split("\\n")) { + player.printRaw(mess); + } break; } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/FeedFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/FeedFlag.java similarity index 79% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/FeedFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/FeedFlag.java index da0bc602..e3420122 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/FeedFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/FeedFlag.java @@ -19,12 +19,11 @@ package com.sk89q.worldguard.session.handler; +import com.sk89q.worldedit.world.gamemode.GameModes; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.session.Session; -import org.bukkit.GameMode; -import org.bukkit.entity.Player; public class FeedFlag extends Handler { @@ -43,21 +42,20 @@ public FeedFlag(Session session) { } @Override - public void tick(Player player, ApplicableRegionSet set) { + public void tick(LocalPlayer player, ApplicableRegionSet set) { long now = System.currentTimeMillis(); - LocalPlayer localPlayer = getSession().getPlugin().wrapPlayer(player); - Integer feedAmount = set.queryValue(localPlayer, DefaultFlag.FEED_AMOUNT); - Integer feedDelay = set.queryValue(localPlayer, DefaultFlag.FEED_DELAY); - Integer minHunger = set.queryValue(localPlayer, DefaultFlag.MIN_FOOD); - Integer maxHunger = set.queryValue(localPlayer, DefaultFlag.MAX_FOOD); + Integer feedAmount = set.queryValue(player, Flags.FEED_AMOUNT); + Integer feedDelay = set.queryValue(player, Flags.FEED_DELAY); + Integer minHunger = set.queryValue(player, Flags.MIN_FOOD); + Integer maxHunger = set.queryValue(player, Flags.MAX_FOOD); if (feedAmount == null || feedDelay == null || feedAmount == 0 || feedDelay < 0) { return; } if (feedAmount < 0 && (getSession().isInvincible(player) - || (player.getGameMode() != GameMode.SURVIVAL && player.getGameMode() != GameMode.ADVENTURE))) { + || (player.getGameMode() != GameModes.SURVIVAL && player.getGameMode() != GameModes.ADVENTURE))) { // don't starve invincible players return; } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/FlagValueChangeHandler.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/FlagValueChangeHandler.java similarity index 68% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/FlagValueChangeHandler.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/FlagValueChangeHandler.java index 19fa8215..a2d74b41 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/FlagValueChangeHandler.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/FlagValueChangeHandler.java @@ -19,13 +19,13 @@ package com.sk89q.worldguard.session.handler; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.protection.ApplicableRegionSet; import com.sk89q.worldguard.protection.flags.Flag; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; -import org.bukkit.Location; -import org.bukkit.entity.Player; import java.util.Set; @@ -40,14 +40,14 @@ protected FlagValueChangeHandler(Session session, Flag flag) { } @Override - public final void initialize(Player player, Location current, ApplicableRegionSet set) { - lastValue = set.queryValue(getPlugin().wrapPlayer(player), flag); + public final void initialize(LocalPlayer player, Location current, ApplicableRegionSet set) { + lastValue = set.queryValue(player, flag); onInitialValue(player, set, lastValue); } @Override - public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set entered, Set exited, MoveType moveType) { - T currentValue = toSet.queryValue(getPlugin().wrapPlayer(player), flag); + public boolean onCrossBoundary(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, Set entered, Set exited, MoveType moveType) { + T currentValue = toSet.queryValue(player, flag); boolean allowed = true; if (currentValue == null && lastValue != null) { @@ -63,10 +63,10 @@ public boolean onCrossBoundary(Player player, Location from, Location to, Applic return allowed; } - protected abstract void onInitialValue(Player player, ApplicableRegionSet set, T value); + protected abstract void onInitialValue(LocalPlayer player, ApplicableRegionSet set, T value); - protected abstract boolean onSetValue(Player player, Location from, Location to, ApplicableRegionSet toSet, T currentValue, T lastValue, MoveType moveType); + protected abstract boolean onSetValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, T currentValue, T lastValue, MoveType moveType); - protected abstract boolean onAbsentValue(Player player, Location from, Location to, ApplicableRegionSet toSet, T lastValue, MoveType moveType); + protected abstract boolean onAbsentValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, T lastValue, MoveType moveType); } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/GameModeFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/GameModeFlag.java similarity index 69% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/GameModeFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/GameModeFlag.java index 4ade87c6..4dbf0ab4 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/GameModeFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/GameModeFlag.java @@ -19,14 +19,15 @@ package com.sk89q.worldguard.session.handler; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.world.World; +import com.sk89q.worldedit.world.gamemode.GameMode; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.entity.Player; import javax.annotation.Nullable; @@ -44,7 +45,7 @@ public GameModeFlag create(Session session) { private GameMode setGameMode; public GameModeFlag(Session session) { - super(session, DefaultFlag.GAME_MODE); + super(session, Flags.GAME_MODE); } public GameMode getOriginalGameMode() { @@ -55,13 +56,13 @@ public GameMode getSetGameMode() { return setGameMode; } - private void updateGameMode(Player player, @Nullable GameMode newValue, World world) { + private void updateGameMode(LocalPlayer player, @Nullable GameMode newValue, World world) { if (!getSession().getManager().hasBypass(player, world) && newValue != null) { if (player.getGameMode() != newValue) { originalGameMode = player.getGameMode(); player.setGameMode(newValue); } else if (originalGameMode == null) { - originalGameMode = player.getServer().getDefaultGameMode(); + originalGameMode = WorldGuard.getInstance().getPlatform().getDefaultGameMode(); } } else { if (originalGameMode != null) { @@ -73,19 +74,19 @@ private void updateGameMode(Player player, @Nullable GameMode newValue, World wo } @Override - protected void onInitialValue(Player player, ApplicableRegionSet set, GameMode value) { + protected void onInitialValue(LocalPlayer player, ApplicableRegionSet set, GameMode value) { updateGameMode(player, value, player.getWorld()); } @Override - protected boolean onSetValue(Player player, Location from, Location to, ApplicableRegionSet toSet, GameMode currentValue, GameMode lastValue, MoveType moveType) { - updateGameMode(player, currentValue, to.getWorld()); + protected boolean onSetValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, GameMode currentValue, GameMode lastValue, MoveType moveType) { + updateGameMode(player, currentValue, (World) to.getExtent()); return true; } @Override - protected boolean onAbsentValue(Player player, Location from, Location to, ApplicableRegionSet toSet, GameMode lastValue, MoveType moveType) { - updateGameMode(player, null, player.getWorld()); + protected boolean onAbsentValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, GameMode lastValue, MoveType moveType) { + updateGameMode(player, null, (World) player.getExtent()); return true; } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/GodMode.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/GodMode.java similarity index 66% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/GodMode.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/GodMode.java index 388f094c..04dc796f 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/GodMode.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/GodMode.java @@ -19,11 +19,9 @@ package com.sk89q.worldguard.session.handler; -import com.sk89q.commandbook.CommandBook; -import com.sk89q.commandbook.GodComponent; +import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.protection.flags.StateFlag.State; import com.sk89q.worldguard.session.Session; -import org.bukkit.entity.Player; import javax.annotation.Nullable; @@ -43,35 +41,36 @@ public GodMode(Session session) { super(session); } - public boolean hasGodMode(Player player) { - if (getPlugin().getGlobalStateManager().hasCommandBookGodMode()) { - GodComponent god = CommandBook.inst().getComponentManager().getComponent(GodComponent.class); - if (god != null) { - return god.hasGodMode(player); - } - } + public boolean hasGodMode(LocalPlayer player) { + // TODO +// if (getPlugin().getGlobalStateManager().hasCommandBookGodMode()) { +// GodComponent god = CommandBook.inst().getComponentManager().getComponent(GodComponent.class); +// if (god != null) { +// return god.hasGodMode(player); +// } +// } return godMode; } - public void setGodMode(Player player, boolean godMode) { - if (getPlugin().getGlobalStateManager().hasCommandBookGodMode()) { - GodComponent god = CommandBook.inst().getComponentManager().getComponent(GodComponent.class); - if (god != null) { - god.enableGodMode(player); - } - } + public void setGodMode(LocalPlayer player, boolean godMode) { +// if (getPlugin().getGlobalStateManager().hasCommandBookGodMode()) { +// GodComponent god = CommandBook.inst().getComponentManager().getComponent(GodComponent.class); +// if (god != null) { +// god.enableGodMode(player); +// } +// } this.godMode = godMode; } @Nullable @Override - public State getInvincibility(Player player) { + public State getInvincibility(LocalPlayer player) { return hasGodMode(player) ? State.ALLOW : null; } - public static boolean set(Player player, Session session, boolean value) { + public static boolean set(LocalPlayer player, Session session, boolean value) { GodMode godMode = session.getHandler(GodMode.class); if (godMode != null) { godMode.setGodMode(player, value); diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/GreetingFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/GreetingFlag.java similarity index 71% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/GreetingFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/GreetingFlag.java index 167a9b29..895a8170 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/GreetingFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/GreetingFlag.java @@ -20,14 +20,14 @@ package com.sk89q.worldguard.session.handler; import com.google.common.collect.Sets; -import com.sk89q.worldguard.bukkit.commands.CommandUtils; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; -import org.bukkit.Location; -import org.bukkit.entity.Player; import java.util.Collection; import java.util.Collections; @@ -50,14 +50,16 @@ public GreetingFlag(Session session) { } @Override - public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set entered, Set exited, MoveType moveType) { - Collection messages = toSet.queryAllValues(getPlugin().wrapPlayer(player), DefaultFlag.GREET_MESSAGE); + public boolean onCrossBoundary(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, Set entered, Set exited, MoveType moveType) { + Collection messages = toSet.queryAllValues(player, Flags.GREET_MESSAGE); for (String message : messages) { if (!lastMessageStack.contains(message)) { - String effective = CommandUtils.replaceColorMacros(message); - effective = getPlugin().replaceMacros(player, effective); - player.sendMessage(effective.replaceAll("\\\\n", "\n").split("\\n")); + String effective = WorldGuard.getInstance().getPlatform().replaceColorMacros(message); + effective = WorldGuard.getInstance().getPlatform().replaceMacros(player, effective); + for (String mess : effective.replaceAll("\\\\n", "\n").split("\\n")) { + player.printRaw(mess); + } break; } } @@ -68,7 +70,7 @@ public boolean onCrossBoundary(Player player, Location from, Location to, Applic // Due to flag priorities, we have to collect the lower // priority flag values separately for (ProtectedRegion region : toSet) { - String message = region.getFlag(DefaultFlag.GREET_MESSAGE); + String message = region.getFlag(Flags.GREET_MESSAGE); if (message != null) { lastMessageStack.add(message); } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/Handler.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/Handler.java similarity index 82% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/Handler.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/Handler.java index e0e12267..4227b589 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/Handler.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/Handler.java @@ -19,15 +19,14 @@ package com.sk89q.worldguard.session.handler; -import com.sk89q.worldguard.bukkit.WorldGuardPlugin; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.protection.ApplicableRegionSet; import com.sk89q.worldguard.protection.flags.StateFlag.State; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; import com.sk89q.worldguard.session.SessionManager; -import org.bukkit.Location; -import org.bukkit.entity.Player; import javax.annotation.Nullable; import java.util.Set; @@ -55,15 +54,6 @@ protected Handler(Session session) { this.session = session; } - /** - * Get the plugin. - * - * @return The plugin - */ - public WorldGuardPlugin getPlugin() { - return getSession().getManager().getPlugin(); - } - /** * Get the session. * @@ -81,11 +71,11 @@ public Session getSession() { * @param current The player's current location * @param set The regions for the current location */ - public void initialize(Player player, Location current, ApplicableRegionSet set) { + public void initialize(LocalPlayer player, Location current, ApplicableRegionSet set) { } /** - * Called when {@link Session#testMoveTo(Player, Location, MoveType)} is called. + * Called when {@link Session#testMoveTo(LocalPlayer, Location, MoveType)} is called. * *

If this method returns {@code false}, then no other handlers * will be run (for this move attempt).

@@ -97,7 +87,7 @@ public void initialize(Player player, Location current, ApplicableRegionSet set) * @param moveType The type of movement * @return Whether the movement should be allowed */ - public boolean testMoveTo(Player player, Location from, Location to, ApplicableRegionSet toSet, MoveType moveType) { + public boolean testMoveTo(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, MoveType moveType) { return true; } @@ -106,7 +96,7 @@ public boolean testMoveTo(Player player, Location from, Location to, ApplicableR * there are fewer regions or more regions. * *

This is called only if the move test - * ({@link Session#testMoveTo(Player, Location, MoveType)}) was successful.

+ * ({@link Session#testMoveTo(LocalPlayer, Location, MoveType)}) was successful.

* *

If this method returns {@code false}, then no other handlers * will be run (for this move attempt).

@@ -120,7 +110,7 @@ public boolean testMoveTo(Player player, Location from, Location to, ApplicableR * @param moveType The type of move * @return Whether the movement should be allowed */ - public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, + public boolean onCrossBoundary(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, Set entered, Set exited, MoveType moveType) { return true; } @@ -132,7 +122,7 @@ public boolean onCrossBoundary(Player player, Location from, Location to, Applic * @param player The player * @param set The regions for the player's current location */ - public void tick(Player player, ApplicableRegionSet set) { + public void tick(LocalPlayer player, ApplicableRegionSet set) { } /** @@ -145,7 +135,7 @@ public void tick(Player player, ApplicableRegionSet set) { * @return Invincibility state */ @Nullable - public State getInvincibility(Player player) { + public State getInvincibility(LocalPlayer player) { return null; } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/HealFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/HealFlag.java similarity index 79% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/HealFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/HealFlag.java index 78eefd9c..8590c45a 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/HealFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/HealFlag.java @@ -19,12 +19,11 @@ package com.sk89q.worldguard.session.handler; +import com.sk89q.worldedit.world.gamemode.GameModes; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.session.Session; -import org.bukkit.GameMode; -import org.bukkit.entity.Player; public class HealFlag extends Handler { @@ -43,26 +42,24 @@ public HealFlag(Session session) { } @Override - public void tick(Player player, ApplicableRegionSet set) { - LocalPlayer localPlayer = getPlugin().wrapPlayer(player); - + public void tick(LocalPlayer player, ApplicableRegionSet set) { if (player.getHealth() <= 0) { return; } long now = System.currentTimeMillis(); - Integer healAmount = set.queryValue(localPlayer, DefaultFlag.HEAL_AMOUNT); - Integer healDelay = set.queryValue(localPlayer, DefaultFlag.HEAL_DELAY); - Double minHealth = set.queryValue(localPlayer, DefaultFlag.MIN_HEAL); - Double maxHealth = set.queryValue(localPlayer, DefaultFlag.MAX_HEAL); + Integer healAmount = set.queryValue(player, Flags.HEAL_AMOUNT); + Integer healDelay = set.queryValue(player, Flags.HEAL_DELAY); + Double minHealth = set.queryValue(player, Flags.MIN_HEAL); + Double maxHealth = set.queryValue(player, Flags.MAX_HEAL); if (healAmount == null || healDelay == null || healAmount == 0 || healDelay < 0) { return; } if (healAmount < 0 && (getSession().isInvincible(player) - || (player.getGameMode() != GameMode.SURVIVAL && player.getGameMode() != GameMode.ADVENTURE))) { + || (player.getGameMode() != GameModes.SURVIVAL && player.getGameMode() != GameModes.ADVENTURE))) { // don't damage invincible players return; } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/InvincibilityFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/InvincibilityFlag.java similarity index 71% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/InvincibilityFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/InvincibilityFlag.java index 13f6bfe2..79cc2efb 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/InvincibilityFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/InvincibilityFlag.java @@ -19,13 +19,13 @@ package com.sk89q.worldguard.session.handler; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.StateFlag.State; import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; -import org.bukkit.Location; -import org.bukkit.entity.Player; import javax.annotation.Nullable; @@ -43,30 +43,30 @@ public InvincibilityFlag create(Session session) { private State invincibility; public InvincibilityFlag(Session session) { - super(session, DefaultFlag.INVINCIBILITY); + super(session, Flags.INVINCIBILITY); } @Override - protected void onInitialValue(Player player, ApplicableRegionSet set, State value) { + protected void onInitialValue(LocalPlayer player, ApplicableRegionSet set, State value) { invincibility = value; } @Override - protected boolean onSetValue(Player player, Location from, Location to, ApplicableRegionSet toSet, State currentValue, State lastValue, MoveType moveType) { + protected boolean onSetValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, State currentValue, State lastValue, MoveType moveType) { invincibility = currentValue; return true; } @Override - protected boolean onAbsentValue(Player player, Location from, Location to, ApplicableRegionSet toSet, State lastValue, MoveType moveType) { + protected boolean onAbsentValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, State lastValue, MoveType moveType) { invincibility = null; return true; } @Override @Nullable - public State getInvincibility(Player player) { - if (invincibility == State.DENY && getPlugin().hasPermission(player, "worldguard.god.override-regions")) { + public State getInvincibility(LocalPlayer player) { + if (invincibility == State.DENY && player.hasPermission("worldguard.god.override-regions")) { return null; } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/NotifyEntryFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/NotifyEntryFlag.java similarity index 60% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/NotifyEntryFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/NotifyEntryFlag.java index 575b7812..4e65cb38 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/NotifyEntryFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/NotifyEntryFlag.java @@ -19,14 +19,17 @@ package com.sk89q.worldguard.session.handler; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.util.formatting.ColorCodeBuilder; +import com.sk89q.worldedit.util.formatting.Style; +import com.sk89q.worldedit.util.formatting.StyledFragment; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.entity.Player; public class NotifyEntryFlag extends FlagValueChangeHandler { @@ -39,16 +42,16 @@ public NotifyEntryFlag create(Session session) { } public NotifyEntryFlag(Session session) { - super(session, DefaultFlag.NOTIFY_ENTER); + super(session, Flags.NOTIFY_ENTER); } @Override - protected void onInitialValue(Player player, ApplicableRegionSet set, Boolean value) { + protected void onInitialValue(LocalPlayer player, ApplicableRegionSet set, Boolean value) { } @Override - protected boolean onSetValue(Player player, Location from, Location to, ApplicableRegionSet toSet, Boolean currentValue, Boolean lastValue, MoveType moveType) { + protected boolean onSetValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, Boolean currentValue, Boolean lastValue, MoveType moveType) { StringBuilder regionList = new StringBuilder(); for (ProtectedRegion region : toSet) { @@ -59,17 +62,17 @@ protected boolean onSetValue(Player player, Location from, Location to, Applicab regionList.append(region.getId()); } - getPlugin().broadcastNotification(ChatColor.GRAY + "WG: " - + ChatColor.LIGHT_PURPLE + player.getName() - + ChatColor.GOLD + " entered NOTIFY region: " - + ChatColor.WHITE - + regionList); + WorldGuard.getInstance().getPlatform().broadcastNotification( + ColorCodeBuilder.asColorCodes(new StyledFragment().append(new StyledFragment(Style.GRAY).append("WG: ")) + .append(new StyledFragment(Style.PURPLE).append(player.getName())) + .append(new StyledFragment(Style.YELLOW_DARK).append(" entered NOTIFY region: " + regionList))) + ); return true; } @Override - protected boolean onAbsentValue(Player player, Location from, Location to, ApplicableRegionSet toSet, Boolean lastValue, MoveType moveType) { + protected boolean onAbsentValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, Boolean lastValue, MoveType moveType) { return true; } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/NotifyExitFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/NotifyExitFlag.java similarity index 56% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/NotifyExitFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/NotifyExitFlag.java index b243e372..cbdad837 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/NotifyExitFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/NotifyExitFlag.java @@ -19,13 +19,16 @@ package com.sk89q.worldguard.session.handler; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.util.formatting.ColorCodeBuilder; +import com.sk89q.worldedit.util.formatting.Style; +import com.sk89q.worldedit.util.formatting.StyledFragment; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.entity.Player; public class NotifyExitFlag extends FlagValueChangeHandler { @@ -40,24 +43,26 @@ public NotifyExitFlag create(Session session) { private Boolean notifiedForLeave = false; public NotifyExitFlag(Session session) { - super(session, DefaultFlag.NOTIFY_LEAVE); + super(session, Flags.NOTIFY_LEAVE); } @Override - protected void onInitialValue(Player player, ApplicableRegionSet set, Boolean value) { + protected void onInitialValue(LocalPlayer player, ApplicableRegionSet set, Boolean value) { } @Override - protected boolean onSetValue(Player player, Location from, Location to, ApplicableRegionSet toSet, Boolean currentValue, Boolean lastValue, MoveType moveType) { + protected boolean onSetValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, Boolean currentValue, Boolean lastValue, MoveType moveType) { return true; } @Override - protected boolean onAbsentValue(Player player, Location from, Location to, ApplicableRegionSet toSet, Boolean lastValue, MoveType moveType) { - getPlugin().broadcastNotification(ChatColor.GRAY + "WG: " - + ChatColor.LIGHT_PURPLE + player.getName() - + ChatColor.GOLD + " left NOTIFY region"); + protected boolean onAbsentValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, Boolean lastValue, MoveType moveType) { + WorldGuard.getInstance().getPlatform().broadcastNotification( + ColorCodeBuilder.asColorCodes(new StyledFragment().append(new StyledFragment(Style.GRAY).append("WG: ")) + .append(new StyledFragment(Style.PURPLE).append(player.getName())) + .append(new StyledFragment(Style.YELLOW_DARK).append(" left NOTIFY region"))) + ); return true; } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/TimeLockFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/TimeLockFlag.java similarity index 75% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/TimeLockFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/TimeLockFlag.java index 9a61a060..660f5be8 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/TimeLockFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/TimeLockFlag.java @@ -19,12 +19,12 @@ package com.sk89q.worldguard.session.handler; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; -import org.bukkit.Location; -import org.bukkit.entity.Player; import javax.annotation.Nullable; import java.util.regex.Pattern; @@ -45,10 +45,10 @@ public TimeLockFlag create(Session session) { private static Pattern timePattern = Pattern.compile("(\\+|-)?\\d+"); public TimeLockFlag(Session session) { - super(session, DefaultFlag.TIME_LOCK); + super(session, Flags.TIME_LOCK); } - private void updatePlayerTime(Player player, @Nullable String value) { + private void updatePlayerTime(LocalPlayer player, @Nullable String value) { // store settings, regardless of if we change anything initialRelative = player.isPlayerTimeRelative(); initialTime = player.getPlayerTimeOffset(); @@ -56,12 +56,7 @@ private void updatePlayerTime(Player player, @Nullable String value) { // invalid input return; } - boolean relative; - if (value.startsWith("+") || value.startsWith("-")) { - relative = true; - } else { - relative = false; - } + boolean relative = value.startsWith("+") || value.startsWith("-"); Long time = Long.valueOf(value); // if (!relative && (time < 0L || time > 24000L)) { // invalid time, reset to 0 // time = 0L; @@ -70,18 +65,18 @@ private void updatePlayerTime(Player player, @Nullable String value) { } @Override - protected void onInitialValue(Player player, ApplicableRegionSet set, String value) { + protected void onInitialValue(LocalPlayer player, ApplicableRegionSet set, String value) { updatePlayerTime(player, value); } @Override - protected boolean onSetValue(Player player, Location from, Location to, ApplicableRegionSet toSet, String currentValue, String lastValue, MoveType moveType) { + protected boolean onSetValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, String currentValue, String lastValue, MoveType moveType) { updatePlayerTime(player, currentValue); return true; } @Override - protected boolean onAbsentValue(Player player, Location from, Location to, ApplicableRegionSet toSet, String lastValue, MoveType moveType) { + protected boolean onAbsentValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, String lastValue, MoveType moveType) { player.setPlayerTime(initialTime, initialRelative); initialRelative = true; initialTime = 0L; diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/WaterBreathing.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/WaterBreathing.java similarity index 93% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/WaterBreathing.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/WaterBreathing.java index ac1d24af..adbfd7be 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/WaterBreathing.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/WaterBreathing.java @@ -19,8 +19,8 @@ package com.sk89q.worldguard.session.handler; +import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.session.Session; -import org.bukkit.entity.Player; public class WaterBreathing extends Handler { @@ -46,7 +46,7 @@ public void setWaterBreathing(boolean waterBreathing) { this.waterBreathing = waterBreathing; } - public static boolean set(Player player, Session session, boolean value) { + public static boolean set(LocalPlayer player, Session session, boolean value) { WaterBreathing waterBreathing = session.getHandler(WaterBreathing.class); if (waterBreathing != null) { waterBreathing.setWaterBreathing(value); diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/WeatherLockFlag.java b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/WeatherLockFlag.java similarity index 73% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/WeatherLockFlag.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/WeatherLockFlag.java index e11a2802..38998277 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/handler/WeatherLockFlag.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/session/handler/WeatherLockFlag.java @@ -19,13 +19,13 @@ package com.sk89q.worldguard.session.handler; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.world.weather.WeatherType; +import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; -import org.bukkit.Location; -import org.bukkit.WeatherType; -import org.bukkit.entity.Player; import javax.annotation.Nullable; @@ -42,16 +42,16 @@ public WeatherLockFlag create(Session session) { private WeatherType initialWeather; public WeatherLockFlag(Session session) { - super(session, DefaultFlag.WEATHER_LOCK); + super(session, Flags.WEATHER_LOCK); } - private void updatePlayerWeather(Player player, @Nullable WeatherType value) { + private void updatePlayerWeather(LocalPlayer player, @Nullable WeatherType value) { initialWeather = player.getPlayerWeather(); player.setPlayerWeather(value); } @Override - protected void onInitialValue(Player player, ApplicableRegionSet set, WeatherType value) { + protected void onInitialValue(LocalPlayer player, ApplicableRegionSet set, WeatherType value) { if (value == null) { initialWeather = null; return; @@ -60,13 +60,13 @@ protected void onInitialValue(Player player, ApplicableRegionSet set, WeatherTyp } @Override - protected boolean onSetValue(Player player, Location from, Location to, ApplicableRegionSet toSet, WeatherType currentValue, WeatherType lastValue, MoveType moveType) { + protected boolean onSetValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, WeatherType currentValue, WeatherType lastValue, MoveType moveType) { updatePlayerWeather(player, currentValue); return true; } @Override - protected boolean onAbsentValue(Player player, Location from, Location to, ApplicableRegionSet toSet, WeatherType lastValue, MoveType moveType) { + protected boolean onAbsentValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, WeatherType lastValue, MoveType moveType) { if (initialWeather != null) { player.setPlayerWeather(initialWeather); } else { diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/ChangeTracked.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/ChangeTracked.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/ChangeTracked.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/ChangeTracked.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/Enums.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/Enums.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/Enums.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/Enums.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/util/Locations.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/Locations.java similarity index 94% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/util/Locations.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/Locations.java index 7e0bc9c1..d0f4733c 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/util/Locations.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/util/Locations.java @@ -17,9 +17,9 @@ * along with this program. If not, see . */ -package com.sk89q.worldguard.bukkit.util; +package com.sk89q.worldguard.util; -import org.bukkit.Location; +import com.sk89q.worldedit.util.Location; public final class Locations { diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/MathUtils.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/MathUtils.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/MathUtils.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/MathUtils.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/Normal.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/Normal.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/Normal.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/Normal.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/collect/EntryBase.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/collect/EntryBase.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/collect/EntryBase.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/collect/EntryBase.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/collect/LongBaseHashTable.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/collect/LongBaseHashTable.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/collect/LongBaseHashTable.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/collect/LongBaseHashTable.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/collect/LongHash.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/collect/LongHash.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/collect/LongHash.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/collect/LongHash.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/collect/LongHashSet.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/collect/LongHashSet.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/collect/LongHashSet.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/collect/LongHashSet.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/collect/LongHashTable.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/collect/LongHashTable.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/collect/LongHashTable.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/collect/LongHashTable.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/command/CommandFilter.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/command/CommandFilter.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/command/CommandFilter.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/command/CommandFilter.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/concurrent/EvenMoreExecutors.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/concurrent/EvenMoreExecutors.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/concurrent/EvenMoreExecutors.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/concurrent/EvenMoreExecutors.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/io/Closer.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/io/Closer.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/io/Closer.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/io/Closer.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/logging/RecordMessagePrefixer.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/logging/RecordMessagePrefixer.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/logging/RecordMessagePrefixer.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/logging/RecordMessagePrefixer.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/net/HttpRequest.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/net/HttpRequest.java similarity index 93% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/net/HttpRequest.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/net/HttpRequest.java index deff723a..3c3dd6ef 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/net/HttpRequest.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/util/net/HttpRequest.java @@ -21,11 +21,23 @@ import com.sk89q.worldguard.util.io.Closer; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; -import java.io.*; -import java.net.*; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.ByteArrayOutputStream; +import java.io.Closeable; +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -37,7 +49,7 @@ public class HttpRequest implements Closeable { private static final int READ_TIMEOUT = 1000 * 5; private static final int READ_BUFFER_SIZE = 1024 * 8; - private final Map headers = new HashMap(); + private final Map headers = new HashMap<>(); private final String method; private final URL url; private String contentType; @@ -359,7 +371,7 @@ private static URL reformat(URL existing) { * Used with {@link #bodyForm(Form)}. */ public final static class Form { - public final List elements = new ArrayList(); + public final List elements = new ArrayList<>(); private Form() { } @@ -436,24 +448,6 @@ public String asString(String encoding) throws IOException { return new String(data, encoding); } - /** - * Return the result as an instance of the given class that has been - * deserialized from a XML payload. - * - * @return the object - * @throws java.io.IOException on I/O error - */ - @SuppressWarnings("unchecked") - public T asXml(Class cls) throws IOException { - try { - JAXBContext context = JAXBContext.newInstance(cls); - Unmarshaller um = context.createUnmarshaller(); - return (T) um.unmarshal(new ByteArrayInputStream(data)); - } catch (JAXBException e) { - throw new IOException(e); - } - } - /** * Save the result to a file. * diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/paste/EngineHubPaste.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/paste/EngineHubPaste.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/paste/EngineHubPaste.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/paste/EngineHubPaste.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/paste/Pastebin.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/paste/Pastebin.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/paste/Pastebin.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/paste/Pastebin.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/paste/Paster.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/paste/Paster.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/paste/Paster.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/paste/Paster.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/paste/Pasters.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/paste/Pasters.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/paste/Pasters.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/paste/Pasters.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/profiler/SamplerBuilder.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/profiler/SamplerBuilder.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/profiler/SamplerBuilder.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/profiler/SamplerBuilder.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/profiler/StackNode.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/profiler/StackNode.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/profiler/StackNode.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/profiler/StackNode.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/profiler/StackTraceNode.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/profiler/StackTraceNode.java similarity index 98% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/profiler/StackTraceNode.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/profiler/StackTraceNode.java index 18c5f13a..ef0c4867 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/profiler/StackTraceNode.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/util/profiler/StackTraceNode.java @@ -19,8 +19,6 @@ package com.sk89q.worldguard.util.profiler; -import java.util.List; - public class StackTraceNode extends StackNode { private final String className; diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/profiler/ThreadIdFilter.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/profiler/ThreadIdFilter.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/profiler/ThreadIdFilter.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/profiler/ThreadIdFilter.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/profiler/ThreadNameFilter.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/profiler/ThreadNameFilter.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/profiler/ThreadNameFilter.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/profiler/ThreadNameFilter.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/DataReport.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/report/DataReport.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/DataReport.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/report/DataReport.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/RegionReport.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/report/RegionReport.java similarity index 96% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/RegionReport.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/report/RegionReport.java index e61e9d0e..8d264752 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/RegionReport.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/util/report/RegionReport.java @@ -33,7 +33,7 @@ public RegionReport(ProtectedRegion region) { append("Priority", region.getPriority()); append("Owners", region.getOwners()); append("Members", region.getMembers()); - append("Flags", region.getFlags()); + append("FlagUtil", region.getFlags()); } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/Report.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/report/Report.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/Report.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/report/Report.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/ReportList.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/report/ReportList.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/ReportList.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/report/ReportList.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/ShallowObjectReport.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/report/ShallowObjectReport.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/ShallowObjectReport.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/report/ShallowObjectReport.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/StackTraceReport.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/report/StackTraceReport.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/StackTraceReport.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/report/StackTraceReport.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/SystemInfoReport.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/report/SystemInfoReport.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/SystemInfoReport.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/report/SystemInfoReport.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/Unreported.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/report/Unreported.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/report/Unreported.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/report/Unreported.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/sql/DataSourceConfig.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/sql/DataSourceConfig.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/sql/DataSourceConfig.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/sql/DataSourceConfig.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/AbstractTask.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/task/AbstractTask.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/AbstractTask.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/task/AbstractTask.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/FutureForwardingTask.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/task/FutureForwardingTask.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/FutureForwardingTask.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/task/FutureForwardingTask.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/SimpleSupervisor.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/task/SimpleSupervisor.java similarity index 93% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/SimpleSupervisor.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/task/SimpleSupervisor.java index edad15b2..df014d4c 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/SimpleSupervisor.java +++ b/worldguard-core/src/main/java/com/sk89q/worldguard/util/task/SimpleSupervisor.java @@ -31,13 +31,13 @@ */ public class SimpleSupervisor implements Supervisor { - private final List> monitored = new ArrayList>(); + private final List> monitored = new ArrayList<>(); private final Object lock = new Object(); @Override public List> getTasks() { synchronized (lock) { - return new ArrayList>(monitored); + return new ArrayList<>(monitored); } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/Supervisor.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/task/Supervisor.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/Supervisor.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/task/Supervisor.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/Task.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/task/Task.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/Task.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/task/Task.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/TaskStateComparator.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/task/TaskStateComparator.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/TaskStateComparator.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/task/TaskStateComparator.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/progress/Progress.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/task/progress/Progress.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/progress/Progress.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/task/progress/Progress.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/progress/ProgressIterator.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/task/progress/ProgressIterator.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/progress/ProgressIterator.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/task/progress/ProgressIterator.java diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/progress/ProgressObservable.java b/worldguard-core/src/main/java/com/sk89q/worldguard/util/task/progress/ProgressObservable.java similarity index 100% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/util/task/progress/ProgressObservable.java rename to worldguard-core/src/main/java/com/sk89q/worldguard/util/task/progress/ProgressObservable.java diff --git a/worldguard-legacy/build.gradle b/worldguard-legacy/build.gradle index be24e0c0..d0b26ad8 100644 --- a/worldguard-legacy/build.gradle +++ b/worldguard-legacy/build.gradle @@ -1,7 +1,7 @@ apply plugin: 'eclipse' apply plugin: 'idea' -project.version = '6.2.2-SNAPSHOT' +project.version = '7.0.0-SNAPSHOT' ext.internalVersion = project.version + ";" + gitCommitHash sourceCompatibility = 1.8 @@ -10,18 +10,13 @@ checkstyle.configFile = new File(projectDir, "config/checkstyle/checkstyle.xml") dependencies { - compile 'org.khelekore:prtree:1.5.0' - compile 'org.bukkit:bukkit:1.12-R0.1-SNAPSHOT' - compile 'com.sk89q.worldedit:worldedit-bukkit:6.1.3-SNAPSHOT' - compile 'com.sk89q:squirrelid:0.1.0' - compile 'org.flywaydb:flyway-core:3.0' + compile project(':worldguard-core') + compile 'org.bukkit:bukkit:1.13-pre7-R0.1-SNAPSHOT' + compile 'com.sk89q.worldedit:worldedit-bukkit:7.0.0-SNAPSHOT' compile ('com.sk89q:commandbook:2.3') { exclude group: 'com.sk89q', module: 'worldedit' exclude group: 'com.zachsthings.libcomponents' } - compile 'net.sf.opencsv:opencsv:2.0' - compile 'com.googlecode.json-simple:json-simple:1.1.1' - compile 'com.google.code.findbugs:jsr305:1.3.9' testCompile 'junit:junit:4.11' testCompile 'org.hamcrest:hamcrest-library:1.2.1' } @@ -39,11 +34,7 @@ shadowJar { dependencies { - include(dependency('org.khelekore:prtree:1.5.0')) - include(dependency('com.sk89q:squirrelid:0.1.0')) - include(dependency('org.flywaydb:flyway-core:3.0')) - include(dependency('com.googlecode.json-simple:json-simple:1.1.1')) - include(dependency('net.sf.opencsv:opencsv:2.0')) + include(dependency(':worldguard-core')) } relocate('org.flywaydb', 'com.sk89q.worldguard.internal.flywaydb') diff --git a/worldguard-legacy/config/checkstyle/checkstyle.xml b/worldguard-legacy/config/checkstyle/checkstyle.xml index e09c319e..cfa8f826 100644 --- a/worldguard-legacy/config/checkstyle/checkstyle.xml +++ b/worldguard-legacy/config/checkstyle/checkstyle.xml @@ -27,7 +27,6 @@
- diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitConfigurationManager.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitConfigurationManager.class new file mode 100644 index 00000000..ecf2aebb Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitConfigurationManager.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitPlayer.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitPlayer.class new file mode 100644 index 00000000..34d90355 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitPlayer.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitRegionContainer$1.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitRegionContainer$1.class new file mode 100644 index 00000000..83bfdd60 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitRegionContainer$1.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitRegionContainer.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitRegionContainer.class new file mode 100644 index 00000000..47dfc3d6 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitRegionContainer.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitWorldConfiguration.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitWorldConfiguration.class new file mode 100644 index 00000000..ca5b0298 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitWorldConfiguration.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitWorldGuardPlatform.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitWorldGuardPlatform.class new file mode 100644 index 00000000..60db7b3a Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/BukkitWorldGuardPlatform.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/ProtectionQuery.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/ProtectionQuery.class new file mode 100644 index 00000000..00308c8d Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/ProtectionQuery.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/WorldGuardPlugin$1.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/WorldGuardPlugin$1.class new file mode 100644 index 00000000..2e96d689 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/WorldGuardPlugin$1.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/WorldGuardPlugin$2.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/WorldGuardPlugin$2.class new file mode 100644 index 00000000..49c36d1d Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/WorldGuardPlugin$2.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/WorldGuardPlugin.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/WorldGuardPlugin.class new file mode 100644 index 00000000..93c7baa7 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/WorldGuardPlugin.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/cause/Cause$1.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/cause/Cause$1.class new file mode 100644 index 00000000..6fc2ff5d Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/cause/Cause$1.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/cause/Cause$Builder.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/cause/Cause$Builder.class new file mode 100644 index 00000000..a6910c7c Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/cause/Cause$Builder.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/cause/Cause.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/cause/Cause.class new file mode 100644 index 00000000..247933d1 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/cause/Cause.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/chest/ChestProtection.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/chest/ChestProtection.class new file mode 100644 index 00000000..bd5aa427 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/chest/ChestProtection.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/DebuggingCommands.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/DebuggingCommands.class new file mode 100644 index 00000000..26963e44 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/DebuggingCommands.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/FutureProgressListener.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/FutureProgressListener.class new file mode 100644 index 00000000..94509e27 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/FutureProgressListener.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/MessageTimerTask.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/MessageTimerTask.class new file mode 100644 index 00000000..0a120555 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/MessageTimerTask.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/region/RegionCommandsBase.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/region/RegionCommandsBase.class new file mode 100644 index 00000000..0ba6e981 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/region/RegionCommandsBase.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/task/RegionRemover.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/task/RegionRemover.class new file mode 100644 index 00000000..e5203d71 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/commands/task/RegionRemover.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/BulkEvent.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/BulkEvent.class new file mode 100644 index 00000000..e15e20ee Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/BulkEvent.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/DelegateEvent.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/DelegateEvent.class new file mode 100644 index 00000000..e0f2a7fc Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/DelegateEvent.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/DelegateEvents.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/DelegateEvents.class new file mode 100644 index 00000000..25100508 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/DelegateEvents.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/Handleable.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/Handleable.class new file mode 100644 index 00000000..8f746bec Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/Handleable.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/block/AbstractBlockEvent.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/block/AbstractBlockEvent.class new file mode 100644 index 00000000..3057e4f5 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/block/AbstractBlockEvent.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/block/BreakBlockEvent.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/block/BreakBlockEvent.class new file mode 100644 index 00000000..05ae1a28 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/block/BreakBlockEvent.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/debug/CancelAttempt.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/debug/CancelAttempt.class new file mode 100644 index 00000000..cec4c59d Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/debug/CancelAttempt.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/debug/CancelLogging.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/debug/CancelLogging.class new file mode 100644 index 00000000..39ddb9ac Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/debug/CancelLogging.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/entity/AbstractEntityEvent.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/entity/AbstractEntityEvent.class new file mode 100644 index 00000000..9dd72c75 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/entity/AbstractEntityEvent.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/entity/DamageEntityEvent.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/entity/DamageEntityEvent.class new file mode 100644 index 00000000..eb74f055 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/entity/DamageEntityEvent.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/entity/SpawnEntityEvent.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/entity/SpawnEntityEvent.class new file mode 100644 index 00000000..f1cf53e0 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/entity/SpawnEntityEvent.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/inventory/UseItemEvent.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/inventory/UseItemEvent.class new file mode 100644 index 00000000..d163662e Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/event/inventory/UseItemEvent.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/internal/TargetMatcherSet.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/internal/TargetMatcherSet.class new file mode 100644 index 00000000..63d4162a Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/internal/TargetMatcherSet.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/AbstractListener.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/AbstractListener.class new file mode 100644 index 00000000..3d5d7104 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/AbstractListener.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/BlockedPotionsListener.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/BlockedPotionsListener.class new file mode 100644 index 00000000..fc301805 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/BlockedPotionsListener.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/InvincibilityListener.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/InvincibilityListener.class new file mode 100644 index 00000000..fefa1818 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/InvincibilityListener.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/PlayerMoveListener.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/PlayerMoveListener.class new file mode 100644 index 00000000..c1878f61 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/PlayerMoveListener.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/WorldRulesListener.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/WorldRulesListener.class new file mode 100644 index 00000000..18ef3f12 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/WorldRulesListener.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/AbstractEventDebounce$1.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/AbstractEventDebounce$1.class new file mode 100644 index 00000000..1ddef9ac Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/AbstractEventDebounce$1.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/AbstractEventDebounce$Entry.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/AbstractEventDebounce$Entry.class new file mode 100644 index 00000000..ba711899 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/AbstractEventDebounce$Entry.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/AbstractEventDebounce.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/AbstractEventDebounce.class new file mode 100644 index 00000000..36de6b1c Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/AbstractEventDebounce.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/BlockEntityEventDebounce$1.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/BlockEntityEventDebounce$1.class new file mode 100644 index 00000000..5a4f4730 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/BlockEntityEventDebounce$1.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/BlockEntityEventDebounce$Key.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/BlockEntityEventDebounce$Key.class new file mode 100644 index 00000000..4236c306 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/BlockEntityEventDebounce$Key.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/BlockEntityEventDebounce.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/BlockEntityEventDebounce.class new file mode 100644 index 00000000..f39cd796 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/BlockEntityEventDebounce.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/EntityEntityEventDebounce$Key.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/EntityEntityEventDebounce$Key.class new file mode 100644 index 00000000..24b51ebd Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/EntityEntityEventDebounce$Key.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/EntityEntityEventDebounce.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/EntityEntityEventDebounce.class new file mode 100644 index 00000000..eeead946 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/listener/debounce/legacy/EntityEntityEventDebounce.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/Entities.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/Entities.class new file mode 100644 index 00000000..e0d22ec4 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/Entities.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/Events.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/Events.class new file mode 100644 index 00000000..3949e0bb Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/Events.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/HandlerTracer$1.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/HandlerTracer$1.class new file mode 100644 index 00000000..13c88044 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/HandlerTracer$1.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/HandlerTracer$Handler.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/HandlerTracer$Handler.class new file mode 100644 index 00000000..2ae3faef Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/HandlerTracer$Handler.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/HandlerTracer.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/HandlerTracer.class new file mode 100644 index 00000000..338cfae3 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/HandlerTracer.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/report/PluginReport.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/report/PluginReport.class new file mode 100644 index 00000000..75a37d18 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/report/PluginReport.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/report/SchedulerReport$1.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/report/SchedulerReport$1.class new file mode 100644 index 00000000..8f8b7ea9 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/report/SchedulerReport$1.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/report/SchedulerReport.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/report/SchedulerReport.class new file mode 100644 index 00000000..d5dc377a Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/report/SchedulerReport.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/report/ServerReport.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/report/ServerReport.class new file mode 100644 index 00000000..3d9eea19 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/bukkit/util/report/ServerReport.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/protection/GlobalRegionManager.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/protection/GlobalRegionManager.class new file mode 100644 index 00000000..691b5b28 Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/protection/GlobalRegionManager.class differ diff --git a/worldguard-legacy/out/production/classes/com/sk89q/worldguard/util/report/CancelReport.class b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/util/report/CancelReport.class new file mode 100644 index 00000000..505349be Binary files /dev/null and b/worldguard-legacy/out/production/classes/com/sk89q/worldguard/util/report/CancelReport.class differ diff --git a/worldguard-legacy/out/production/resources/defaults/blacklist.txt b/worldguard-legacy/out/production/resources/defaults/blacklist.txt new file mode 100644 index 00000000..8ed6e0de --- /dev/null +++ b/worldguard-legacy/out/production/resources/defaults/blacklist.txt @@ -0,0 +1,65 @@ +# +# WorldGuard blacklist +# +# The blacklist lets you block actions, blocks, and items from being used. +# You choose a set of "items to affect" and a list of "actions to perform." +# +############################################################################### +# +# Example to block some ore mining and placement: +# [coalore,goldore,ironore] +# on-break=deny,log,kick +# on-place=deny,tell +# +# Events that you can detect: +# - on-break (when a block of this type is about to be broken) +# - on-destroy-with (the item/block held by the user while destroying) +# - on-place (a block is being placed) +# - on-use (an item like flint and steel or a bucket is being used) +# - on-interact (when a block in used (doors, chests, etc.)) +# - on-drop (an item is being dropped from the player's inventory) +# - on-acquire (an item enters a player's inventory via some method) +# - on-dispense (a dispenser is about to dispense an item) +# +# Actions (for events): +# - deny (deny completely, used blacklist mode) +# - allow (used in whitelist mode) +# - notify (notify admins with the 'worldguard.notify' permission) +# - log (log to console/file/database) +# - tell (tell a player that that's not allowed) +# - kick (kick player) +# - ban (ban player) +# +# Options: +# - ignore-groups (comma-separated list of groups to not affect) +# - ignore-perms (comma-separated list of permissions to not affect - make up +# your very own permissions!) +# - comment (message for yourself that is printed with 'log' and 'notify') +# - message (optional message to show the user instead; %s is the item name) +# +############################################################################### +# +# For more information, see: +# http://wiki.sk89q.com/wiki/WorldGuard/Blacklist +# +############################################################################### +# +# Some examples follow. +# REMEMBER: If a line has # in front, it will be ignored. +# + +# Deny lava buckets +#[lavabucket] +#ignore-perms=my.own.madeup.permission +#ignore-groups=admins,mods +#on-use=deny,tell + +# Deny some ore +#[coalore,goldore,ironore] +#ignore-groups=admins,mods +#on-break=notify,deny,log + +# Some funky data value tests +#[wood:0;>=2] +#ignore-groups=admins,mods +#on-break=notify,deny,log \ No newline at end of file diff --git a/worldguard-legacy/out/production/resources/defaults/config.yml b/worldguard-legacy/out/production/resources/defaults/config.yml new file mode 100644 index 00000000..4501e6fb --- /dev/null +++ b/worldguard-legacy/out/production/resources/defaults/config.yml @@ -0,0 +1,22 @@ +# +# WorldGuard's configuration file +# +# About editing this file: +# - DO NOT USE TABS. You MUST use spaces or Bukkit will complain. If +# you use an editor like Notepad++ (recommended for Windows users), you +# must configure it to "replace tabs with spaces." In Notepad++, this can +# be changed in Settings > Preferences > Language Menu. +# - Don't get rid of the indents. They are indented so some entries are +# in categories (like "enforce-single-session" is in the "protection" +# category. +# - If you want to check the format of this file before putting it +# into WorldGuard, paste it into http://yaml-online-parser.appspot.com/ +# and see if it gives "ERROR:". +# - Lines starting with # are commentsand so they are ignored. +# +# WARNING: +# Remember to check the compatibility spreadsheet for WorldGuard to see +# if any features are currently broken in your version of Bukkit. +# + +# -- This should be automatically replaced by the plugin in-game -- \ No newline at end of file diff --git a/worldguard-legacy/out/production/resources/defaults/config_world.yml b/worldguard-legacy/out/production/resources/defaults/config_world.yml new file mode 100644 index 00000000..db29fa3a --- /dev/null +++ b/worldguard-legacy/out/production/resources/defaults/config_world.yml @@ -0,0 +1,21 @@ +# +# WorldGuard's configuration file. +# +# This is the a per-world configuration file. It only affects one +# corresponding world. +# +# About editing this file: +# - DO NOT USE TABS. You MUST use spaces or Bukkit will complain. If +# you use an editor like Notepad++ (recommended for Windows users), you +# must configure it to "replace tabs with spaces." In Notepad++, this can +# be changed in Settings > Preferences > Language Menu. +# - Don't get rid of the indents. They are indented so some entries are +# in categories (like "enforce-single-session" is in the "protection" +# category. +# - If you want to check the format of this file before putting it +# into WorldGuard, paste it into http://yaml-online-parser.appspot.com/ +# and see if it gives "ERROR:". +# - Lines starting with # are comments and so they are ignored. +# + +# -- This should be automatically replaced by the plugin in-game -- \ No newline at end of file diff --git a/worldguard-legacy/out/production/resources/migrations/region/mysql/V1__Initial.sql b/worldguard-legacy/out/production/resources/migrations/region/mysql/V1__Initial.sql new file mode 100644 index 00000000..985b173f --- /dev/null +++ b/worldguard-legacy/out/production/resources/migrations/region/mysql/V1__Initial.sql @@ -0,0 +1,212 @@ +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; + +-- ----------------------------------------------------- +-- Table `group` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `${tablePrefix}group` ( + `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT , + `name` VARCHAR(64) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL , + PRIMARY KEY (`id`) , + UNIQUE INDEX `name` (`name` ASC) ) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_bin; + + +-- ----------------------------------------------------- +-- Table `world` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `${tablePrefix}world` ( + `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT , + `name` VARCHAR(128) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL , + PRIMARY KEY (`id`) , + UNIQUE INDEX `name` (`name` ASC) ) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_bin; + + +-- ----------------------------------------------------- +-- Table `region` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `${tablePrefix}region` ( + `id` VARCHAR(128) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL , + `world_id` INT(10) UNSIGNED NOT NULL , + `type` ENUM('cuboid','poly2d','global') CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL , + `priority` SMALLINT(6) NOT NULL DEFAULT '0' , + `parent` VARCHAR(128) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NULL DEFAULT NULL , + PRIMARY KEY (`id`, `world_id`) , + INDEX `fk_region_world` (`world_id` ASC) , + INDEX `parent` (`parent` ASC) , + CONSTRAINT `fk_${tablePrefix}region_world1` + FOREIGN KEY (`world_id` ) + REFERENCES `${tablePrefix}world` (`id` ) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT `${tablePrefix}parent` + FOREIGN KEY (`parent` ) + REFERENCES `${tablePrefix}region` (`id` ) + ON DELETE SET NULL + ON UPDATE CASCADE) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_bin; + + +-- ----------------------------------------------------- +-- Table `region_cuboid` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `${tablePrefix}region_cuboid` ( + `region_id` VARCHAR(128) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL , + `world_id` INT(10) UNSIGNED NOT NULL , + `min_x` BIGINT(20) NOT NULL , + `min_y` BIGINT(20) NOT NULL , + `min_z` BIGINT(20) NOT NULL , + `max_x` BIGINT(20) NOT NULL , + `max_y` BIGINT(20) NOT NULL , + `max_z` BIGINT(20) NOT NULL , + PRIMARY KEY (`region_id`, `world_id`) , + INDEX `fk_region_cuboid_region` (`region_id` ASC) , + CONSTRAINT `fk_${tablePrefix}region_cuboid_region` + FOREIGN KEY (`region_id` , `world_id` ) + REFERENCES `${tablePrefix}region` (`id` , `world_id` ) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_bin; + + +-- ----------------------------------------------------- +-- Table `region_flag` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `${tablePrefix}region_flag` ( + `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT , + `region_id` VARCHAR(128) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL , + `world_id` INT(10) UNSIGNED NOT NULL , + `flag` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL , + `value` VARCHAR(256) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL , + PRIMARY KEY (`id`) , + INDEX `fk_flags_region` (`region_id` ASC, `world_id` ASC) , + CONSTRAINT `fk_${tablePrefix}flags_region` + FOREIGN KEY (`region_id` , `world_id` ) + REFERENCES `${tablePrefix}region` (`id` , `world_id` ) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_bin; + + +-- ----------------------------------------------------- +-- Table `region_groups` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `${tablePrefix}region_groups` ( + `region_id` VARCHAR(128) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL , + `world_id` INT(10) UNSIGNED NOT NULL , + `group_id` INT(10) UNSIGNED NOT NULL , + `owner` TINYINT(1) NOT NULL , + PRIMARY KEY (`region_id`, `world_id`, `group_id`) , + INDEX `fk_region_groups_region` (`region_id` ASC) , + INDEX `fk_region_groups_group` (`group_id` ASC) , + CONSTRAINT `fk_${tablePrefix}region_groups_group` + FOREIGN KEY (`group_id` ) + REFERENCES `${tablePrefix}group` (`id` ) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT `fk_${tablePrefix}region_groups_region` + FOREIGN KEY (`region_id` , `world_id` ) + REFERENCES `${tablePrefix}region` (`id` , `world_id` ) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_bin; + + +-- ----------------------------------------------------- +-- Table `user` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `${tablePrefix}user` ( + `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT , + `name` VARCHAR(64) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL , + PRIMARY KEY (`id`) , + UNIQUE INDEX `name` (`name` ASC) ) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_bin; + + +-- ----------------------------------------------------- +-- Table `region_players` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `${tablePrefix}region_players` ( + `region_id` VARCHAR(128) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL , + `world_id` INT(10) UNSIGNED NOT NULL , + `user_id` INT(10) UNSIGNED NOT NULL , + `owner` TINYINT(1) NOT NULL , + PRIMARY KEY (`region_id`, `world_id`, `user_id`) , + INDEX `fk_region_players_region` (`region_id` ASC) , + INDEX `fk_region_users_user` (`user_id` ASC) , + CONSTRAINT `fk_${tablePrefix}region_users_region` + FOREIGN KEY (`region_id` , `world_id` ) + REFERENCES `${tablePrefix}region` (`id` , `world_id` ) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT `fk_${tablePrefix}region_users_user` + FOREIGN KEY (`user_id` ) + REFERENCES `${tablePrefix}user` (`id` ) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_bin; + + +-- ----------------------------------------------------- +-- Table `region_poly2d` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `${tablePrefix}region_poly2d` ( + `region_id` VARCHAR(128) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL , + `world_id` INT(10) UNSIGNED NOT NULL , + `min_y` INT(11) NOT NULL , + `max_y` INT(11) NOT NULL , + PRIMARY KEY (`region_id`, `world_id`) , + INDEX `fk_region_poly2d_region` (`region_id` ASC) , + CONSTRAINT `fk_${tablePrefix}region_poly2d_region` + FOREIGN KEY (`region_id` , `world_id` ) + REFERENCES `${tablePrefix}region` (`id` , `world_id` ) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_bin; + + +-- ----------------------------------------------------- +-- Table `region_poly2d_point` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `${tablePrefix}region_poly2d_point` ( + `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT , + `region_id` VARCHAR(128) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL , + `world_id` INT(10) UNSIGNED NOT NULL , + `x` BIGINT(20) NOT NULL , + `z` BIGINT(20) NOT NULL , + PRIMARY KEY (`id`) , + INDEX `fk_region_poly2d_point_region_poly2d` (`region_id` ASC, `world_id` ASC) , + CONSTRAINT `fk_${tablePrefix}region_poly2d_point_region_poly2d` + FOREIGN KEY (`region_id` , `world_id` ) + REFERENCES `${tablePrefix}region_poly2d` (`region_id` , `world_id` ) + ON DELETE CASCADE + ON UPDATE CASCADE) +ENGINE = InnoDB +DEFAULT CHARACTER SET = utf8 +COLLATE = utf8_bin; + + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; diff --git a/worldguard-legacy/out/production/resources/migrations/region/mysql/V2__Bug_fix_and_UUID.sql b/worldguard-legacy/out/production/resources/migrations/region/mysql/V2__Bug_fix_and_UUID.sql new file mode 100644 index 00000000..b1df899f --- /dev/null +++ b/worldguard-legacy/out/production/resources/migrations/region/mysql/V2__Bug_fix_and_UUID.sql @@ -0,0 +1,27 @@ +-- Fix WORLDGUARD-3117 +-- Otherwise, you can't be both an owner and a member of a region + +ALTER TABLE `${tablePrefix}region_players` + DROP PRIMARY KEY, + ADD PRIMARY KEY (`region_id`, `world_id`, `user_id`, `owner`); + +ALTER TABLE `${tablePrefix}region_groups` + DROP PRIMARY KEY, + ADD PRIMARY KEY (`region_id`, `world_id`, `group_id`, `owner`); + +-- Fix WORLDGUARD-3030 +-- Adds UUID support + +ALTER TABLE `${tablePrefix}user` + ALTER `name` DROP DEFAULT; + +ALTER TABLE `${tablePrefix}user` + CHANGE COLUMN `name` `name` VARCHAR(64) NULL COLLATE 'utf8_bin' AFTER `id`, + ADD COLUMN `uuid` CHAR(36) NULL AFTER `name`, + ADD UNIQUE INDEX `uuid` (`uuid`); + +-- Strings with differing numbers of trailing spaces are equal in MySQL +-- The domains have been updated to trim strings + +UPDATE `${tablePrefix}user` SET `name` = TRIM(`name`); +UPDATE `${tablePrefix}group` SET `name` = TRIM(`name`); \ No newline at end of file diff --git a/worldguard-legacy/out/production/resources/migrations/region/sqlite/V1__Initial.sql b/worldguard-legacy/out/production/resources/migrations/region/sqlite/V1__Initial.sql new file mode 100644 index 00000000..2b5b99e3 --- /dev/null +++ b/worldguard-legacy/out/production/resources/migrations/region/sqlite/V1__Initial.sql @@ -0,0 +1,160 @@ + +CREATE TABLE "${tablePrefix}world" ( + id INTEGER PRIMARY KEY AUTOINCREMENT + NOT NULL, + name TEXT NOT NULL + UNIQUE +); + + +CREATE TABLE "${tablePrefix}region" ( + id TEXT NOT NULL, + world_id INTEGER NOT NULL + REFERENCES "${tablePrefix}world" ( id ) ON DELETE CASCADE + ON UPDATE CASCADE, + type TEXT NOT NULL, + priority INTEGER NOT NULL, + parent TEXT DEFAULT ( NULL ) + --REFERENCES "${tablePrefix}region" ( id ) ON DELETE SET NULL + -- ON UPDATE CASCADE -- Not supported + , + PRIMARY KEY ( id, world_id ) +); + + +CREATE TABLE "${tablePrefix}user" ( + id INTEGER PRIMARY KEY AUTOINCREMENT + NOT NULL, + name TEXT UNIQUE + DEFAULT ( NULL ), + uuid TEXT UNIQUE + DEFAULT ( NULL ) +); + + +CREATE TABLE "${tablePrefix}group" ( + id INTEGER PRIMARY KEY AUTOINCREMENT + NOT NULL, + name TEXT NOT NULL + UNIQUE +); + + +CREATE TABLE "${tablePrefix}region_cuboid" ( + region_id TEXT NOT NULL, + world_id INTEGER NOT NULL, + min_x INTEGER NOT NULL, + min_y INTEGER NOT NULL, + min_z INTEGER NOT NULL, + max_x INTEGER NOT NULL, + max_y INTEGER NOT NULL, + max_z INTEGER NOT NULL, + PRIMARY KEY ( region_id, world_id ), + FOREIGN KEY ( region_id, world_id ) REFERENCES "${tablePrefix}region" ( id, world_id ) ON DELETE CASCADE + ON UPDATE CASCADE +); + + +CREATE TABLE "${tablePrefix}region_poly2d" ( + region_id TEXT NOT NULL, + world_id INTEGER NOT NULL, + min_y INTEGER NOT NULL, + max_y INTEGER NOT NULL, + PRIMARY KEY ( region_id, world_id ), + FOREIGN KEY ( region_id, world_id ) REFERENCES "${tablePrefix}region" ( id, world_id ) ON DELETE CASCADE + ON UPDATE CASCADE +); + + +CREATE TABLE "${tablePrefix}region_poly2d_point" ( + id INTEGER PRIMARY KEY AUTOINCREMENT + NOT NULL, + region_id TEXT NOT NULL, + world_id INTEGER NOT NULL, + x INTEGER NOT NULL, + z INTEGER NOT NULL, + FOREIGN KEY ( region_id, world_id ) REFERENCES "${tablePrefix}region_poly2d" ( region_id, world_id ) ON DELETE CASCADE + ON UPDATE CASCADE +); + + +CREATE TABLE "${tablePrefix}region_groups" ( + region_id TEXT NOT NULL, + world_id INTEGER NOT NULL, + group_id INTEGER NOT NULL + REFERENCES "${tablePrefix}group" ( id ) ON DELETE CASCADE + ON UPDATE CASCADE, + owner BOOLEAN NOT NULL, + PRIMARY KEY ( region_id, world_id, group_id ), + FOREIGN KEY ( region_id, world_id ) REFERENCES "${tablePrefix}region" ( id, world_id ) ON DELETE CASCADE + ON UPDATE CASCADE +); + + +CREATE TABLE "${tablePrefix}region_flag" ( + id INTEGER PRIMARY KEY AUTOINCREMENT + NOT NULL, + region_id TEXT NOT NULL, + world_id INTEGER NOT NULL, + flag TEXT NOT NULL, + value TEXT NOT NULL, + FOREIGN KEY ( region_id, world_id ) REFERENCES "${tablePrefix}region" ( id, world_id ) ON DELETE CASCADE + ON UPDATE CASCADE +); + + +CREATE TABLE "${tablePrefix}region_players" ( + region_id TEXT NOT NULL, + world_id INTEGER NOT NULL, + user_id INTEGER NOT NULL + REFERENCES "${tablePrefix}user" ( id ) ON DELETE CASCADE + ON UPDATE CASCADE, + owner BOOLEAN NOT NULL, + PRIMARY KEY ( region_id, world_id, user_id, owner ), + FOREIGN KEY ( region_id, world_id ) REFERENCES "${tablePrefix}region" ( id, world_id ) ON DELETE CASCADE + ON UPDATE CASCADE +); + + +CREATE INDEX "idx_${tablePrefix}region_cuboid_region_id" ON "${tablePrefix}region_cuboid" ( + region_id +); + + +CREATE INDEX "idx_${tablePrefix}region_world_id" ON "${tablePrefix}region" ( + world_id +); + + +CREATE INDEX "idx_${tablePrefix}region_parent" ON "${tablePrefix}region" ( + parent +); + + +CREATE INDEX "idx_${tablePrefix}region_poly2d_region_id" ON "${tablePrefix}region_poly2d" ( + region_id +); + + +CREATE INDEX "idx_${tablePrefix}region_poly2d_point_region_world_id" ON "${tablePrefix}region_poly2d_point" ( + region_id, + world_id +); + + +CREATE INDEX "idx_${tablePrefix}region_groups_region_id" ON "${tablePrefix}region_groups" ( + region_id +); + + +CREATE INDEX "idx_${tablePrefix}region_groups_group_id" ON "${tablePrefix}region_groups" ( + group_id +); + + +CREATE INDEX "idx_${tablePrefix}region_flag_region_world_id" ON "${tablePrefix}region_flag" ( + region_id, + world_id, + flag +); + diff --git a/worldguard-legacy/out/production/resources/plugin.yml b/worldguard-legacy/out/production/resources/plugin.yml new file mode 100644 index 00000000..9a8a62c6 --- /dev/null +++ b/worldguard-legacy/out/production/resources/plugin.yml @@ -0,0 +1,5 @@ +name: WorldGuard +main: com.sk89q.worldguard.bukkit.WorldGuardPlugin +version: "${project.internalVersion}" +softdepend: [WorldEdit, CommandBook] +api-version: 1.13 diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/LocalPlayer.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/LocalPlayer.java deleted file mode 100644 index cf64cd17..00000000 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/LocalPlayer.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * WorldGuard, a suite of tools for Minecraft - * Copyright (C) sk89q - * Copyright (C) WorldGuard team and contributors - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldguard; - -import com.sk89q.worldedit.Vector; -import com.sk89q.worldguard.domains.Association; -import com.sk89q.worldguard.protection.association.RegionAssociable; -import com.sk89q.worldguard.protection.regions.ProtectedRegion; - -import java.util.List; -import java.util.UUID; - -public abstract class LocalPlayer implements RegionAssociable { - - /** - * Get this player's name. - * - * @return The player's name - */ - public abstract String getName(); - - /** - * Get this player's unique ID. - * - * @return a UUID - */ - public abstract UUID getUniqueId(); - - /** - * Returns true if this player is inside a group. - * - * @param group The group to check - * @return Whether this player is in {@code group} - */ - public abstract boolean hasGroup(String group); - - /** - * Get this player's position. - * - * @return The player's position - */ - public abstract Vector getPosition(); - - /** - * Kick this player. - * - * @param msg The message to kick the player with - */ - public abstract void kick(String msg); - - /** - * Ban this player. - * - * @param msg The message to ban the player with - */ - public abstract void ban(String msg); - - /** - * Send this player a message. - * - * @param msg The message to send to the player - */ - public abstract void printRaw(String msg); - - /** - * Get this player's list of groups. - * - * @return The groups this player is in - */ - public abstract String[] getGroups(); - - /** - * Returns whether this player has permission. - * - * @param perm The permission to check - * @return Whether this player has {@code perm} - */ - public abstract boolean hasPermission(String perm); - - @Override - public Association getAssociation(List regions) { - boolean member = false; - - for (ProtectedRegion region : regions) { - if (region.isOwner(this)) { - return Association.OWNER; - } else if (!member && region.isMember(this)) { - member = true; - } - } - - return member ? Association.MEMBER : Association.NON_MEMBER; - } - - @Override - public boolean equals(Object obj) { - return obj instanceof LocalPlayer && ((LocalPlayer) obj).getName().equals(getName()); - } - - @Override - public int hashCode() { - return getName().hashCode(); - } - -} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/DataValueRangeMatcher.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/DataValueRangeMatcher.java deleted file mode 100644 index 97c3eb3f..00000000 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/DataValueRangeMatcher.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * WorldGuard, a suite of tools for Minecraft - * Copyright (C) sk89q - * Copyright (C) WorldGuard team and contributors - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldguard.blacklist.target; - -import com.google.common.base.Predicate; - -import static com.google.common.base.Preconditions.checkNotNull; - -public class DataValueRangeMatcher implements TargetMatcher { - - private final int typeId; - private final Predicate dataMatcher; - - public DataValueRangeMatcher(int typeId, Predicate dataMatcher) { - checkNotNull(dataMatcher); - this.typeId = typeId; - this.dataMatcher = dataMatcher; - } - - @Override - public int getMatchedTypeId() { - return typeId; - } - - @Override - public boolean test(Target target) { - return typeId == target.getTypeId() && isDataInRange(target.getData()); - } - - private boolean isDataInRange(short data) { - return dataMatcher.apply(data); - } - -} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcherParser.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcherParser.java deleted file mode 100644 index 53a1c901..00000000 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/blacklist/target/TargetMatcherParser.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * WorldGuard, a suite of tools for Minecraft - * Copyright (C) sk89q - * Copyright (C) WorldGuard team and contributors - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldguard.blacklist.target; - -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; -import com.google.common.collect.Range; -import com.sk89q.worldedit.blocks.ItemType; -import com.sk89q.worldguard.util.Enums; -import org.bukkit.Material; - -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class TargetMatcherParser { - - private static final Pattern DATA_VALUE_PATTERN = Pattern.compile("^([^:]+):([^:]+)$"); - private static final Pattern LESS_THAN_PATTERN = Pattern.compile("^<=\\s*([0-9]+)$"); - private static final Pattern GREATER_THAN_PATTERN = Pattern.compile("^>=\\s*([0-9]+)$"); - private static final Pattern RANGE_PATTERN = Pattern.compile("^([0-9]+)\\s*-\\s*([0-9]+)$"); - - public TargetMatcher fromInput(String input) throws TargetMatcherParseException { - Matcher matcher = DATA_VALUE_PATTERN.matcher(input.trim()); - if (matcher.matches()) { - return new DataValueRangeMatcher(parseType(matcher.group(1)), parseDataValueRanges(matcher.group(2))); - } else { - return new WildcardDataMatcher(parseType(input)); - } - } - - private int parseType(String input) throws TargetMatcherParseException { - input = input.trim(); - - try { - return Integer.parseInt(input); - } catch (NumberFormatException e) { - Material material = Enums.findFuzzyByValue(Material.class, input); - if (material != null) { - return material.getId(); - } - - int id = getItemID(input); - if (id > 0) { - return id; - } - - throw new TargetMatcherParseException("Unknown block or item name: " + input); - } - } - - private Predicate parseDataValueRanges(String input) throws TargetMatcherParseException { - List> predicates = new ArrayList>(); - - for (String part : input.split(";")) { - predicates.add(parseRange(part)); - } - - return Predicates.or(predicates); - } - - private Predicate parseRange(String input) throws TargetMatcherParseException { - input = input.trim(); - - Matcher matcher; - - matcher = LESS_THAN_PATTERN.matcher(input); - if (matcher.matches()) { - return Range.atMost(Short.parseShort(matcher.group(1))); - } - - matcher = GREATER_THAN_PATTERN.matcher(input); - if (matcher.matches()) { - return Range.atLeast(Short.parseShort(matcher.group(1))); - } - - matcher = RANGE_PATTERN.matcher(input); - if (matcher.matches()) { - return Range.closed(Short.parseShort(matcher.group(1)), Short.parseShort(matcher.group(2))); - } - - try { - short s = Short.parseShort(input); - return Range.closed(s, s); - } catch (NumberFormatException e) { - throw new TargetMatcherParseException("Unknown data value range: " + input); - } - } - - /** - * Get an item's ID from its name. - * - * @param name the name of the item to look up - * @return the id for name if contained in ItemId, else -1 - */ - private static int getItemID(String name) { - ItemType type = ItemType.lookup(name); - if (type != null) { - return type.getID(); - } else { - return -1; - } - } - -} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitConfigurationManager.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitConfigurationManager.java new file mode 100644 index 00000000..da4862b3 --- /dev/null +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitConfigurationManager.java @@ -0,0 +1,90 @@ +package com.sk89q.worldguard.bukkit; + +import com.sk89q.worldedit.WorldEdit; +import com.sk89q.worldedit.extension.platform.Capability; +import com.sk89q.worldedit.world.World; +import com.sk89q.worldguard.config.YamlConfigurationManager; +import com.sk89q.worldguard.util.report.Unreported; + +import java.io.File; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +public class BukkitConfigurationManager extends YamlConfigurationManager { + + @Unreported private WorldGuardPlugin plugin; + @Unreported private ConcurrentMap worlds = new ConcurrentHashMap<>(); + + private boolean hasCommandBookGodMode; + + /** + * Construct the object. + * + * @param plugin The plugin instance + */ + public BukkitConfigurationManager(WorldGuardPlugin plugin) { + super(); + } + + @Override + public File getDataFolder() { + return plugin.getDataFolder(); + } + + @Override + public void copyDefaults() { + // Create the default configuration file + plugin.createDefaultConfiguration(new File(plugin.getDataFolder(), "config.yml"), "config.yml"); + } + + @Override + public void unload() { + worlds.clear(); + } + + @Override + public void postLoad() { + // Load configurations for each world + for (World world : WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.GAME_HOOKS).getWorlds()) { + get(world); + } + } + + /** + * Get the configuration for a world. + * + * @param world The world to get the configuration for + * @return {@code world}'s configuration + */ + @Override + public BukkitWorldConfiguration get(World world) { + String worldName = world.getName(); + BukkitWorldConfiguration config = worlds.get(worldName); + BukkitWorldConfiguration newConfig = null; + + while (config == null) { + if (newConfig == null) { + newConfig = new BukkitWorldConfiguration(plugin, worldName, this.getConfig()); + } + worlds.putIfAbsent(world.getName(), newConfig); + config = worlds.get(world.getName()); + } + + return config; + } + + public void updateCommandBookGodMode() { + try { + if (plugin.getServer().getPluginManager().isPluginEnabled("CommandBook")) { + Class.forName("com.sk89q.commandbook.GodComponent"); + hasCommandBookGodMode = true; + return; + } + } catch (ClassNotFoundException ignore) {} + hasCommandBookGodMode = false; + } + + public boolean hasCommandBookGodMode() { + return hasCommandBookGodMode; + } +} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitOfflinePlayer.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitOfflinePlayer.java index 8112e2b1..b9dfde02 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitOfflinePlayer.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitOfflinePlayer.java @@ -20,11 +20,22 @@ package com.sk89q.worldguard.bukkit; import com.sk89q.worldedit.Vector; +import com.sk89q.worldedit.blocks.BaseItemStack; +import com.sk89q.worldedit.entity.BaseEntity; +import com.sk89q.worldedit.extent.inventory.BlockBag; +import com.sk89q.worldedit.session.SessionKey; +import com.sk89q.worldedit.util.HandSide; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.world.World; +import com.sk89q.worldedit.world.weather.WeatherType; +import com.sk89q.worldedit.world.weather.WeatherTypes; import com.sk89q.worldguard.LocalPlayer; import org.bukkit.OfflinePlayer; import java.util.UUID; +import javax.annotation.Nullable; + class BukkitOfflinePlayer extends LocalPlayer { private final OfflinePlayer player; @@ -48,11 +59,6 @@ public boolean hasGroup(String group) { return false; } - @Override - public Vector getPosition() { - return Vector.ZERO; - } - @Override public void kick(String msg) { } @@ -61,10 +67,95 @@ public void kick(String msg) { public void ban(String msg) { } + @Override + public double getHealth() { + return 0; + } + + @Override + public void setHealth(double health) { + + } + + @Override + public double getMaxHealth() { + return 0; + } + + @Override + public double getFoodLevel() { + return 0; + } + + @Override + public void setFoodLevel(double foodLevel) { + + } + + @Override + public double getSaturation() { + return 0; + } + + @Override + public void setSaturation(double saturation) { + + } + + @Override + public WeatherType getPlayerWeather() { + return WeatherTypes.CLEAR; + } + + @Override + public void setPlayerWeather(WeatherType weather) { + + } + + @Override + public void resetPlayerWeather() { + + } + + @Override + public boolean isPlayerTimeRelative() { + return false; + } + + @Override + public long getPlayerTimeOffset() { + return 0; + } + + @Override + public void setPlayerTime(long time, boolean relative) { + + } + + @Override + public void resetPlayerTime() { + + } + @Override public void printRaw(String msg) { } + @Override + public void printDebug(String msg) { + + } + + @Override + public void print(String msg) { + + } + + @Override + public void printError(String msg) { + + } + @Override public String[] getGroups() { return new String[0]; @@ -75,4 +166,50 @@ public boolean hasPermission(String perm) { return false; } + @Override + public World getWorld() { + return null; + } + + @Override + public BaseItemStack getItemInHand(HandSide handSide) { + return null; + } + + @Override + public void giveItem(BaseItemStack itemStack) { + + } + + @Override + public BlockBag getInventoryBlockBag() { + return null; + } + + @Override + public void setPosition(Vector pos, float pitch, float yaw) { + + } + + @Nullable + @Override + public BaseEntity getState() { + return null; + } + + @Override + public Location getLocation() { + return null; + } + + @Override + public SessionKey getSessionKey() { + return null; + } + + @Nullable + @Override + public T getFacet(Class cls) { + return null; + } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitPlayer.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitPlayer.java index 981f2b6b..43a64383 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitPlayer.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitPlayer.java @@ -20,6 +20,16 @@ package com.sk89q.worldguard.bukkit; import com.sk89q.worldedit.Vector; +import com.sk89q.worldedit.blocks.BaseItemStack; +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.bukkit.WorldEditPlugin; +import com.sk89q.worldedit.entity.BaseEntity; +import com.sk89q.worldedit.extent.inventory.BlockBag; +import com.sk89q.worldedit.session.SessionKey; +import com.sk89q.worldedit.util.HandSide; +import com.sk89q.worldedit.world.World; +import com.sk89q.worldedit.world.weather.WeatherType; +import com.sk89q.worldedit.world.weather.WeatherTypes; import com.sk89q.worldguard.LocalPlayer; import org.bukkit.BanList.Type; import org.bukkit.Bukkit; @@ -30,10 +40,13 @@ import static com.google.common.base.Preconditions.checkNotNull; +import javax.annotation.Nullable; + public class BukkitPlayer extends LocalPlayer { private final WorldGuardPlugin plugin; private final Player player; + private final com.sk89q.worldedit.bukkit.BukkitPlayer worldEditPlayer; private final String name; private final boolean silenced; @@ -50,6 +63,7 @@ public BukkitPlayer(WorldGuardPlugin plugin, Player player) { // getName() takes longer than before in newer versions of Minecraft this.name = player.getName(); this.silenced = silenced; + this.worldEditPlayer = new com.sk89q.worldedit.bukkit.BukkitPlayer((WorldEditPlugin) Bukkit.getPluginManager().getPlugin("WorldEdit"), player); } @Override @@ -67,12 +81,6 @@ public boolean hasGroup(String group) { return plugin.inGroup(player, group); } - @Override - public Vector getPosition() { - Location loc = player.getLocation(); - return new Vector(loc.getX(), loc.getY(), loc.getZ()); - } - @Override public void kick(String msg) { if (!silenced) { @@ -88,6 +96,76 @@ public void ban(String msg) { } } + @Override + public double getHealth() { + return player.getHealth(); + } + + @Override + public void setHealth(double health) { + player.setHealth(health); + } + + @Override + public double getMaxHealth() { + return player.getMaxHealth(); + } + + @Override + public double getFoodLevel() { + return player.getFoodLevel(); + } + + @Override + public void setFoodLevel(double foodLevel) { + player.setFoodLevel((int) foodLevel); + } + + @Override + public double getSaturation() { + return player.getSaturation(); + } + + @Override + public void setSaturation(double saturation) { + player.setSaturation((float) saturation); + } + + @Override + public WeatherType getPlayerWeather() { + return null; + } + + @Override + public void setPlayerWeather(WeatherType weather) { + player.setPlayerWeather(weather == WeatherTypes.CLEAR ? org.bukkit.WeatherType.CLEAR : org.bukkit.WeatherType.DOWNFALL); + } + + @Override + public void resetPlayerWeather() { + player.resetPlayerWeather(); + } + + @Override + public boolean isPlayerTimeRelative() { + return player.isPlayerTimeRelative(); + } + + @Override + public long getPlayerTimeOffset() { + return player.getPlayerTimeOffset(); + } + + @Override + public void setPlayerTime(long time, boolean relative) { + player.setPlayerTime(time, relative); + } + + @Override + public void resetPlayerTime() { + player.resetPlayerTime(); + } + @Override public String[] getGroups() { return plugin.getGroups(player); @@ -100,6 +178,21 @@ public void printRaw(String msg) { } } + @Override + public void printDebug(String msg) { + worldEditPlayer.printDebug(msg); + } + + @Override + public void print(String msg) { + worldEditPlayer.print(msg); + } + + @Override + public void printError(String msg) { + worldEditPlayer.printError(msg); + } + @Override public boolean hasPermission(String perm) { return plugin.hasPermission(player, perm); @@ -109,4 +202,51 @@ public Player getPlayer() { return player; } + @Override + public World getWorld() { + return BukkitAdapter.adapt(player.getWorld()); + } + + @Override + public BaseItemStack getItemInHand(HandSide handSide) { + return worldEditPlayer.getItemInHand(handSide); + } + + @Override + public void giveItem(BaseItemStack itemStack) { + worldEditPlayer.giveItem(itemStack); + } + + @Override + public BlockBag getInventoryBlockBag() { + return worldEditPlayer.getInventoryBlockBag(); + } + + @Override + public void setPosition(Vector pos, float pitch, float yaw) { + worldEditPlayer.setPosition(pos, pitch, yaw); + } + + @Nullable + @Override + public BaseEntity getState() { + return worldEditPlayer.getState(); + } + + @Override + public com.sk89q.worldedit.util.Location getLocation() { + Location loc = player.getLocation(); + return BukkitAdapter.adapt(loc); + } + + @Override + public SessionKey getSessionKey() { + return worldEditPlayer.getSessionKey(); + } + + @Nullable + @Override + public T getFacet(Class cls) { + return worldEditPlayer.getFacet(cls); + } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/RegionContainer.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitRegionContainer.java similarity index 68% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/RegionContainer.java rename to worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitRegionContainer.java index bc060648..3005e56d 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/RegionContainer.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitRegionContainer.java @@ -19,13 +19,18 @@ package com.sk89q.worldguard.bukkit; +import static com.google.common.base.Preconditions.checkNotNull; + import com.sk89q.worldedit.Vector2D; -import com.sk89q.worldguard.protection.managers.RegionContainerImpl; +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.config.ConfigurationManager; import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.managers.migration.Migration; import com.sk89q.worldguard.protection.managers.migration.MigrationException; import com.sk89q.worldguard.protection.managers.migration.UUIDMigration; import com.sk89q.worldguard.protection.managers.storage.RegionDriver; +import com.sk89q.worldguard.protection.regions.RegionContainer; import org.bukkit.Bukkit; import org.bukkit.Chunk; import org.bukkit.World; @@ -36,62 +41,42 @@ import org.bukkit.event.world.WorldLoadEvent; import org.bukkit.event.world.WorldUnloadEvent; -import javax.annotation.Nullable; import java.util.ArrayList; -import java.util.Collections; import java.util.List; -import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; -import static com.google.common.base.Preconditions.checkNotNull; +import javax.annotation.Nullable; -/** - * A region container creates {@link RegionManager}s for loaded worlds, which - * allows access to the region data of a world. Generally, only data is - * loaded for worlds that are loaded in the server. - * - *

This class is thread safe and its contents can be accessed from - * multiple concurrent threads.

- * - *

An instance of this class can be retrieved using - * {@link WorldGuardPlugin#getRegionContainer()}.

- */ -public class RegionContainer { +public class BukkitRegionContainer extends RegionContainer { - private static final Logger log = Logger.getLogger(RegionContainer.class.getCanonicalName()); + private static final Logger log = Logger.getLogger(BukkitRegionContainer.class.getCanonicalName()); /** * Invalidation frequency in ticks. */ private static final int CACHE_INVALIDATION_INTERVAL = 2; - private final Object lock = new Object(); private final WorldGuardPlugin plugin; - private final QueryCache cache = new QueryCache(); - private RegionContainerImpl container; /** * Create a new instance. * * @param plugin the plugin */ - RegionContainer(WorldGuardPlugin plugin) { + public BukkitRegionContainer(WorldGuardPlugin plugin) { this.plugin = plugin; } - /** - * Initialize the region container. - */ - void initialize() { - ConfigurationManager config = plugin.getGlobalStateManager(); - container = new RegionContainerImpl(config.selectedRegionStoreDriver, plugin.getFlagRegistry()); + @Override + public void initialize() { + super.initialize(); + + loadWorlds(); // Migrate to UUIDs autoMigrate(); - loadWorlds(); - Bukkit.getPluginManager().registerEvents(new Listener() { @EventHandler public void onWorldLoad(WorldLoadEvent event) { @@ -105,7 +90,7 @@ public void onWorldUnload(WorldUnloadEvent event) { @EventHandler public void onChunkLoad(ChunkLoadEvent event) { - RegionManager manager = get(event.getWorld()); + RegionManager manager = get(BukkitAdapter.adapt(event.getWorld())); if (manager != null) { Chunk chunk = event.getChunk(); manager.loadChunk(new Vector2D(chunk.getX(), chunk.getZ())); @@ -114,7 +99,7 @@ public void onChunkLoad(ChunkLoadEvent event) { @EventHandler public void onChunkUnload(ChunkUnloadEvent event) { - RegionManager manager = get(event.getWorld()); + RegionManager manager = get(BukkitAdapter.adapt(event.getWorld())); if (manager != null) { Chunk chunk = event.getChunk(); manager.unloadChunk(new Vector2D(chunk.getX(), chunk.getZ())); @@ -122,12 +107,7 @@ public void onChunkUnload(ChunkUnloadEvent event) { } }, plugin); - Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() { - @Override - public void run() { - cache.invalidateAll(); - } - }, CACHE_INVALIDATION_INTERVAL, CACHE_INVALIDATION_INTERVAL); + Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, cache::invalidateAll, CACHE_INVALIDATION_INTERVAL, CACHE_INVALIDATION_INTERVAL); } /** @@ -182,7 +162,8 @@ public void reload() { private RegionManager load(World world) { checkNotNull(world); - WorldConfiguration config = plugin.getGlobalStateManager().get(world); + BukkitWorldConfiguration config = + (BukkitWorldConfiguration) WorldGuard.getInstance().getPlatform().getGlobalStateManager().get(BukkitAdapter.adapt(world)); if (!config.useRegions) { return null; } @@ -194,7 +175,7 @@ private RegionManager load(World world) { if (manager != null) { // Bias the region data for loaded chunks - List positions = new ArrayList(); + List positions = new ArrayList<>(); for (Chunk chunk : world.getLoadedChunks()) { positions.add(new Vector2D(chunk.getX(), chunk.getZ())); } @@ -218,51 +199,6 @@ void unload(World world) { } } - /** - * Get the region manager for a world if one exists. - * - *

If you wish to make queries and performance is more important - * than accuracy, use {@link #createQuery()} instead.

- * - *

This method may return {@code null} if region data for the given - * world has not been loaded, has failed to load, or support for regions - * has been disabled.

- * - * @param world the world - * @return a region manager, or {@code null} if one is not available - */ - @Nullable - public RegionManager get(World world) { - return container.get(world.getName()); - } - - /** - * Get an immutable list of loaded {@link RegionManager}s. - * - * @return a list of managers - */ - public List getLoaded() { - return Collections.unmodifiableList(container.getLoaded()); - } - - /** - * Get the a set of region managers that are failing to save. - * - * @return a set of region managers - */ - public Set getSaveFailures() { - return container.getSaveFailures(); - } - - /** - * Create a new region query. - * - * @return a new query - */ - public RegionQuery createQuery() { - return new RegionQuery(plugin, cache); - } - /** * Execute a migration and block any loading of region data during * the migration. @@ -289,11 +225,11 @@ public void migrate(Migration migration) throws MigrationException { * Execute auto-migration. */ private void autoMigrate() { - ConfigurationManager config = plugin.getGlobalStateManager(); + ConfigurationManager config = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); if (config.migrateRegionsToUuid) { RegionDriver driver = getDriver(); - UUIDMigration migrator = new UUIDMigration(driver, plugin.getProfileService(), plugin.getFlagRegistry()); + UUIDMigration migrator = new UUIDMigration(driver, plugin.getProfileService(), WorldGuard.getInstance().getFlagRegistry()); migrator.setKeepUnresolvedNames(config.keepUnresolvedNames); try { migrate(migrator); diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitUtil.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitUtil.java index 8f50a1f1..82e10c00 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitUtil.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitUtil.java @@ -19,89 +19,32 @@ package com.sk89q.worldguard.bukkit; -import com.google.common.collect.ImmutableList; -import com.sk89q.worldedit.BlockVector; -import com.sk89q.worldedit.Vector; -import com.sk89q.worldedit.blocks.BlockID; -import com.sk89q.worldedit.blocks.BlockType; -import com.sk89q.worldedit.blocks.ItemID; -import com.sk89q.worldguard.blacklist.target.MaterialTarget; +import static com.google.common.base.Preconditions.checkNotNull; + +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldguard.blacklist.target.ItemTarget; import com.sk89q.worldguard.blacklist.target.Target; -import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; -import com.sk89q.worldguard.protection.regions.ProtectedRegion; -import com.sk89q.worldguard.util.Enums; -import org.bukkit.*; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.Server; +import org.bukkit.World; import org.bukkit.block.Block; -import org.bukkit.entity.*; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Entity; +import org.bukkit.entity.ExperienceOrb; +import org.bukkit.entity.FallingBlock; +import org.bukkit.entity.Item; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.entity.TNTPrimed; +import org.bukkit.entity.Tameable; import org.bukkit.inventory.ItemStack; -import java.lang.reflect.Method; -import java.util.Collection; import java.util.List; -import static com.google.common.base.Preconditions.checkNotNull; - public class BukkitUtil { - private static Method ONLINE_PLAYERS_METHOD; - - private BukkitUtil() { - - } - - /** - * Converts the location of a Bukkit block to a WorldEdit vector. - * - * @param block The block to convert - * @return The block's location as a BlockVector - */ - public static BlockVector toVector(Block block) { - return new BlockVector(block.getX(), block.getY(), block.getZ()); - } - - /** - * Converts a Bukkit location to a WorldEdit vector. - * - * @param loc A Bukkit Location - * @return A Vector with the location's x, y, and z values - */ - public static Vector toVector(Location loc) { - return new Vector(loc.getX(), loc.getY(), loc.getZ()); - } - - /** - * Converts a Bukkit vector to a WorldEdit vector. - * - * @param vector The Bukkit vector - * @return A WorldEdit vector with the same values as the Bukkit vector. - */ - public static Vector toVector(org.bukkit.util.Vector vector) { - return new Vector(vector.getX(), vector.getY(), vector.getZ()); - } - - /** - * Converts a WorldEdit vector to a Bukkit location. - * - * @param world The World to create the new Location with - * @param vec The vector to use for coordinates - * @return The Vector as a location with a World of world - */ - public static Location toLocation(World world, Vector vec) { - return new Location(world, vec.getX(), vec.getY(), vec.getZ()); - } - - /** - * Create a dummy region that encompasses the size of a chunk. - * - * @param chunk The chunk - * @return The dummy region - */ - public static ProtectedRegion toRegion(Chunk chunk) { - World world = chunk.getWorld(); - - int minX = chunk.getX() << 4; - int minZ = chunk.getZ() << 4; - return new ProtectedCuboidRegion("_", new BlockVector(minX, 0, minZ), new BlockVector(minX + 15, world.getMaxHeight(), minZ + 15)); + private BukkitUtil() { } /** @@ -121,19 +64,6 @@ public static Player matchSinglePlayer(Server server, String name) { return players.get(0); } - /** - * Drops a sign item and removes a sign. - * - * @param block The block - * @deprecated see {@link org.bukkit.block.Block#breakNaturally()} - */ - @Deprecated - public static void dropSign(Block block) { - block.setTypeId(0); - block.getWorld().dropItemNaturally(block.getLocation(), - new ItemStack(ItemID.SIGN, 1)); - } - /** * Sets the given block to fluid water. * Used by addSpongeWater() @@ -145,9 +75,8 @@ public static void dropSign(Block block) { */ public static void setBlockToWater(World world, int ox, int oy, int oz) { Block block = world.getBlockAt(ox, oy, oz); - int id = block.getTypeId(); - if (id == 0) { - block.setTypeId(8); + if (block.getType() == Material.AIR) { + block.setType(Material.WATER); } } @@ -162,8 +91,7 @@ public static void setBlockToWater(World world, int ox, int oy, int oz) { */ public static boolean isBlockWater(World world, int ox, int oy, int oz) { Block block = world.getBlockAt(ox, oy, oz); - int id = block.getTypeId(); - return id == 8 || id == 9; + return block.getType() == Material.WATER; } /** @@ -187,50 +115,6 @@ public static int getPotionEffectBits(ItemStack item) { return item.getDurability() & 0x3F; } - /** - * Find a position for the player to stand that is not inside a block. - * Blocks above the player will be iteratively tested until there is - * a series of two free blocks. The player will be teleported to - * that free position. - * - * @param player - */ - public static void findFreePosition(Player player) { - Location loc = player.getLocation(); - int x = loc.getBlockX(); - int y = Math.max(0, loc.getBlockY()); - int origY = y; - int z = loc.getBlockZ(); - World world = player.getWorld(); - - byte free = 0; - - while (y <= world.getMaxHeight() + 1) { - if (BlockType.canPassThrough(world.getBlockTypeIdAt(x, y, z))) { - free++; - } else { - free = 0; - } - - if (free == 2) { - if (y - 1 != origY || y == 1) { - loc.setX(x + 0.5); - loc.setY(y); - loc.setZ(z + 0.5); - if (y <= 2 && world.getBlockAt(x,0,z).getTypeId() == BlockID.AIR) { - world.getBlockAt(x,0,z).setTypeId(20); - loc.setY(2); - } - player.setFallDistance(0F); - player.teleport(loc); - } - return; - } - - y++; - } - } - /** * Replace color macros in a string. The macros are in the form of `[char] * where char represents the color. R is for red, Y is for yellow, @@ -277,13 +161,10 @@ public static String replaceColorMacros(String str) { return str; } - private static final org.bukkit.entity.EntityType armorStandType = - Enums.findByValue(org.bukkit.entity.EntityType.class, "ARMOR_STAND"); - /** * Returns whether an entity should be removed for the halt activity mode. * - * @param entity + * @param entity The entity * @return true if it's to be removed */ public static boolean isIntensiveEntity(Entity entity) { @@ -294,28 +175,7 @@ public static boolean isIntensiveEntity(Entity entity) { || (entity instanceof LivingEntity && !(entity instanceof Tameable) && !(entity instanceof Player) - && !(entity.getType() == armorStandType)); - } - - /** - * Search an enum for a value, and return the first one found. Return null if the - * enum entry is not found. - * - * @param enumType enum class - * @param values values to test - * @return a value in the enum or null - * @deprecated use {@link Enums#findByValue(Class, String...)} - */ - @Deprecated - public static > T tryEnum(Class enumType, String ... values) { - for (String val : values) { - try { - return Enum.valueOf(enumType, val); - } catch (IllegalArgumentException e) { - } - } - - return null; + && !(entity instanceof ArmorStand)); } /** @@ -326,23 +186,7 @@ public static > T tryEnum(Class enumType, String ... values */ public static Target createTarget(Block block) { checkNotNull(block); - return new MaterialTarget(block.getTypeId(), block.getData()); - } - - /** - * Get a blacklist target for the given block. - * - * @param block the block - * @param material a fallback material - * @return a target - */ - public static Target createTarget(Block block, Material material) { - checkNotNull(material); - if (block.getType() == material) { - return new MaterialTarget(block.getTypeId(), block.getData()); - } else { - return new MaterialTarget(material.getId(), (short) 0); - } + return new ItemTarget(BukkitAdapter.adapt(block.getBlockData()).getBlockType().getItemType()); } /** @@ -353,7 +197,7 @@ public static Target createTarget(Block block, Material material) { */ public static Target createTarget(ItemStack item) { checkNotNull(item); - return new MaterialTarget(item.getTypeId(), item.getDurability()); + return new ItemTarget(BukkitAdapter.adapt(item).getType()); } /** @@ -364,45 +208,6 @@ public static Target createTarget(ItemStack item) { */ public static Target createTarget(Material material) { checkNotNull(material); - return new MaterialTarget(material.getId(), (short) 0); + return new ItemTarget(BukkitAdapter.adapt(material)); } - - /** - * Get a collection of the currently online players. - * - * @return The online players - */ - @SuppressWarnings("unchecked") - public static Collection getOnlinePlayers() { - try { - return Bukkit.getServer().getOnlinePlayers(); - } catch (NoSuchMethodError ignored) { - } - - try { - if (ONLINE_PLAYERS_METHOD == null) { - ONLINE_PLAYERS_METHOD = getOnlinePlayersMethod(); - } - - Object result = ONLINE_PLAYERS_METHOD.invoke(Bukkit.getServer()); - if (result instanceof Player[]) { - return ImmutableList.copyOf((Player[]) result); - } else if (result instanceof Collection) { - return (Collection) result; - } else { - throw new RuntimeException("Result of getOnlinePlayers() call was not a known data type"); - } - } catch (Exception e) { - throw new RuntimeException("WorldGuard is not compatible with this version of Bukkit", e); - } - } - - private static Method getOnlinePlayersMethod() throws NoSuchMethodException { - try { - return Server.class.getMethod("getOnlinePlayers"); - } catch (NoSuchMethodException e1) { - return Server.class.getMethod("_INVALID_getOnlinePlayers"); - } - } - } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/WorldConfiguration.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitWorldConfiguration.java similarity index 81% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/WorldConfiguration.java rename to worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitWorldConfiguration.java index 8367f06e..f19ee108 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/WorldConfiguration.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitWorldConfiguration.java @@ -21,6 +21,8 @@ import com.sk89q.util.yaml.YAMLFormat; import com.sk89q.util.yaml.YAMLProcessor; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.blacklist.Blacklist; import com.sk89q.worldguard.blacklist.BlacklistLoggerHandler; import com.sk89q.worldguard.blacklist.logger.ConsoleHandler; @@ -28,13 +30,12 @@ import com.sk89q.worldguard.blacklist.logger.FileHandler; import com.sk89q.worldguard.blacklist.target.TargetMatcherParseException; import com.sk89q.worldguard.blacklist.target.TargetMatcherParser; +import com.sk89q.worldguard.bukkit.chest.ChestProtection; +import com.sk89q.worldguard.bukkit.chest.SignChestProtection; import com.sk89q.worldguard.bukkit.commands.CommandUtils; -import com.sk89q.worldguard.bukkit.internal.BukkitBlacklist; import com.sk89q.worldguard.bukkit.internal.TargetMatcherSet; -import com.sk89q.worldguard.chest.ChestProtection; -import com.sk89q.worldguard.chest.SignChestProtection; +import com.sk89q.worldguard.config.YamlWorldConfiguration; import com.sk89q.worldguard.util.report.Unreported; -import org.bukkit.block.Block; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffectType; @@ -43,9 +44,13 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.logging.Level; -import java.util.logging.Logger; /** * Holds the configuration for individual worlds. @@ -53,30 +58,16 @@ * @author sk89q * @author Michael */ -public class WorldConfiguration { +public class BukkitWorldConfiguration extends YamlWorldConfiguration { - private static final Logger log = Logger.getLogger(WorldConfiguration.class.getCanonicalName()); private static final TargetMatcherParser matcherParser = new TargetMatcherParser(); - public static final String CONFIG_HEADER = "#\r\n" + - "# WorldGuard's world configuration file\r\n" + - "#\r\n" + - "# This is a world configuration file. Anything placed into here will only\r\n" + - "# affect this world. If you don't put anything in this file, then the\r\n" + - "# settings will be inherited from the main configuration file.\r\n" + - "#\r\n" + - "# If you see {} below, that means that there are NO entries in this file.\r\n" + - "# Remove the {} and add your own entries.\r\n" + - "#\r\n"; - @Unreported private WorldGuardPlugin plugin; @Unreported private String worldName; @Unreported private YAMLProcessor parentConfig; @Unreported private YAMLProcessor config; - private File blacklistFile; - @Unreported private Blacklist blacklist; @Unreported private ChestProtection chestProtection = new SignChestProtection(); /* Configuration data start */ @@ -134,7 +125,6 @@ public class WorldConfiguration { public boolean teleportOnVoid; public boolean disableExplosionDamage; public boolean disableMobDamage; - public boolean useRegions; public boolean highFreqFlags; public boolean checkLiquidFlow; public int regionWand; @@ -146,7 +136,6 @@ public class WorldConfiguration { public int maxClaimVolume; public boolean claimOnlyInsideExistingRegions; public int maxRegionCountPerPlayer; - public boolean boundedLocationFlags; public boolean antiWolfDumbness; public boolean signChestProtection; public boolean disableSignChestProtectionCheck; @@ -193,10 +182,10 @@ public class WorldConfiguration { * Construct the object. * * @param plugin The WorldGuardPlugin instance - * @param worldName The world name that this WorldConfiguration is for. + * @param worldName The world name that this BukkitWorldConfiguration is for. * @param parentConfig The parent configuration to read defaults from */ - public WorldConfiguration(WorldGuardPlugin plugin, String worldName, YAMLProcessor parentConfig) { + public BukkitWorldConfiguration(WorldGuardPlugin plugin, String worldName, YAMLProcessor parentConfig) { File baseFolder = new File(plugin.getDataFolder(), "worlds/" + worldName); File configFile = new File(baseFolder, "config.yml"); blacklistFile = new File(baseFolder, "blacklist.txt"); @@ -216,61 +205,6 @@ public WorldConfiguration(WorldGuardPlugin plugin, String worldName, YAMLProcess } } - private boolean getBoolean(String node, boolean def) { - boolean val = parentConfig.getBoolean(node, def); - - if (config.getProperty(node) != null) { - return config.getBoolean(node, def); - } else { - return val; - } - } - - private String getString(String node, String def) { - String val = parentConfig.getString(node, def); - - if (config.getProperty(node) != null) { - return config.getString(node, def); - } else { - return val; - } - } - - private int getInt(String node, int def) { - int val = parentConfig.getInt(node, def); - - if (config.getProperty(node) != null) { - return config.getInt(node, def); - } else { - return val; - } - } - - @SuppressWarnings("unused") - private double getDouble(String node, double def) { - double val = parentConfig.getDouble(node, def); - - if (config.getProperty(node) != null) { - return config.getDouble(node, def); - } else { - return val; - } - } - - private List getIntList(String node, List def) { - List res = parentConfig.getIntList(node, def); - - if (res == null || res.size() == 0) { - parentConfig.setProperty(node, new ArrayList()); - } - - if (config.getProperty(node) != null) { - res = config.getIntList(node, def); - } - - return res; - } - private TargetMatcherSet getTargetMatchers(String node) { TargetMatcherSet set = new TargetMatcherSet(); List inputs = parentConfig.getStringList(node, null); @@ -291,47 +225,11 @@ private TargetMatcherSet getTargetMatchers(String node) { return set; } - private List getStringList(String node, List def) { - List res = parentConfig.getStringList(node, def); - - if (res == null || res.size() == 0) { - parentConfig.setProperty(node, new ArrayList()); - } - - if (config.getProperty(node) != null) { - res = config.getStringList(node, def); - } - - return res; - } - - private List getKeys(String node) { - List res = parentConfig.getKeys(node); - - if (res == null || res.size() == 0) { - res = config.getKeys(node); - } - if (res == null) { - res = new ArrayList(); - } - - return res; - } - - private Object getProperty(String node) { - Object res = parentConfig.getProperty(node); - - if (config.getProperty(node) != null) { - res = config.getProperty(node); - } - - return res; - } - /** * Load the configuration. */ - private void loadConfiguration() { + @Override + public void loadConfiguration() { try { config.load(); } catch (IOException e) { @@ -359,7 +257,7 @@ private void loadConfiguration() { disableExpDrops = getBoolean("protection.disable-xp-orb-drops", false); disableObsidianGenerators = getBoolean("protection.disable-obsidian-generators", false); - blockPotions = new HashSet(); + blockPotions = new HashSet<>(); for (String potionName : getStringList("gameplay.block-potions", null)) { PotionEffectType effect = PotionEffectType.getByName(potionName); @@ -382,7 +280,7 @@ private void loadConfiguration() { noPhysicsSand = getBoolean("physics.no-physics-sand", false); ropeLadders = getBoolean("physics.vine-like-rope-ladders", false); allowPortalAnywhere = getBoolean("physics.allow-portal-anywhere", false); - preventWaterDamage = new HashSet(getIntList("physics.disable-water-damage-blocks", null)); + preventWaterDamage = new HashSet<>(getIntList("physics.disable-water-damage-blocks", null)); blockTNTExplosions = getBoolean("ignition.block-tnt", false); blockTNTBlockDamage = getBoolean("ignition.block-tnt-block-damage", false); @@ -390,8 +288,8 @@ private void loadConfiguration() { preventLavaFire = getBoolean("fire.disable-lava-fire-spread", true); disableFireSpread = getBoolean("fire.disable-all-fire-spread", false); - disableFireSpreadBlocks = new HashSet(getIntList("fire.disable-fire-spread-blocks", null)); - allowedLavaSpreadOver = new HashSet(getIntList("fire.lava-spread-blocks", null)); + disableFireSpreadBlocks = new HashSet<>(getIntList("fire.disable-fire-spread-blocks", null)); + allowedLavaSpreadOver = new HashSet<>(getIntList("fire.lava-spread-blocks", null)); blockCreeperExplosions = getBoolean("mobs.block-creeper-explosions", false); blockCreeperBlockDamage = getBoolean("mobs.block-creeper-block-damage", false); @@ -435,7 +333,7 @@ private void loadConfiguration() { disableCreatureCropTrampling = getBoolean("crops.disable-creature-trampling", false); disablePlayerCropTrampling = getBoolean("crops.disable-player-trampling", false); - disallowedLightningBlocks = new HashSet(getIntList("weather.prevent-lightning-strike-blocks", null)); + disallowedLightningBlocks = new HashSet<>(getIntList("weather.prevent-lightning-strike-blocks", null)); preventLightningFire = getBoolean("weather.disable-lightning-strike-fire", false); disableThunder = getBoolean("weather.disable-thunderstorm", false); disableWeather = getBoolean("weather.disable-weather", false); @@ -454,7 +352,7 @@ private void loadConfiguration() { disableMyceliumSpread = getBoolean("dynamics.disable-mycelium-spread", false); disableVineGrowth = getBoolean("dynamics.disable-vine-growth", false); disableSoilDehydration = getBoolean("dynamics.disable-soil-dehydration", false); - allowedSnowFallOver = new HashSet(getIntList("dynamics.snow-fall-blocks", null)); + allowedSnowFallOver = new HashSet<>(getIntList("dynamics.snow-fall-blocks", null)); useRegions = getBoolean("regions.enable", true); regionInvinciblityRemovesMobs = getBoolean("regions.invincibility-removes-mobs", false); @@ -469,13 +367,13 @@ private void loadConfiguration() { boundedLocationFlags = getBoolean("regions.location-flags-only-inside-regions", false); maxRegionCountPerPlayer = getInt("regions.max-region-count-per-player.default", 7); - maxRegionCounts = new HashMap(); + maxRegionCounts = new HashMap<>(); maxRegionCounts.put(null, maxRegionCountPerPlayer); for (String key : getKeys("regions.max-region-count-per-player")) { if (!key.equalsIgnoreCase("default")) { Object val = getProperty("regions.max-region-count-per-player." + key); - if (val != null && val instanceof Number) { + if (val instanceof Number) { maxRegionCounts.put(key, ((Number) val).intValue()); } } @@ -485,7 +383,7 @@ private void loadConfiguration() { // buyOnClaim = getBoolean("iconomy.buy-on-claim", false); // buyOnClaimPrice = getDouble("iconomy.buy-on-claim-price", 1.0); - blockCreatureSpawn = new HashSet(); + blockCreatureSpawn = new HashSet<>(); for (String creatureName : getStringList("mobs.block-creature-spawn", null)) { EntityType creature = EntityType.fromName(creatureName); @@ -523,7 +421,7 @@ private void loadConfiguration() { } // First load the blacklist data from worldguard-blacklist.txt - Blacklist blist = new BukkitBlacklist(useBlacklistAsWhitelist, plugin); + Blacklist blist = new Blacklist(useBlacklistAsWhitelist); blist.load(blacklistFile); // If the blacklist is empty, then set the field to null @@ -598,39 +496,39 @@ public String getWorldName() { return this.worldName; } - public boolean isChestProtected(Block block, Player player) { + public boolean isChestProtected(Location block, LocalPlayer player) { if (!signChestProtection) { return false; } - if (plugin.hasPermission(player, "worldguard.chest-protection.override") - || plugin.hasPermission(player, "worldguard.override.chest-protection")) { + if (player.hasPermission("worldguard.chest-protection.override") + || player.hasPermission("worldguard.override.chest-protection")) { return false; } return chestProtection.isProtected(block, player); } - public boolean isChestProtected(Block block) { + public boolean isChestProtected(Location block) { return signChestProtection && chestProtection.isProtected(block, null); } - public boolean isChestProtectedPlacement(Block block, Player player) { + public boolean isChestProtectedPlacement(Location block, LocalPlayer player) { if (!signChestProtection) { return false; } - if (plugin.hasPermission(player, "worldguard.chest-protection.override") - || plugin.hasPermission(player, "worldguard.override.chest-protection")) { + if (player.hasPermission("worldguard.chest-protection.override") + || player.hasPermission("worldguard.override.chest-protection")) { return false; } return chestProtection.isProtectedPlacement(block, player); } - public boolean isAdjacentChestProtected(Block block, Player player) { + public boolean isAdjacentChestProtected(Location block, LocalPlayer player) { if (!signChestProtection) { return false; } - if (plugin.hasPermission(player, "worldguard.chest-protection.override") - || plugin.hasPermission(player, "worldguard.override.chest-protection")) { + if (player.hasPermission("worldguard.chest-protection.override") + || player.hasPermission("worldguard.override.chest-protection")) { return false; } return chestProtection.isAdjacentChestProtected(block, player); diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitWorldGuardPlatform.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitWorldGuardPlatform.java new file mode 100644 index 00000000..59654839 --- /dev/null +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/BukkitWorldGuardPlatform.java @@ -0,0 +1,107 @@ +package com.sk89q.worldguard.bukkit; + +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.extension.platform.Actor; +import com.sk89q.worldedit.world.World; +import com.sk89q.worldedit.world.gamemode.GameMode; +import com.sk89q.worldedit.world.gamemode.GameModes; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.internal.platform.WorldGuardPlatform; +import com.sk89q.worldguard.protection.flags.FlagContext; +import com.sk89q.worldguard.protection.flags.FlagContextCreateEvent; +import com.sk89q.worldguard.protection.regions.RegionContainer; +import com.sk89q.worldguard.session.BukkitSessionManager; +import com.sk89q.worldguard.session.SessionManager; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.permissions.Permissible; + +import java.util.Collection; +import java.util.Set; + +public class BukkitWorldGuardPlatform implements WorldGuardPlatform { + + private SessionManager sessionManager; + private final BukkitConfigurationManager configuration; + private final BukkitRegionContainer regionContainer; + + public BukkitWorldGuardPlatform() { + sessionManager = new BukkitSessionManager(WorldGuardPlugin.inst()); + configuration = new BukkitConfigurationManager(WorldGuardPlugin.inst()); + regionContainer = new BukkitRegionContainer(WorldGuardPlugin.inst()); + regionContainer.initialize(); + } + + @Override + public void notifyFlagContextCreate(FlagContext.FlagContextBuilder flagContextBuilder) { + Bukkit.getServer().getPluginManager().callEvent(new FlagContextCreateEvent(flagContextBuilder)); + } + + @Override + public BukkitConfigurationManager getGlobalStateManager() { + return configuration; + } + + @Override + public World getWorldByName(String worldName) { + return BukkitAdapter.adapt(Bukkit.getServer().getWorld(worldName)); + } + + @Override + public String replaceColorMacros(String string) { + return BukkitUtil.replaceColorMacros(string); + } + + public String replaceMacros(Actor sender, String message) { + Collection online = Bukkit.getServer().getOnlinePlayers(); + + message = message.replace("%name%", sender.getName()); + message = message.replace("%id%", sender.getUniqueId().toString()); + message = message.replace("%online%", String.valueOf(online.size())); + + if (sender instanceof LocalPlayer) { + LocalPlayer player = (LocalPlayer) sender; + World world = (World) player.getExtent(); + + message = message.replace("%world%", world.getName()); + message = message.replace("%health%", String.valueOf(player.getHealth())); + } + + return message; + } + + @Override + public SessionManager getSessionManager() { + return this.sessionManager; + } + + @Override + public void broadcastNotification(String message) { + Bukkit.broadcast(message, "worldguard.notify"); + Set subs = Bukkit.getPluginManager().getPermissionSubscriptions("worldguard.notify"); + for (Player player : Bukkit.getServer().getOnlinePlayers()) { + if (!(subs.contains(player) && player.hasPermission("worldguard.notify")) && + WorldGuardPlugin.inst().hasPermission(player, "worldguard.notify")) { // Make sure the player wasn't already broadcasted to. + player.sendMessage(message); + } + } + WorldGuard.logger.info(message); + } + + @Override + public void unload() { + configuration.unload(); + regionContainer.unload(); + } + + @Override + public RegionContainer getRegionContainer() { + return this.regionContainer; + } + + @Override + public GameMode getDefaultGameMode() { + return GameModes.get(Bukkit.getServer().getDefaultGameMode().name().toLowerCase()); + } +} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/ConfigurationManager.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/ConfigurationManager.java deleted file mode 100644 index bdadad89..00000000 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/ConfigurationManager.java +++ /dev/null @@ -1,298 +0,0 @@ -/* - * WorldGuard, a suite of tools for Minecraft - * Copyright (C) sk89q - * Copyright (C) WorldGuard team and contributors - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldguard.bukkit; - -import com.google.common.collect.ImmutableMap; -import com.sk89q.util.yaml.YAMLFormat; -import com.sk89q.util.yaml.YAMLProcessor; -import com.sk89q.worldguard.protection.managers.storage.DriverType; -import com.sk89q.worldguard.protection.managers.storage.RegionDriver; -import com.sk89q.worldguard.protection.managers.storage.file.DirectoryYamlDriver; -import com.sk89q.worldguard.protection.managers.storage.sql.SQLDriver; -import com.sk89q.worldguard.session.handler.WaterBreathing; -import com.sk89q.worldguard.util.report.Unreported; -import com.sk89q.worldguard.util.sql.DataSourceConfig; -import org.bukkit.World; -import org.bukkit.entity.Player; - -import java.io.File; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.logging.Logger; - -/** - * Represents the global configuration and also delegates configuration - * for individual worlds. - * - * @author sk89q - * @author Michael - */ -public class ConfigurationManager { - - private static final Logger log = Logger.getLogger(ConfigurationManager.class.getCanonicalName()); - - private static final String CONFIG_HEADER = "#\r\n" + - "# WorldGuard's main configuration file\r\n" + - "#\r\n" + - "# This is the global configuration file. Anything placed into here will\r\n" + - "# be applied to all worlds. However, each world has its own configuration\r\n" + - "# file to allow you to replace most settings in here for that world only.\r\n" + - "#\r\n" + - "# About editing this file:\r\n" + - "# - DO NOT USE TABS. You MUST use spaces or Bukkit will complain. If\r\n" + - "# you use an editor like Notepad++ (recommended for Windows users), you\r\n" + - "# must configure it to \"replace tabs with spaces.\" In Notepad++, this can\r\n" + - "# be changed in Settings > Preferences > Language Menu.\r\n" + - "# - Don't get rid of the indents. They are indented so some entries are\r\n" + - "# in categories (like \"enforce-single-session\" is in the \"protection\"\r\n" + - "# category.\r\n" + - "# - If you want to check the format of this file before putting it\r\n" + - "# into WorldGuard, paste it into http://yaml-online-parser.appspot.com/\r\n" + - "# and see if it gives \"ERROR:\".\r\n" + - "# - Lines starting with # are comments and so they are ignored.\r\n" + - "#\r\n"; - - @Unreported private WorldGuardPlugin plugin; - @Unreported private ConcurrentMap worlds; - @Unreported private YAMLProcessor config; - - private boolean hasCommandBookGodMode = false; - - public boolean useRegionsCreatureSpawnEvent; - public boolean activityHaltToggle = false; - public boolean useGodPermission; - public boolean useGodGroup; - public boolean useAmphibiousGroup; - public boolean usePlayerMove; - public boolean usePlayerTeleports; - public boolean deopOnJoin; - public boolean blockInGameOp; - public boolean migrateRegionsToUuid; - public boolean keepUnresolvedNames; - - @Unreported public Map hostKeys = new HashMap(); - public boolean hostKeysAllowFMLClients; - - /** - * Region Storage Configuration method, and config values - */ - @Unreported public RegionDriver selectedRegionStoreDriver; - @Unreported public Map regionStoreDriverMap; - - /** - * Construct the object. - * - * @param plugin The plugin instance - */ - public ConfigurationManager(WorldGuardPlugin plugin) { - this.plugin = plugin; - this.worlds = new ConcurrentHashMap(); - } - - /** - * Get the folder for storing data files and configuration. - * - * @return the data folder - */ - public File getDataFolder() { - return plugin.getDataFolder(); - } - - /** - * Get the folder for storing data files and configuration for each - * world. - * - * @return the data folder - */ - public File getWorldsDataFolder() { - return new File(getDataFolder(), "worlds"); - } - - /** - * Load the configuration. - */ - @SuppressWarnings("unchecked") - public void load() { - // Create the default configuration file - plugin.createDefaultConfiguration( - new File(plugin.getDataFolder(), "config.yml"), "config.yml"); - - config = new YAMLProcessor(new File(plugin.getDataFolder(), "config.yml"), true, YAMLFormat.EXTENDED); - try { - config.load(); - } catch (IOException e) { - log.severe("Error reading configuration for global config: "); - e.printStackTrace(); - } - - config.removeProperty("suppress-tick-sync-warnings"); - migrateRegionsToUuid = config.getBoolean("regions.uuid-migration.perform-on-next-start", true); - keepUnresolvedNames = config.getBoolean("regions.uuid-migration.keep-names-that-lack-uuids", true); - useRegionsCreatureSpawnEvent = config.getBoolean("regions.use-creature-spawn-event", true); - useGodPermission = config.getBoolean("auto-invincible", config.getBoolean("auto-invincible-permission", false)); - useGodGroup = config.getBoolean("auto-invincible-group", false); - useAmphibiousGroup = config.getBoolean("auto-no-drowning-group", false); - config.removeProperty("auto-invincible-permission"); - usePlayerMove = config.getBoolean("use-player-move-event", true); - usePlayerTeleports = config.getBoolean("use-player-teleports", true); - - deopOnJoin = config.getBoolean("security.deop-everyone-on-join", false); - blockInGameOp = config.getBoolean("security.block-in-game-op-command", false); - - hostKeys = new HashMap(); - Object hostKeysRaw = config.getProperty("host-keys"); - if (hostKeysRaw == null || !(hostKeysRaw instanceof Map)) { - config.setProperty("host-keys", new HashMap()); - } else { - for (Map.Entry entry : ((Map) hostKeysRaw).entrySet()) { - String key = String.valueOf(entry.getKey()); - String value = String.valueOf(entry.getValue()); - hostKeys.put(key.toLowerCase(), value); - } - } - hostKeysAllowFMLClients = config.getBoolean("security.host-keys-allow-forge-clients", false); - - // ==================================================================== - // Region store drivers - // ==================================================================== - - boolean useSqlDatabase = config.getBoolean("regions.sql.use", false); - String sqlDsn = config.getString("regions.sql.dsn", "jdbc:mysql://localhost/worldguard"); - String sqlUsername = config.getString("regions.sql.username", "worldguard"); - String sqlPassword = config.getString("regions.sql.password", "worldguard"); - String sqlTablePrefix = config.getString("regions.sql.table-prefix", ""); - - DataSourceConfig dataSourceConfig = new DataSourceConfig(sqlDsn, sqlUsername, sqlPassword, sqlTablePrefix); - SQLDriver sqlDriver = new SQLDriver(dataSourceConfig); - DirectoryYamlDriver yamlDriver = new DirectoryYamlDriver(getWorldsDataFolder(), "regions.yml"); - - this.regionStoreDriverMap = ImmutableMap.builder() - .put(DriverType.MYSQL, sqlDriver) - .put(DriverType.YAML, yamlDriver) - .build(); - this.selectedRegionStoreDriver = useSqlDatabase ? sqlDriver : yamlDriver; - - // Load configurations for each world - for (World world : plugin.getServer().getWorlds()) { - get(world); - } - - config.setHeader(CONFIG_HEADER); - } - - /** - * Unload the configuration. - */ - public void unload() { - worlds.clear(); - } - - public void disableUuidMigration() { - config.setProperty("regions.uuid-migration.perform-on-next-start", false); - if (!config.save()) { - log.severe("Error saving configuration!"); - } - } - - /** - * Get the configuration for a world. - * - * @param world The world to get the configuration for - * @return {@code world}'s configuration - */ - public WorldConfiguration get(World world) { - String worldName = world.getName(); - WorldConfiguration config = worlds.get(worldName); - WorldConfiguration newConfig = null; - - while (config == null) { - if (newConfig == null) { - newConfig = new WorldConfiguration(plugin, worldName, this.config); - } - worlds.putIfAbsent(world.getName(), newConfig); - config = worlds.get(world.getName()); - } - - return config; - } - - /** - * Check to see if god mode is enabled for a player. - * - * @param player The player to check - * @return Whether the player has godmode through WorldGuard or CommandBook - */ - public boolean hasGodMode(Player player) { - return plugin.getSessionManager().get(player).isInvincible(player); - } - - /** - * Enable amphibious mode for a player. - * - * @param player The player to enable amphibious mode for - */ - public void enableAmphibiousMode(Player player) { - WaterBreathing handler = plugin.getSessionManager().get(player).getHandler(WaterBreathing.class); - if (handler != null) { - handler.setWaterBreathing(true); - } - } - - /** - * Disable amphibious mode for a player. - * - * @param player The player to disable amphibious mode for - */ - public void disableAmphibiousMode(Player player) { - WaterBreathing handler = plugin.getSessionManager().get(player).getHandler(WaterBreathing.class); - if (handler != null) { - handler.setWaterBreathing(false); - } - } - - /** - * Check to see if amphibious mode is enabled for a player. - * - * @param player The player to check - * @return Whether {@code player} has amphibious mode - */ - public boolean hasAmphibiousMode(Player player) { - WaterBreathing handler = plugin.getSessionManager().get(player).getHandler(WaterBreathing.class); - return handler != null && handler.hasWaterBreathing(); - } - - public void updateCommandBookGodMode() { - try { - if (plugin.getServer().getPluginManager().isPluginEnabled("CommandBook")) { - Class.forName("com.sk89q.commandbook.GodComponent"); - hasCommandBookGodMode = true; - return; - } - } catch (ClassNotFoundException ignore) {} - hasCommandBookGodMode = false; - } - - public boolean hasCommandBookGodMode() { - return hasCommandBookGodMode; - } -} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/WGBukkit.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/WGBukkit.java deleted file mode 100644 index 4c91ca99..00000000 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/WGBukkit.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * WorldGuard, a suite of tools for Minecraft - * Copyright (C) sk89q - * Copyright (C) WorldGuard team and contributors - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldguard.bukkit; - -import org.bukkit.World; - -import com.sk89q.worldguard.protection.managers.RegionManager; - -/** - * Helper class to get a reference to WorldGuard and its components. - */ -public class WGBukkit { - - private WGBukkit() { - } - - /** - * Get the WorldGuard plugin. If WorldGuard isn't loaded yet, then this will - * return null. - *

- * If you are depending on WorldGuard in your plugin, you should place - * softdepend: [WorldGuard] or depend: [WorldGuard] - * in your plugin.yml so that this won't return null for you. - * - * @return the WorldGuard plugin or null - */ - public static WorldGuardPlugin getPlugin() { - return WorldGuardPlugin.inst(); - } - - /** - * Set cache to null for reload WorldGuardPlugin - * @deprecated instance is now stored directly in {@link WorldGuardPlugin} - */ - @Deprecated - public static void cleanCache() { - // do nothing - plugin instance is stored in plugin class now - } - - /** - * Returns the region manager for a given world. May return null if WorldGuard - * is not loaded or region protection is not enabled for the given world. - * - * @param world world - * @return a region manager or null - */ - public static RegionManager getRegionManager(World world) { - if (getPlugin() == null) { - return null; - } - return WorldGuardPlugin.inst().getRegionManager(world); - } - -} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java index 8dcaaa40..03a05967 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java @@ -41,46 +41,61 @@ import com.sk89q.squirrelid.resolver.HttpRepositoryService; import com.sk89q.squirrelid.resolver.ProfileService; import com.sk89q.wepif.PermissionsResolverManager; +import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.bukkit.WorldEditPlugin; import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.bukkit.commands.GeneralCommands; import com.sk89q.worldguard.bukkit.commands.ProtectionCommands; import com.sk89q.worldguard.bukkit.commands.ToggleCommands; import com.sk89q.worldguard.bukkit.event.player.ProcessPlayerEvent; -import com.sk89q.worldguard.bukkit.listener.*; +import com.sk89q.worldguard.bukkit.listener.BlacklistListener; +import com.sk89q.worldguard.bukkit.listener.BlockedPotionsListener; +import com.sk89q.worldguard.bukkit.listener.BuildPermissionListener; +import com.sk89q.worldguard.bukkit.listener.ChestProtectionListener; +import com.sk89q.worldguard.bukkit.listener.DebuggingListener; +import com.sk89q.worldguard.bukkit.listener.EventAbstractionListener; +import com.sk89q.worldguard.bukkit.listener.InvincibilityListener; +import com.sk89q.worldguard.bukkit.listener.PlayerModesListener; +import com.sk89q.worldguard.bukkit.listener.PlayerMoveListener; +import com.sk89q.worldguard.bukkit.listener.RegionFlagsListener; +import com.sk89q.worldguard.bukkit.listener.RegionProtectionListener; +import com.sk89q.worldguard.bukkit.listener.WorldGuardBlockListener; +import com.sk89q.worldguard.bukkit.listener.WorldGuardCommandBookListener; +import com.sk89q.worldguard.bukkit.listener.WorldGuardEntityListener; +import com.sk89q.worldguard.bukkit.listener.WorldGuardHangingListener; +import com.sk89q.worldguard.bukkit.listener.WorldGuardPlayerListener; +import com.sk89q.worldguard.bukkit.listener.WorldGuardServerListener; +import com.sk89q.worldguard.bukkit.listener.WorldGuardVehicleListener; +import com.sk89q.worldguard.bukkit.listener.WorldGuardWeatherListener; +import com.sk89q.worldguard.bukkit.listener.WorldGuardWorldListener; +import com.sk89q.worldguard.bukkit.listener.WorldRulesListener; import com.sk89q.worldguard.bukkit.util.Events; import com.sk89q.worldguard.protection.GlobalRegionManager; -import com.sk89q.worldguard.protection.flags.DefaultFlag; import com.sk89q.worldguard.protection.flags.Flag; -import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; -import com.sk89q.worldguard.protection.flags.registry.SimpleFlagRegistry; -import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.managers.storage.StorageException; import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import com.sk89q.worldguard.protection.util.UnresolvedNamesException; -import com.sk89q.worldguard.session.SessionManager; +import com.sk89q.worldguard.session.BukkitSessionManager; import com.sk89q.worldguard.util.concurrent.EvenMoreExecutors; import com.sk89q.worldguard.util.logging.ClassSourceValidator; import com.sk89q.worldguard.util.logging.RecordMessagePrefixer; import com.sk89q.worldguard.util.task.SimpleSupervisor; import com.sk89q.worldguard.util.task.Supervisor; import com.sk89q.worldguard.util.task.Task; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; -import org.bukkit.Location; import org.bukkit.OfflinePlayer; import org.bukkit.World; import org.bukkit.World.Environment; -import org.bukkit.block.Block; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; -import org.bukkit.permissions.Permissible; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; -import javax.annotation.Nullable; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; @@ -91,7 +106,6 @@ import java.util.Collection; import java.util.Iterator; import java.util.List; -import java.util.Set; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; import java.util.concurrent.RejectedExecutionException; @@ -101,20 +115,17 @@ import java.util.logging.Logger; import java.util.zip.ZipEntry; +import javax.annotation.Nullable; + /** * The main class for WorldGuard as a Bukkit plugin. */ public class WorldGuardPlugin extends JavaPlugin { - private static final Logger log = Logger.getLogger(WorldGuardPlugin.class.getCanonicalName()); - private static WorldGuardPlugin inst; + private static BukkitWorldGuardPlatform platform; private final CommandsManager commands; - private final ConfigurationManager configuration = new ConfigurationManager(this); - private final RegionContainer regionContainer = new RegionContainer(this); - private final GlobalRegionManager globalRegionManager = new GlobalRegionManager(this, regionContainer); - private final SimpleFlagRegistry flagRegistry = new SimpleFlagRegistry(); - private SessionManager sessionManager; + private final GlobalRegionManager globalRegionManager = new GlobalRegionManager((BukkitRegionContainer) WorldGuard.getInstance().getPlatform().getRegionContainer()); private final Supervisor supervisor = new SimpleSupervisor(); private ListeningExecutorService executorService; private ProfileService profileService; @@ -133,7 +144,6 @@ public boolean hasPermission(CommandSender player, String perm) { return plugin.hasPermission(player, perm); } }; - flagRegistry.registerAll(DefaultFlag.getDefaultFlags()); } /** @@ -151,13 +161,13 @@ public static WorldGuardPlugin inst() { @SuppressWarnings("deprecation") public void onEnable() { configureLogger(); - flagRegistry.setInitialized(true); getDataFolder().mkdirs(); // Need to create the plugins/WorldGuard folder executorService = MoreExecutors.listeningDecorator(EvenMoreExecutors.newBoundedCachedThreadPool(0, 1, 20)); - sessionManager = new SessionManager(this); + WorldGuard.getInstance().setPlatform(platform = new BukkitWorldGuardPlatform()); // Initialise WorldGuard + BukkitSessionManager sessionManager = (BukkitSessionManager) platform.getSessionManager(); // Set the proper command injector commands.setInjector(new SimpleInjector(this)); @@ -165,7 +175,7 @@ public void onEnable() { // Catch bad things being done by naughty plugins that include // WorldGuard's classes ClassSourceValidator verifier = new ClassSourceValidator(this); - verifier.reportMismatches(ImmutableList.of(WGBukkit.class, ProtectedRegion.class, ProtectedCuboidRegion.class, Flag.class)); + verifier.reportMismatches(ImmutableList.of(ProtectedRegion.class, ProtectedCuboidRegion.class, Flag.class)); // Register command classes final CommandsManagerRegistration reg = new CommandsManagerRegistration(this, commands); @@ -175,7 +185,7 @@ public void onEnable() { getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() { @Override public void run() { - if (!getGlobalStateManager().hasCommandBookGodMode()) { + if (!platform.getGlobalStateManager().hasCommandBookGodMode()) { reg.register(GeneralCommands.class); } } @@ -186,7 +196,7 @@ public void run() { try { profileCache = new SQLiteCache(new File(cacheDir, "profiles.sqlite")); } catch (IOException e) { - log.log(Level.WARNING, "Failed to initialize SQLite profile cache"); + WorldGuard.logger.log(Level.WARNING, "Failed to initialize SQLite profile cache"); profileCache = new HashMapCache(); } @@ -197,12 +207,10 @@ public void run() { profileCache); PermissionsResolverManager.initialize(this); - configuration.load(); - log.info("Loading region data..."); - regionContainer.initialize(); + WorldGuard.logger.info("Loading region data..."); - getServer().getScheduler().scheduleSyncRepeatingTask(this, sessionManager, SessionManager.RUN_DELAY, SessionManager.RUN_DELAY); + getServer().getScheduler().scheduleSyncRepeatingTask(this, sessionManager, BukkitSessionManager.RUN_DELAY, BukkitSessionManager.RUN_DELAY); // Register events getServer().getPluginManager().registerEvents(sessionManager, this); @@ -227,10 +235,10 @@ public void run() { (new BuildPermissionListener(this)).registerEvents(); (new InvincibilityListener(this)).registerEvents(); if ("true".equalsIgnoreCase(System.getProperty("worldguard.debug.listener"))) { - (new DebuggingListener(this, log)).registerEvents(); + (new DebuggingListener(this, WorldGuard.logger)).registerEvents(); } - configuration.updateCommandBookGodMode(); + platform.getGlobalStateManager().updateCommandBookGodMode(); if (getServer().getPluginManager().isPluginEnabled("CommandBook")) { getServer().getPluginManager().registerEvents(new WorldGuardCommandBookListener(this), this); @@ -243,7 +251,7 @@ public void run() { } worldListener.registerEvents(); - for (Player player : BukkitUtil.getOnlinePlayers()) { + for (Player player : Bukkit.getServer().getOnlinePlayers()) { ProcessPlayerEvent event = new ProcessPlayerEvent(player); Events.fire(event); } @@ -254,7 +262,7 @@ public void onDisable() { executorService.shutdown(); try { - log.log(Level.INFO, "Shutting down executor and waiting for any pending tasks..."); + WorldGuard.logger.log(Level.INFO, "Shutting down executor and waiting for any pending tasks..."); List> tasks = supervisor.getTasks(); if (!tasks.isEmpty()) { @@ -263,7 +271,7 @@ public void onDisable() { builder.append("\n"); builder.append(task.getName()); } - log.log(Level.INFO, builder.toString()); + WorldGuard.logger.log(Level.INFO, builder.toString()); } Futures.successfulAsList(tasks).get(); @@ -271,11 +279,10 @@ public void onDisable() { } catch (InterruptedException e) { Thread.currentThread().interrupt(); } catch (ExecutionException e) { - log.log(Level.WARNING, "Some tasks failed while waiting for remaining tasks to finish", e); + WorldGuard.logger.log(Level.WARNING, "Some tasks failed while waiting for remaining tasks to finish", e); } - regionContainer.unload(); - configuration.unload(); + platform.unload(); this.getServer().getScheduler().cancelTasks(this); } @@ -309,7 +316,7 @@ public String convertThrowable(@Nullable Throwable throwable) { if (throwable instanceof NumberFormatException) { return "Number expected, string received instead."; } else if (throwable instanceof StorageException) { - log.log(Level.WARNING, "Error loading/saving regions", throwable); + WorldGuard.logger.log(Level.WARNING, "Error loading/saving regions", throwable); return "Region data could not be loaded/saved: " + throwable.getMessage(); } else if (throwable instanceof RejectedExecutionException) { return "There are currently too many tasks queued to add yours. Use /wg running to list queued and running tasks."; @@ -322,7 +329,7 @@ public String convertThrowable(@Nullable Throwable throwable) { } else if (throwable instanceof CommandException) { return throwable.getMessage(); } else { - log.log(Level.WARNING, "WorldGuard encountered an unexpected error", throwable); + WorldGuard.logger.log(Level.WARNING, "WorldGuard encountered an unexpected error", throwable); return "WorldGuard: An unexpected error occurred! Please see the server console."; } } @@ -331,51 +338,13 @@ public String convertThrowable(@Nullable Throwable throwable) { * Get the GlobalRegionManager. * * @return the plugin's global region manager - * @deprecated use {@link #getRegionContainer()} + * @deprecated use #getRegionContainer() */ @Deprecated public GlobalRegionManager getGlobalRegionManager() { return globalRegionManager; } - /** - * Get the object that manages region data. - * - * @return the region container - */ - public RegionContainer getRegionContainer() { - return regionContainer; - } - - /** - * Get the WorldGuard Configuration. - * - * @return ConfigurationManager - * @deprecated Use {@link #getGlobalStateManager()} instead - */ - @Deprecated - public ConfigurationManager getGlobalConfiguration() { - return getGlobalStateManager(); - } - - /** - * Gets the flag state manager. - * - * @return The flag state manager - */ - public SessionManager getSessionManager() { - return sessionManager; - } - - /** - * Get the global ConfigurationManager. - * USe this to access global configuration values and per-world configuration values. - * @return The global ConfigurationManager - */ - public ConfigurationManager getGlobalStateManager() { - return configuration; - } - /** * Get the supervisor. * @@ -413,15 +382,6 @@ public ProfileCache getProfileCache() { return profileCache; } - /** - * Get the flag registry. - * - * @return the flag registry - */ - public FlagRegistry getFlagRegistry() { - return flagRegistry; - } - /** * Check whether a player is in a group. * This calls the corresponding method in PermissionsResolverManager @@ -495,8 +455,7 @@ public String toName(CommandSender sender) { public boolean hasPermission(CommandSender sender, String perm) { if (sender.isOp()) { if (sender instanceof Player) { - if (this.getGlobalStateManager().get(((Player) sender). - getWorld()).opPermissions) { + if (platform.getGlobalStateManager().get(BukkitAdapter.adapt(((Player) sender).getWorld())).opPermissions) { return true; } } else { @@ -555,7 +514,7 @@ public Player checkPlayer(CommandSender sender) * @return A {@link List} of players who match {@code filter} */ public List matchPlayerNames(String filter) { - Collection players = BukkitUtil.getOnlinePlayers(); + Collection players = Bukkit.getServer().getOnlinePlayers(); filter = filter.toLowerCase(); @@ -565,18 +524,18 @@ public List matchPlayerNames(String filter) { for (Player player : players) { if (player.getName().equalsIgnoreCase(filter)) { - List list = new ArrayList(); + List list = new ArrayList<>(); list.add(player); return list; } } - return new ArrayList(); + return new ArrayList<>(); // Allow partial name matching } else if (filter.charAt(0) == '*' && filter.length() >= 2) { filter = filter.substring(1); - List list = new ArrayList(); + List list = new ArrayList<>(); for (Player player : players) { if (player.getName().toLowerCase().contains(filter)) { @@ -588,7 +547,7 @@ public List matchPlayerNames(String filter) { // Start with name matching } else { - List list = new ArrayList(); + List list = new ArrayList<>(); for (Player player : players) { if (player.getName().toLowerCase().startsWith(filter)) { @@ -636,12 +595,12 @@ protected Iterable checkPlayerMatch(List pla public Iterable matchPlayers(CommandSender source, String filter) throws CommandException { - if (BukkitUtil.getOnlinePlayers().isEmpty()) { + if (Bukkit.getServer().getOnlinePlayers().isEmpty()) { throw new CommandException("No players matched query."); } if (filter.equals("*")) { - return checkPlayerMatch(Lists.newArrayList(BukkitUtil.getOnlinePlayers())); + return checkPlayerMatch(Lists.newArrayList(Bukkit.getServer().getOnlinePlayers())); } // Handle special hash tag groups @@ -649,11 +608,11 @@ public Iterable matchPlayers(CommandSender source, String filt // Handle #world, which matches player of the same world as the // calling source if (filter.equalsIgnoreCase("#world")) { - List players = new ArrayList(); + List players = new ArrayList<>(); Player sourcePlayer = checkPlayer(source); World sourceWorld = sourcePlayer.getWorld(); - for (Player player : BukkitUtil.getOnlinePlayers()) { + for (Player player : Bukkit.getServer().getOnlinePlayers()) { if (player.getWorld().equals(sourceWorld)) { players.add(player); } @@ -663,13 +622,13 @@ public Iterable matchPlayers(CommandSender source, String filt // Handle #near, which is for nearby players. } else if (filter.equalsIgnoreCase("#near")) { - List players = new ArrayList(); + List players = new ArrayList<>(); Player sourcePlayer = checkPlayer(source); World sourceWorld = sourcePlayer.getWorld(); org.bukkit.util.Vector sourceVector = sourcePlayer.getLocation().toVector(); - for (Player player : BukkitUtil.getOnlinePlayers()) { + for (Player player : Bukkit.getServer().getOnlinePlayers()) { if (player.getWorld().equals(sourceWorld) && player.getLocation().toVector().distanceSquared( sourceVector) < 900) { @@ -915,7 +874,7 @@ public void createDefaultConfiguration(File actual, if (copy == null) throw new FileNotFoundException(); input = file.getInputStream(copy); } catch (IOException e) { - log.severe("Unable to read default configuration: " + defaultName); + WorldGuard.logger.severe("Unable to read default configuration: " + defaultName); } if (input != null) { @@ -929,15 +888,13 @@ public void createDefaultConfiguration(File actual, output.write(buf, 0, length); } - log.info("Default configuration file written: " + WorldGuard.logger.info("Default configuration file written: " + actual.getAbsolutePath()); } catch (IOException e) { e.printStackTrace(); } finally { try { - if (input != null) { - input.close(); - } + input.close(); } catch (IOException ignore) { } @@ -951,100 +908,8 @@ public void createDefaultConfiguration(File actual, } } - /** - * Notifies all with the worldguard.notify permission. - * This will check both superperms and WEPIF, - * but makes sure WEPIF checks don't result in duplicate notifications - * - * @param msg The notification to broadcast - */ - public void broadcastNotification(String msg) { - getServer().broadcast(msg, "worldguard.notify"); - Set subs = getServer().getPluginManager().getPermissionSubscriptions("worldguard.notify"); - for (Player player : BukkitUtil.getOnlinePlayers()) { - if (!(subs.contains(player) && player.hasPermission("worldguard.notify")) && - hasPermission(player, "worldguard.notify")) { // Make sure the player wasn't already broadcasted to. - player.sendMessage(msg); - } - } - log.info(msg); - } - - /** - * Checks to see if a player can build at a location. This will return - * true if region protection is disabled. - * - * @param player The player to check. - * @param loc The location to check at. - * @see GlobalRegionManager#canBuild(org.bukkit.entity.Player, org.bukkit.Location) - * @return whether {@code player} can build at {@code loc} - */ - public boolean canBuild(Player player, Location loc) { - return getGlobalRegionManager().canBuild(player, loc); - } - - /** - * Checks to see if a player can build at a location. This will return - * true if region protection is disabled. - * - * @param player The player to check - * @param block The block to check at. - * @see GlobalRegionManager#canBuild(org.bukkit.entity.Player, org.bukkit.block.Block) - * @return whether {@code player} can build at {@code block}'s location - */ - public boolean canBuild(Player player, Block block) { - return getGlobalRegionManager().canBuild(player, block); - } - - /** - * Gets the region manager for a world. - * - * @param world world to get the region manager for - * @return the region manager or null if regions are not enabled - */ - public RegionManager getRegionManager(World world) { - if (!getGlobalStateManager().get(world).useRegions) { - return null; - } - - return getGlobalRegionManager().get(world); - } - public PlayerMoveListener getPlayerMoveListener() { return playerMoveListener; } - /** - * Replace macros in the text. - * - * The macros replaced are as follows: - * %name%: The name of {@code sender}. See {@link #toName(org.bukkit.command.CommandSender)} - * %id%: The unique name of the sender. See {@link #toUniqueName(org.bukkit.command.CommandSender)} - * %online%: The number of players currently online on the server - * If {@code sender} is a Player: - * %world%: The name of the world {@code sender} is located in - * %health%: The health of {@code sender}. See {@link org.bukkit.entity.Player#getHealth()} - * - * @param sender The sender to check - * @param message The message to replace macros in - * @return The message with macros replaced - */ - public String replaceMacros(CommandSender sender, String message) { - Collection online = BukkitUtil.getOnlinePlayers(); - - message = message.replace("%name%", toName(sender)); - message = message.replace("%id%", toUniqueName(sender)); - message = message.replace("%online%", String.valueOf(online.size())); - - if (sender instanceof Player) { - Player player = (Player) sender; - World world = player.getWorld(); - - message = message.replace("%world%", world.getName()); - message = message.replace("%health%", String.valueOf(player.getHealth())); - } - - return message; - } - } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/chest/ChestProtection.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/chest/ChestProtection.java similarity index 67% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/chest/ChestProtection.java rename to worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/chest/ChestProtection.java index 58f58cea..02ae65c7 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/chest/ChestProtection.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/chest/ChestProtection.java @@ -17,11 +17,11 @@ * along with this program. If not, see . */ -package com.sk89q.worldguard.chest; +package com.sk89q.worldguard.bukkit.chest; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.world.block.BlockType; +import com.sk89q.worldguard.LocalPlayer; /** * Interface for chest protection. @@ -35,7 +35,7 @@ public interface ChestProtection { * @param player The player to check * @return Whether the block is protected for player */ - public boolean isProtected(Block block, Player player); + boolean isProtected(Location block, LocalPlayer player); /** * Returns whether a location where a chest block is trying to be created @@ -45,7 +45,7 @@ public interface ChestProtection { * @param player The player to check * @return Whether {@code player} can place a block at the specified block */ - public boolean isProtectedPlacement(Block block, Player player); + boolean isProtectedPlacement(Location block, LocalPlayer player); /** * Returns whether an adjacent chest is protected. @@ -54,24 +54,14 @@ public interface ChestProtection { * @param player The player to check * @return Whether {@code searchBlock} is protected from access by {@code player} */ - public boolean isAdjacentChestProtected(Block searchBlock, Player player); + boolean isAdjacentChestProtected(Location searchBlock, LocalPlayer player); /** - * Returns whether a material is a chest. + * Returns whether a blockType is a chest. * - * @param material The material to check - * @deprecated see {@link #isChest(int)} - * @return {@link #isChest(int)} + * @param blockType The blockType to check + * @return Whether a type is a 'chest' (protectable block) */ - @Deprecated - public boolean isChest(Material material); - - /** - * Returns whether a material is a chest. - * - * @param type The type to check - * @return Whether type is a 'chest' (block that can be protected) - */ - public boolean isChest(int type); + boolean isChest(BlockType blockType); } \ No newline at end of file diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/chest/SignChestProtection.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/chest/SignChestProtection.java similarity index 65% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/chest/SignChestProtection.java rename to worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/chest/SignChestProtection.java index 1dcb5899..410c719f 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/chest/SignChestProtection.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/chest/SignChestProtection.java @@ -17,14 +17,15 @@ * along with this program. If not, see . */ -package com.sk89q.worldguard.chest; +package com.sk89q.worldguard.bukkit.chest; -import com.sk89q.worldedit.blocks.BlockID; -import org.bukkit.Material; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.world.block.BlockType; +import com.sk89q.worldedit.world.block.BlockTypes; +import com.sk89q.worldguard.LocalPlayer; import org.bukkit.block.Block; import org.bukkit.block.BlockState; import org.bukkit.block.Sign; -import org.bukkit.entity.Player; /** * Sign-based chest protection. @@ -33,25 +34,24 @@ */ public class SignChestProtection implements ChestProtection { - public boolean isProtected(Block block, Player player) { - if (isChest(block.getTypeId())) { - Block below = block.getRelative(0, -1, 0); - return isProtectedSignAround(below, player); - } else if (block.getTypeId() == BlockID.SIGN_POST) { - return isProtectedSignAndChestBinary(block, player); + public boolean isProtected(Location location, LocalPlayer player) { + com.sk89q.worldedit.world.block.BlockState blockState = location.getExtent().getBlock(location.toVector()); + if (isChest(blockState.getBlockType())) { + return isProtectedSignAround(location.setY(location.getY() - 1), player); + } else if (blockState.getBlockType() == BlockTypes.SIGN) { + return isProtectedSignAndChestBinary(location, player); } else { - Block above = block.getRelative(0, 1, 0); - Boolean res = isProtectedSign(above, player); + Boolean res = isProtectedSign(location.setY(location.getY() + 1), player); if (res != null) return res; return false; } } - public boolean isProtectedPlacement(Block block, Player player) { + public boolean isProtectedPlacement(Location block, LocalPlayer player) { return isProtectedSignAround(block, player); } - private boolean isProtectedSignAround(Block searchBlock, Player player) { + private boolean isProtectedSignAround(Location searchBlock, LocalPlayer player) { Block side; Boolean res; @@ -78,47 +78,42 @@ private boolean isProtectedSignAround(Block searchBlock, Player player) { return false; } - private Boolean isProtectedSign(Sign sign, Player player) { + private Boolean isProtectedSign(Sign sign, LocalPlayer player) { if (sign.getLine(0).equalsIgnoreCase("[Lock]")) { if (player == null) { // No player, no access return true; } String name = player.getName(); - if (name.equalsIgnoreCase(sign.getLine(1).trim()) - || name.equalsIgnoreCase(sign.getLine(2).trim()) - || name.equalsIgnoreCase(sign.getLine(3).trim())) { - return false; - } - - // No access! - return true; + return !name.equalsIgnoreCase(sign.getLine(1).trim()) + && !name.equalsIgnoreCase(sign.getLine(2).trim()) + && !name.equalsIgnoreCase(sign.getLine(3).trim()); } return null; } - private Boolean isProtectedSign(Block block, Player player) { + private Boolean isProtectedSign(Location block, LocalPlayer player) { BlockState state = block.getState(); - if (state == null || !(state instanceof Sign)) { + if (!(state instanceof Sign)) { return null; } return isProtectedSign((Sign) state, player); } - private Boolean isProtectedSignAndChest(Block block, Player player) { + private Boolean isProtectedSignAndChest(Location block, LocalPlayer player) { if (!isChest(block.getRelative(0, 1, 0).getTypeId())) { return null; } return isProtectedSign(block, player); } - private boolean isProtectedSignAndChestBinary(Block block, Player player) { + private boolean isProtectedSignAndChestBinary(Location block, LocalPlayer player) { Boolean res = isProtectedSignAndChest(block, player); return !(res == null || !res); } - public boolean isAdjacentChestProtected(Block searchBlock, Player player) { + public boolean isAdjacentChestProtected(Location searchBlock, LocalPlayer player) { Block side; Boolean res; @@ -145,15 +140,11 @@ public boolean isAdjacentChestProtected(Block searchBlock, Player player) { return false; } - @Deprecated - public boolean isChest(Material material) { - return isChest(material.getId()); - } - - public boolean isChest(int type) { - return type == BlockID.CHEST - || type == BlockID.DISPENSER - || type == BlockID.FURNACE - || type == BlockID.BURNING_FURNACE; + public boolean isChest(BlockType type) { + return type == BlockTypes.CHEST + || type == BlockTypes.DISPENSER + || type == BlockTypes.FURNACE + || type == BlockTypes.TRAPPED_CHEST + || type == BlockTypes.DROPPER; } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/CommandUtils.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/CommandUtils.java index b8cd7f78..997250dc 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/CommandUtils.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/CommandUtils.java @@ -31,11 +31,12 @@ import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; -import javax.annotation.Nullable; import java.net.URL; import java.util.logging.Level; import java.util.logging.Logger; +import javax.annotation.Nullable; + /** * Command-related utility methods. */ @@ -153,13 +154,10 @@ public static String getOwnerName(@Nullable Object owner) { * @param sender the sender * @return a function */ - public static Function messageFunction(final CommandSender sender) { - return new Function() { - @Override - public Object apply(@Nullable String s) { - sender.sendMessage(s); - return null; - } + public static java.util.function.Function messageFunction(final CommandSender sender) { + return (Function) s -> { + sender.sendMessage(s); + return null; }; } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/GeneralCommands.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/GeneralCommands.java index 238aca87..c0dcd3ad 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/GeneralCommands.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/GeneralCommands.java @@ -23,8 +23,10 @@ import com.sk89q.minecraft.util.commands.CommandContext; import com.sk89q.minecraft.util.commands.CommandException; import com.sk89q.minecraft.util.commands.CommandPermissions; -import com.sk89q.worldedit.blocks.ItemType; -import com.sk89q.worldguard.bukkit.ConfigurationManager; +import com.sk89q.worldedit.world.item.ItemType; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.config.ConfigurationManager; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.session.Session; import com.sk89q.worldguard.session.handler.GodMode; @@ -44,7 +46,7 @@ public GeneralCommands(WorldGuardPlugin plugin) { @Command(aliases = {"god"}, usage = "[player]", desc = "Enable godmode on a player", flags = "s", max = 1) public void god(CommandContext args, CommandSender sender) throws CommandException { - ConfigurationManager config = plugin.getGlobalStateManager(); + ConfigurationManager config = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); Iterable targets = null; boolean included = false; @@ -93,7 +95,7 @@ public void god(CommandContext args, CommandSender sender) throws CommandExcepti @Command(aliases = {"ungod"}, usage = "[player]", desc = "Disable godmode on a player", flags = "s", max = 1) public void ungod(CommandContext args, CommandSender sender) throws CommandException { - ConfigurationManager config = plugin.getGlobalStateManager(); + ConfigurationManager config = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); Iterable targets = null; boolean included = false; @@ -112,9 +114,10 @@ public void ungod(CommandContext args, CommandSender sender) throws CommandExcep } for (Player player : targets) { - Session session = plugin.getSessionManager().get(player); + LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player); + Session session = WorldGuard.getInstance().getPlatform().getSessionManager().get(localPlayer); - if (GodMode.set(player, session, false)) { + if (GodMode.set(localPlayer, session, false)) { // Tell the user if (player.equals(sender)) { player.sendMessage(ChatColor.YELLOW + "God mode disabled!"); @@ -248,7 +251,7 @@ public void stack(CommandContext args, CommandSender sender) throws CommandExcep Player player = plugin.checkPlayer(sender); boolean ignoreMax = plugin.hasPermission(player, "worldguard.stack.illegitimate"); boolean ignoreDamaged = plugin.hasPermission(player, "worldguard.stack.damaged"); - + ItemStack[] items = player.getInventory().getContents(); int len = items.length; @@ -280,7 +283,7 @@ public void stack(CommandContext args, CommandSender sender) throws CommandExcep // Same type? // Blocks store their color in the damage value - if (item2.getTypeId() == item.getTypeId() && + if (item2.getType() == item.getType() && ((!ItemType.usesDamageValue(item.getTypeId()) && ignoreDamaged) || item.getDurability() == item2.getDurability()) && ((item.getItemMeta() == null && item2.getItemMeta() == null) diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/ToggleCommands.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/ToggleCommands.java index 785442fb..43528c92 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/ToggleCommands.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/ToggleCommands.java @@ -19,6 +19,7 @@ package com.sk89q.worldguard.bukkit.commands; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; import org.bukkit.ChatColor; import org.bukkit.World; import org.bukkit.command.CommandSender; @@ -30,8 +31,7 @@ import com.sk89q.minecraft.util.commands.CommandException; import com.sk89q.minecraft.util.commands.CommandPermissions; import com.sk89q.worldguard.bukkit.BukkitUtil; -import com.sk89q.worldguard.bukkit.ConfigurationManager; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.config.ConfigurationManager; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; public class ToggleCommands { @@ -54,7 +54,7 @@ public void stopFire(CommandContext args, CommandSender sender) throws CommandEx world = plugin.matchWorld(sender, args.getString(0)); } - WorldConfiguration wcfg = plugin.getGlobalStateManager().get(world); + BukkitWorldConfiguration wcfg = plugin.getGlobalStateManager().get(world); if (!wcfg.fireSpreadDisableToggle) { plugin.getServer().broadcastMessage( @@ -83,7 +83,7 @@ public void allowFire(CommandContext args, CommandSender sender) throws CommandE world = plugin.matchWorld(sender, args.getString(0)); } - WorldConfiguration wcfg = plugin.getGlobalStateManager().get(world); + BukkitWorldConfiguration wcfg = plugin.getGlobalStateManager().get(world); if (wcfg.fireSpreadDisableToggle) { plugin.getServer().broadcastMessage(ChatColor.YELLOW diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/WorldGuardCommands.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/WorldGuardCommands.java index 4cabeaac..d7144b32 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/WorldGuardCommands.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/WorldGuardCommands.java @@ -26,7 +26,7 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.MoreExecutors; import com.sk89q.minecraft.util.commands.*; -import com.sk89q.worldguard.bukkit.ConfigurationManager; +import com.sk89q.worldguard.config.ConfigurationManager; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.bukkit.util.logging.LoggerToChatHandler; import com.sk89q.worldguard.bukkit.util.report.*; diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/MemberCommands.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/MemberCommands.java index 117e056f..46fac67e 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/MemberCommands.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/MemberCommands.java @@ -31,7 +31,7 @@ import com.sk89q.worldguard.domains.DefaultDomain; import com.sk89q.worldguard.protection.util.DomainInputResolver; import com.sk89q.worldguard.protection.util.DomainInputResolver.UserLocatorPolicy; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import org.bukkit.World; @@ -107,7 +107,7 @@ public void addOwner(CommandContext args, CommandSender sender) throws CommandEx id = region.getId(); - Boolean flag = region.getFlag(DefaultFlag.BUYABLE); + Boolean flag = region.getFlag(Flags.BUYABLE); DefaultDomain owners = region.getOwners(); if (localPlayer != null) { diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/RegionCommands.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/RegionCommands.java index 311be382..925554c1 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/RegionCommands.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/RegionCommands.java @@ -19,18 +19,20 @@ package com.sk89q.worldguard.bukkit.commands.region; +import static com.google.common.base.Preconditions.checkNotNull; + import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.sk89q.minecraft.util.commands.Command; import com.sk89q.minecraft.util.commands.CommandContext; import com.sk89q.minecraft.util.commands.CommandException; import com.sk89q.minecraft.util.commands.CommandPermissionsException; -import com.sk89q.worldedit.Location; -import com.sk89q.worldedit.bukkit.BukkitUtil; +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.util.Location; import com.sk89q.worldguard.LocalPlayer; -import com.sk89q.worldguard.bukkit.ConfigurationManager; -import com.sk89q.worldguard.bukkit.RegionContainer; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.config.ConfigurationManager; +import com.sk89q.worldguard.bukkit.BukkitRegionContainer; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.bukkit.commands.AsyncCommandHelper; import com.sk89q.worldguard.bukkit.commands.CommandUtils; @@ -41,10 +43,10 @@ import com.sk89q.worldguard.bukkit.commands.task.RegionManagerReloader; import com.sk89q.worldguard.bukkit.commands.task.RegionManagerSaver; import com.sk89q.worldguard.bukkit.commands.task.RegionRemover; -import com.sk89q.worldguard.bukkit.permission.RegionPermissionModel; +import com.sk89q.worldguard.internal.permission.RegionPermissionModel; import com.sk89q.worldguard.bukkit.util.logging.LoggerToChatHandler; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.Flag; import com.sk89q.worldguard.protection.flags.FlagContext; import com.sk89q.worldguard.protection.flags.InvalidFlagFormat; @@ -76,8 +78,6 @@ import java.util.logging.Level; import java.util.logging.Logger; -import static com.google.common.base.Preconditions.checkNotNull; - /** * Implements the /region commands for WorldGuard. */ @@ -227,7 +227,7 @@ public void claim(CommandContext args, CommandSender sender) throws CommandExcep checkRegionDoesNotExist(manager, id, false); ProtectedRegion region = checkRegionFromSelection(player, id); - WorldConfiguration wcfg = plugin.getGlobalStateManager().get(player.getWorld()); + BukkitWorldConfiguration wcfg = plugin.getGlobalStateManager().get(player.getWorld()); // Check whether the player has created too many regions if (!permModel.mayClaimRegionsUnbounded()) { @@ -382,7 +382,7 @@ public void info(CommandContext args, CommandSender sender) throws CommandExcept RegionPrintoutBuilder printout = new RegionPrintoutBuilder(existing, args.hasFlag('u') ? null : plugin.getProfileCache()); ListenableFuture future = Futures.transform( plugin.getExecutorService().submit(printout), - CommandUtils.messageFunction(sender)); + CommandUtils.messageFunction(sender)::apply); // If it takes too long... FutureProgressListener.addProgressListener( @@ -494,7 +494,7 @@ public void flag(CommandContext args, CommandSender sender) throws CommandExcept throw new CommandPermissionsException(); } - Flag foundFlag = DefaultFlag.fuzzyMatchFlag(flagRegistry, flagName); + Flag foundFlag = Flags.fuzzyMatchFlag(flagRegistry, flagName); // We didn't find the flag, so let's print a list of flags that the user // can use, and do nothing afterwards @@ -945,7 +945,7 @@ public void migrateDB(CommandContext args, CommandSender sender) throws CommandE } try { - RegionContainer container = plugin.getRegionContainer(); + BukkitRegionContainer container = plugin.getRegionContainer(); sender.sendMessage(ChatColor.YELLOW + "Now performing migration... this may take a while."); container.migrate(migration); sender.sendMessage(ChatColor.YELLOW + @@ -989,7 +989,7 @@ public void migrateUuid(CommandContext args, CommandSender sender) throws Comman try { ConfigurationManager config = plugin.getGlobalStateManager(); - RegionContainer container = plugin.getRegionContainer(); + BukkitRegionContainer container = plugin.getRegionContainer(); RegionDriver driver = container.getDriver(); UUIDMigration migration = new UUIDMigration(driver, plugin.getProfileService(), plugin.getFlagRegistry()); migration.setKeepUnresolvedNames(config.keepUnresolvedNames); @@ -1033,14 +1033,14 @@ public void teleport(CommandContext args, CommandSender sender) throws CommandEx // -s for spawn location if (args.hasFlag('s')) { - teleportLocation = existing.getFlag(DefaultFlag.SPAWN_LOC); + teleportLocation = existing.getFlag(Flags.SPAWN_LOC); if (teleportLocation == null) { throw new CommandException( "The region has no spawn point associated."); } } else { - teleportLocation = existing.getFlag(DefaultFlag.TELE_LOC); + teleportLocation = existing.getFlag(Flags.TELE_LOC); if (teleportLocation == null) { throw new CommandException( @@ -1048,7 +1048,7 @@ public void teleport(CommandContext args, CommandSender sender) throws CommandEx } } - player.teleport(BukkitUtil.toLocation(teleportLocation)); + player.teleport(BukkitAdapter.adapt(teleportLocation)); sender.sendMessage("Teleported you to the region '" + existing.getId() + "'."); } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/RegionCommandsBase.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/RegionCommandsBase.java index b9d18b92..7e2b63f3 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/RegionCommandsBase.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/RegionCommandsBase.java @@ -30,9 +30,9 @@ import com.sk89q.worldedit.bukkit.selections.CuboidSelection; import com.sk89q.worldedit.bukkit.selections.Polygonal2DSelection; import com.sk89q.worldedit.bukkit.selections.Selection; -import com.sk89q.worldguard.bukkit.RegionContainer; +import com.sk89q.worldguard.bukkit.BukkitRegionContainer; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; -import com.sk89q.worldguard.bukkit.permission.RegionPermissionModel; +import com.sk89q.worldguard.internal.permission.RegionPermissionModel; import com.sk89q.worldguard.protection.ApplicableRegionSet; import com.sk89q.worldguard.protection.flags.Flag; import com.sk89q.worldguard.protection.flags.FlagContext; @@ -48,6 +48,7 @@ import org.bukkit.entity.Player; import java.util.Set; +import java.util.stream.Collectors; class RegionCommandsBase { @@ -61,7 +62,7 @@ protected RegionCommandsBase() { * @return the permission model */ protected static RegionPermissionModel getPermissionModel(CommandSender sender) { - return new RegionPermissionModel(WorldGuardPlugin.inst(), sender); + return new RegionPermissionModel(sender); } /** @@ -294,16 +295,11 @@ protected static ProtectedRegion checkRegionFromSelection(Player player, String * @param sender the sender to send the message to */ protected static void warnAboutSaveFailures(CommandSender sender) { - RegionContainer container = WorldGuardPlugin.inst().getRegionContainer(); + BukkitRegionContainer container = WorldGuardPlugin.inst().getRegionContainer(); Set failures = container.getSaveFailures(); if (failures.size() > 0) { - String failingList = Joiner.on(", ").join(Iterables.transform(failures, new Function() { - @Override - public String apply(RegionManager regionManager) { - return "'" + regionManager.getName() + "'"; - } - })); + String failingList = Joiner.on(", ").join(failures.stream().map(regionManager -> "'" + regionManager.getName() + "'").collect(Collectors.toList())); sender.sendMessage(ChatColor.GOLD + "(Warning: The background saving of region data is failing for these worlds: " + failingList + ". " + diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/RegionPrintoutBuilder.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/RegionPrintoutBuilder.java index 3549884e..742eb870 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/RegionPrintoutBuilder.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/commands/region/RegionPrintoutBuilder.java @@ -23,10 +23,8 @@ import com.sk89q.worldedit.BlockVector; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.domains.DefaultDomain; -import com.sk89q.worldguard.protection.flags.DefaultFlag; import com.sk89q.worldguard.protection.flags.Flag; import com.sk89q.worldguard.protection.flags.RegionGroupFlag; -import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; @@ -92,7 +90,7 @@ public void appendBasics() { */ public void appendFlags() { builder.append(ChatColor.BLUE); - builder.append("Flags: "); + builder.append("FlagUtil: "); appendFlagsList(true); @@ -100,7 +98,7 @@ public void appendFlags() { } /** - * Append just the list of flags (without "Flags:"), including colors. + * Append just the list of flags (without "FlagUtil:"), including colors. * * @param useColors true to use colors */ diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/internal/TargetMatcherSet.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/internal/TargetMatcherSet.java index c5cfc3f2..c59a32af 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/internal/TargetMatcherSet.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/internal/TargetMatcherSet.java @@ -21,7 +21,7 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -import com.sk89q.worldguard.blacklist.target.MaterialTarget; +import com.sk89q.worldguard.blacklist.target.ItemTarget; import com.sk89q.worldguard.blacklist.target.Target; import com.sk89q.worldguard.blacklist.target.TargetMatcher; import org.bukkit.Material; @@ -35,7 +35,7 @@ public class TargetMatcherSet { - private final Multimap entries = HashMultimap.create(); + private final Multimap entries = HashMultimap.create(); public boolean add(TargetMatcher matcher) { checkNotNull(matcher); @@ -55,19 +55,19 @@ public boolean test(Target target) { } public boolean test(Material material) { - return test(new MaterialTarget(material.getId(), (short) 0)); + return test(new ItemTarget(material)); } public boolean test(Block block) { - return test(new MaterialTarget(block.getTypeId(), block.getData())); + return test(new ItemTarget(block.getTypeId(), block.getData())); } public boolean test(BlockState state) { - return test(new MaterialTarget(state.getTypeId(), state.getRawData())); + return test(new ItemTarget(state.getType())); } public boolean test(ItemStack itemStack) { - return test(new MaterialTarget(itemStack.getTypeId(), itemStack.getDurability())); + return test(new ItemTarget(itemStack.getTypeId())); } @Override diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/AbstractListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/AbstractListener.java index 0a15a971..9d46e19c 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/AbstractListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/AbstractListener.java @@ -19,15 +19,16 @@ package com.sk89q.worldguard.bukkit.listener; -import com.sk89q.worldguard.bukkit.ConfigurationManager; -import com.sk89q.worldguard.bukkit.WorldConfiguration; -import com.sk89q.worldguard.bukkit.WorldGuardPlugin; -import org.bukkit.World; -import org.bukkit.entity.Player; -import org.bukkit.event.Listener; - import static com.google.common.base.Preconditions.checkNotNull; +import com.sk89q.worldedit.world.World; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; +import com.sk89q.worldguard.bukkit.WorldGuardPlugin; +import com.sk89q.worldguard.config.ConfigurationManager; +import org.bukkit.event.Listener; + /** * Abstract listener to ease creation of listeners. */ @@ -67,7 +68,7 @@ protected WorldGuardPlugin getPlugin() { * @return the configuration */ protected ConfigurationManager getConfig() { - return plugin.getGlobalStateManager(); + return WorldGuard.getInstance().getPlatform().getGlobalStateManager(); } /** @@ -76,18 +77,18 @@ protected ConfigurationManager getConfig() { * @param world The world to get the configuration for. * @return The configuration for {@code world} */ - protected WorldConfiguration getWorldConfig(World world) { - return plugin.getGlobalStateManager().get(world); + protected BukkitWorldConfiguration getWorldConfig(World world) { + return (BukkitWorldConfiguration) getConfig().get(world); } /** * Get the world configuration given a player. * * @param player The player to get the wold from - * @return The {@link WorldConfiguration} for the player's world + * @return The {@link BukkitWorldConfiguration} for the player's world */ - protected WorldConfiguration getWorldConfig(Player player) { - return getWorldConfig(player.getWorld()); + protected BukkitWorldConfiguration getWorldConfig(LocalPlayer player) { + return getWorldConfig((World) player.getExtent()); } /** diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/BlacklistListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/BlacklistListener.java index 580222dd..e1b3cd50 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/BlacklistListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/BlacklistListener.java @@ -19,11 +19,20 @@ package com.sk89q.worldguard.bukkit.listener; -import com.google.common.base.Predicate; +import static com.sk89q.worldguard.bukkit.BukkitUtil.createTarget; + +import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldguard.LocalPlayer; -import com.sk89q.worldguard.blacklist.event.*; -import com.sk89q.worldguard.bukkit.ConfigurationManager; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.blacklist.event.BlockBreakBlacklistEvent; +import com.sk89q.worldguard.blacklist.event.BlockDispenseBlacklistEvent; +import com.sk89q.worldguard.blacklist.event.BlockInteractBlacklistEvent; +import com.sk89q.worldguard.blacklist.event.BlockPlaceBlacklistEvent; +import com.sk89q.worldguard.blacklist.event.ItemAcquireBlacklistEvent; +import com.sk89q.worldguard.blacklist.event.ItemDestroyWithBlacklistEvent; +import com.sk89q.worldguard.blacklist.event.ItemDropBlacklistEvent; +import com.sk89q.worldguard.blacklist.event.ItemUseBlacklistEvent; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.bukkit.event.block.BreakBlockEvent; import com.sk89q.worldguard.bukkit.event.block.PlaceBlockEvent; @@ -32,7 +41,7 @@ import com.sk89q.worldguard.bukkit.event.entity.SpawnEntityEvent; import com.sk89q.worldguard.bukkit.event.inventory.UseItemEvent; import com.sk89q.worldguard.bukkit.util.Materials; -import org.bukkit.Location; +import com.sk89q.worldguard.config.ConfigurationManager; import org.bukkit.Material; import org.bukkit.entity.Entity; import org.bukkit.entity.HumanEntity; @@ -47,9 +56,6 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import static com.sk89q.worldguard.bukkit.BukkitUtil.createTarget; -import static com.sk89q.worldguard.bukkit.BukkitUtil.toVector; - /** * Handle events that need to be processed by the blacklist. */ @@ -73,26 +79,23 @@ public void onBreakBlock(final BreakBlockEvent event) { } final LocalPlayer localPlayer = getPlugin().wrapPlayer(player); - final WorldConfiguration wcfg = getWorldConfig(player); + final BukkitWorldConfiguration wcfg = getWorldConfig(localPlayer); // Blacklist guard if (wcfg.getBlacklist() == null) { return; } - event.filter(new Predicate() { - @Override - public boolean apply(Location target) { - if (!wcfg.getBlacklist().check( - new BlockBreakBlacklistEvent(localPlayer, toVector(target), createTarget(target.getBlock(), event.getEffectiveMaterial())), false, false)) { - return false; - } else if (!wcfg.getBlacklist().check( - new ItemDestroyWithBlacklistEvent(localPlayer, toVector(target), createTarget(player.getItemInHand())), false, false)) { - return false; - } - - return true; + event.filter(target -> { + if (!wcfg.getBlacklist().check( + new BlockBreakBlacklistEvent(localPlayer, BukkitAdapter.asVector(target), createTarget(target.getBlock())), false, false)) { + return false; + } else if (!wcfg.getBlacklist().check( + new ItemDestroyWithBlacklistEvent(localPlayer, BukkitAdapter.asVector(target), createTarget(player.getItemInHand())), false, false)) { + return false; } + + return true; }); } @@ -105,21 +108,15 @@ public void onPlaceBlock(final PlaceBlockEvent event) { } final LocalPlayer localPlayer = getPlugin().wrapPlayer(player); - final WorldConfiguration wcfg = getWorldConfig(player); + final BukkitWorldConfiguration wcfg = getWorldConfig(localPlayer); // Blacklist guard if (wcfg.getBlacklist() == null) { return; } - event.filter(new Predicate() { - @Override - public boolean apply(Location target) { - return wcfg.getBlacklist().check(new BlockPlaceBlacklistEvent( - localPlayer, toVector(target), createTarget(target.getBlock(), event.getEffectiveMaterial())), false, false); - - } - }); + event.filter(target -> wcfg.getBlacklist().check(new BlockPlaceBlacklistEvent( + localPlayer, BukkitAdapter.asVector(target), createTarget(target.getBlock())), false, false)); } @EventHandler(ignoreCancelled = true) @@ -131,20 +128,15 @@ public void onUseBlock(final UseBlockEvent event) { } final LocalPlayer localPlayer = getPlugin().wrapPlayer(player); - final WorldConfiguration wcfg = getWorldConfig(player); + final BukkitWorldConfiguration wcfg = getWorldConfig(localPlayer); // Blacklist guard if (wcfg.getBlacklist() == null) { return; } - event.filter(new Predicate() { - @Override - public boolean apply(Location target) { - return wcfg.getBlacklist().check(new BlockInteractBlacklistEvent( - localPlayer, toVector(target), createTarget(target.getBlock(), event.getEffectiveMaterial())), false, false); - } - }); + event.filter(target -> wcfg.getBlacklist().check(new BlockInteractBlacklistEvent( + localPlayer, BukkitAdapter.asVector(target), createTarget(target.getBlock())), false, false)); } @EventHandler(ignoreCancelled = true) @@ -156,7 +148,7 @@ public void onSpawnEntity(SpawnEntityEvent event) { } LocalPlayer localPlayer = getPlugin().wrapPlayer(player); - WorldConfiguration wcfg = getWorldConfig(player); + BukkitWorldConfiguration wcfg = getWorldConfig(localPlayer); // Blacklist guard if (wcfg.getBlacklist() == null) { @@ -165,7 +157,7 @@ public void onSpawnEntity(SpawnEntityEvent event) { Material material = Materials.getRelatedMaterial(event.getEffectiveType()); if (material != null) { - if (!wcfg.getBlacklist().check(new ItemUseBlacklistEvent(localPlayer, toVector(event.getTarget()), createTarget(material)), false, false)) { + if (!wcfg.getBlacklist().check(new ItemUseBlacklistEvent(localPlayer, BukkitAdapter.asVector(event.getTarget()), createTarget(material)), false, false)) { event.setCancelled(true); } } @@ -181,7 +173,7 @@ public void onDestroyEntity(DestroyEntityEvent event) { LocalPlayer localPlayer = getPlugin().wrapPlayer(player); Entity target = event.getEntity(); - WorldConfiguration wcfg = getWorldConfig(player); + BukkitWorldConfiguration wcfg = getWorldConfig(localPlayer); // Blacklist guard if (wcfg.getBlacklist() == null) { @@ -192,7 +184,7 @@ public void onDestroyEntity(DestroyEntityEvent event) { Item item = (Item) target; if (!wcfg.getBlacklist().check( new ItemAcquireBlacklistEvent(localPlayer, - toVector(target.getLocation()), createTarget(item.getItemStack())), false, true)) { + BukkitAdapter.asVector(target.getLocation()), createTarget(item.getItemStack())), false, true)) { event.setCancelled(true); return; } @@ -201,7 +193,7 @@ public void onDestroyEntity(DestroyEntityEvent event) { Material material = Materials.getRelatedMaterial(target.getType()); if (material != null) { // Not really a block but we only have one on-break blacklist event - if (!wcfg.getBlacklist().check(new BlockBreakBlacklistEvent(localPlayer, toVector(event.getTarget()), createTarget(material)), false, false)) { + if (!wcfg.getBlacklist().check(new BlockBreakBlacklistEvent(localPlayer, BukkitAdapter.asVector(event.getTarget()), createTarget(material)), false, false)) { event.setCancelled(true); } } @@ -217,29 +209,29 @@ public void onUseItem(UseItemEvent event) { LocalPlayer localPlayer = getPlugin().wrapPlayer(player); ItemStack target = event.getItemStack(); - WorldConfiguration wcfg = getWorldConfig(player); + BukkitWorldConfiguration wcfg = getWorldConfig(localPlayer); // Blacklist guard if (wcfg.getBlacklist() == null) { return; } - if (!wcfg.getBlacklist().check(new ItemUseBlacklistEvent(localPlayer, toVector(player.getLocation()), createTarget(target)), false, false)) { + if (!wcfg.getBlacklist().check(new ItemUseBlacklistEvent(localPlayer, BukkitAdapter.asVector(player.getLocation()), createTarget(target)), false, false)) { event.setCancelled(true); } } @EventHandler(ignoreCancelled = true) public void onPlayerDropItem(PlayerDropItemEvent event) { - ConfigurationManager cfg = getPlugin().getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getPlayer().getWorld()); + ConfigurationManager cfg = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); + BukkitWorldConfiguration wcfg = (BukkitWorldConfiguration) cfg.get(BukkitAdapter.adapt(event.getPlayer().getWorld())); if (wcfg.getBlacklist() != null) { Item ci = event.getItemDrop(); if (!wcfg.getBlacklist().check( new ItemDropBlacklistEvent(getPlugin().wrapPlayer(event.getPlayer()), - toVector(ci.getLocation()), createTarget(ci.getItemStack())), false, false)) { + BukkitAdapter.asVector(ci.getLocation()), createTarget(ci.getItemStack())), false, false)) { event.setCancelled(true); } } @@ -247,11 +239,12 @@ public void onPlayerDropItem(PlayerDropItemEvent event) { @EventHandler(ignoreCancelled = true) public void onBlockDispense(BlockDispenseEvent event) { - ConfigurationManager cfg = getPlugin().getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); + ConfigurationManager cfg = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); + BukkitWorldConfiguration wcfg = (BukkitWorldConfiguration) cfg.get(BukkitAdapter.adapt(event.getBlock().getWorld())); if (wcfg.getBlacklist() != null) { - if (!wcfg.getBlacklist().check(new BlockDispenseBlacklistEvent(null, toVector(event.getBlock()), createTarget(event.getItem())), false, false)) { + if (!wcfg.getBlacklist().check(new BlockDispenseBlacklistEvent(null, BukkitAdapter.asVector(event.getBlock().getLocation()), + createTarget(event.getItem())), false, false)) { event.setCancelled(true); } } @@ -265,12 +258,12 @@ public void onInventoryClick(InventoryClickEvent event) { if (item != null && entity instanceof Player) { Player player = (Player) entity; - ConfigurationManager cfg = getPlugin().getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(entity.getWorld()); + ConfigurationManager cfg = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); + BukkitWorldConfiguration wcfg = (BukkitWorldConfiguration) cfg.get(BukkitAdapter.adapt(entity.getWorld())); LocalPlayer localPlayer = getPlugin().wrapPlayer(player); if (wcfg.getBlacklist() != null && !wcfg.getBlacklist().check( - new ItemAcquireBlacklistEvent(localPlayer, toVector(entity.getLocation()), createTarget(item)), false, false)) { + new ItemAcquireBlacklistEvent(localPlayer, BukkitAdapter.asVector(entity.getLocation()), createTarget(item)), false, false)) { event.setCancelled(true); if (inventory.getHolder().equals(player)) { @@ -287,12 +280,12 @@ public void onInventoryCreative(InventoryCreativeEvent event) { if (item != null && entity instanceof Player) { Player player = (Player) entity; - ConfigurationManager cfg = getPlugin().getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(entity.getWorld()); + ConfigurationManager cfg = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); + BukkitWorldConfiguration wcfg = (BukkitWorldConfiguration) cfg.get(BukkitAdapter.adapt(entity.getWorld())); LocalPlayer localPlayer = getPlugin().wrapPlayer(player); if (wcfg.getBlacklist() != null && !wcfg.getBlacklist().check( - new ItemAcquireBlacklistEvent(localPlayer, toVector(entity.getLocation()), createTarget(item)), false, false)) { + new ItemAcquireBlacklistEvent(localPlayer, BukkitAdapter.asVector(entity.getLocation()), createTarget(item)), false, false)) { event.setCancelled(true); event.setCursor(null); } @@ -306,12 +299,12 @@ public void onPlayerItemHeld(PlayerItemHeldEvent event) { ItemStack item = inventory.getItem(event.getNewSlot()); if (item != null) { - ConfigurationManager cfg = getPlugin().getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(player.getWorld()); + ConfigurationManager cfg = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); + BukkitWorldConfiguration wcfg = (BukkitWorldConfiguration) cfg.get(BukkitAdapter.adapt(player.getWorld())); LocalPlayer localPlayer = getPlugin().wrapPlayer(player); if (wcfg.getBlacklist() != null && !wcfg.getBlacklist().check( - new ItemAcquireBlacklistEvent(localPlayer, toVector(player.getLocation()), createTarget(item)), false, false)) { + new ItemAcquireBlacklistEvent(localPlayer, BukkitAdapter.asVector(player.getLocation()), createTarget(item)), false, false)) { inventory.setItem(event.getNewSlot(), null); } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/BlockedPotionsListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/BlockedPotionsListener.java index 71151ec8..c4cea5de 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/BlockedPotionsListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/BlockedPotionsListener.java @@ -19,8 +19,10 @@ package com.sk89q.worldguard.bukkit.listener; -import com.sk89q.worldguard.bukkit.ConfigurationManager; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; +import com.sk89q.worldguard.config.ConfigurationManager; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.bukkit.event.entity.DamageEntityEvent; import com.sk89q.worldguard.bukkit.event.inventory.UseItemEvent; @@ -57,8 +59,8 @@ public void onProjectile(DamageEntityEvent event) { if (event.getOriginalEvent() instanceof EntityDamageByEntityEvent) { EntityDamageByEntityEvent originalEvent = (EntityDamageByEntityEvent) event.getOriginalEvent(); if (Entities.isPotionArrow(originalEvent.getDamager())) { // should take care of backcompat - ConfigurationManager cfg = getPlugin().getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getWorld()); + ConfigurationManager cfg = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); + BukkitWorldConfiguration wcfg = (BukkitWorldConfiguration) cfg.get(BukkitAdapter.adapt(event.getWorld())); PotionEffectType blockedEffect = null; if (originalEvent.getDamager() instanceof SpectralArrow) { if (wcfg.blockPotions.contains(PotionEffectType.GLOWING)) { @@ -95,8 +97,8 @@ public void onProjectile(DamageEntityEvent event) { @EventHandler public void onItemInteract(UseItemEvent event) { - ConfigurationManager cfg = getPlugin().getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getWorld()); + ConfigurationManager cfg = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); + BukkitWorldConfiguration wcfg = (BukkitWorldConfiguration) cfg.get(BukkitAdapter.adapt(event.getWorld())); ItemStack item = event.getItemStack(); // We only care about potions diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/BuildPermissionListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/BuildPermissionListener.java index 2ad78b4b..53638d25 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/BuildPermissionListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/BuildPermissionListener.java @@ -19,6 +19,7 @@ package com.sk89q.worldguard.bukkit.listener; +import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.bukkit.event.block.BreakBlockEvent; import com.sk89q.worldguard.bukkit.event.block.PlaceBlockEvent; @@ -51,7 +52,7 @@ private boolean hasBuildPermission(CommandSender sender, String perm) { } private void tellErrorMessage(CommandSender sender, World world) { - String message = getWorldConfig(world).buildPermissionDenyMessage; + String message = getWorldConfig(BukkitAdapter.adapt(world)).buildPermissionDenyMessage; if (!message.isEmpty()) { sender.sendMessage(message); } @@ -59,7 +60,7 @@ private void tellErrorMessage(CommandSender sender, World world) { @EventHandler(ignoreCancelled = true) public void onPlaceBlock(final PlaceBlockEvent event) { - if (!getWorldConfig(event.getWorld()).buildPermissions) return; + if (!getWorldConfig(BukkitAdapter.adapt(event.getWorld())).buildPermissions) return; Object rootCause = event.getCause().getRootCause(); @@ -77,7 +78,7 @@ public void onPlaceBlock(final PlaceBlockEvent event) { @EventHandler(ignoreCancelled = true) public void onBreakBlock(final BreakBlockEvent event) { - if (!getWorldConfig(event.getWorld()).buildPermissions) return; + if (!getWorldConfig(BukkitAdapter.adapt(event.getWorld())).buildPermissions) return; Object rootCause = event.getCause().getRootCause(); @@ -95,7 +96,7 @@ public void onBreakBlock(final BreakBlockEvent event) { @EventHandler(ignoreCancelled = true) public void onUseBlock(final UseBlockEvent event) { - if (!getWorldConfig(event.getWorld()).buildPermissions) return; + if (!getWorldConfig(BukkitAdapter.adapt(event.getWorld())).buildPermissions) return; Object rootCause = event.getCause().getRootCause(); @@ -113,7 +114,7 @@ public void onUseBlock(final UseBlockEvent event) { @EventHandler(ignoreCancelled = true) public void onSpawnEntity(SpawnEntityEvent event) { - if (!getWorldConfig(event.getWorld()).buildPermissions) return; + if (!getWorldConfig(BukkitAdapter.adapt(event.getWorld())).buildPermissions) return; Object rootCause = event.getCause().getRootCause(); @@ -131,7 +132,7 @@ public void onSpawnEntity(SpawnEntityEvent event) { @EventHandler(ignoreCancelled = true) public void onDestroyEntity(DestroyEntityEvent event) { - if (!getWorldConfig(event.getWorld()).buildPermissions) return; + if (!getWorldConfig(BukkitAdapter.adapt(event.getWorld())).buildPermissions) return; Object rootCause = event.getCause().getRootCause(); @@ -149,7 +150,7 @@ public void onDestroyEntity(DestroyEntityEvent event) { @EventHandler(ignoreCancelled = true) public void onUseEntity(UseEntityEvent event) { - if (!getWorldConfig(event.getWorld()).buildPermissions) return; + if (!getWorldConfig(BukkitAdapter.adapt(event.getWorld())).buildPermissions) return; Object rootCause = event.getCause().getRootCause(); @@ -167,7 +168,7 @@ public void onUseEntity(UseEntityEvent event) { @EventHandler(ignoreCancelled = true) public void onDamageEntity(DamageEntityEvent event) { - if (!getWorldConfig(event.getWorld()).buildPermissions) return; + if (!getWorldConfig(BukkitAdapter.adapt(event.getWorld())).buildPermissions) return; Object rootCause = event.getCause().getRootCause(); @@ -185,7 +186,7 @@ public void onDamageEntity(DamageEntityEvent event) { @EventHandler(ignoreCancelled = true) public void onUseItem(UseItemEvent event) { - if (!getWorldConfig(event.getWorld()).buildPermissions) return; + if (!getWorldConfig(BukkitAdapter.adapt(event.getWorld())).buildPermissions) return; Object rootCause = event.getCause().getRootCause(); diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/ChestProtectionListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/ChestProtectionListener.java index e24ab8bb..646cd171 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/ChestProtectionListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/ChestProtectionListener.java @@ -21,7 +21,7 @@ import com.google.common.base.Predicate; import com.sk89q.worldedit.blocks.BlockID; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.bukkit.event.DelegateEvent; import com.sk89q.worldguard.bukkit.event.block.BreakBlockEvent; @@ -58,7 +58,7 @@ public void onPlaceBlock(final PlaceBlockEvent event) { final Player player = event.getCause().getFirstPlayer(); if (player != null) { - final WorldConfiguration wcfg = getWorldConfig(player); + final BukkitWorldConfiguration wcfg = getWorldConfig(player); // Early guard if (!wcfg.signChestProtection) { @@ -83,7 +83,7 @@ public boolean apply(Location target) { public void onBreakBlock(final BreakBlockEvent event) { final Player player = event.getCause().getFirstPlayer(); - final WorldConfiguration wcfg = getWorldConfig(event.getWorld()); + final BukkitWorldConfiguration wcfg = getWorldConfig(event.getWorld()); // Early guard if (!wcfg.signChestProtection) { @@ -117,7 +117,7 @@ public boolean apply(Location target) { public void onUseBlock(final UseBlockEvent event) { final Player player = event.getCause().getFirstPlayer(); - final WorldConfiguration wcfg = getWorldConfig(event.getWorld()); + final BukkitWorldConfiguration wcfg = getWorldConfig(event.getWorld()); // Early guard if (!wcfg.signChestProtection) { @@ -150,7 +150,7 @@ public boolean apply(Location target) { @EventHandler(ignoreCancelled = true) public void onSignChange(SignChangeEvent event) { Player player = event.getPlayer(); - WorldConfiguration wcfg = getWorldConfig(player); + BukkitWorldConfiguration wcfg = getWorldConfig(player); if (wcfg.signChestProtection) { if (event.getLine(0).equalsIgnoreCase("[Lock]")) { diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java index aabafdfb..3b5056cc 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java @@ -20,7 +20,7 @@ package com.sk89q.worldguard.bukkit.listener; import com.google.common.collect.Lists; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.bukkit.cause.Cause; import com.sk89q.worldguard.bukkit.event.DelegateEvent; @@ -43,7 +43,7 @@ import com.sk89q.worldguard.bukkit.util.Entities; import com.sk89q.worldguard.bukkit.util.Events; import com.sk89q.worldguard.bukkit.util.Materials; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; @@ -516,7 +516,7 @@ public void onPlayerBucketFill(PlayerBucketFillEvent event) { @EventHandler(ignoreCancelled = true) public void onBlockFromTo(BlockFromToEvent event) { - WorldConfiguration config = getWorldConfig(event.getBlock().getWorld()); + BukkitWorldConfiguration config = getWorldConfig(event.getBlock().getWorld()); // This only applies to regions but nothing else cares about high // frequency events at the moment @@ -852,7 +852,7 @@ public void onPotionSplash(PotionSplashEvent event) { new UseEntityEvent(event, cause, affected); // Consider the potion splash flag - delegate.getRelevantFlags().add(DefaultFlag.POTION_SPLASH); + delegate.getRelevantFlags().add(Flags.POTION_SPLASH); if (Events.fireAndTestCancel(delegate)) { event.setIntensity(affected, 0); diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/InvincibilityListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/InvincibilityListener.java index 85153644..f628ca4c 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/InvincibilityListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/InvincibilityListener.java @@ -19,7 +19,7 @@ package com.sk89q.worldguard.bukkit.listener; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; @@ -55,7 +55,7 @@ private boolean isInvincible(Player player) { @EventHandler(ignoreCancelled = true) public void onEntityDamage(EntityDamageEvent event) { Entity victim = event.getEntity(); - WorldConfiguration worldConfig = getPlugin().getGlobalStateManager().get(victim.getWorld()); + BukkitWorldConfiguration worldConfig = getPlugin().getGlobalStateManager().get(victim.getWorld()); if (victim instanceof Player) { Player player = (Player) victim; diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/PlayerModesListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/PlayerModesListener.java index ab10bd5e..9f15ffad 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/PlayerModesListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/PlayerModesListener.java @@ -19,7 +19,7 @@ package com.sk89q.worldguard.bukkit.listener; -import com.sk89q.worldguard.bukkit.ConfigurationManager; +import com.sk89q.worldguard.config.ConfigurationManager; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.bukkit.event.player.ProcessPlayerEvent; import com.sk89q.worldguard.session.Session; diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/PlayerMoveListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/PlayerMoveListener.java index b0511e84..17547c80 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/PlayerMoveListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/PlayerMoveListener.java @@ -19,6 +19,7 @@ package com.sk89q.worldguard.bukkit.listener; +import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; @@ -55,7 +56,7 @@ public void registerEvents() { public void onPlayerRespawn(PlayerRespawnEvent event) { Player player = event.getPlayer(); - Session session = plugin.getSessionManager().get(player); + Session session = WorldGuard.getInstance().getPlatform().getSessionManager().get(player); session.testMoveTo(player, event.getRespawnLocation(), MoveType.RESPAWN, true); } @@ -64,7 +65,7 @@ public void onVehicleEnter(VehicleEnterEvent event) { Entity entity = event.getEntered(); if (entity instanceof Player) { Player player = (Player) entity; - Session session = plugin.getSessionManager().get(player); + Session session = WorldGuard.getInstance().getPlatform().getSessionManager().get(player); if (null != session.testMoveTo(player, event.getVehicle().getLocation(), MoveType.EMBARK, true)) { event.setCancelled(true); } @@ -75,7 +76,7 @@ public void onVehicleEnter(VehicleEnterEvent event) { public void onPlayerMove(PlayerMoveEvent event) { final Player player = event.getPlayer(); - Session session = plugin.getSessionManager().get(player); + Session session = WorldGuard.getInstance().getPlatform().getSessionManager().get(player); final Location override = session.testMoveTo(player, event.getTo(), MoveType.MOVE); if (override != null) { @@ -105,12 +106,7 @@ public void onPlayerMove(PlayerMoveEvent event) { player.teleport(override.clone().add(0, 1, 0)); - Bukkit.getScheduler().runTaskLater(plugin, new Runnable() { - @Override - public void run() { - player.teleport(override.clone().add(0, 1, 0)); - } - }, 1); + Bukkit.getScheduler().runTaskLater(plugin, () -> player.teleport(override.clone().add(0, 1, 0)), 1); } } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionFlagsListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionFlagsListener.java index 4befdb85..b6b4cda0 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionFlagsListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionFlagsListener.java @@ -20,15 +20,15 @@ package com.sk89q.worldguard.bukkit.listener; import com.google.common.base.Predicate; -import com.sk89q.worldguard.bukkit.RegionQuery; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.protection.regions.RegionQuery; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.bukkit.event.block.BreakBlockEvent; import com.sk89q.worldguard.bukkit.event.block.PlaceBlockEvent; import com.sk89q.worldguard.bukkit.util.Entities; import com.sk89q.worldguard.bukkit.util.Materials; import com.sk89q.worldguard.protection.association.RegionAssociable; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.StateFlag; import org.bukkit.Location; import org.bukkit.World; @@ -64,7 +64,7 @@ public void onPlaceBlock(final PlaceBlockEvent event) { Block block; if ((block = event.getCause().getFirstBlock()) != null) { if (Materials.isPistonBlock(block.getType())) { - event.filter(testState(query, DefaultFlag.PISTONS), false); + event.filter(testState(query, Flags.PISTONS), false); } } } @@ -73,26 +73,26 @@ public void onPlaceBlock(final PlaceBlockEvent event) { public void onBreakBlock(final BreakBlockEvent event) { if (!isRegionSupportEnabled(event.getWorld())) return; // Region support disabled - WorldConfiguration config = getWorldConfig(event.getWorld()); + BukkitWorldConfiguration config = getWorldConfig(event.getWorld()); RegionQuery query = getPlugin().getRegionContainer().createQuery(); Block block; if ((block = event.getCause().getFirstBlock()) != null) { if (Materials.isPistonBlock(block.getType())) { - event.filter(testState(query, DefaultFlag.PISTONS), false); + event.filter(testState(query, Flags.PISTONS), false); } } if (event.getCause().find(EntityType.CREEPER) != null) { // Creeper - event.filter(testState(query, DefaultFlag.CREEPER_EXPLOSION), config.explosionFlagCancellation); + event.filter(testState(query, Flags.CREEPER_EXPLOSION), config.explosionFlagCancellation); } if (event.getCause().find(EntityType.ENDER_DRAGON) != null) { // Enderdragon - event.filter(testState(query, DefaultFlag.ENDERDRAGON_BLOCK_DAMAGE), config.explosionFlagCancellation); + event.filter(testState(query, Flags.ENDERDRAGON_BLOCK_DAMAGE), config.explosionFlagCancellation); } if (event.getCause().find(Entities.enderCrystalType) != null) { // should be nullsafe even if enderCrystalType field is null - event.filter(testState(query, DefaultFlag.OTHER_EXPLOSION), config.explosionFlagCancellation); + event.filter(testState(query, Flags.OTHER_EXPLOSION), config.explosionFlagCancellation); } } @@ -105,14 +105,14 @@ public void onEntityDamage(EntityDamageEvent event) { RegionQuery query = getPlugin().getRegionContainer().createQuery(); if (entity instanceof Player && event.getCause() == DamageCause.FALL) { - if (!query.testState(entity.getLocation(), (Player) entity, DefaultFlag.FALL_DAMAGE)) { + if (!query.testState(entity.getLocation(), (Player) entity, Flags.FALL_DAMAGE)) { event.setCancelled(true); return; } } else { try { if (entity instanceof Player && event.getCause() == DamageCause.FLY_INTO_WALL) { - if (!query.testState(entity.getLocation(), (Player) entity, DefaultFlag.FALL_DAMAGE)) { + if (!query.testState(entity.getLocation(), (Player) entity, Flags.FALL_DAMAGE)) { event.setCancelled(true); return; } @@ -124,7 +124,7 @@ public void onEntityDamage(EntityDamageEvent event) { if (event instanceof EntityDamageByEntityEvent) { Entity damager = (((EntityDamageByEntityEvent) event)).getDamager(); if (damager != null && damager.getType() == EntityType.FIREWORK) { - if (!query.testState(entity.getLocation(), (RegionAssociable) null, DefaultFlag.FIREWORK_DAMAGE)) { + if (!query.testState(entity.getLocation(), (RegionAssociable) null, Flags.FIREWORK_DAMAGE)) { event.setCancelled(true); return; } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java index 7280d865..0a7a91d2 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java @@ -20,8 +20,8 @@ package com.sk89q.worldguard.bukkit.listener; import com.google.common.base.Predicate; -import com.sk89q.worldguard.bukkit.RegionQuery; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; +import com.sk89q.worldguard.protection.regions.RegionQuery; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.bukkit.cause.Cause; import com.sk89q.worldguard.bukkit.event.DelegateEvent; @@ -33,7 +33,7 @@ import com.sk89q.worldguard.bukkit.event.entity.SpawnEntityEvent; import com.sk89q.worldguard.bukkit.event.entity.UseEntityEvent; import com.sk89q.worldguard.bukkit.internal.WGMetadata; -import com.sk89q.worldguard.bukkit.permission.RegionPermissionModel; +import com.sk89q.worldguard.internal.permission.RegionPermissionModel; import com.sk89q.worldguard.bukkit.protection.DelayedRegionOverlapAssociation; import com.sk89q.worldguard.bukkit.util.Entities; import com.sk89q.worldguard.bukkit.util.Events; @@ -42,8 +42,8 @@ import com.sk89q.worldguard.domains.Association; import com.sk89q.worldguard.protection.association.Associables; import com.sk89q.worldguard.protection.association.RegionAssociable; -import com.sk89q.worldguard.protection.events.DisallowedPVPEvent; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.bukkit.protection.events.DisallowedPVPEvent; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.flags.StateFlag.State; import org.bukkit.ChatColor; @@ -106,7 +106,7 @@ private void tellErrorMessage(DelegateEvent event, Cause cause, Location locatio Long lastTime = WGMetadata.getIfPresent(player, DENY_MESSAGE_KEY, Long.class); if (lastTime == null || now - lastTime >= LAST_MESSAGE_DELAY) { RegionQuery query = getPlugin().getRegionContainer().createQuery(); - String message = query.queryValue(location, player, DefaultFlag.DENY_MESSAGE); + String message = query.queryValue(location, player, Flags.DENY_MESSAGE); if (message != null && !message.isEmpty()) { player.sendMessage(message.replace("%what%", what)); } @@ -131,7 +131,7 @@ private boolean isWhitelisted(Cause cause, World world, boolean pvp) { return type == Material.HOPPER || type == Material.DROPPER; } else if (rootCause instanceof Player) { Player player = (Player) rootCause; - WorldConfiguration config = getWorldConfig(world); + BukkitWorldConfiguration config = getWorldConfig(world); if (config.fakePlayerBuildOverride && InteropUtils.isFakePlayer(player)) { return true; @@ -192,16 +192,16 @@ public boolean apply(Location target) { boolean fire = block != null && block.getType() == Material.FIRE; boolean lava = block != null && Materials.isLava(block.getType()); List flags = new ArrayList(); - flags.add(DefaultFlag.BLOCK_PLACE); - flags.add(DefaultFlag.LIGHTER); - if (fire) flags.add(DefaultFlag.FIRE_SPREAD); - if (lava) flags.add(DefaultFlag.LAVA_FIRE); + flags.add(Flags.BLOCK_PLACE); + flags.add(Flags.LIGHTER); + if (fire) flags.add(Flags.FIRE_SPREAD); + if (lava) flags.add(Flags.LAVA_FIRE); canPlace = query.testBuild(target, associable, combine(event, flags.toArray(new StateFlag[flags.size()]))); what = "place fire"; /* Everything else */ } else { - canPlace = query.testBuild(target, associable, combine(event, DefaultFlag.BLOCK_PLACE)); + canPlace = query.testBuild(target, associable, combine(event, Flags.BLOCK_PLACE)); try { event.setSilent(type == Material.FROSTED_ICE); } catch (NoSuchFieldError ignored) {} // back compat @@ -237,12 +237,12 @@ public boolean apply(Location target) { /* TNT */ if (event.getCause().find(EntityType.PRIMED_TNT, EntityType.MINECART_TNT) != null) { - canBreak = query.testBuild(target, associable, combine(event, DefaultFlag.BLOCK_BREAK, DefaultFlag.TNT)); + canBreak = query.testBuild(target, associable, combine(event, Flags.BLOCK_BREAK, Flags.TNT)); what = "use dynamite"; /* Everything else */ } else { - canBreak = query.testBuild(target, associable, combine(event, DefaultFlag.BLOCK_BREAK)); + canBreak = query.testBuild(target, associable, combine(event, Flags.BLOCK_BREAK)); what = "break that block"; } @@ -280,27 +280,27 @@ public boolean apply(Location target) { /* Inventory */ } else if (Materials.isInventoryBlock(type)) { - canUse = query.testBuild(target, associable, combine(event, DefaultFlag.INTERACT, DefaultFlag.CHEST_ACCESS)); + canUse = query.testBuild(target, associable, combine(event, Flags.INTERACT, Flags.CHEST_ACCESS)); what = "open that"; /* Beds */ } else if (type == Material.BED_BLOCK) { - canUse = query.testBuild(target, associable, combine(event, DefaultFlag.INTERACT, DefaultFlag.SLEEP)); + canUse = query.testBuild(target, associable, combine(event, Flags.INTERACT, Flags.SLEEP)); what = "sleep"; /* TNT */ } else if (type == Material.TNT) { - canUse = query.testBuild(target, associable, combine(event, DefaultFlag.INTERACT, DefaultFlag.TNT)); + canUse = query.testBuild(target, associable, combine(event, Flags.INTERACT, Flags.TNT)); what = "use explosives"; /* Legacy USE flag */ } else if (Materials.isUseFlagApplicable(type)) { - canUse = query.testBuild(target, associable, combine(event, DefaultFlag.INTERACT, DefaultFlag.USE)); + canUse = query.testBuild(target, associable, combine(event, Flags.INTERACT, Flags.USE)); what = "use that"; /* Everything else */ } else { - canUse = query.testBuild(target, associable, combine(event, DefaultFlag.INTERACT)); + canUse = query.testBuild(target, associable, combine(event, Flags.INTERACT)); what = "use that"; } @@ -331,21 +331,21 @@ public void onSpawnEntity(SpawnEntityEvent event) { /* Vehicles */ if (Entities.isVehicle(type)) { - canSpawn = query.testBuild(target, associable, combine(event, DefaultFlag.PLACE_VEHICLE)); + canSpawn = query.testBuild(target, associable, combine(event, Flags.PLACE_VEHICLE)); what = "place vehicles"; /* Item pickup */ } else if (event.getEntity() instanceof Item) { - canSpawn = query.testBuild(target, associable, combine(event, DefaultFlag.ITEM_DROP)); + canSpawn = query.testBuild(target, associable, combine(event, Flags.ITEM_DROP)); what = "drop items"; /* XP drops */ } else if (type == EntityType.EXPERIENCE_ORB) { - canSpawn = query.testBuild(target, associable, combine(event, DefaultFlag.EXP_DROPS)); + canSpawn = query.testBuild(target, associable, combine(event, Flags.EXP_DROPS)); what = "drop XP"; } else if (Entities.isAoECloud(type)) { - canSpawn = query.testBuild(target, associable, combine(event, DefaultFlag.POTION_SPLASH)); + canSpawn = query.testBuild(target, associable, combine(event, Flags.POTION_SPLASH)); what = "use lingering potions"; /* Everything else */ @@ -381,12 +381,12 @@ public void onDestroyEntity(DestroyEntityEvent event) { /* Vehicles */ if (Entities.isVehicle(type)) { - canDestroy = query.testBuild(target, associable, combine(event, DefaultFlag.DESTROY_VEHICLE)); + canDestroy = query.testBuild(target, associable, combine(event, Flags.DESTROY_VEHICLE)); what = "break vehicles"; /* Item pickup */ } else if (event.getEntity() instanceof Item || event.getEntity() instanceof ExperienceOrb) { - canDestroy = query.testBuild(target, associable, combine(event, DefaultFlag.ITEM_PICKUP)); + canDestroy = query.testBuild(target, associable, combine(event, Flags.ITEM_PICKUP)); what = "pick up items"; /* Everything else */ @@ -427,12 +427,12 @@ public void onUseEntity(UseEntityEvent event) { /* Ridden on use */ } else if (Entities.isRiddenOnUse(event.getEntity())) { - canUse = query.testBuild(target, associable, combine(event, DefaultFlag.RIDE, DefaultFlag.INTERACT)); + canUse = query.testBuild(target, associable, combine(event, Flags.RIDE, Flags.INTERACT)); what = "ride that"; /* Everything else */ } else { - canUse = query.testBuild(target, associable, combine(event, DefaultFlag.INTERACT)); + canUse = query.testBuild(target, associable, combine(event, Flags.INTERACT)); what = "use that"; } @@ -502,12 +502,12 @@ public void onDamageEntity(DamageEntityEvent event) { /* damage to non-hostile mobs (e.g. animals) */ } else if (Entities.isNonHostile(event.getEntity())) { - canDamage = query.testBuild(target, associable, combine(event, DefaultFlag.DAMAGE_ANIMALS)); + canDamage = query.testBuild(target, associable, combine(event, Flags.DAMAGE_ANIMALS)); what = "harm that"; /* Everything else */ } else { - canDamage = query.testBuild(target, associable, combine(event, DefaultFlag.INTERACT)); + canDamage = query.testBuild(target, associable, combine(event, Flags.INTERACT)); what = "hit that"; } @@ -528,7 +528,7 @@ public void onVehicleExit(VehicleExitEvent event) { if (!isWhitelisted(Cause.create(player), vehicle.getWorld(), false)) { RegionQuery query = getPlugin().getRegionContainer().createQuery(); Location location = vehicle.getLocation(); - if (!query.testBuild(location, player, DefaultFlag.RIDE, DefaultFlag.INTERACT)) { + if (!query.testBuild(location, player, Flags.RIDE, Flags.INTERACT)) { long now = System.currentTimeMillis(); Long lastTime = WGMetadata.getIfPresent(player, DISEMBARK_MESSAGE_KEY, Long.class); if (lastTime == null || now - lastTime >= LAST_MESSAGE_DELAY) { diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/SpongeUtil.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/SpongeUtil.java index c5b52a67..4d1166a1 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/SpongeUtil.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/SpongeUtil.java @@ -19,8 +19,8 @@ package com.sk89q.worldguard.bukkit.listener; -import com.sk89q.worldguard.bukkit.ConfigurationManager; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; +import com.sk89q.worldguard.config.ConfigurationManager; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import org.bukkit.World; @@ -43,7 +43,7 @@ private SpongeUtil() { */ public static void clearSpongeWater(WorldGuardPlugin plugin, World world, int ox, int oy, int oz) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); for (int cx = -wcfg.spongeRadius; cx <= wcfg.spongeRadius; cx++) { for (int cy = -wcfg.spongeRadius; cy <= wcfg.spongeRadius; cy++) { @@ -67,7 +67,7 @@ public static void clearSpongeWater(WorldGuardPlugin plugin, World world, int ox */ public static void addSpongeWater(WorldGuardPlugin plugin, World world, int ox, int oy, int oz) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); // The negative x edge int cx = ox - wcfg.spongeRadius - 1; diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardBlockListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardBlockListener.java index 04dbf548..6ef5b888 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardBlockListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardBlockListener.java @@ -22,11 +22,13 @@ import com.sk89q.worldedit.blocks.BlockID; import com.sk89q.worldedit.blocks.BlockType; import com.sk89q.worldedit.blocks.ItemType; -import com.sk89q.worldguard.bukkit.ConfigurationManager; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; +import com.sk89q.worldguard.config.ConfigurationManager; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.association.RegionAssociable; +import com.sk89q.worldguard.protection.flags.Flags; +import com.sk89q.worldguard.protection.flags.StateFlag; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.Block; @@ -81,7 +83,7 @@ public void registerEvents() { * @param world The world to get the configuration for. * @return The configuration for {@code world} */ - protected WorldConfiguration getWorldConfig(World world) { + protected BukkitWorldConfiguration getWorldConfig(World world) { return plugin.getGlobalStateManager().get(world); } @@ -89,9 +91,9 @@ protected WorldConfiguration getWorldConfig(World world) { * Get the world configuration given a player. * * @param player The player to get the wold from - * @return The {@link WorldConfiguration} for the player's world + * @return The {@link BukkitWorldConfiguration} for the player's world */ - protected WorldConfiguration getWorldConfig(Player player) { + protected BukkitWorldConfiguration getWorldConfig(Player player) { return getWorldConfig(player.getWorld()); } @@ -102,7 +104,7 @@ protected WorldConfiguration getWorldConfig(Player player) { public void onBlockBreak(BlockBreakEvent event) { Player player = event.getPlayer(); Block target = event.getBlock(); - WorldConfiguration wcfg = getWorldConfig(player); + BukkitWorldConfiguration wcfg = getWorldConfig(player); if (!wcfg.itemDurability) { ItemStack held = player.getItemInHand(); @@ -127,7 +129,7 @@ public void onBlockFromTo(BlockFromToEvent event) { boolean isAir = blockFrom.getTypeId() == 0; ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); if (cfg.activityHaltToggle) { event.setCancelled(true); @@ -186,14 +188,13 @@ public void onBlockFromTo(BlockFromToEvent event) { } if (wcfg.highFreqFlags && isWater - && !plugin.getGlobalRegionManager().allows(DefaultFlag.WATER_FLOW, - blockFrom.getLocation())) { + && plugin.getRegionContainer().createQuery().queryState(blockFrom.getLocation(), (RegionAssociable) null, Flags.WATER_FLOW) == StateFlag.State.DENY) { event.setCancelled(true); return; } if (wcfg.highFreqFlags && isLava - && !plugin.getGlobalRegionManager().allows(DefaultFlag.LAVA_FLOW, + && !plugin.getGlobalRegionManager().allows(Flags.LAVA_FLOW, blockFrom.getLocation())) { event.setCancelled(true); return; @@ -217,7 +218,7 @@ public void onBlockIgnite(BlockIgniteEvent event) { World world = block.getWorld(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); if (cfg.activityHaltToggle) { event.setCancelled(true); @@ -271,26 +272,26 @@ public void onBlockIgnite(BlockIgniteEvent event) { ApplicableRegionSet set = plugin.getRegionContainer().createQuery().getApplicableRegions(block.getLocation()); if (wcfg.highFreqFlags && isFireSpread - && !set.allows(DefaultFlag.FIRE_SPREAD)) { + && !set.allows(Flags.FIRE_SPREAD)) { event.setCancelled(true); return; } if (wcfg.highFreqFlags && cause == IgniteCause.LAVA - && !set.allows(DefaultFlag.LAVA_FIRE)) { + && !set.allows(Flags.LAVA_FIRE)) { event.setCancelled(true); return; } if (cause == IgniteCause.FIREBALL && event.getPlayer() == null) { // wtf bukkit, FIREBALL is supposed to be reserved to players - if (!set.allows(DefaultFlag.GHAST_FIREBALL)) { + if (!set.allows(Flags.GHAST_FIREBALL)) { event.setCancelled(true); return; } } - if (cause == IgniteCause.LIGHTNING && !set.allows(DefaultFlag.LIGHTNING)) { + if (cause == IgniteCause.LIGHTNING && !set.allows(Flags.LIGHTNING)) { event.setCancelled(true); return; } @@ -303,7 +304,7 @@ public void onBlockIgnite(BlockIgniteEvent event) { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onBlockBurn(BlockBurnEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); if (cfg.activityHaltToggle) { event.setCancelled(true); @@ -344,7 +345,7 @@ public void onBlockBurn(BlockBurnEvent event) { int z = block.getZ(); ApplicableRegionSet set = plugin.getRegionContainer().createQuery().getApplicableRegions(block.getLocation()); - if (!set.allows(DefaultFlag.FIRE_SPREAD)) { + if (!set.allows(Flags.FIRE_SPREAD)) { checkAndDestroyAround(block.getWorld(), x, y, z, BlockID.FIRE); event.setCancelled(true); } @@ -373,7 +374,7 @@ private void checkAndDestroy(World world, int x, int y, int z, int required) { @EventHandler(ignoreCancelled = true) public void onBlockPhysics(BlockPhysicsEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); if (cfg.activityHaltToggle) { event.setCancelled(true); @@ -414,7 +415,7 @@ public void onBlockPlace(BlockPlaceEvent event) { World world = target.getWorld(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); if (wcfg.simulateSponge && target.getType() == Material.SPONGE) { if (wcfg.redstoneSponges && target.isBlockIndirectlyPowered()) { @@ -438,7 +439,7 @@ public void onBlockRedstoneChange(BlockRedstoneEvent event) { World world = blockTo.getWorld(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); if (wcfg.simulateSponge && wcfg.redstoneSponges) { int ox = blockTo.getX(); @@ -467,7 +468,7 @@ public void onBlockRedstoneChange(BlockRedstoneEvent event) { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onLeavesDecay(LeavesDecayEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); if (cfg.activityHaltToggle) { event.setCancelled(true); @@ -480,7 +481,7 @@ public void onLeavesDecay(LeavesDecayEvent event) { } if (wcfg.useRegions) { - if (!plugin.getGlobalRegionManager().allows(DefaultFlag.LEAF_DECAY, + if (!plugin.getGlobalRegionManager().allows(Flags.LEAF_DECAY, event.getBlock().getLocation())) { event.setCancelled(true); } @@ -493,7 +494,7 @@ public void onLeavesDecay(LeavesDecayEvent event) { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onBlockForm(BlockFormEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); if (cfg.activityHaltToggle) { event.setCancelled(true); @@ -518,7 +519,7 @@ public void onBlockForm(BlockFormEvent event) { return; } if (wcfg.useRegions && !plugin.getGlobalRegionManager().allows( - DefaultFlag.ICE_FORM, event.getBlock().getLocation())) { + Flags.ICE_FORM, event.getBlock().getLocation())) { event.setCancelled(true); return; } @@ -538,7 +539,7 @@ public void onBlockForm(BlockFormEvent event) { } } if (wcfg.useRegions && !plugin.getGlobalRegionManager().allows( - DefaultFlag.SNOW_FALL, event.getBlock().getLocation())) { + Flags.SNOW_FALL, event.getBlock().getLocation())) { event.setCancelled(true); return; } @@ -551,7 +552,7 @@ public void onBlockForm(BlockFormEvent event) { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onBlockSpread(BlockSpreadEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); if (cfg.activityHaltToggle) { event.setCancelled(true); @@ -566,7 +567,7 @@ public void onBlockSpread(BlockSpreadEvent event) { return; } if (wcfg.useRegions && !plugin.getGlobalRegionManager().allows( - DefaultFlag.MUSHROOMS, event.getBlock().getLocation())) { + Flags.MUSHROOMS, event.getBlock().getLocation())) { event.setCancelled(true); return; } @@ -578,7 +579,7 @@ public void onBlockSpread(BlockSpreadEvent event) { return; } if (wcfg.useRegions && !plugin.getGlobalRegionManager().allows( - DefaultFlag.GRASS_SPREAD, event.getBlock().getLocation())) { + Flags.GRASS_SPREAD, event.getBlock().getLocation())) { event.setCancelled(true); return; } @@ -592,7 +593,7 @@ public void onBlockSpread(BlockSpreadEvent event) { if (wcfg.useRegions && !plugin.getGlobalRegionManager().allows( - DefaultFlag.MYCELIUM_SPREAD, event.getBlock().getLocation())) { + Flags.MYCELIUM_SPREAD, event.getBlock().getLocation())) { event.setCancelled(true); return; } @@ -606,7 +607,7 @@ public void onBlockSpread(BlockSpreadEvent event) { if (wcfg.useRegions && !plugin.getGlobalRegionManager().allows( - DefaultFlag.VINE_GROWTH, event.getBlock().getLocation())) { + Flags.VINE_GROWTH, event.getBlock().getLocation())) { event.setCancelled(true); return; } @@ -620,7 +621,7 @@ public void onBlockSpread(BlockSpreadEvent event) { public void onBlockFade(BlockFadeEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getBlock().getWorld()); switch (event.getBlock().getTypeId()) { case BlockID.ICE: @@ -630,7 +631,7 @@ public void onBlockFade(BlockFadeEvent event) { } if (wcfg.useRegions && !plugin.getGlobalRegionManager().allows( - DefaultFlag.ICE_MELT, event.getBlock().getLocation())) { + Flags.ICE_MELT, event.getBlock().getLocation())) { event.setCancelled(true); return; } @@ -643,7 +644,7 @@ public void onBlockFade(BlockFadeEvent event) { } if (wcfg.useRegions && !plugin.getGlobalRegionManager().allows( - DefaultFlag.SNOW_MELT, event.getBlock().getLocation())) { + Flags.SNOW_MELT, event.getBlock().getLocation())) { event.setCancelled(true); return; } @@ -655,7 +656,7 @@ public void onBlockFade(BlockFadeEvent event) { return; } if (wcfg.useRegions && !plugin.getGlobalRegionManager().allows( - DefaultFlag.SOIL_DRY, event.getBlock().getLocation())) { + Flags.SOIL_DRY, event.getBlock().getLocation())) { event.setCancelled(true); return; } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardEntityListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardEntityListener.java index 6417cf47..2459868e 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardEntityListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardEntityListener.java @@ -20,12 +20,14 @@ package com.sk89q.worldguard.bukkit.listener; import com.sk89q.worldedit.blocks.BlockID; +import com.sk89q.worldguard.config.ConfigurationManager; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.bukkit.*; import com.sk89q.worldguard.bukkit.util.Entities; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.managers.RegionManager; +import com.sk89q.worldguard.protection.regions.RegionQuery; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.Block; @@ -73,7 +75,7 @@ public void onEntityInteract(EntityInteractEvent event) { Block block = event.getBlock(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(entity.getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(entity.getWorld()); if (block.getTypeId() == BlockID.SOIL) { if (/* entity instanceof Creature && // catch for any entity (not thrown for players) */ @@ -85,7 +87,7 @@ public void onEntityInteract(EntityInteractEvent event) { @EventHandler(priority = EventPriority.HIGH) public void onEntityDeath(EntityDeathEvent event) { - WorldConfiguration wcfg = plugin.getGlobalStateManager().get(event.getEntity().getWorld()); + BukkitWorldConfiguration wcfg = plugin.getGlobalStateManager().get(event.getEntity().getWorld()); if (event instanceof PlayerDeathEvent && wcfg.disableDeathMessages) { ((PlayerDeathEvent) event).setDeathMessage(""); @@ -97,7 +99,7 @@ private void onEntityDamageByBlock(EntityDamageByBlockEvent event) { DamageCause type = event.getCause(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(defender.getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(defender.getWorld()); if (defender instanceof Wolf && ((Wolf) defender).isTamed()) { if (wcfg.antiWolfDumbness && !(type == DamageCause.VOID)) { @@ -106,6 +108,7 @@ private void onEntityDamageByBlock(EntityDamageByBlockEvent event) { } } else if (defender instanceof Player) { Player player = (Player) defender; + LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player); if (wcfg.disableLavaDamage && type == DamageCause.LAVA) { event.setCancelled(true); @@ -119,7 +122,7 @@ private void onEntityDamageByBlock(EntityDamageByBlockEvent event) { } if (wcfg.teleportOnVoid && type == DamageCause.VOID) { - BukkitUtil.findFreePosition(player); + localPlayer.findFreePosition(); event.setCancelled(true); return; } @@ -132,7 +135,7 @@ private void onEntityDamageByBlock(EntityDamageByBlockEvent event) { if (type == DamageCause.BLOCK_EXPLOSION && (wcfg.disableExplosionDamage || wcfg.blockOtherExplosions || (wcfg.explosionFlagCancellation - && !plugin.getGlobalRegionManager().allows(DefaultFlag.OTHER_EXPLOSION, player.getLocation())))) { + && !plugin.getGlobalRegionManager().allows(Flags.OTHER_EXPLOSION, localPlayer.getLocation())))) { event.setCancelled(true); return; } @@ -143,7 +146,7 @@ private void onEntityDamageByBlock(EntityDamageByBlockEvent event) { if (type == DamageCause.BLOCK_EXPLOSION && (wcfg.blockOtherExplosions || (wcfg.explosionFlagCancellation - && !plugin.getGlobalRegionManager().allows(DefaultFlag.OTHER_EXPLOSION, defender.getLocation())))) { + && !plugin.getGlobalRegionManager().allows(Flags.OTHER_EXPLOSION, defender.getLocation())))) { event.setCancelled(true); return; } @@ -160,7 +163,7 @@ private void onEntityDamageByEntity(EntityDamageByEntityEvent event) { Entity attacker = event.getDamager(); Entity defender = event.getEntity(); - WorldConfiguration wcfg = plugin.getGlobalStateManager().get(defender.getWorld()); + BukkitWorldConfiguration wcfg = plugin.getGlobalStateManager().get(defender.getWorld()); if (defender instanceof ItemFrame) { if (checkItemFrameProtection(attacker, (ItemFrame) defender)) { @@ -179,7 +182,7 @@ private void onEntityDamageByEntity(EntityDamageByEntityEvent event) { // in the same way that creepers or tnt can if (wcfg.useRegions && wcfg.explosionFlagCancellation) { if (!plugin.getRegionContainer().createQuery().getApplicableRegions(defender.getLocation()) - .testState(null, DefaultFlag.OTHER_EXPLOSION)) { + .testState(null, Flags.OTHER_EXPLOSION)) { event.setCancelled(true); return; } @@ -227,13 +230,13 @@ private void onEntityDamageByEntity(EntityDamageByEntityEvent event) { if (wcfg.useRegions) { ApplicableRegionSet set = plugin.getRegionContainer().createQuery().getApplicableRegions(defender.getLocation()); - if (!set.allows(DefaultFlag.MOB_DAMAGE, localPlayer) && !(attacker instanceof Tameable)) { + if (!set.allows(Flags.MOB_DAMAGE, localPlayer) && !(attacker instanceof Tameable)) { event.setCancelled(true); return; } if (attacker instanceof Creeper) { - if (!set.allows(DefaultFlag.CREEPER_EXPLOSION, localPlayer) && wcfg.explosionFlagCancellation) { + if (!set.allows(Flags.CREEPER_EXPLOSION, localPlayer) && wcfg.explosionFlagCancellation) { event.setCancelled(true); return; } @@ -255,7 +258,7 @@ private void onEntityDamageByProjectile(EntityDamageByEntityEvent event) { } ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(defender.getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(defender.getWorld()); if (defender instanceof Player) { Player player = (Player) defender; LocalPlayer localPlayer = plugin.wrapPlayer(player); @@ -268,7 +271,7 @@ private void onEntityDamageByProjectile(EntityDamageByEntityEvent event) { return; } if (wcfg.useRegions) { - if (!plugin.getRegionContainer().createQuery().getApplicableRegions(defender.getLocation()).allows(DefaultFlag.MOB_DAMAGE, localPlayer)) { + if (!plugin.getRegionContainer().createQuery().getApplicableRegions(defender.getLocation()).allows(Flags.MOB_DAMAGE, localPlayer)) { event.setCancelled(true); return; } @@ -288,7 +291,7 @@ private void onEntityDamageByProjectile(EntityDamageByEntityEvent event) { } if (wcfg.useRegions) { RegionQuery query = plugin.getRegionContainer().createQuery(); - if (!query.testState(defender.getLocation(), (Player) defender, DefaultFlag.GHAST_FIREBALL) && wcfg.explosionFlagCancellation) { + if (!query.testState(defender.getLocation(), (Player) defender, Flags.GHAST_FIREBALL) && wcfg.explosionFlagCancellation) { event.setCancelled(true); return; } @@ -324,7 +327,7 @@ public void onEntityDamage(EntityDamageEvent event) { DamageCause type = event.getCause(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(defender.getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(defender.getWorld()); if (defender instanceof Wolf && ((Wolf) defender).isTamed()) { if (wcfg.antiWolfDumbness) { @@ -333,6 +336,7 @@ public void onEntityDamage(EntityDamageEvent event) { } } else if (defender instanceof Player) { Player player = (Player) defender; + LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player); if (type == DamageCause.WITHER) { // wither boss DoT tick @@ -344,14 +348,14 @@ public void onEntityDamage(EntityDamageEvent event) { if (wcfg.useRegions) { ApplicableRegionSet set = plugin.getRegionContainer().createQuery().getApplicableRegions(defender.getLocation()); - if (!set.allows(DefaultFlag.MOB_DAMAGE, plugin.wrapPlayer(player))) { + if (!set.allows(Flags.MOB_DAMAGE, plugin.wrapPlayer(player))) { event.setCancelled(true); return; } } } - if (type == DamageCause.DROWNING && cfg.hasAmphibiousMode(player)) { + if (type == DamageCause.DROWNING && cfg.hasAmphibiousMode(localPlayer)) { player.setRemainingAir(player.getMaximumAir()); event.setCancelled(true); return; @@ -386,7 +390,7 @@ public void onEntityDamage(EntityDamageEvent event) { } if (wcfg.teleportOnSuffocation && type == DamageCause.SUFFOCATION) { - BukkitUtil.findFreePosition(player); + localPlayer.findFreePosition(); event.setCancelled(true); return; } @@ -406,7 +410,7 @@ public void onEntityExplode(EntityExplodeEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager(); Location l = event.getLocation(); World world = l.getWorld(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); Entity ent = event.getEntity(); if (cfg.activityHaltToggle) { @@ -463,7 +467,7 @@ public void onEntityExplode(EntityExplodeEvent event) { // allow wither skull blocking since there is no dedicated flag atm if (wcfg.useRegions) { for (Block block : event.blockList()) { - if (!plugin.getRegionContainer().createQuery().getApplicableRegions(block.getLocation()).allows(DefaultFlag.GHAST_FIREBALL)) { + if (!plugin.getRegionContainer().createQuery().getApplicableRegions(block.getLocation()).allows(Flags.GHAST_FIREBALL)) { event.blockList().clear(); if (wcfg.explosionFlagCancellation) event.setCancelled(true); return; @@ -481,7 +485,7 @@ public void onEntityExplode(EntityExplodeEvent event) { } if (wcfg.useRegions) { for (Block block : event.blockList()) { - if (!plugin.getGlobalRegionManager().allows(DefaultFlag.WITHER_DAMAGE, block.getLocation())) { + if (!plugin.getGlobalRegionManager().allows(Flags.WITHER_DAMAGE, block.getLocation())) { event.blockList().clear(); event.setCancelled(true); return; @@ -497,7 +501,7 @@ public void onEntityExplode(EntityExplodeEvent event) { if (wcfg.useRegions) { RegionManager mgr = plugin.getGlobalRegionManager().get(world); for (Block block : event.blockList()) { - if (!plugin.getRegionContainer().createQuery().getApplicableRegions(block.getLocation()).allows(DefaultFlag.OTHER_EXPLOSION)) { + if (!plugin.getRegionContainer().createQuery().getApplicableRegions(block.getLocation()).allows(Flags.OTHER_EXPLOSION)) { event.blockList().clear(); if (wcfg.explosionFlagCancellation) event.setCancelled(true); return; @@ -524,7 +528,7 @@ public void onEntityExplode(EntityExplodeEvent event) { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onExplosionPrime(ExplosionPrimeEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getEntity().getWorld()); Entity ent = event.getEntity(); if (cfg.activityHaltToggle) { @@ -571,7 +575,7 @@ public void onCreatureSpawn(CreatureSpawnEvent event) { return; } - WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getEntity().getWorld()); // allow spawning of creatures from plugins if (!wcfg.blockPluginSpawning && event.getSpawnReason() == CreatureSpawnEvent.SpawnReason.CUSTOM) { @@ -601,12 +605,12 @@ public void onCreatureSpawn(CreatureSpawnEvent event) { if (wcfg.useRegions && cfg.useRegionsCreatureSpawnEvent) { ApplicableRegionSet set = plugin.getRegionContainer().createQuery().getApplicableRegions(eventLoc); - if (!set.allows(DefaultFlag.MOB_SPAWNING)) { + if (!set.allows(Flags.MOB_SPAWNING)) { event.setCancelled(true); return; } - Set entityTypes = set.getFlag(DefaultFlag.DENY_SPAWN); + Set entityTypes = set.getFlag(Flags.DENY_SPAWN); if (entityTypes != null && entityTypes.contains(entityType)) { event.setCancelled(true); return; @@ -624,7 +628,7 @@ public void onCreatureSpawn(CreatureSpawnEvent event) { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onCreatePortal(EntityCreatePortalEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getEntity().getWorld()); switch (event.getEntityType()) { case ENDER_DRAGON: @@ -636,7 +640,7 @@ public void onCreatePortal(EntityCreatePortalEvent event) { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onPigZap(PigZapEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getEntity().getWorld()); if (wcfg.disablePigZap) { event.setCancelled(true); @@ -646,7 +650,7 @@ public void onPigZap(PigZapEvent event) { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onCreeperPower(CreeperPowerEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getEntity().getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getEntity().getWorld()); if (wcfg.disableCreeperPower) { event.setCancelled(true); @@ -660,7 +664,7 @@ public void onEntityRegainHealth(EntityRegainHealthEvent event) { World world = ent.getWorld(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); if (wcfg.disableHealthRegain) { event.setCancelled(true); @@ -680,7 +684,7 @@ public void onEntityChangeBlock(EntityChangeBlockEvent event) { Location location = block.getLocation(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(ent.getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(ent.getWorld()); if (ent instanceof Enderman) { if (wcfg.disableEndermanGriefing) { event.setCancelled(true); @@ -688,7 +692,7 @@ public void onEntityChangeBlock(EntityChangeBlockEvent event) { } if (wcfg.useRegions) { - if (!plugin.getGlobalRegionManager().allows(DefaultFlag.ENDER_BUILD, location)) { + if (!plugin.getGlobalRegionManager().allows(Flags.ENDER_BUILD, location)) { event.setCancelled(true); return; } @@ -699,7 +703,7 @@ public void onEntityChangeBlock(EntityChangeBlockEvent event) { return; } if (wcfg.useRegions) { - if (!plugin.getGlobalRegionManager().allows(DefaultFlag.WITHER_DAMAGE, location)) { + if (!plugin.getGlobalRegionManager().allows(Flags.WITHER_DAMAGE, location)) { event.setCancelled(true); return; } @@ -722,13 +726,13 @@ public void onEntityChangeBlock(EntityChangeBlockEvent event) { private boolean checkItemFrameProtection(Entity attacker, ItemFrame defender) { World world = attacker.getWorld(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); if (wcfg.useRegions) { // bukkit throws this event when a player attempts to remove an item from a frame RegionManager mgr = plugin.getGlobalRegionManager().get(world); if (!(attacker instanceof Player)) { if (!plugin.getGlobalRegionManager().allows( - DefaultFlag.ENTITY_ITEM_FRAME_DESTROY, defender.getLocation())) { + Flags.ENTITY_ITEM_FRAME_DESTROY, defender.getLocation())) { return true; } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardHangingListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardHangingListener.java index 8a767f09..5a0f78b9 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardHangingListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardHangingListener.java @@ -19,10 +19,10 @@ package com.sk89q.worldguard.bukkit.listener; -import com.sk89q.worldguard.bukkit.ConfigurationManager; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; +import com.sk89q.worldguard.config.ConfigurationManager; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import org.bukkit.World; import org.bukkit.entity.Creeper; import org.bukkit.entity.Entity; @@ -70,7 +70,7 @@ public void onHangingBreak(HangingBreakEvent event) { Hanging hanging = event.getEntity(); World world = hanging.getWorld(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); if (event instanceof HangingBreakByEntityEvent) { HangingBreakByEntityEvent entityEvent = (HangingBreakByEntityEvent) event; @@ -87,7 +87,7 @@ public void onHangingBreak(HangingBreakEvent event) { event.setCancelled(true); return; } - if (wcfg.useRegions && !plugin.getGlobalRegionManager().allows(DefaultFlag.CREEPER_EXPLOSION, hanging.getLocation())) { + if (wcfg.useRegions && !plugin.getGlobalRegionManager().allows(Flags.CREEPER_EXPLOSION, hanging.getLocation())) { event.setCancelled(true); return; } @@ -98,12 +98,12 @@ public void onHangingBreak(HangingBreakEvent event) { if (hanging instanceof Painting && (wcfg.blockEntityPaintingDestroy || (wcfg.useRegions - && !plugin.getGlobalRegionManager().allows(DefaultFlag.ENTITY_PAINTING_DESTROY, hanging.getLocation())))) { + && !plugin.getGlobalRegionManager().allows(Flags.ENTITY_PAINTING_DESTROY, hanging.getLocation())))) { event.setCancelled(true); } else if (hanging instanceof ItemFrame && (wcfg.blockEntityItemFrameDestroy || (wcfg.useRegions - && !plugin.getGlobalRegionManager().allows(DefaultFlag.ENTITY_ITEM_FRAME_DESTROY, hanging.getLocation())))) { + && !plugin.getGlobalRegionManager().allows(Flags.ENTITY_ITEM_FRAME_DESTROY, hanging.getLocation())))) { event.setCancelled(true); } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardPlayerListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardPlayerListener.java index f69c6fc4..d243b68d 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardPlayerListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardPlayerListener.java @@ -22,13 +22,13 @@ import com.sk89q.worldedit.blocks.BlockID; import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.bukkit.BukkitUtil; -import com.sk89q.worldguard.bukkit.ConfigurationManager; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; +import com.sk89q.worldguard.config.ConfigurationManager; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.bukkit.event.player.ProcessPlayerEvent; import com.sk89q.worldguard.bukkit.util.Events; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; import com.sk89q.worldguard.protection.regions.ProtectedRegion; @@ -97,7 +97,7 @@ public void registerEvents() { @EventHandler public void onPlayerGameModeChange(PlayerGameModeChangeEvent event) { Player player = event.getPlayer(); - WorldConfiguration wcfg = plugin.getGlobalStateManager().get(player.getWorld()); + BukkitWorldConfiguration wcfg = plugin.getGlobalStateManager().get(player.getWorld()); Session session = plugin.getSessionManager().getIfPresent(player); if (session != null) { GameModeFlag handler = session.getHandler(GameModeFlag.class); @@ -117,7 +117,7 @@ public void onPlayerJoin(PlayerJoinEvent event) { World world = player.getWorld(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); if (cfg.activityHaltToggle) { player.sendMessage(ChatColor.YELLOW @@ -151,10 +151,10 @@ public void onPlayerJoin(PlayerJoinEvent event) { @EventHandler(ignoreCancelled = true) public void onPlayerChat(AsyncPlayerChatEvent event) { Player player = event.getPlayer(); - WorldConfiguration wcfg = plugin.getGlobalStateManager().get(player.getWorld()); + BukkitWorldConfiguration wcfg = plugin.getGlobalStateManager().get(player.getWorld()); if (wcfg.useRegions) { LocalPlayer localPlayer = plugin.wrapPlayer(player); - if (!plugin.getGlobalRegionManager().allows(DefaultFlag.SEND_CHAT, player.getLocation(), localPlayer)) { + if (!plugin.getGlobalRegionManager().allows(Flags.SEND_CHAT, player.getLocation(), localPlayer)) { player.sendMessage(ChatColor.RED + "You don't have permission to chat in this region!"); event.setCancelled(true); return; @@ -162,7 +162,7 @@ public void onPlayerChat(AsyncPlayerChatEvent event) { for (Iterator i = event.getRecipients().iterator(); i.hasNext();) { Player rPlayer = i.next(); - if (!plugin.getGlobalRegionManager().allows(DefaultFlag.RECEIVE_CHAT, rPlayer.getLocation(), plugin.wrapPlayer(rPlayer))) { + if (!plugin.getGlobalRegionManager().allows(Flags.RECEIVE_CHAT, rPlayer.getLocation(), plugin.wrapPlayer(rPlayer))) { i.remove(); } } @@ -217,7 +217,7 @@ public void onPlayerInteract(PlayerInteractEvent event) { } ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); if (wcfg.removeInfiniteStacks && !plugin.hasPermission(player, "worldguard.override.infinite-stack")) { @@ -247,7 +247,7 @@ private void handleBlockRightClick(PlayerInteractEvent event) { @Nullable ItemStack item = event.getItem(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); // Infinite stack removal if ((type == BlockID.CHEST @@ -311,7 +311,7 @@ private void handlePhysicalInteract(PlayerInteractEvent event) { World world = player.getWorld(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); if (block.getTypeId() == BlockID.SOIL && wcfg.disablePlayerCropTrampling) { event.setCancelled(true); @@ -325,13 +325,13 @@ public void onPlayerRespawn(PlayerRespawnEvent event) { Location location = player.getLocation(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(player.getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(player.getWorld()); if (wcfg.useRegions) { ApplicableRegionSet set = plugin.getRegionContainer().createQuery().getApplicableRegions(location); LocalPlayer localPlayer = plugin.wrapPlayer(player); - com.sk89q.worldedit.Location spawn = set.getFlag(DefaultFlag.SPAWN_LOC, localPlayer); + com.sk89q.worldedit.Location spawn = set.getFlag(Flags.SPAWN_LOC, localPlayer); if (spawn != null) { event.setRespawnLocation(com.sk89q.worldedit.bukkit.BukkitUtil.toLocation(spawn)); @@ -344,7 +344,7 @@ public void onItemHeldChange(PlayerItemHeldEvent event) { Player player = event.getPlayer(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(player.getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(player.getWorld()); if (wcfg.removeInfiniteStacks && !plugin.hasPermission(player, "worldguard.override.infinite-stack")) { @@ -362,7 +362,7 @@ public void onPlayerTeleport(PlayerTeleportEvent event) { World world = event.getFrom().getWorld(); Player player = event.getPlayer(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); if (wcfg.useRegions) { ApplicableRegionSet set = plugin.getRegionContainer().createQuery().getApplicableRegions(event.getTo()); @@ -378,8 +378,8 @@ public void onPlayerTeleport(PlayerTeleportEvent event) { if (event.getCause() == TeleportCause.ENDER_PEARL) { if (!plugin.getGlobalRegionManager().hasBypass(localPlayer, world) - && !(set.allows(DefaultFlag.ENDERPEARL, localPlayer) - && setFrom.allows(DefaultFlag.ENDERPEARL, localPlayer))) { + && !(set.allows(Flags.ENDERPEARL, localPlayer) + && setFrom.allows(Flags.ENDERPEARL, localPlayer))) { player.sendMessage(ChatColor.DARK_RED + "You're not allowed to go there."); event.setCancelled(true); return; @@ -388,8 +388,8 @@ public void onPlayerTeleport(PlayerTeleportEvent event) { try { if (event.getCause() == TeleportCause.CHORUS_FRUIT) { if (!plugin.getGlobalRegionManager().hasBypass(localPlayer, world)) { - boolean allowFrom = setFrom.allows(DefaultFlag.CHORUS_TELEPORT, localPlayer); - boolean allowTo = set.allows(DefaultFlag.CHORUS_TELEPORT, localPlayer); + boolean allowFrom = setFrom.allows(Flags.CHORUS_TELEPORT, localPlayer); + boolean allowTo = set.allows(Flags.CHORUS_TELEPORT, localPlayer); if (!allowFrom || !allowTo) { player.sendMessage(ChatColor.DARK_RED + "You're not allowed to teleport " + (!allowFrom ? "from here." : "there.")); @@ -408,7 +408,7 @@ public void onPlayerPortal(PlayerPortalEvent event) { return; } ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getTo().getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getTo().getWorld()); if (!wcfg.regionNetherPortalProtection) return; if (event.getCause() != TeleportCause.NETHER_PORTAL) { return; @@ -438,7 +438,7 @@ public void onPlayerPortal(PlayerPortalEvent event) { RegionManager mgr = plugin.getRegionContainer().get(event.getTo().getWorld()); if (mgr == null) return; ApplicableRegionSet set = mgr.getApplicableRegions(check); - if (!set.testState(plugin.wrapPlayer(event.getPlayer()), DefaultFlag.BUILD)) { + if (!set.testState(plugin.wrapPlayer(event.getPlayer()), Flags.BUILD)) { event.getPlayer().sendMessage(ChatColor.RED + "Destination is in a protected area."); event.setCancelled(true); return; @@ -452,13 +452,13 @@ public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { LocalPlayer localPlayer = plugin.wrapPlayer(player); World world = player.getWorld(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); if (wcfg.useRegions && !plugin.getGlobalRegionManager().hasBypass(player, world)) { ApplicableRegionSet set = plugin.getRegionContainer().createQuery().getApplicableRegions(player.getLocation()); - Set allowedCommands = set.queryValue(localPlayer, DefaultFlag.ALLOWED_CMDS); - Set blockedCommands = set.queryValue(localPlayer, DefaultFlag.BLOCKED_CMDS); + Set allowedCommands = set.queryValue(localPlayer, Flags.ALLOWED_CMDS); + Set blockedCommands = set.queryValue(localPlayer, Flags.BLOCKED_CMDS); CommandFilter test = new CommandFilter(allowedCommands, blockedCommands); if (!test.apply(event.getMessage())) { diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardVehicleListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardVehicleListener.java index 55d4eb4c..8d8dd082 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardVehicleListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardVehicleListener.java @@ -19,10 +19,10 @@ package com.sk89q.worldguard.bukkit.listener; -import com.sk89q.worldguard.bukkit.ConfigurationManager; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; +import com.sk89q.worldguard.config.ConfigurationManager; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; -import com.sk89q.worldguard.bukkit.util.Locations; +import com.sk89q.worldguard.util.Locations; import com.sk89q.worldguard.session.MoveType; import org.bukkit.World; import org.bukkit.entity.Player; @@ -59,7 +59,7 @@ public void onVehicleMove(VehicleMoveEvent event) { Player player = (Player) vehicle.getPassenger(); World world = vehicle.getWorld(); ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); if (wcfg.useRegions) { // Did we move a block? diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardWeatherListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardWeatherListener.java index cdac5460..7ea56c05 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardWeatherListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardWeatherListener.java @@ -19,11 +19,11 @@ package com.sk89q.worldguard.bukkit.listener; -import com.sk89q.worldguard.bukkit.ConfigurationManager; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.config.ConfigurationManager; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import org.bukkit.Location; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -55,7 +55,7 @@ public void registerEvents() { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onWeatherChange(WeatherChangeEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getWorld()); if (event.toWeatherState()) { if (wcfg.disableWeather) { @@ -71,7 +71,7 @@ public void onWeatherChange(WeatherChangeEvent event) { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onThunderChange(ThunderChangeEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getWorld()); if (event.toThunderState()) { if (wcfg.disableThunder) { @@ -87,7 +87,7 @@ public void onThunderChange(ThunderChangeEvent event) { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onLightningStrike(LightningStrikeEvent event) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(event.getWorld()); + BukkitWorldConfiguration wcfg = cfg.get(event.getWorld()); if (wcfg.disallowedLightningBlocks.size() > 0) { int targetId = event.getLightning().getLocation().getBlock().getTypeId(); @@ -100,7 +100,7 @@ public void onLightningStrike(LightningStrikeEvent event) { if (wcfg.useRegions) { ApplicableRegionSet set = plugin.getRegionContainer().createQuery().getApplicableRegions(loc); - if (!set.allows(DefaultFlag.LIGHTNING)) { + if (!set.allows(Flags.LIGHTNING)) { event.setCancelled(true); } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardWorldListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardWorldListener.java index cb5cb58f..1c333cf8 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardWorldListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardWorldListener.java @@ -20,8 +20,8 @@ package com.sk89q.worldguard.bukkit.listener; import com.sk89q.worldguard.bukkit.BukkitUtil; -import com.sk89q.worldguard.bukkit.ConfigurationManager; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; +import com.sk89q.worldguard.config.ConfigurationManager; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import org.bukkit.World; import org.bukkit.entity.Entity; @@ -80,15 +80,15 @@ public void onWorldLoad(WorldLoadEvent event) { /** * Initialize the settings for the specified world - * @see WorldConfiguration#alwaysRaining - * @see WorldConfiguration#disableWeather - * @see WorldConfiguration#alwaysThundering - * @see WorldConfiguration#disableThunder + * @see BukkitWorldConfiguration#alwaysRaining + * @see BukkitWorldConfiguration#disableWeather + * @see BukkitWorldConfiguration#alwaysThundering + * @see BukkitWorldConfiguration#disableThunder * @param world The specified world */ public void initWorld(World world) { ConfigurationManager cfg = plugin.getGlobalStateManager(); - WorldConfiguration wcfg = cfg.get(world); + BukkitWorldConfiguration wcfg = cfg.get(world); if (wcfg.alwaysRaining && !wcfg.disableWeather) { world.setStorm(true); } else if (wcfg.disableWeather && !wcfg.alwaysRaining) { diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldRulesListener.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldRulesListener.java index 5f799ff6..5dcb396a 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldRulesListener.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldRulesListener.java @@ -19,7 +19,7 @@ package com.sk89q.worldguard.bukkit.listener; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.bukkit.event.entity.SpawnEntityEvent; import org.bukkit.entity.EntityType; @@ -39,7 +39,7 @@ public WorldRulesListener(WorldGuardPlugin plugin) { @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onSpawnEntity(final SpawnEntityEvent event) { - WorldConfiguration config = getWorldConfig(event.getWorld()); + BukkitWorldConfiguration config = getWorldConfig(event.getWorld()); // ================================================================ // EXP_DROPS flag diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/protection/DelayedRegionOverlapAssociation.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/protection/DelayedRegionOverlapAssociation.java index 8577639b..3c409222 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/protection/DelayedRegionOverlapAssociation.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/protection/DelayedRegionOverlapAssociation.java @@ -19,7 +19,7 @@ package com.sk89q.worldguard.bukkit.protection; -import com.sk89q.worldguard.bukkit.RegionQuery; +import com.sk89q.worldguard.protection.regions.RegionQuery; import com.sk89q.worldguard.domains.Association; import com.sk89q.worldguard.protection.ApplicableRegionSet; import com.sk89q.worldguard.protection.association.RegionAssociable; diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/events/DisallowedPVPEvent.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/protection/events/DisallowedPVPEvent.java similarity index 97% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/events/DisallowedPVPEvent.java rename to worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/protection/events/DisallowedPVPEvent.java index 739deabb..312a19bb 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/events/DisallowedPVPEvent.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/protection/events/DisallowedPVPEvent.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldguard.protection.events; +package com.sk89q.worldguard.bukkit.protection.events; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/util/Materials.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/util/Materials.java index a8b8026f..7d05a2f6 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/util/Materials.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/util/Materials.java @@ -21,7 +21,7 @@ import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import org.bukkit.DyeColor; import org.bukkit.Material; import org.bukkit.entity.EntityType; @@ -761,7 +761,7 @@ public static boolean isInventoryBlock(Material material) { /** * Test whether the given material is affected by - * {@link DefaultFlag#USE}. + * {@link Flags#USE}. * *

Generally, materials that are considered by this method are those * that are not inventories but can be used.

diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/util/report/ConfigReport.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/util/report/ConfigReport.java index 934f4c37..a872f3a6 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/util/report/ConfigReport.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/bukkit/util/report/ConfigReport.java @@ -20,7 +20,7 @@ package com.sk89q.worldguard.bukkit.util.report; import com.sk89q.worldguard.blacklist.Blacklist; -import com.sk89q.worldguard.bukkit.WorldConfiguration; +import com.sk89q.worldguard.bukkit.BukkitWorldConfiguration; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.regions.ProtectedRegion; @@ -42,7 +42,7 @@ public ConfigReport(WorldGuardPlugin plugin) { append("Configuration", new ShallowObjectReport("Configuration", plugin.getGlobalStateManager())); for (World world : worlds) { - WorldConfiguration config = plugin.getGlobalStateManager().get(world); + BukkitWorldConfiguration config = plugin.getGlobalStateManager().get(world); DataReport report = new DataReport("World: " + world.getName()); report.append("UUID", world.getUID()); diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/DomainCollection.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/DomainCollection.java deleted file mode 100644 index 5359a494..00000000 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/domains/DomainCollection.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * WorldGuard, a suite of tools for Minecraft - * Copyright (C) sk89q - * Copyright (C) WorldGuard team and contributors - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldguard.domains; - -import com.sk89q.worldguard.LocalPlayer; - -import java.util.LinkedHashSet; -import java.util.Set; -import java.util.UUID; - -/** - * @deprecated not used by WorldGuard and not maintained - */ -@Deprecated -public class DomainCollection implements Domain { - - private Set domains; - - public DomainCollection() { - domains = new LinkedHashSet(); - } - - public void add(Domain domain) { - domains.add(domain); - } - - public void remove(Domain domain) { - domains.remove(domain); - } - - @Override - public int size() { - return domains.size(); - } - - @Override - public void clear() { - domains.clear(); - } - - @Override - public boolean contains(LocalPlayer player) { - for (Domain domain : domains) { - if (domain.contains(player)) { - return true; - } - } - - return false; - } - - @Override - public boolean contains(UUID uniqueId) { - for (Domain domain : domains) { - if (domain.contains(uniqueId)) { - return true; - } - } - - return false; - } - - @Override - public boolean contains(String playerName) { - for (Domain domain : domains) { - if (domain.contains(playerName)) { - return true; - } - } - - return false; - } - -} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/GlobalRegionManager.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/GlobalRegionManager.java index 9de06c1d..901e44f4 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/GlobalRegionManager.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/GlobalRegionManager.java @@ -19,25 +19,24 @@ package com.sk89q.worldguard.protection; +import static com.google.common.base.Preconditions.checkNotNull; + +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.world.World; import com.sk89q.worldguard.LocalPlayer; -import com.sk89q.worldguard.bukkit.BukkitPlayer; -import com.sk89q.worldguard.bukkit.RegionContainer; -import com.sk89q.worldguard.bukkit.RegionQuery; +import com.sk89q.worldguard.bukkit.BukkitRegionContainer; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.protection.association.RegionAssociable; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.managers.RegionManager; -import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; +import com.sk89q.worldguard.protection.regions.RegionQuery; -import javax.annotation.Nullable; import java.util.Collections; import java.util.List; -import static com.google.common.base.Preconditions.checkNotNull; +import javax.annotation.Nullable; /** * This is the legacy class for accessing region data. @@ -47,19 +46,15 @@ @Deprecated public class GlobalRegionManager { - private final WorldGuardPlugin plugin; - private final RegionContainer container; + private final BukkitRegionContainer container; /** * Create a new instance. * - * @param plugin the plugin * @param container the container */ - public GlobalRegionManager(WorldGuardPlugin plugin, RegionContainer container) { - checkNotNull(plugin); + public GlobalRegionManager(BukkitRegionContainer container) { checkNotNull(container); - this.plugin = plugin; this.container = container; } @@ -75,7 +70,7 @@ public GlobalRegionManager(WorldGuardPlugin plugin, RegionContainer container) { */ @Nullable public RegionManager get(World world) { - return container.get(world); + return container.get(BukkitAdapter.adapt(world)); } /** @@ -102,47 +97,13 @@ private RegionQuery createQuery() { * @param player the player * @param world the world * @return true if a bypass is permitted - * @deprecated use {@link RegionContainer#createQuery()} + * @deprecated use {@link BukkitRegionContainer#createQuery()} */ @Deprecated public boolean hasBypass(LocalPlayer player, World world) { return player.hasPermission("worldguard.region.bypass." + world.getName()); } - /** - * Test whether the given player has region protection bypass permission. - * - * @param player the player - * @param world the world - * @return true if a bypass is permitted - * @deprecated use {@link RegionContainer#createQuery()} - */ - @Deprecated - public boolean hasBypass(Player player, World world) { - return plugin.hasPermission(player, "worldguard.region.bypass." + world.getName()); - } - - /** - * Test whether the player can build (place, use, destroy blocks and - * entities) at the given position, considering only the build flag - * and the region's members. - * - *

This method is not an absolute test as to whether WorldGuard - * would allow or block an event because this method doesn't - * consider flags (i.e. chest-access flags when concerning a chest) or - * other modules in WorldGuard (i.e chest protection).

- * - * @param player the player - * @param block the block - * @return true if a bypass is permitted - * @deprecated use {@link RegionContainer#createQuery()} - */ - @SuppressWarnings("deprecation") - @Deprecated - public boolean canBuild(Player player, Block block) { - return canBuild(player, block.getLocation()); - } - /** * Test whether the player can build (place, use, destroy blocks and * entities) at the given position, considering only the build flag @@ -156,28 +117,14 @@ public boolean canBuild(Player player, Block block) { * @param player the player * @param location the location * @return true if a bypass is permitted - * @deprecated use {@link RegionContainer#createQuery()} + * @deprecated use {@link BukkitRegionContainer#createQuery()} */ @Deprecated - public boolean canBuild(Player player, Location location) { - return hasBypass(player, location.getWorld()) || createQuery().testState(location, player, DefaultFlag.BUILD); + public boolean canBuild(LocalPlayer player, Location location) { + return hasBypass(player, (World) location.getExtent()) || createQuery().testState(location, player, Flags.BUILD); } - /** - * Test whether the player can place blocks at the given position. - * - * @param player the player - * @param block the block - * @return true if permitted - * @deprecated the construct flag is being removed - */ - @Deprecated - @SuppressWarnings("deprecation") - public boolean canConstruct(Player player, Block block) { - return canBuild(player, block.getLocation()); - } - /** * Test whether the player can place blocks at the given position. * @@ -187,7 +134,7 @@ public boolean canConstruct(Player player, Block block) { * @deprecated the construct flag is being removed */ @Deprecated - public boolean canConstruct(Player player, Location location) { + public boolean canConstruct(LocalPlayer player, Location location) { return canBuild(player, location); } @@ -197,7 +144,7 @@ public boolean canConstruct(Player player, Location location) { * @param flag the flag * @param location the location * @return true if set to true - * @deprecated use {@link RegionContainer#createQuery()} + * @deprecated use {@link BukkitRegionContainer#createQuery()} */ @Deprecated @SuppressWarnings("deprecation") @@ -213,17 +160,14 @@ public boolean allows(StateFlag flag, Location location) { * @param location the location * @param player the actor * @return true if set to true - * @deprecated use {@link RegionContainer#createQuery()} + * @deprecated use {@link BukkitRegionContainer#createQuery()} */ @Deprecated public boolean allows(StateFlag flag, Location location, @Nullable LocalPlayer player) { if (player == null) { return StateFlag.test(createQuery().queryState(location, (RegionAssociable) null, flag)); - } else if (player instanceof BukkitPlayer) { - Player p = ((BukkitPlayer) player).getPlayer(); - return StateFlag.test(createQuery().queryState(location, p, flag)); } else { - throw new IllegalArgumentException("Can't take a non-Bukkit player"); + return StateFlag.test(createQuery().queryState(location, player, flag)); } } diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/UnsupportedIntersectionException.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/UnsupportedIntersectionException.java deleted file mode 100644 index ba2c1492..00000000 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/UnsupportedIntersectionException.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * WorldGuard, a suite of tools for Minecraft - * Copyright (C) sk89q - * Copyright (C) WorldGuard team and contributors - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldguard.protection; - -/** - * Thrown when an intersection between two different types of regions is not - * supported. - * - * @deprecated no longer utilized - */ -@Deprecated -public class UnsupportedIntersectionException extends Exception { -} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/EntityTypeFlag.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/EntityTypeFlag.java deleted file mode 100644 index 79f0d605..00000000 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/protection/flags/EntityTypeFlag.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * WorldGuard, a suite of tools for Minecraft - * Copyright (C) sk89q - * Copyright (C) WorldGuard team and contributors - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldguard.protection.flags; - -import org.bukkit.entity.EntityType; - -/** - * Stores an entity type. - */ -public class EntityTypeFlag extends EnumFlag { - - public EntityTypeFlag(String name, RegionGroup defaultGroup) { - super(name, EntityType.class, defaultGroup); - } - - public EntityTypeFlag(String name) { - super(name, EntityType.class); - } - - @Override - public EntityType detectValue(String input) { - EntityType lowMatch = null; - - for (EntityType type : EntityType.values()) { - if (type.name().equalsIgnoreCase(input.trim())) { - return type; - } - - if (type.name().toLowerCase().startsWith(input.toLowerCase().trim())) { - lowMatch = type; - } - } - - return lowMatch; - } -} diff --git a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/SessionManager.java b/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/BukkitSessionManager.java similarity index 86% rename from worldguard-legacy/src/main/java/com/sk89q/worldguard/session/SessionManager.java rename to worldguard-legacy/src/main/java/com/sk89q/worldguard/session/BukkitSessionManager.java index 97f86a60..e020c1b3 100644 --- a/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/SessionManager.java +++ b/worldguard-legacy/src/main/java/com/sk89q/worldguard/session/BukkitSessionManager.java @@ -22,11 +22,13 @@ import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; -import com.sk89q.worldguard.bukkit.BukkitUtil; +import com.sk89q.worldedit.world.World; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.bukkit.BukkitPlayer; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.session.handler.*; import com.sk89q.worldguard.session.handler.Handler.Factory; -import org.bukkit.World; +import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -49,7 +51,7 @@ * Keeps tracks of sessions and also does session-related handling * (flags, etc.). */ -public class SessionManager implements Runnable, Listener { +public class BukkitSessionManager implements SessionManager, Runnable, Listener { public static final int RUN_DELAY = 20; public static final long SESSION_LIFETIME = 10; @@ -80,7 +82,7 @@ public Session load(CacheKey key) throws Exception { * * @param plugin The plugin */ - public SessionManager(WorldGuardPlugin plugin) { + public BukkitSessionManager(WorldGuardPlugin plugin) { checkNotNull(plugin, "plugin"); this.plugin = plugin; handlers.addAll(defaultHandlers); @@ -104,7 +106,8 @@ public WorldGuardPlugin getPlugin() { * @param world The world * @return A value */ - public boolean hasBypass(Player player, World world) { + @Override + public boolean hasBypass(LocalPlayer player, World world) { return bypassCache.getUnchecked(new WorldPlayerTuple(world, player)); } @@ -112,12 +115,14 @@ public boolean hasBypass(Player player, World world) { * Re-initialize handlers and clear "last position," "last state," etc. * information for all players. */ + @Override public void resetAllStates() { - Collection players = BukkitUtil.getOnlinePlayers(); + Collection players = Bukkit.getServer().getOnlinePlayers(); for (Player player : players) { - Session session = sessions.getIfPresent(new CacheKey(player)); + BukkitPlayer bukkitPlayer = new BukkitPlayer(WorldGuardPlugin.inst(), player); + Session session = sessions.getIfPresent(new CacheKey(bukkitPlayer)); if (session != null) { - session.resetState(player); + session.resetState(bukkitPlayer); } } } @@ -128,7 +133,8 @@ public void resetAllStates() { * * @param player The player */ - public void resetState(Player player) { + @Override + public void resetState(LocalPlayer player) { checkNotNull(player, "player"); @Nullable Session session = sessions.getIfPresent(new CacheKey(player)); if (session != null) { @@ -136,9 +142,9 @@ public void resetState(Player player) { } } - private LinkedList> handlers = new LinkedList>(); + private LinkedList> handlers = new LinkedList<>(); - private static final Set> defaultHandlers = new HashSet>(); + private static final Set> defaultHandlers = new HashSet<>(); static { Factory[] factories = { HealFlag.FACTORY, @@ -160,7 +166,7 @@ public void resetState(Player player) { } /** - * Register a handler with the SessionManager. + * Register a handler with the BukkitSessionManager. * * You may specify another handler class to ensure your handler is always registered after that class. * If that class is not already registered, this method will return false. @@ -175,6 +181,7 @@ public void resetState(Player player) { * @return {@code true} (as specified by {@link Collection#add}) * {@code false} if {@param after} is not registered, or {@param factory} is null */ + @Override public boolean registerHandler(Factory factory, @Nullable Factory after) { if (factory == null) return false; WorldGuardPlugin.inst().getLogger().log(Level.INFO, "Registering session handler " @@ -201,6 +208,7 @@ public boolean registerHandler(Factory factory, @Nullable Fac * @param factory the handler factory to unregister * @return true if the handler was registered and is now unregistered, false otherwise */ + @Override public boolean unregisterHandler(Factory factory) { if (defaultHandlers.contains(factory)) { WorldGuardPlugin.inst().getLogger().log(Level.WARNING, "Someone is unregistering a default WorldGuard handler: " @@ -218,7 +226,8 @@ public boolean unregisterHandler(Factory factory) { * @param player The player * @return The new session */ - private Session createSession(Player player) { + @Override + public Session createSession(LocalPlayer player) { Session session = new Session(this); for (Factory factory : handlers) { session.register(factory.create(session)); @@ -233,8 +242,9 @@ private Session createSession(Player player) { * @param player The player * @return The session */ + @Override @Nullable - public Session getIfPresent(Player player) { + public Session getIfPresent(LocalPlayer player) { return sessions.getIfPresent(player); } @@ -249,29 +259,30 @@ public Session getIfPresent(Player player) { * @param player The player to get a session for * @return The {@code player}'s session */ - public Session get(Player player) { + @Override + public Session get(LocalPlayer player) { return sessions.getUnchecked(new CacheKey(player)); } @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { // Pre-load a session - get(event.getPlayer()); + get(new BukkitPlayer(WorldGuardPlugin.inst(), event.getPlayer())); } @Override public void run() { - for (Player player : BukkitUtil.getOnlinePlayers()) { - get(player).tick(player); + for (Player player : Bukkit.getServer().getOnlinePlayers()) { + get(new BukkitPlayer(WorldGuardPlugin.inst(), player)).tick(new BukkitPlayer(WorldGuardPlugin.inst(), player)); } } private static final class CacheKey { - private final WeakReference playerRef; + private final WeakReference playerRef; private final UUID uuid; - private CacheKey(Player player) { - playerRef = new WeakReference(player); + private CacheKey(LocalPlayer player) { + playerRef = new WeakReference<>(player); uuid = player.getUniqueId(); } diff --git a/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/ApplicableRegionSetTest.java b/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/ApplicableRegionSetTest.java index 0bd313a6..db3efff7 100644 --- a/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/ApplicableRegionSetTest.java +++ b/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/ApplicableRegionSetTest.java @@ -20,7 +20,7 @@ package com.sk89q.worldguard.protection; import com.sk89q.worldguard.LocalPlayer; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.flags.StringFlag; import com.sk89q.worldguard.protection.regions.ProtectedRegion; @@ -42,7 +42,7 @@ public void testWildernessBuild() { LocalPlayer player = mock.createPlayer(); ApplicableRegionSet set = mock.getApplicableSet(); - assertThat(set.testState(player, DefaultFlag.BUILD), is(true)); + assertThat(set.testState(player, Flags.BUILD), is(true)); } @Test @@ -54,7 +54,7 @@ public void testWildernessBuildWithGlobalRegion() { ProtectedRegion global = mock.global(); ApplicableRegionSet set = mock.getApplicableSet(); - assertThat(set.testState(player, DefaultFlag.BUILD), is(true)); + assertThat(set.testState(player, Flags.BUILD), is(true)); } @Test @@ -68,8 +68,8 @@ public void testWildernessBuildWithRegion() { region.getMembers().addPlayer(member); ApplicableRegionSet set = mock.getApplicableSet(); - assertThat(set.testState(member, DefaultFlag.BUILD), is(true)); - assertThat(set.testState(nonMember, DefaultFlag.BUILD), is(false)); + assertThat(set.testState(member, Flags.BUILD), is(true)); + assertThat(set.testState(nonMember, Flags.BUILD), is(false)); } @Test @@ -80,15 +80,15 @@ public void testWildernessFlags() { ApplicableRegionSet set = mock.getApplicableSet(); - assertThat(set.testState(player, DefaultFlag.MOB_DAMAGE), is(true)); - assertThat(set.testState(player, DefaultFlag.ENTRY), is(true)); - assertThat(set.testState(player, DefaultFlag.EXIT), is(true)); - assertThat(set.testState(player, DefaultFlag.LEAF_DECAY), is(true)); - assertThat(set.testState(player, DefaultFlag.RECEIVE_CHAT), is(true)); - assertThat(set.testState(player, DefaultFlag.SEND_CHAT), is(true)); - assertThat(set.testState(player, DefaultFlag.INVINCIBILITY), is(false)); + assertThat(set.testState(player, Flags.MOB_DAMAGE), is(true)); + assertThat(set.testState(player, Flags.ENTRY), is(true)); + assertThat(set.testState(player, Flags.EXIT), is(true)); + assertThat(set.testState(player, Flags.LEAF_DECAY), is(true)); + assertThat(set.testState(player, Flags.RECEIVE_CHAT), is(true)); + assertThat(set.testState(player, Flags.SEND_CHAT), is(true)); + assertThat(set.testState(player, Flags.INVINCIBILITY), is(false)); - assertThat(set.testState(player, DefaultFlag.BUILD), is(true)); + assertThat(set.testState(player, Flags.BUILD), is(true)); } @Test @@ -101,15 +101,15 @@ public void testWildernessFlagsWithGlobalRegion() { ApplicableRegionSet set = mock.getApplicableSet(); - assertThat(set.testState(player, DefaultFlag.MOB_DAMAGE), is(true)); - assertThat(set.testState(player, DefaultFlag.ENTRY), is(true)); - assertThat(set.testState(player, DefaultFlag.EXIT), is(true)); - assertThat(set.testState(player, DefaultFlag.LEAF_DECAY), is(true)); - assertThat(set.testState(player, DefaultFlag.RECEIVE_CHAT), is(true)); - assertThat(set.testState(player, DefaultFlag.SEND_CHAT), is(true)); - assertThat(set.testState(player, DefaultFlag.INVINCIBILITY), is(false)); + assertThat(set.testState(player, Flags.MOB_DAMAGE), is(true)); + assertThat(set.testState(player, Flags.ENTRY), is(true)); + assertThat(set.testState(player, Flags.EXIT), is(true)); + assertThat(set.testState(player, Flags.LEAF_DECAY), is(true)); + assertThat(set.testState(player, Flags.RECEIVE_CHAT), is(true)); + assertThat(set.testState(player, Flags.SEND_CHAT), is(true)); + assertThat(set.testState(player, Flags.INVINCIBILITY), is(false)); - assertThat(set.testState(player, DefaultFlag.BUILD), is(true)); + assertThat(set.testState(player, Flags.BUILD), is(true)); } @Test @@ -124,25 +124,25 @@ public void testFlagsWithRegion() { ApplicableRegionSet set = mock.getApplicableSet(); - assertThat(set.testState(member, DefaultFlag.MOB_DAMAGE), is(true)); - assertThat(set.testState(member, DefaultFlag.ENTRY), is(true)); - assertThat(set.testState(member, DefaultFlag.EXIT), is(true)); - assertThat(set.testState(member, DefaultFlag.LEAF_DECAY), is(true)); - assertThat(set.testState(member, DefaultFlag.RECEIVE_CHAT), is(true)); - assertThat(set.testState(member, DefaultFlag.SEND_CHAT), is(true)); - assertThat(set.testState(member, DefaultFlag.INVINCIBILITY), is(false)); + assertThat(set.testState(member, Flags.MOB_DAMAGE), is(true)); + assertThat(set.testState(member, Flags.ENTRY), is(true)); + assertThat(set.testState(member, Flags.EXIT), is(true)); + assertThat(set.testState(member, Flags.LEAF_DECAY), is(true)); + assertThat(set.testState(member, Flags.RECEIVE_CHAT), is(true)); + assertThat(set.testState(member, Flags.SEND_CHAT), is(true)); + assertThat(set.testState(member, Flags.INVINCIBILITY), is(false)); - assertThat(set.testState(member, DefaultFlag.BUILD), is(true)); + assertThat(set.testState(member, Flags.BUILD), is(true)); - assertThat(set.testState(nonMember, DefaultFlag.MOB_DAMAGE), is(true)); - assertThat(set.testState(nonMember, DefaultFlag.ENTRY), is(true)); - assertThat(set.testState(nonMember, DefaultFlag.EXIT), is(true)); - assertThat(set.testState(nonMember, DefaultFlag.LEAF_DECAY), is(true)); - assertThat(set.testState(nonMember, DefaultFlag.RECEIVE_CHAT), is(true)); - assertThat(set.testState(nonMember, DefaultFlag.SEND_CHAT), is(true)); - assertThat(set.testState(nonMember, DefaultFlag.INVINCIBILITY), is(false)); + assertThat(set.testState(nonMember, Flags.MOB_DAMAGE), is(true)); + assertThat(set.testState(nonMember, Flags.ENTRY), is(true)); + assertThat(set.testState(nonMember, Flags.EXIT), is(true)); + assertThat(set.testState(nonMember, Flags.LEAF_DECAY), is(true)); + assertThat(set.testState(nonMember, Flags.RECEIVE_CHAT), is(true)); + assertThat(set.testState(nonMember, Flags.SEND_CHAT), is(true)); + assertThat(set.testState(nonMember, Flags.INVINCIBILITY), is(false)); - assertThat(set.testState(nonMember, DefaultFlag.BUILD), is(false)); + assertThat(set.testState(nonMember, Flags.BUILD), is(false)); } @Test @@ -332,7 +332,7 @@ public void testBuildDenyFlag() { region = mock.add(0); region.getOwners().addPlayer(member); - region.setFlag(DefaultFlag.BUILD, StateFlag.State.DENY); + region.setFlag(Flags.BUILD, StateFlag.State.DENY); ApplicableRegionSet set = mock.getApplicableSet(); assertFalse(set.canBuild(member)); @@ -349,7 +349,7 @@ public void testBuildAllowFlag() { region = mock.add(0); region.getOwners().addPlayer(member); - region.setFlag(DefaultFlag.BUILD, StateFlag.State.ALLOW); + region.setFlag(Flags.BUILD, StateFlag.State.ALLOW); ApplicableRegionSet set = mock.getApplicableSet(); assertTrue(set.canBuild(member)); @@ -366,10 +366,10 @@ public void testHigherPriorityOverrideBuildDenyFlag() { region = mock.add(0); region.getOwners().addPlayer(member); - region.setFlag(DefaultFlag.BUILD, StateFlag.State.DENY); + region.setFlag(Flags.BUILD, StateFlag.State.DENY); region = mock.add(1); - region.setFlag(DefaultFlag.BUILD, StateFlag.State.ALLOW); + region.setFlag(Flags.BUILD, StateFlag.State.ALLOW); ApplicableRegionSet set = mock.getApplicableSet(); assertTrue(set.canBuild(member)); @@ -386,7 +386,7 @@ public void testHigherPriorityUnsetBuildDenyFlag() { region = mock.add(0); region.getOwners().addPlayer(member); - region.setFlag(DefaultFlag.BUILD, StateFlag.State.DENY); + region.setFlag(Flags.BUILD, StateFlag.State.DENY); region = mock.add(1); @@ -404,7 +404,7 @@ public void testPriorityDisjointBuildDenyFlagAndMembership() { LocalPlayer nonMember = mock.createPlayer(); region = mock.add(0); - region.setFlag(DefaultFlag.BUILD, StateFlag.State.DENY); + region.setFlag(Flags.BUILD, StateFlag.State.DENY); region = mock.add(1); region.getOwners().addPlayer(member); @@ -423,7 +423,7 @@ public void testPriorityDisjointBuildDenyFlagAndRegion() { LocalPlayer nonMember = mock.createPlayer(); region = mock.add(0); - region.setFlag(DefaultFlag.BUILD, StateFlag.State.DENY); + region.setFlag(Flags.BUILD, StateFlag.State.DENY); region = mock.add(1); @@ -444,7 +444,7 @@ public void testPriorityDisjointMembershipAndBuildDenyFlag() { region.getOwners().addPlayer(member); region = mock.add(1); - region.setFlag(DefaultFlag.BUILD, StateFlag.State.DENY); + region.setFlag(Flags.BUILD, StateFlag.State.DENY); ApplicableRegionSet set = mock.getApplicableSet(); assertFalse(set.canBuild(member)); @@ -483,7 +483,7 @@ public void testGlobalRegionBuildFlagAllow() { ProtectedRegion region; region = mock.global(); - region.setFlag(DefaultFlag.BUILD, StateFlag.State.ALLOW); + region.setFlag(Flags.BUILD, StateFlag.State.ALLOW); LocalPlayer member = mock.createPlayer(); LocalPlayer nonMember = mock.createPlayer(); @@ -499,7 +499,7 @@ public void testGlobalRegionBuildFlagDeny() { ProtectedRegion region; region = mock.global(); - region.setFlag(DefaultFlag.BUILD, StateFlag.State.DENY); + region.setFlag(Flags.BUILD, StateFlag.State.DENY); LocalPlayer member = mock.createPlayer(); LocalPlayer nonMember = mock.createPlayer(); @@ -518,7 +518,7 @@ public void testGlobalRegionBuildFlagAllowWithRegion() { LocalPlayer nonMember = mock.createPlayer(); region = mock.global(); - region.setFlag(DefaultFlag.BUILD, StateFlag.State.ALLOW); + region.setFlag(Flags.BUILD, StateFlag.State.ALLOW); region = mock.add(0); region.getOwners().addPlayer(member); @@ -537,7 +537,7 @@ public void testGlobalRegionBuildFlagDenyWithRegion() { LocalPlayer nonMember = mock.createPlayer(); region = mock.global(); - region.setFlag(DefaultFlag.BUILD, StateFlag.State.DENY); + region.setFlag(Flags.BUILD, StateFlag.State.DENY); region = mock.add(0); region.getOwners().addPlayer(member); @@ -572,7 +572,7 @@ public void testGlobalRegionHavingOwnershipBuildFlagAllow() { LocalPlayer nonMember = mock.createPlayer(); region = mock.global(); - region.setFlag(DefaultFlag.BUILD, StateFlag.State.ALLOW); + region.setFlag(Flags.BUILD, StateFlag.State.ALLOW); region.getOwners().addPlayer(member); ApplicableRegionSet set = mock.getApplicableSet(); @@ -589,7 +589,7 @@ public void testGlobalRegionHavingOwnershipBuildFlagDeny() { LocalPlayer nonMember = mock.createPlayer(); region = mock.global(); - region.setFlag(DefaultFlag.BUILD, StateFlag.State.DENY); + region.setFlag(Flags.BUILD, StateFlag.State.DENY); region.getOwners().addPlayer(member); ApplicableRegionSet set = mock.getApplicableSet(); @@ -608,21 +608,21 @@ public void testGlobalRegionCommandBlacklistWithRegionWhitelist() { Set blocked = new HashSet(); blocked.add("/deny"); blocked.add("/strange"); - region.setFlag(DefaultFlag.BLOCKED_CMDS, blocked); + region.setFlag(Flags.BLOCKED_CMDS, blocked); region = mock.add(0); Set allowed = new HashSet(); allowed.add("/permit"); allowed.add("/strange"); - region.setFlag(DefaultFlag.ALLOWED_CMDS, allowed); + region.setFlag(Flags.ALLOWED_CMDS, allowed); ApplicableRegionSet set; CommandFilter test; set = mock.getApplicableSet(); test = new CommandFilter( - set.getFlag(DefaultFlag.ALLOWED_CMDS, nonMember), - set.getFlag(DefaultFlag.BLOCKED_CMDS, nonMember)); + set.getFlag(Flags.ALLOWED_CMDS, nonMember), + set.getFlag(Flags.BLOCKED_CMDS, nonMember)); assertThat(test.apply("/permit"), is(true)); assertThat(test.apply("/strange"), is(true)); assertThat(test.apply("/other"), is(false)); @@ -630,8 +630,8 @@ public void testGlobalRegionCommandBlacklistWithRegionWhitelist() { set = mock.getApplicableSetInWilderness(); test = new CommandFilter( - set.getFlag(DefaultFlag.ALLOWED_CMDS, nonMember), - set.getFlag(DefaultFlag.BLOCKED_CMDS, nonMember)); + set.getFlag(Flags.ALLOWED_CMDS, nonMember), + set.getFlag(Flags.BLOCKED_CMDS, nonMember)); assertThat(test.apply("/permit"), is(true)); assertThat(test.apply("/strange"), is(false)); assertThat(test.apply("/other"), is(true)); diff --git a/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/FlagValueCalculatorTest.java b/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/FlagValueCalculatorTest.java index daaf21a6..389c9387 100644 --- a/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/FlagValueCalculatorTest.java +++ b/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/FlagValueCalculatorTest.java @@ -21,7 +21,7 @@ import com.sk89q.worldguard.LocalPlayer; import com.sk89q.worldguard.protection.FlagValueCalculator.Result; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.RegionGroup; import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.flags.StateFlag.State; @@ -91,10 +91,10 @@ public void testGetMembershipPassthroughRegions() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion region = mock.add(0); - region.setFlag(DefaultFlag.PASSTHROUGH, State.ALLOW); + region.setFlag(Flags.PASSTHROUGH, State.ALLOW); region = mock.add(0); - region.setFlag(DefaultFlag.PASSTHROUGH, State.ALLOW); + region.setFlag(Flags.PASSTHROUGH, State.ALLOW); LocalPlayer player = mock.createPlayer(); @@ -107,7 +107,7 @@ public void testGetMembershipPassthroughAndRegion() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion region = mock.add(0); - region.setFlag(DefaultFlag.PASSTHROUGH, State.ALLOW); + region.setFlag(Flags.PASSTHROUGH, State.ALLOW); region = mock.add(0); @@ -122,7 +122,7 @@ public void testGetMembershipPassthroughAndRegionMemberOf() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion region = mock.add(0); - region.setFlag(DefaultFlag.PASSTHROUGH, State.ALLOW); + region.setFlag(Flags.PASSTHROUGH, State.ALLOW); region = mock.add(0); @@ -138,7 +138,7 @@ public void testGetMembershipPassthroughAndRegionMemberOfAndAnotherNot() throws MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion region = mock.add(0); - region.setFlag(DefaultFlag.PASSTHROUGH, State.ALLOW); + region.setFlag(Flags.PASSTHROUGH, State.ALLOW); region = mock.add(0); @@ -162,7 +162,7 @@ public void testGetMembershipPassthroughAndRegionMemberOfAndAnotherNotWithHigher MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion region = mock.add(0); - region.setFlag(DefaultFlag.PASSTHROUGH, State.ALLOW); + region.setFlag(Flags.PASSTHROUGH, State.ALLOW); region = mock.add(0); @@ -180,7 +180,7 @@ public void testGetMembershipPassthroughAndRegionMemberOfWithHigherPriorityAndAn MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion region = mock.add(0); - region.setFlag(DefaultFlag.PASSTHROUGH, State.ALLOW); + region.setFlag(Flags.PASSTHROUGH, State.ALLOW); region = mock.add(10); @@ -198,7 +198,7 @@ public void testGetMembershipPassthroughAndRegionMemberOfWithAnotherParent() thr MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion passthrough = mock.add(0); - passthrough.setFlag(DefaultFlag.PASSTHROUGH, State.ALLOW); + passthrough.setFlag(Flags.PASSTHROUGH, State.ALLOW); ProtectedRegion parent = mock.add(0); @@ -217,7 +217,7 @@ public void testGetMembershipPassthroughAndRegionMemberOfWithAnotherChild() thro MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion passthrough = mock.add(0); - passthrough.setFlag(DefaultFlag.PASSTHROUGH, State.ALLOW); + passthrough.setFlag(Flags.PASSTHROUGH, State.ALLOW); ProtectedRegion parent = mock.add(0); @@ -236,7 +236,7 @@ public void testGetMembershipPassthroughAndRegionMemberOfWithAnotherChildAndAnot MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion passthrough = mock.add(0); - passthrough.setFlag(DefaultFlag.PASSTHROUGH, State.ALLOW); + passthrough.setFlag(Flags.PASSTHROUGH, State.ALLOW); ProtectedRegion parent = mock.add(0); @@ -257,7 +257,7 @@ public void testGetMembershipThirdPriorityLower() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion passthrough = mock.add(0); - passthrough.setFlag(DefaultFlag.PASSTHROUGH, State.ALLOW); + passthrough.setFlag(Flags.PASSTHROUGH, State.ALLOW); ProtectedRegion parent = mock.add(0); @@ -603,7 +603,7 @@ public void testQueryValueBuildFlagWilderness() throws Exception { LocalPlayer nonMember = mock.createPlayer(); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is(State.ALLOW)); } @Test @@ -615,7 +615,7 @@ public void testQueryValueBuildFlagWildernessAndGlobalRegion() throws Exception ProtectedRegion global = mock.global(); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is(State.ALLOW)); } @Test @@ -625,10 +625,10 @@ public void testQueryValueBuildFlagWildernessAndGlobalRegionDeny() throws Except LocalPlayer nonMember = mock.createPlayer(); ProtectedRegion global = mock.global(); - global.setFlag(DefaultFlag.BUILD, State.DENY); + global.setFlag(Flags.BUILD, State.DENY); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is(State.DENY)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is(State.DENY)); } @Test @@ -638,10 +638,10 @@ public void testQueryValueBuildFlagWildernessAndGlobalRegionAllow() throws Excep LocalPlayer nonMember = mock.createPlayer(); ProtectedRegion global = mock.global(); - global.setFlag(DefaultFlag.BUILD, State.ALLOW); + global.setFlag(Flags.BUILD, State.ALLOW); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is(State.ALLOW)); } @Test @@ -655,8 +655,8 @@ public void testQueryValueBuildFlagWildernessAndGlobalRegionMembership() throws global.getMembers().addPlayer(member); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(member, DefaultFlag.BUILD), is(State.ALLOW)); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is((State) null)); + assertThat(result.queryValue(member, Flags.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is((State) null)); } @Test @@ -668,11 +668,11 @@ public void testQueryValueBuildFlagWildernessAndGlobalRegionMembershipAndDeny() ProtectedRegion global = mock.global(); global.getMembers().addPlayer(member); - global.setFlag(DefaultFlag.BUILD, State.DENY); + global.setFlag(Flags.BUILD, State.DENY); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(member, DefaultFlag.BUILD), is(State.DENY)); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is(State.DENY)); + assertThat(result.queryValue(member, Flags.BUILD), is(State.DENY)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is(State.DENY)); } @Test @@ -684,13 +684,13 @@ public void testQueryValueBuildFlagWildernessAndGlobalRegionMembershipAndAllow() ProtectedRegion global = mock.global(); global.getMembers().addPlayer(member); - global.setFlag(DefaultFlag.BUILD, State.ALLOW); + global.setFlag(Flags.BUILD, State.ALLOW); // Cannot set ALLOW on BUILD FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(member, DefaultFlag.BUILD), is(State.ALLOW)); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is((State) null)); + assertThat(result.queryValue(member, Flags.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is((State) null)); } @Test @@ -704,8 +704,8 @@ public void testQueryValueBuildFlagRegion() throws Exception { region.getMembers().addPlayer(member); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(member, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(member, Flags.BUILD), is(State.ALLOW)); } @Test @@ -724,9 +724,9 @@ public void testQueryValueBuildFlagRegionsOverlapping() throws Exception { region.getMembers().addPlayer(memberBoth); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberOne, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberBoth, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberOne, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberBoth, Flags.BUILD), is(State.ALLOW)); } @Test @@ -746,9 +746,9 @@ public void testQueryValueBuildFlagRegionsOverlappingDifferingPriority() throws region.getMembers().addPlayer(memberBoth); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberOne, DefaultFlag.BUILD), is(State.ALLOW)); - assertThat(result.queryValue(memberBoth, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberOne, Flags.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(memberBoth, Flags.BUILD), is(State.ALLOW)); } @Test @@ -768,9 +768,9 @@ public void testQueryValueBuildFlagRegionsOverlappingInheritanceFromParent() thr region.setParent(parent); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberOne, DefaultFlag.BUILD), is(State.ALLOW)); - assertThat(result.queryValue(memberBoth, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberOne, Flags.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(memberBoth, Flags.BUILD), is(State.ALLOW)); } @Test @@ -790,9 +790,9 @@ public void testQueryValueBuildFlagRegionsOverlappingInheritanceFromChild() thro region.setParent(parent); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberOne, DefaultFlag.BUILD), is(State.ALLOW)); - assertThat(result.queryValue(memberBoth, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberOne, Flags.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(memberBoth, Flags.BUILD), is(State.ALLOW)); } @Test @@ -814,9 +814,9 @@ public void testQueryValueBuildFlagRegionsOverlappingInheritanceFromChildAndPrio ProtectedRegion priority = mock.add(10); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberOne, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberBoth, DefaultFlag.BUILD), is((State) null)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberOne, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberBoth, Flags.BUILD), is((State) null)); } @Test @@ -836,12 +836,12 @@ public void testQueryValueBuildFlagRegionsOverlappingInheritanceFromChildAndPrio region.setParent(parent); ProtectedRegion priority = mock.add(10); - priority.setFlag(DefaultFlag.PASSTHROUGH, State.ALLOW); + priority.setFlag(Flags.PASSTHROUGH, State.ALLOW); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberOne, DefaultFlag.BUILD), is(State.ALLOW)); - assertThat(result.queryValue(memberBoth, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberOne, Flags.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(memberBoth, Flags.BUILD), is(State.ALLOW)); } @Test @@ -862,9 +862,9 @@ public void testQueryValueBuildFlagRegionsOverlappingAndGlobalRegion() throws Ex region.getMembers().addPlayer(memberBoth); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberOne, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberBoth, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberOne, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberBoth, Flags.BUILD), is(State.ALLOW)); } @Test @@ -876,7 +876,7 @@ public void testQueryValueBuildFlagRegionsOverlappingAndGlobalRegionDenyRegionOv LocalPlayer memberBoth = mock.createPlayer(); ProtectedRegion global = mock.global(); - global.setFlag(DefaultFlag.BUILD, State.DENY); + global.setFlag(Flags.BUILD, State.DENY); ProtectedRegion region = mock.add(0); region.getMembers().addPlayer(memberOne); @@ -884,12 +884,12 @@ public void testQueryValueBuildFlagRegionsOverlappingAndGlobalRegionDenyRegionOv region = mock.add(0); region.getMembers().addPlayer(memberBoth); - region.setFlag(DefaultFlag.BUILD, State.ALLOW); + region.setFlag(Flags.BUILD, State.ALLOW); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is(State.ALLOW)); - assertThat(result.queryValue(memberOne, DefaultFlag.BUILD), is(State.ALLOW)); - assertThat(result.queryValue(memberBoth, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(memberOne, Flags.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(memberBoth, Flags.BUILD), is(State.ALLOW)); } @Test @@ -901,21 +901,21 @@ public void testQueryValueBuildFlagRegionsOverlappingAndGlobalRegionDenyRegionOv LocalPlayer memberBoth = mock.createPlayer(); ProtectedRegion global = mock.global(); - global.setFlag(DefaultFlag.BUILD, State.DENY); + global.setFlag(Flags.BUILD, State.DENY); ProtectedRegion region = mock.add(0); region.getMembers().addPlayer(memberOne); region.getMembers().addPlayer(memberBoth); - region.setFlag(DefaultFlag.BUILD, State.DENY); + region.setFlag(Flags.BUILD, State.DENY); region = mock.add(0); region.getMembers().addPlayer(memberBoth); - region.setFlag(DefaultFlag.BUILD, State.ALLOW); + region.setFlag(Flags.BUILD, State.ALLOW); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is(State.DENY)); - assertThat(result.queryValue(memberOne, DefaultFlag.BUILD), is(State.DENY)); - assertThat(result.queryValue(memberBoth, DefaultFlag.BUILD), is(State.DENY)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is(State.DENY)); + assertThat(result.queryValue(memberOne, Flags.BUILD), is(State.DENY)); + assertThat(result.queryValue(memberBoth, Flags.BUILD), is(State.DENY)); } @Test @@ -927,7 +927,7 @@ public void testQueryValueBuildFlagRegionsOverlappingAndGlobalRegionAllow() thro LocalPlayer memberBoth = mock.createPlayer(); ProtectedRegion global = mock.global(); - global.setFlag(DefaultFlag.BUILD, State.ALLOW); + global.setFlag(Flags.BUILD, State.ALLOW); ProtectedRegion region = mock.add(0); region.getMembers().addPlayer(memberOne); @@ -939,9 +939,9 @@ public void testQueryValueBuildFlagRegionsOverlappingAndGlobalRegionAllow() thro // Disable setting ALLOW for safety reasons FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberOne, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberBoth, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberOne, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberBoth, Flags.BUILD), is(State.ALLOW)); } @Test @@ -964,10 +964,10 @@ public void testQueryValueBuildFlagRegionsOverlappingAndGlobalRegionMembership() region.getMembers().addPlayer(memberBoth); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(globalMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberOne, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberBoth, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(globalMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberOne, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberBoth, Flags.BUILD), is(State.ALLOW)); } @Test @@ -981,7 +981,7 @@ public void testQueryValueBuildFlagRegionsOverlappingAndGlobalRegionMembershipAn ProtectedRegion global = mock.global(); global.getMembers().addPlayer(globalMember); - global.setFlag(DefaultFlag.BUILD, State.DENY); + global.setFlag(Flags.BUILD, State.DENY); ProtectedRegion region = mock.add(0); region.getMembers().addPlayer(memberOne); @@ -992,10 +992,10 @@ public void testQueryValueBuildFlagRegionsOverlappingAndGlobalRegionMembershipAn FlagValueCalculator result = mock.getFlagCalculator(); // Inconsistent due to legacy reasons - assertThat(result.queryValue(globalMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberOne, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberBoth, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(globalMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberOne, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberBoth, Flags.BUILD), is(State.ALLOW)); } @Test @@ -1009,7 +1009,7 @@ public void testQueryValueBuildFlagRegionsOverlappingAndGlobalRegionMembershipAn ProtectedRegion global = mock.global(); global.getMembers().addPlayer(globalMember); - global.setFlag(DefaultFlag.BUILD, State.ALLOW); + global.setFlag(Flags.BUILD, State.ALLOW); ProtectedRegion region = mock.add(0); region.getMembers().addPlayer(memberOne); @@ -1019,10 +1019,10 @@ public void testQueryValueBuildFlagRegionsOverlappingAndGlobalRegionMembershipAn region.getMembers().addPlayer(memberBoth); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.queryValue(globalMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(nonMember, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberOne, DefaultFlag.BUILD), is((State) null)); - assertThat(result.queryValue(memberBoth, DefaultFlag.BUILD), is(State.ALLOW)); + assertThat(result.queryValue(globalMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(nonMember, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberOne, Flags.BUILD), is((State) null)); + assertThat(result.queryValue(memberBoth, Flags.BUILD), is(State.ALLOW)); } // ======================================================================== @@ -1939,7 +1939,7 @@ public void testGetEffectiveFlagGlobalRegionBuild() throws Exception { ProtectedRegion global = mock.global(); FlagValueCalculator result = mock.getFlagCalculator(); - assertThat(result.getEffectiveFlag(global, DefaultFlag.BUILD, null), equalTo(null)); + assertThat(result.getEffectiveFlag(global, Flags.BUILD, null), equalTo(null)); } @Test @@ -1947,11 +1947,11 @@ public void testGetEffectiveFlagGlobalRegionBuildDeny() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion global = mock.global(); - global.setFlag(DefaultFlag.BUILD, State.DENY); + global.setFlag(Flags.BUILD, State.DENY); FlagValueCalculator result = mock.getFlagCalculator(); // Cannot let users override BUILD on GLOBAL - assertThat(result.getEffectiveFlag(global, DefaultFlag.BUILD, null), equalTo(State.DENY)); + assertThat(result.getEffectiveFlag(global, Flags.BUILD, null), equalTo(State.DENY)); } @Test @@ -1959,10 +1959,10 @@ public void testGetEffectiveFlagGlobalRegionBuildAllow() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion global = mock.global(); - global.setFlag(DefaultFlag.BUILD, State.ALLOW); + global.setFlag(Flags.BUILD, State.ALLOW); FlagValueCalculator result = mock.getFlagCalculator(); // Cannot let users override BUILD on GLOBAL - assertThat(result.getEffectiveFlag(global, DefaultFlag.BUILD, null), equalTo(null)); + assertThat(result.getEffectiveFlag(global, Flags.BUILD, null), equalTo(null)); } } \ No newline at end of file diff --git a/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/RegionEntryExitTest.java b/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/RegionEntryExitTest.java index 7273d015..0b38be6b 100644 --- a/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/RegionEntryExitTest.java +++ b/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/RegionEntryExitTest.java @@ -23,7 +23,7 @@ import com.sk89q.worldedit.Vector; import com.sk89q.worldguard.TestPlayer; import com.sk89q.worldguard.domains.DefaultDomain; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.RegionGroup; import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; @@ -57,7 +57,6 @@ public abstract class RegionEntryExitTest { protected FlagRegistry getFlagRegistry() { FlagRegistry registry = new SimpleFlagRegistry(); - registry.registerAll(DefaultFlag.getDefaultFlags()); return registry; } @@ -102,8 +101,8 @@ void setUpEntryRegion() { // this is the way it's supposed to work // whatever the group flag is set to is the group that the flag APPLIES to // in this case, non members (esskay) should be DENIED entry - entryRegion.setFlag(DefaultFlag.ENTRY, StateFlag.State.DENY); - entryRegion.setFlag(DefaultFlag.ENTRY.getRegionGroupFlag(), RegionGroup.NON_MEMBERS); + entryRegion.setFlag(Flags.ENTRY, StateFlag.State.DENY); + entryRegion.setFlag(Flags.ENTRY.getRegionGroupFlag(), RegionGroup.NON_MEMBERS); } void setUpExitRegion() throws Exception { @@ -117,8 +116,8 @@ void setUpExitRegion() throws Exception { entryRegion = region; // same as above - entryRegion.setFlag(DefaultFlag.EXIT, StateFlag.State.DENY); - entryRegion.setFlag(DefaultFlag.EXIT.getRegionGroupFlag(), RegionGroup.NON_OWNERS); + entryRegion.setFlag(Flags.EXIT, StateFlag.State.DENY); + entryRegion.setFlag(Flags.EXIT.getRegionGroupFlag(), RegionGroup.NON_OWNERS); } @Test @@ -129,11 +128,11 @@ public void testEntry() throws Exception { // ProtectedRegion rg = appl.iterator().next(); // System.out.println("rg " + rg.getId()); // System.out.println("mem " + rg.getMembers().toGroupsString()); -// System.out.println("flag " + appl.getFlag(DefaultFlag.ENTRY)); -// System.out.println("grp " + appl.getFlag(DefaultFlag.ENTRY.getRegionGroupFlag())); +// System.out.println("flag " + appl.getFlag(Flags.ENTRY)); +// System.out.println("grp " + appl.getFlag(Flags.ENTRY.getRegionGroupFlag())); // System.out.println("==="); - assertTrue("Allowed Entry", appl.allows(DefaultFlag.ENTRY, vipPlayer)); - assertFalse("Forbidden Entry", appl.allows(DefaultFlag.ENTRY, builderPlayer)); + assertTrue("Allowed Entry", appl.allows(Flags.ENTRY, vipPlayer)); + assertFalse("Forbidden Entry", appl.allows(Flags.ENTRY, builderPlayer)); } @Test @@ -144,11 +143,11 @@ public void testExit() throws Exception { // ProtectedRegion rg = appl.iterator().next(); // System.out.println("rg " + rg.getId()); // System.out.println("own " + rg.getOwners().toGroupsString()); -// System.out.println("flag " + appl.getFlag(DefaultFlag.EXIT)); -// System.out.println("grp " + appl.getFlag(DefaultFlag.EXIT.getRegionGroupFlag())); +// System.out.println("flag " + appl.getFlag(Flags.EXIT)); +// System.out.println("grp " + appl.getFlag(Flags.EXIT.getRegionGroupFlag())); // System.out.println("==="); - assertTrue("Allowed Exit", appl.allows(DefaultFlag.EXIT, builderPlayer)); - assertFalse("Forbidden Exit", appl.allows(DefaultFlag.EXIT, vipPlayer)); + assertTrue("Allowed Exit", appl.allows(Flags.EXIT, builderPlayer)); + assertFalse("Forbidden Exit", appl.allows(Flags.EXIT, vipPlayer)); } } diff --git a/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/RegionOverlapTest.java b/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/RegionOverlapTest.java index a1ac185c..02dc062a 100644 --- a/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/RegionOverlapTest.java +++ b/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/RegionOverlapTest.java @@ -24,7 +24,7 @@ import com.sk89q.worldedit.Vector; import com.sk89q.worldguard.TestPlayer; import com.sk89q.worldguard.domains.DefaultDomain; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; import com.sk89q.worldguard.protection.flags.registry.SimpleFlagRegistry; @@ -62,7 +62,7 @@ public abstract class RegionOverlapTest { protected FlagRegistry getFlagRegistry() { FlagRegistry registry = new SimpleFlagRegistry(); - registry.registerAll(DefaultFlag.getDefaultFlags()); + registry.registerAll(Flags.getDefaultFlags()); return registry; } @@ -123,14 +123,14 @@ void setUpFountainRegion() throws Exception { fountain = region; fountain.setParent(courtyard); - fountain.setFlag(DefaultFlag.FIRE_SPREAD, StateFlag.State.DENY); + fountain.setFlag(Flags.FIRE_SPREAD, StateFlag.State.DENY); } void setUpNoFireRegion() throws Exception { ProtectedRegion region = new ProtectedCuboidRegion(NO_FIRE_ID, new BlockVector(100, 100, 100), new BlockVector(200, 200, 200)); manager.addRegion(region); - region.setFlag(DefaultFlag.FIRE_SPREAD, StateFlag.State.DENY); + region.setFlag(Flags.FIRE_SPREAD, StateFlag.State.DENY); } @Test @@ -139,17 +139,17 @@ public void testNonBuildFlag() { // Outside appl = manager.getApplicableRegions(outside); - assertTrue(appl.allows(DefaultFlag.FIRE_SPREAD)); + assertTrue(appl.allows(Flags.FIRE_SPREAD)); // Inside courtyard appl = manager.getApplicableRegions(inCourtyard); - assertTrue(appl.allows(DefaultFlag.FIRE_SPREAD)); + assertTrue(appl.allows(Flags.FIRE_SPREAD)); // Inside fountain appl = manager.getApplicableRegions(inFountain); - assertFalse(appl.allows(DefaultFlag.FIRE_SPREAD)); + assertFalse(appl.allows(Flags.FIRE_SPREAD)); // Inside no fire zone appl = manager.getApplicableRegions(inNoFire); - assertFalse(appl.allows(DefaultFlag.FIRE_SPREAD)); + assertFalse(appl.allows(Flags.FIRE_SPREAD)); } @Test diff --git a/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/RegionPriorityTest.java b/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/RegionPriorityTest.java index 77d62a60..4ec669d5 100644 --- a/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/RegionPriorityTest.java +++ b/worldguard-legacy/src/test/java/com/sk89q/worldguard/protection/RegionPriorityTest.java @@ -24,7 +24,7 @@ import com.sk89q.worldedit.Vector; import com.sk89q.worldguard.TestPlayer; import com.sk89q.worldguard.domains.DefaultDomain; -import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.Flags; import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.flags.registry.FlagRegistry; import com.sk89q.worldguard.protection.flags.registry.SimpleFlagRegistry; @@ -60,7 +60,7 @@ public abstract class RegionPriorityTest { protected FlagRegistry getFlagRegistry() { FlagRegistry registry = new SimpleFlagRegistry(); - registry.registerAll(DefaultFlag.getDefaultFlags()); + registry.registerAll(Flags.getDefaultFlags()); return registry; } @@ -107,7 +107,7 @@ void setUpCourtyardRegion() { manager.addRegion(region); courtyard = region; - courtyard.setFlag(DefaultFlag.MOB_SPAWNING, StateFlag.State.DENY); + courtyard.setFlag(Flags.MOB_SPAWNING, StateFlag.State.DENY); } void setUpFountainRegion() throws Exception { @@ -121,8 +121,8 @@ void setUpFountainRegion() throws Exception { fountain = region; fountain.setParent(courtyard); - fountain.setFlag(DefaultFlag.FIRE_SPREAD, StateFlag.State.DENY); - fountain.setFlag(DefaultFlag.MOB_SPAWNING, StateFlag.State.ALLOW); + fountain.setFlag(Flags.FIRE_SPREAD, StateFlag.State.DENY); + fountain.setFlag(Flags.MOB_SPAWNING, StateFlag.State.ALLOW); } @Test @@ -133,11 +133,11 @@ public void testNoPriorities() throws Exception { fountain.setPriority(0); appl = manager.getApplicableRegions(inCourtyard); - assertTrue(appl.allows(DefaultFlag.FIRE_SPREAD)); - assertFalse(appl.allows(DefaultFlag.MOB_SPAWNING)); + assertTrue(appl.allows(Flags.FIRE_SPREAD)); + assertFalse(appl.allows(Flags.MOB_SPAWNING)); appl = manager.getApplicableRegions(inFountain); - assertFalse(appl.allows(DefaultFlag.FIRE_SPREAD)); - assertTrue(appl.allows(DefaultFlag.MOB_SPAWNING)); + assertFalse(appl.allows(Flags.FIRE_SPREAD)); + assertTrue(appl.allows(Flags.MOB_SPAWNING)); } @Test @@ -148,9 +148,9 @@ public void testPriorities() throws Exception { fountain.setPriority(0); appl = manager.getApplicableRegions(inCourtyard); - assertTrue(appl.allows(DefaultFlag.FIRE_SPREAD)); + assertTrue(appl.allows(Flags.FIRE_SPREAD)); appl = manager.getApplicableRegions(inFountain); - assertFalse(appl.allows(DefaultFlag.FIRE_SPREAD)); + assertFalse(appl.allows(Flags.FIRE_SPREAD)); } @Test @@ -161,8 +161,8 @@ public void testPriorities2() throws Exception { fountain.setPriority(5); appl = manager.getApplicableRegions(inCourtyard); - assertFalse(appl.allows(DefaultFlag.MOB_SPAWNING)); + assertFalse(appl.allows(Flags.MOB_SPAWNING)); appl = manager.getApplicableRegions(inFountain); - assertTrue(appl.allows(DefaultFlag.MOB_SPAWNING)); + assertTrue(appl.allows(Flags.MOB_SPAWNING)); } }