diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockRegistry.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockRegistry.java index 21d4cc9d4..8a84a5b11 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockRegistry.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockRegistry.java @@ -33,6 +33,7 @@ import org.bukkit.block.data.BlockData; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Collection; +import java.util.List; import java.util.Map; import java.util.OptionalInt; @@ -161,7 +162,7 @@ public class BukkitBlockRegistry extends BundledBlockRegistry { } @Override - public Map> getAllProperties() { + public Map>> getAllProperties() { BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter(); if (adapter != null) { return adapter.getAllProperties(); diff --git a/worldedit-bukkit/src/main/resources/worldedit-adapters.jar b/worldedit-bukkit/src/main/resources/worldedit-adapters.jar index 8f804d7d2..6bdcc25b5 100644 Binary files a/worldedit-bukkit/src/main/resources/worldedit-adapters.jar and b/worldedit-bukkit/src/main/resources/worldedit-adapters.jar differ diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypesCache.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypesCache.java index ab526fe91..d476c092c 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypesCache.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypesCache.java @@ -200,7 +200,7 @@ public class BlockTypesCache { public static final BlockType[] values; public static final BlockState[] states; public static final boolean[] ticking; - public static final Map> allProperties; + private static final Map>> allProperties = new HashMap<>(); protected static final Set $NAMESPACES = new LinkedHashSet<>(); @@ -267,14 +267,6 @@ public class BlockTypesCache { states = stateList.toArray(new BlockState[stateList.size()]); ticking = Booleans.toArray(tickList); - allProperties = WorldEdit - .getInstance() - .getPlatformManager() - .queryCapability(Capability.GAME_HOOKS) - .getRegistries() - .getBlockRegistry() - .getAllProperties(); - } catch (Throwable e) { e.printStackTrace(); throw new RuntimeException(e); @@ -296,4 +288,24 @@ public class BlockTypesCache { return existing; } + /** + * Get a list of all block properties available. + * + * @return map of string key against property of all block properties available + */ + public static Map>> getAllProperties() { + synchronized (allProperties) { + if (allProperties.size() == 0) { + allProperties.putAll(WorldEdit + .getInstance() + .getPlatformManager() + .queryCapability(Capability.GAME_HOOKS) + .getRegistries() + .getBlockRegistry() + .getAllProperties()); + } + return allProperties; + } + } + } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BlockRegistry.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BlockRegistry.java index bc4dbdb11..3b782445d 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BlockRegistry.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BlockRegistry.java @@ -27,6 +27,7 @@ import com.sk89q.worldedit.world.block.BlockType; import javax.annotation.Nullable; import java.util.Collection; import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.OptionalInt; @@ -102,6 +103,6 @@ public interface BlockRegistry { * * @return a map of states where the key is the property's ID */ - Map> getAllProperties(); + Map>> getAllProperties(); //FAWE end } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledBlockRegistry.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledBlockRegistry.java index f1d4ba21b..3f7181397 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledBlockRegistry.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledBlockRegistry.java @@ -29,6 +29,7 @@ import com.sk89q.worldedit.world.block.BlockType; import javax.annotation.Nullable; import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.OptionalInt; @@ -82,7 +83,7 @@ public class BundledBlockRegistry implements BlockRegistry { //FAWE start @Override - public Map> getAllProperties() { + public Map>> getAllProperties() { return Collections.emptyMap(); // Oof } //FAWE end