Skip to content

Commit 6f4212e

Browse files
committed
Unfreeze block registry ourselves in tests
1 parent 6a365be commit 6f4212e

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

fabric/src/test/java/org/embeddedt/modernfix/testing/util/BootstrapMinecraftExtension.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
package org.embeddedt.modernfix.testing.util;
22

33
import net.minecraft.DetectedVersion;
4+
import net.minecraft.core.MappedRegistry;
5+
import net.minecraft.core.registries.BuiltInRegistries;
46
import net.minecraft.server.Bootstrap;
57
import org.junit.jupiter.api.extension.AfterAllCallback;
68
import org.junit.jupiter.api.extension.BeforeAllCallback;
79
import org.junit.jupiter.api.extension.Extension;
810
import org.junit.jupiter.api.extension.ExtensionContext;
911

12+
import java.lang.reflect.Field;
13+
import java.util.IdentityHashMap;
14+
1015
/**
1116
* Simple extension to run vanilla bootstrap, inspired by AE2.
1217
*/
@@ -15,6 +20,15 @@ public class BootstrapMinecraftExtension implements Extension, BeforeAllCallback
1520
public void beforeAll(ExtensionContext context) throws Exception {
1621
DetectedVersion.tryDetectVersion();
1722
Bootstrap.bootStrap();
23+
// Allow blocks to be created in tests
24+
Field field = MappedRegistry.class.getDeclaredField("unregisteredIntrusiveHolders");
25+
field.setAccessible(true);
26+
if(field.get(BuiltInRegistries.BLOCK) == null) {
27+
field.set(BuiltInRegistries.BLOCK, new IdentityHashMap<>());
28+
field = MappedRegistry.class.getDeclaredField("frozen");
29+
field.setAccessible(true);
30+
field.setBoolean(BuiltInRegistries.BLOCK, false);
31+
}
1832
}
1933

2034
@Override

0 commit comments

Comments
 (0)