From d4836bc769da003528b6cebc7e677a5aa23a8228 Mon Sep 17 00:00:00 2001 From: Brennan Ward Date: Mon, 3 Apr 2023 18:04:34 -0400 Subject: [PATCH] Fix dummy air blocks not being marked as air (#9440) --- .../net/minecraftforge/registries/ForgeRegistry.java | 9 ++++++++- .../java/net/minecraftforge/registries/GameData.java | 8 +++++--- .../net/minecraftforge/registries/IForgeRegistry.java | 2 ++ .../net/minecraftforge/registries/RegistryBuilder.java | 4 ++++ 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/minecraftforge/registries/ForgeRegistry.java b/src/main/java/net/minecraftforge/registries/ForgeRegistry.java index b3d11d4cb1..b8a8be6c49 100644 --- a/src/main/java/net/minecraftforge/registries/ForgeRegistry.java +++ b/src/main/java/net/minecraftforge/registries/ForgeRegistry.java @@ -70,6 +70,7 @@ public class ForgeRegistry implements IForgeRegistryInternal, IForgeRegist private final BakeCallback bake; private final MissingFactory missing; private final BitSet availabilityMap; + @Deprecated(forRemoval = true, since = "1.19.4") private final Set dummies = Sets.newHashSet(); private final Set blocked = Sets.newHashSet(); private final Multimap overrides = ArrayListMultimap.create(); @@ -77,6 +78,7 @@ public class ForgeRegistry implements IForgeRegistryInternal, IForgeRegist private final Map> delegatesByValue = Maps.newHashMap(); private final BiMap, V> owners = HashBiMap.create(); private final ForgeRegistryTagManager tagManager; + @Deprecated(forRemoval = true, since = "1.19.4") private final DummyFactory dummyFactory; private final int min; private final int max; @@ -505,6 +507,7 @@ public class ForgeRegistry implements IForgeRegistryInternal, IForgeRegist LOGGER.trace(REGISTRIES,"Registry {} alias: {} -> {}", this.name, src, dst); } + @Deprecated(forRemoval = true, since = "1.19.4") void addDummy(ResourceLocation key) { if (this.isLocked()) @@ -581,6 +584,7 @@ public class ForgeRegistry implements IForgeRegistryInternal, IForgeRegist return this.defaultValue; } + @Deprecated(forRemoval = true, since = "1.19.4") boolean isDummied(ResourceLocation key) { return this.dummies.contains(key); @@ -818,7 +822,7 @@ public class ForgeRegistry implements IForgeRegistryInternal, IForgeRegist } } - private record DumpRow(String id, String key, String value, String dummied) {} + private record DumpRow(String id, String key, String value, @Deprecated(forRemoval = true, since = "1.19.4") String dummied) {} public void loadIds(Map ids, Map overrides, Map missing, Map remapped, ForgeRegistry old, ResourceLocation name) { @@ -920,6 +924,7 @@ public class ForgeRegistry implements IForgeRegistryInternal, IForgeRegist } } + @Deprecated(forRemoval = true, since = "1.19.4") boolean markDummy(ResourceLocation key, int id) { if (this.dummyFactory == null) @@ -946,6 +951,7 @@ public class ForgeRegistry implements IForgeRegistryInternal, IForgeRegist return true; } + @Deprecated(forRemoval = true, since = "1.19.4") private void createAndAddDummy(ResourceLocation key, int id) { V dummy = this.dummyFactory.createDummy(key); @@ -1051,6 +1057,7 @@ public class ForgeRegistry implements IForgeRegistryInternal, IForgeRegist public final Map ids = Maps.newTreeMap(sorter); public final Map aliases = Maps.newTreeMap(sorter); public final Set blocked = Sets.newTreeSet(); + @Deprecated(forRemoval = true, since = "1.19.4") public final Set dummied = Sets.newTreeSet(sorter); public final Map overrides = Maps.newTreeMap(sorter); private FriendlyByteBuf binary = null; diff --git a/src/main/java/net/minecraftforge/registries/GameData.java b/src/main/java/net/minecraftforge/registries/GameData.java index 737c43790e..95858dd56d 100644 --- a/src/main/java/net/minecraftforge/registries/GameData.java +++ b/src/main/java/net/minecraftforge/registries/GameData.java @@ -489,9 +489,10 @@ public class GameData } @Override + @Deprecated(forRemoval = true, since = "1.19.4") public Block createDummy(ResourceLocation key) { - Block ret = new BlockDummyAir(Block.Properties.of(Material.AIR)); + Block ret = new DummyAirBlock(Block.Properties.of(Material.AIR).noCollission().noLootTable().air()); return ret; } @@ -514,9 +515,10 @@ public class GameData DebugLevelSource.initValidStates(); } - private static class BlockDummyAir extends AirBlock //A named class so DummyBlockReplacementTest can detect if its a dummy + @Deprecated(forRemoval = true, since = "1.19.4") + private static class DummyAirBlock extends AirBlock { - private BlockDummyAir(Block.Properties properties) + private DummyAirBlock(Block.Properties properties) { super(properties); } diff --git a/src/main/java/net/minecraftforge/registries/IForgeRegistry.java b/src/main/java/net/minecraftforge/registries/IForgeRegistry.java index aa701f6d59..f9c96f0473 100644 --- a/src/main/java/net/minecraftforge/registries/IForgeRegistry.java +++ b/src/main/java/net/minecraftforge/registries/IForgeRegistry.java @@ -143,8 +143,10 @@ public interface IForgeRegistry extends Iterable /** * Factory for creating dummy entries, allowing worlds to be loaded and keep the missing block references. + * @deprecated Dummies are being removed due to lack of use and high maintenance cost. There will not be an equivalent replacement feature added. */ @FunctionalInterface + @Deprecated(forRemoval = true, since = "1.19.4") interface DummyFactory { V createDummy(ResourceLocation key); diff --git a/src/main/java/net/minecraftforge/registries/RegistryBuilder.java b/src/main/java/net/minecraftforge/registries/RegistryBuilder.java index 9f571446c1..8ca54c614c 100644 --- a/src/main/java/net/minecraftforge/registries/RegistryBuilder.java +++ b/src/main/java/net/minecraftforge/registries/RegistryBuilder.java @@ -39,6 +39,7 @@ public class RegistryBuilder private boolean allowOverrides = true; private boolean allowModifications = false; private boolean hasWrapper = false; + @Deprecated(forRemoval = true, since = "1.19.4") private DummyFactory dummyFactory; private MissingFactory missingFactory; private Set legacyNames = new HashSet<>(); @@ -144,12 +145,14 @@ public class RegistryBuilder return this.add(bake); } + @Deprecated(forRemoval = true, since = "1.19.4") public RegistryBuilder set(DummyFactory factory) { this.dummyFactory = factory; return this; } + @Deprecated(forRemoval = true, since = "1.19.4") public RegistryBuilder dummy(DummyFactory factory) { return this.set(factory); @@ -349,6 +352,7 @@ public class RegistryBuilder } @Nullable + @Deprecated(forRemoval = true, since = "1.19.4") public DummyFactory getDummyFactory() { return dummyFactory;