Modded registry factories

- Modded platform gets registry access from the modded server factory
- Engine bootstrap and tile parity test get tile readers from the modded server factory
- Registry access tests build through the modded server factory
This commit is contained in:
Brian Neumann-Fopiano committed 2026-09-29 01:12:16 -04:00
1 parent d6226240a0
commit 08ffb96680
4 files changed
+7 -9

No files matched your search

@@ -391,7 +391,7 @@ public final class ModdedEngineBootstrap {
BlockDataMergeSupport.StateMerger previousMerger = BlockDataMergeSupport.bindPlatformMerger(new NativeStateMerger(ModdedBlockResolution.BLOCKS)::merge); BlockDataMergeSupport.StateMerger previousMerger = BlockDataMergeSupport.bindPlatformMerger(new NativeStateMerger(ModdedBlockResolution.BLOCKS)::merge);
rollback.add(() -> BlockDataMergeSupport.restorePlatformMerger(previousMerger)); rollback.add(() -> BlockDataMergeSupport.restorePlatformMerger(previousMerger));
NativeTileReader nativeTileReader = NativeTileReader.forServer(boundLoader::currentServer); NativeTileReader nativeTileReader = NativeModdedServer.tileReader(boundLoader::currentServer);
TileData.TileReader previousTileReader = TileData.bindPlatformReader(in -> ModdedTileData.wrap(nativeTileReader.read(in))); TileData.TileReader previousTileReader = TileData.bindPlatformReader(in -> ModdedTileData.wrap(nativeTileReader.read(in)));
rollback.add(() -> TileData.restorePlatformReader(previousTileReader)); rollback.add(() -> TileData.restorePlatformReader(previousTileReader));
@@ -20,7 +20,6 @@ package art.arcane.iris.modded;
import art.arcane.volmlib.nativelib.minecraft26_2.modded.NativeModdedServer; import art.arcane.volmlib.nativelib.minecraft26_2.modded.NativeModdedServer;
import art.arcane.volmlib.nativelib.minecraft26_2.modded.NativeRegistryAccess;
import art.arcane.volmlib.nativelib.minecraft26_2.terrain.NativeRegistryDefinitions; import art.arcane.volmlib.nativelib.minecraft26_2.terrain.NativeRegistryDefinitions;
import art.arcane.volmlib.nativelib.minecraft26_2.modded.NativeEntitySpawns; import art.arcane.volmlib.nativelib.minecraft26_2.modded.NativeEntitySpawns;
import art.arcane.volmlib.nativelib.minecraft26_2.modded.NativeModdedLoader; import art.arcane.volmlib.nativelib.minecraft26_2.modded.NativeModdedLoader;
@@ -61,9 +60,7 @@ public final class ModdedPlatform implements IrisPlatform {
public ModdedPlatform(NativeModdedLoader loader) { public ModdedPlatform(NativeModdedLoader loader) {
this.loader = loader; this.loader = loader;
this.registries = new ModdedRegistries( this.registries = new ModdedRegistries(
new NativeRegistryAccess(new NativeRegistryAccess.Configuration( NativeModdedServer.registryAccess(ModdedEngineBootstrap::currentServer, ModdedRegistries::warnNotReady),
ModdedEngineBootstrap::currentServer,
ModdedRegistries::warnNotReady)),
ModdedPlatform::generationRegistry); ModdedPlatform::generationRegistry);
this.scheduler = new ModdedScheduler(); this.scheduler = new ModdedScheduler();
this.structureHooks = new ModdedStructureHooks(ModdedEngineBootstrap::currentServer); this.structureHooks = new ModdedStructureHooks(ModdedEngineBootstrap::currentServer);
@@ -1,5 +1,6 @@
package art.arcane.iris.modded; package art.arcane.iris.modded;
import art.arcane.volmlib.nativelib.minecraft26_2.modded.NativeModdedServer;
import art.arcane.volmlib.nativelib.minecraft26_2.modded.NativeTileReader; import art.arcane.volmlib.nativelib.minecraft26_2.modded.NativeTileReader;
import art.arcane.volmlib.nativelib.minecraft26_2.modded.ModdedBlockState; import art.arcane.volmlib.nativelib.minecraft26_2.modded.ModdedBlockState;
import art.arcane.iris.generation.block.TileData; import art.arcane.iris.generation.block.TileData;
@@ -41,7 +42,7 @@ public class ModdedTileParityTest {
SharedConstants.tryDetectVersion(); SharedConstants.tryDetectVersion();
Bootstrap.bootStrap(); Bootstrap.bootStrap();
registries = RegistryAccess.fromRegistryOfRegistries(BuiltInRegistries.REGISTRY); registries = RegistryAccess.fromRegistryOfRegistries(BuiltInRegistries.REGISTRY);
NativeTileReader nativeTileReader = NativeTileReader.forServer(() -> null); NativeTileReader nativeTileReader = NativeModdedServer.tileReader(() -> null);
TileData.bindPlatformReader(in -> ModdedTileData.wrap(nativeTileReader.read(in))); TileData.bindPlatformReader(in -> ModdedTileData.wrap(nativeTileReader.read(in)));
TileData.bindPlatformFactory(ModdedTileData::fromProperties); TileData.bindPlatformFactory(ModdedTileData::fromProperties);
} }
@@ -36,7 +36,7 @@ public class NativeRegistryAccessTest {
@Test @Test
public void statePropertiesPreserveTypesDefaultsAndSharedGroups() { public void statePropertiesPreserveTypesDefaultsAndSharedGroups() {
NativeRegistryAccess access = new NativeRegistryAccess(new NativeRegistryAccess.Configuration(() -> null, message -> {})); NativeRegistryAccess access = NativeModdedServer.registryAccess(() -> null, message -> {});
Map<String, List<NativeBlockProperty>> properties = access.blockStateProperties(); Map<String, List<NativeBlockProperty>> properties = access.blockStateProperties();
assertSame(properties.get("minecraft:stone"), properties.get("minecraft:dirt")); assertSame(properties.get("minecraft:stone"), properties.get("minecraft:dirt"));
@@ -52,7 +52,7 @@ public class NativeRegistryAccessTest {
@Test @Test
public void staticRegistriesResolveWithoutAnActiveServerAndDynamicReadsStayEmpty() { public void staticRegistriesResolveWithoutAnActiveServerAndDynamicReadsStayEmpty() {
List<String> warnings = new ArrayList<>(); List<String> warnings = new ArrayList<>();
NativeRegistryAccess access = new NativeRegistryAccess(new NativeRegistryAccess.Configuration(() -> null, warnings::add)); NativeRegistryAccess access = NativeModdedServer.registryAccess(() -> null, warnings::add);
assertEquals("minecraft:diamond_sword", access.item("DIAMOND SWORD").key()); assertEquals("minecraft:diamond_sword", access.item("DIAMOND SWORD").key());
assertEquals("creature", access.entity("minecraft:cow").spawnCategory()); assertEquals("creature", access.entity("minecraft:cow").spawnCategory());
@@ -68,7 +68,7 @@ public class NativeRegistryAccessTest {
public void dynamicRegistriesFollowServerStartupReloadAndShutdown() { public void dynamicRegistriesFollowServerStartupReloadAndShutdown() {
AtomicReference<NativeModdedServer> activeServer = new AtomicReference<>(); AtomicReference<NativeModdedServer> activeServer = new AtomicReference<>();
List<String> warnings = new ArrayList<>(); List<String> warnings = new ArrayList<>();
NativeRegistryAccess access = new NativeRegistryAccess(new NativeRegistryAccess.Configuration(activeServer::get, warnings::add)); NativeRegistryAccess access = NativeModdedServer.registryAccess(activeServer::get, warnings::add);
assertTrue(access.lootTableKeys().isEmpty()); assertTrue(access.lootTableKeys().isEmpty());
MinecraftServer server = mock(MinecraftServer.class, RETURNS_DEEP_STUBS); MinecraftServer server = mock(MinecraftServer.class, RETURNS_DEEP_STUBS);