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 5b7e22686..21d4cc9d4 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 @@ -159,5 +159,14 @@ public class BukkitBlockRegistry extends BundledBlockRegistry { } return blocks; } + + @Override + public Map> getAllProperties() { + BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter(); + if (adapter != null) { + return adapter.getAllProperties(); + } + return super.getAllProperties(); + } //FAWE end } diff --git a/worldedit-bukkit/src/main/resources/worldedit-adapters.jar b/worldedit-bukkit/src/main/resources/worldedit-adapters.jar index 0c55a0c45..928313959 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 1a4bba755..ab526fe91 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,6 +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; protected static final Set $NAMESPACES = new LinkedHashSet<>(); @@ -266,6 +267,14 @@ 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); 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 e5a53c5a6..bc4dbdb11 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 @@ -96,5 +96,12 @@ public interface BlockRegistry { default Collection values() { return Collections.emptyList(); } + + /** + * Get an unmodifiable map of all block properties + * + * @return a map of states where the key is the property's ID + */ + 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 a5cc22750..f1d4ba21b 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 @@ -80,4 +80,11 @@ public class BundledBlockRegistry implements BlockRegistry { return OptionalInt.empty(); } + //FAWE start + @Override + public Map> getAllProperties() { + return Collections.emptyMap(); // Oof + } + //FAWE end + }