Modded server registries

- Modded platform hands the running server to registry access
- Tile reader is built from the running server
- Registry test covers startup, reload and shutdown of dynamic registries
This commit is contained in:
Brian Neumann-Fopiano committed 2026-09-29 00:29:25 -04:00
1 parent 241260a762
commit c20296d106
4 files changed
+45 -21

No files matched your search

@@ -391,10 +391,7 @@ public final class ModdedEngineBootstrap {
BlockDataMergeSupport.StateMerger previousMerger = BlockDataMergeSupport.bindPlatformMerger(new NativeStateMerger(ModdedBlockResolution.BLOCKS)::merge);
rollback.add(() -> BlockDataMergeSupport.restorePlatformMerger(previousMerger));
NativeTileReader nativeTileReader = new NativeTileReader(() -> {
NativeModdedServer server = boundLoader.currentServer();
return server == null ? null : server.registryAccess();
});
NativeTileReader nativeTileReader = NativeTileReader.forServer(boundLoader::currentServer);
TileData.TileReader previousTileReader = TileData.bindPlatformReader(in -> ModdedTileData.wrap(nativeTileReader.read(in)));
rollback.add(() -> TileData.restorePlatformReader(previousTileReader));
@@ -38,8 +38,6 @@ import art.arcane.iris.spi.PlatformScheduler;
import art.arcane.iris.spi.PlatformStructureHooks;
import art.arcane.volmlib.nativelib.terrain.NativeWorld;
import net.minecraft.core.HolderLookup;
import java.io.File;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -64,7 +62,7 @@ public final class ModdedPlatform implements IrisPlatform {
this.loader = loader;
this.registries = new ModdedRegistries(
new NativeRegistryAccess(new NativeRegistryAccess.Configuration(
ModdedPlatform::nativeRegistries, ModdedPlatform::reloadableRegistries,
ModdedEngineBootstrap::currentServer,
ModdedRegistries::warnNotReady)),
ModdedPlatform::generationRegistry);
this.scheduler = new ModdedScheduler();
@@ -72,16 +70,6 @@ public final class ModdedPlatform implements IrisPlatform {
this.biomeWriter = new ModdedBiomeWriter(new NativeBiomeRegistry(ModdedEngineBootstrap::currentServer, "minecraft:plains"));
}
private static HolderLookup.Provider nativeRegistries() {
NativeModdedServer server = ModdedEngineBootstrap.currentServer();
return server == null ? null : server.registryAccess();
}
private static HolderLookup.Provider reloadableRegistries() {
NativeModdedServer server = ModdedEngineBootstrap.currentServer();
return server == null ? null : server.reloadableRegistries();
}
public static void errorSink(Consumer<Throwable> sink) {
ERROR_SINK = sink;
}