11package org .embeddedt .modernfix .testing .util ;
22
33import net .minecraft .DetectedVersion ;
4+ import net .minecraft .core .MappedRegistry ;
5+ import net .minecraft .core .registries .BuiltInRegistries ;
46import net .minecraft .server .Bootstrap ;
57import org .junit .jupiter .api .extension .AfterAllCallback ;
68import org .junit .jupiter .api .extension .BeforeAllCallback ;
79import org .junit .jupiter .api .extension .Extension ;
810import 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