diff --git a/build.gradle.kts b/build.gradle.kts index 84c5585..9106479 100755 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -23,10 +23,10 @@ repositories { dependencies { compileOnly("org.projectlombok:lombok:1.18.30") annotationProcessor("org.projectlombok:lombok:1.18.30") - compileOnly("io.papermc.paper:paper-api:1.20.2-R0.1-SNAPSHOT") + compileOnly("io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT") implementation("org.apache.commons:commons-lang3:3.12.0") compileOnly("dev.plex:server:1.4-SNAPSHOT") - compileOnly("com.infernalsuite.aswm:api:1.20-R0.1-SNAPSHOT") { + compileOnly("com.infernalsuite.aswm:api:1.20.4-R0.1-SNAPSHOT") { exclude(group = "com.flowpowered") } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3fa8f86..1af9e09 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 0adc8e1..1aa94a4 100755 --- a/gradlew +++ b/gradlew @@ -145,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -153,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -202,11 +202,11 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/src/main/java/dev/plex/extras/TFMExtras.java b/src/main/java/dev/plex/extras/TFMExtras.java index 88ab8ff..c87aedc 100755 --- a/src/main/java/dev/plex/extras/TFMExtras.java +++ b/src/main/java/dev/plex/extras/TFMExtras.java @@ -34,7 +34,7 @@ public class TFMExtras extends PlexModule private ModuleConfig config; @Getter - private final SlimeWorldHook slimeWorldHook = new SlimeWorldHook(); + private SlimeWorldHook slimeWorldHook; @Override public void load() @@ -43,6 +43,10 @@ public class TFMExtras extends PlexModule config = new ModuleConfig(this, "tfmextras/config.yml", "config.yml"); config.load(); jumpPads = new JumpPads(); + if (swmEnabled()) + { + slimeWorldHook = new SlimeWorldHook(); + } // PlexLog.debug(String.valueOf(config.getInt("server.jumppad_strength"))); // PlexLog.log("Test map: {0}", StringUtils.join(SQLUtil.createTable(Lists.newArrayList(), PlayerWorld.class), "\n")); } @@ -50,14 +54,13 @@ public class TFMExtras extends PlexModule @Override public void enable() { - if (slimeWorldHook.plugin() != null) + if (swmEnabled()) { slimeWorldHook.onEnable(this); registerCommand(new SlimeManagerCommand()); registerCommand(new MyWorldCommand()); } - getClassesFrom("dev.plex.extras.command").forEach(aClass -> { if (PlexCommand.class.isAssignableFrom(aClass) && aClass.isAnnotationPresent(CommandParameters.class) && aClass.isAnnotationPresent(CommandPermissions.class)) @@ -152,4 +155,17 @@ public class TFMExtras extends PlexModule return Collections.unmodifiableSet(classes); } + + private boolean swmEnabled() + { + try + { + Class.forName("com.infernalsuite.aswm.api.exceptions.UnknownWorldException"); + } + catch (Exception ignored) + { + return false; + } + return true; + } } \ No newline at end of file diff --git a/src/main/java/dev/plex/extras/hook/SlimeWorldHook.java b/src/main/java/dev/plex/extras/hook/SlimeWorldHook.java index ff09c12..dbb5302 100644 --- a/src/main/java/dev/plex/extras/hook/SlimeWorldHook.java +++ b/src/main/java/dev/plex/extras/hook/SlimeWorldHook.java @@ -183,6 +183,10 @@ public class SlimeWorldHook implements IHook { PlexLog.error(STORAGE_FAILURE); } + catch (WorldLockedException | UnknownWorldException e) + { + throw new RuntimeException(e); + } final World world = Bukkit.getWorld(uuid.toString()); if (world == null)