From 6f4212ebc8f8245b4f0c4cfbcb525966487e0fa4 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sat, 27 Jul 2024 12:51:24 -0400 Subject: [PATCH] Unfreeze block registry ourselves in tests --- .../testing/util/BootstrapMinecraftExtension.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/fabric/src/test/java/org/embeddedt/modernfix/testing/util/BootstrapMinecraftExtension.java b/fabric/src/test/java/org/embeddedt/modernfix/testing/util/BootstrapMinecraftExtension.java index a2417e3c..5adb9bc6 100644 --- a/fabric/src/test/java/org/embeddedt/modernfix/testing/util/BootstrapMinecraftExtension.java +++ b/fabric/src/test/java/org/embeddedt/modernfix/testing/util/BootstrapMinecraftExtension.java @@ -1,12 +1,17 @@ package org.embeddedt.modernfix.testing.util; import net.minecraft.DetectedVersion; +import net.minecraft.core.MappedRegistry; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.server.Bootstrap; import org.junit.jupiter.api.extension.AfterAllCallback; import org.junit.jupiter.api.extension.BeforeAllCallback; import org.junit.jupiter.api.extension.Extension; import org.junit.jupiter.api.extension.ExtensionContext; +import java.lang.reflect.Field; +import java.util.IdentityHashMap; + /** * Simple extension to run vanilla bootstrap, inspired by AE2. */ @@ -15,6 +20,15 @@ public class BootstrapMinecraftExtension implements Extension, BeforeAllCallback public void beforeAll(ExtensionContext context) throws Exception { DetectedVersion.tryDetectVersion(); Bootstrap.bootStrap(); + // Allow blocks to be created in tests + Field field = MappedRegistry.class.getDeclaredField("unregisteredIntrusiveHolders"); + field.setAccessible(true); + if(field.get(BuiltInRegistries.BLOCK) == null) { + field.set(BuiltInRegistries.BLOCK, new IdentityHashMap<>()); + field = MappedRegistry.class.getDeclaredField("frozen"); + field.setAccessible(true); + field.setBoolean(BuiltInRegistries.BLOCK, false); + } } @Override