Improve checking for compatible WorldEdit

This commit is contained in:
Brokkonaut
2021-02-18 22:10:21 +01:00
parent e13c63039d
commit 55678907a0

View File

@ -37,6 +37,8 @@ import de.diddiz.util.CuboidRegion;
public class WorldEditHelper { public class WorldEditHelper {
private static boolean checkedForWorldEdit; private static boolean checkedForWorldEdit;
private static boolean hasWorldEdit; private static boolean hasWorldEdit;
private static boolean checkedForFullWorldEdit;
private static boolean hasFullWorldEdit;
public static boolean hasWorldEdit() { public static boolean hasWorldEdit() {
if (!checkedForWorldEdit) { if (!checkedForWorldEdit) {
@ -51,7 +53,20 @@ public class WorldEditHelper {
} }
public static boolean hasFullWorldEdit() { public static boolean hasFullWorldEdit() {
return hasWorldEdit && Internal.hasBukkitImplAdapter(); if (!checkedForFullWorldEdit) {
checkedForFullWorldEdit = true;
if (hasWorldEdit()) {
if (Internal.hasBukkitImplAdapter()) {
try {
Class.forName("com.sk89q.worldedit.util.nbt.CompoundBinaryTag");
hasFullWorldEdit = true;
} catch (ClassNotFoundException e1) {
LogBlock.getInstance().getLogger().log(Level.SEVERE, "Incompatible version of WorldEdit found. Please update to WorldEdit 7.3 or newer.");
}
}
}
}
return hasFullWorldEdit;
} }
public static byte[] serializeEntity(Entity entity) { public static byte[] serializeEntity(Entity entity) {
@ -62,7 +77,7 @@ public class WorldEditHelper {
} }
public static Entity restoreEntity(Location location, EntityType type, byte[] serialized) { public static Entity restoreEntity(Location location, EntityType type, byte[] serialized) {
if (!hasWorldEdit()) { if (!hasFullWorldEdit()) {
return null; return null;
} }
return Internal.restoreEntity(location, type, serialized); return Internal.restoreEntity(location, type, serialized);