From 2dbcae3d0aef4fbb84eab27e5df4f892a7b5709c Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Thu, 25 Jul 2024 14:17:01 +1000 Subject: [PATCH] Cleanup registry init (#2583) --- .../sk89q/worldedit/bukkit/BukkitAdapter.java | 7 +++- .../worldedit/bukkit/WorldEditPlugin.java | 13 +++--- .../worldedit/fabric/FabricWorldEdit.java | 40 +++++++++++-------- .../worldedit/neoforge/NeoForgeWorldEdit.java | 40 +++++++++++-------- 4 files changed, 61 insertions(+), 39 deletions(-) diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitAdapter.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitAdapter.java index a0a8672a9..4e53ff760 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitAdapter.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitAdapter.java @@ -82,6 +82,7 @@ private BukkitAdapter() { static { TO_BLOCK_CONTEXT.setRestricted(false); + TO_BLOCK_CONTEXT.setTryLegacy(false); } /** @@ -334,7 +335,8 @@ public static Entity adapt(org.bukkit.entity.Entity entity) { */ public static Material adapt(ItemType itemType) { checkNotNull(itemType); - return Material.matchMaterial(itemType.id()); + NamespacedKey key = checkNotNull(NamespacedKey.fromString(itemType.id()), "Item type key is invalid"); + return Registry.MATERIAL.get(key); } /** @@ -345,7 +347,8 @@ public static Material adapt(ItemType itemType) { */ public static Material adapt(BlockType blockType) { checkNotNull(blockType); - return Material.matchMaterial(blockType.id()); + NamespacedKey key = checkNotNull(NamespacedKey.fromString(blockType.id()), "Block type key is invalid"); + return Registry.MATERIAL.get(key); } /** diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java index e1ae9079c..a18ea2c41 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java @@ -216,8 +216,9 @@ private void initializeRegistries() { }); // Block & Item Registry.MATERIAL.forEach(material -> { + String key = material.getKey().toString(); if (material.isBlock()) { - BlockType.REGISTRY.register(material.getKey().toString(), new BlockType(material.getKey().toString(), blockState -> { + BlockType.REGISTRY.register(key, new BlockType(key, blockState -> { // TODO Use something way less hacky than this. ParserContext context = new ParserContext(); context.setPreferringWildcard(true); @@ -234,13 +235,13 @@ private void initializeRegistries() { } return defaultState; } catch (InputParseException e) { - getLogger().log(Level.WARNING, "Error loading block state for " + material.getKey(), e); + getLogger().log(Level.WARNING, "Error loading block state for " + key, e); return blockState; } })); } if (material.isItem()) { - ItemType.REGISTRY.register(material.getKey().toString(), new ItemType(material.getKey().toString())); + ItemType.REGISTRY.register(key, new ItemType(key)); } }); // Entity @@ -262,10 +263,12 @@ private void initializeRegistries() { private void setupTags() { // Tags for (Tag blockTag : Bukkit.getTags(Tag.REGISTRY_BLOCKS, Material.class)) { - BlockCategory.REGISTRY.register(blockTag.getKey().toString(), new BlockCategory(blockTag.getKey().toString())); + String key = blockTag.getKey().toString(); + BlockCategory.REGISTRY.register(key, new BlockCategory(key)); } for (Tag itemTag : Bukkit.getTags(Tag.REGISTRY_ITEMS, Material.class)) { - ItemCategory.REGISTRY.register(itemTag.getKey().toString(), new ItemCategory(itemTag.getKey().toString())); + String key = itemTag.getKey().toString(); + ItemCategory.REGISTRY.register(key, new ItemCategory(key)); } } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java index 32066cf0d..1181f383e 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java @@ -218,38 +218,44 @@ private FabricPermissionsProvider getInitialPermissionsProvider() { private void setupRegistries(MinecraftServer server) { // Blocks for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.BLOCK).keySet()) { - if (BlockType.REGISTRY.get(name.toString()) == null) { - BlockType.REGISTRY.register(name.toString(), new BlockType(name.toString(), + String key = name.toString(); + if (BlockType.REGISTRY.get(key) == null) { + BlockType.REGISTRY.register(key, new BlockType(key, input -> FabricAdapter.adapt(FabricAdapter.adapt(input.getBlockType()).defaultBlockState()))); } } // Items for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.ITEM).keySet()) { - if (ItemType.REGISTRY.get(name.toString()) == null) { - ItemType.REGISTRY.register(name.toString(), new ItemType(name.toString())); + String key = name.toString(); + if (ItemType.REGISTRY.get(key) == null) { + ItemType.REGISTRY.register(key, new ItemType(key)); } } // Entities for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.ENTITY_TYPE).keySet()) { - if (EntityType.REGISTRY.get(name.toString()) == null) { - EntityType.REGISTRY.register(name.toString(), new EntityType(name.toString())); + String key = name.toString(); + if (EntityType.REGISTRY.get(key) == null) { + EntityType.REGISTRY.register(key, new EntityType(key)); } } // Biomes for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.BIOME).keySet()) { - if (BiomeType.REGISTRY.get(name.toString()) == null) { - BiomeType.REGISTRY.register(name.toString(), new BiomeType(name.toString())); + String key = name.toString(); + if (BiomeType.REGISTRY.get(key) == null) { + BiomeType.REGISTRY.register(key, new BiomeType(key)); } } // Tags server.registryAccess().registryOrThrow(Registries.BLOCK).getTagNames().map(TagKey::location).forEach(name -> { - if (BlockCategory.REGISTRY.get(name.toString()) == null) { - BlockCategory.REGISTRY.register(name.toString(), new BlockCategory(name.toString())); + String key = name.toString(); + if (BlockCategory.REGISTRY.get(key) == null) { + BlockCategory.REGISTRY.register(key, new BlockCategory(key)); } }); server.registryAccess().registryOrThrow(Registries.ITEM).getTagNames().map(TagKey::location).forEach(name -> { - if (ItemCategory.REGISTRY.get(name.toString()) == null) { - ItemCategory.REGISTRY.register(name.toString(), new ItemCategory(name.toString())); + String key = name.toString(); + if (ItemCategory.REGISTRY.get(key) == null) { + ItemCategory.REGISTRY.register(key, new ItemCategory(key)); } }); Registry biomeRegistry = server.registryAccess().registryOrThrow(Registries.BIOME); @@ -269,14 +275,16 @@ private void setupRegistries(MinecraftServer server) { }); // Features for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).keySet()) { - if (ConfiguredFeatureType.REGISTRY.get(name.toString()) == null) { - ConfiguredFeatureType.REGISTRY.register(name.toString(), new ConfiguredFeatureType(name.toString())); + String key = name.toString(); + if (ConfiguredFeatureType.REGISTRY.get(key) == null) { + ConfiguredFeatureType.REGISTRY.register(key, new ConfiguredFeatureType(key)); } } // Structures for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.STRUCTURE).keySet()) { - if (StructureType.REGISTRY.get(name.toString()) == null) { - StructureType.REGISTRY.register(name.toString(), new StructureType(name.toString())); + String key = name.toString(); + if (StructureType.REGISTRY.get(key) == null) { + StructureType.REGISTRY.register(key, new StructureType(key)); } } } diff --git a/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWorldEdit.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWorldEdit.java index 6492442a8..820d7cbcb 100644 --- a/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWorldEdit.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWorldEdit.java @@ -157,38 +157,44 @@ private void setupPlatform() { private void setupRegistries(MinecraftServer server) { // Blocks for (ResourceLocation name : BuiltInRegistries.BLOCK.keySet()) { - if (BlockType.REGISTRY.get(name.toString()) == null) { - BlockType.REGISTRY.register(name.toString(), new BlockType(name.toString(), + String key = name.toString(); + if (BlockType.REGISTRY.get(key) == null) { + BlockType.REGISTRY.register(key, new BlockType(key, input -> NeoForgeAdapter.adapt(NeoForgeAdapter.adapt(input.getBlockType()).defaultBlockState()))); } } // Items for (ResourceLocation name : BuiltInRegistries.ITEM.keySet()) { - if (ItemType.REGISTRY.get(name.toString()) == null) { - ItemType.REGISTRY.register(name.toString(), new ItemType(name.toString())); + String key = name.toString(); + if (ItemType.REGISTRY.get(key) == null) { + ItemType.REGISTRY.register(key, new ItemType(key)); } } // Entities for (ResourceLocation name : BuiltInRegistries.ENTITY_TYPE.keySet()) { - if (EntityType.REGISTRY.get(name.toString()) == null) { - EntityType.REGISTRY.register(name.toString(), new EntityType(name.toString())); + String key = name.toString(); + if (EntityType.REGISTRY.get(key) == null) { + EntityType.REGISTRY.register(key, new EntityType(key)); } } // Biomes for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.BIOME).keySet()) { - if (BiomeType.REGISTRY.get(name.toString()) == null) { - BiomeType.REGISTRY.register(name.toString(), new BiomeType(name.toString())); + String key = name.toString(); + if (BiomeType.REGISTRY.get(key) == null) { + BiomeType.REGISTRY.register(key, new BiomeType(key)); } } // Tags server.registryAccess().registryOrThrow(Registries.BLOCK).getTagNames().map(TagKey::location).forEach(name -> { - if (BlockCategory.REGISTRY.get(name.toString()) == null) { - BlockCategory.REGISTRY.register(name.toString(), new BlockCategory(name.toString())); + String key = name.toString(); + if (BlockCategory.REGISTRY.get(key) == null) { + BlockCategory.REGISTRY.register(key, new BlockCategory(key)); } }); server.registryAccess().registryOrThrow(Registries.ITEM).getTagNames().map(TagKey::location).forEach(name -> { - if (ItemCategory.REGISTRY.get(name.toString()) == null) { - ItemCategory.REGISTRY.register(name.toString(), new ItemCategory(name.toString())); + String key = name.toString(); + if (ItemCategory.REGISTRY.get(key) == null) { + ItemCategory.REGISTRY.register(key, new ItemCategory(key)); } }); Registry biomeRegistry = server.registryAccess().registryOrThrow(Registries.BIOME); @@ -208,14 +214,16 @@ private void setupRegistries(MinecraftServer server) { }); // Features for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).keySet()) { - if (ConfiguredFeatureType.REGISTRY.get(name.toString()) == null) { - ConfiguredFeatureType.REGISTRY.register(name.toString(), new ConfiguredFeatureType(name.toString())); + String key = name.toString(); + if (ConfiguredFeatureType.REGISTRY.get(key) == null) { + ConfiguredFeatureType.REGISTRY.register(key, new ConfiguredFeatureType(key)); } } // Structures for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.STRUCTURE).keySet()) { - if (StructureType.REGISTRY.get(name.toString()) == null) { - StructureType.REGISTRY.register(name.toString(), new StructureType(name.toString())); + String key = name.toString(); + if (StructureType.REGISTRY.get(key) == null) { + StructureType.REGISTRY.register(key, new StructureType(key)); } } }