diff --git a/src/main/java/net/minecraftforge/registries/DeferredRegister.java b/src/main/java/net/minecraftforge/registries/DeferredRegister.java index 2777204706..c3ad63414e 100644 --- a/src/main/java/net/minecraftforge/registries/DeferredRegister.java +++ b/src/main/java/net/minecraftforge/registries/DeferredRegister.java @@ -82,6 +82,7 @@ public class DeferredRegister> private IForgeRegistry type; private Supplier> registryFactory; + private boolean seenRegisterEvent = false; private DeferredRegister(Class base, String modid) { @@ -106,6 +107,8 @@ public class DeferredRegister> @SuppressWarnings("unchecked") public RegistryObject register(final String name, final Supplier sup) { + if (seenRegisterEvent) + throw new IllegalStateException("Cannot register new entries to DeferredRegister after RegistryEvent.Register has been fired."); Objects.requireNonNull(name); Objects.requireNonNull(sup); final ResourceLocation key = new ResourceLocation(modid, name); @@ -173,6 +176,7 @@ public class DeferredRegister> { if (this.type != null && event.getGenericType() == this.type.getRegistrySuperType()) { + this.seenRegisterEvent = true; @SuppressWarnings("unchecked") IForgeRegistry reg = (IForgeRegistry)event.getRegistry(); for (Entry, Supplier> e : entries.entrySet())