From ea9f7a79faf304fc28fcb1bcf39ccbe19490057c Mon Sep 17 00:00:00 2001 From: Brian Neumann-Fopiano Date: Fri, 16 Oct 2026 12:11:25 -0400 Subject: [PATCH] Tested 1.21.1 saved dimensions - Unit test for the 1.21.1 saved-dimension rule: replaced stems keep their saved generator, Iris worlds and new dimensions persist as they run - The mixin audit test lists the two 1.21.1 persistence mixins as deliberately unaudited --- .../modded/NativePersistedDimensionsTest.java | 61 +++++++++++++++++++ .../1.21.1/test/source-replacements.json | 6 ++ 2 files changed, 67 insertions(+) create mode 100644 adapters/modded-common/src/versions/1.21.1/test/java/art/arcane/volmlib/nativelib/minecraft26_2/modded/NativePersistedDimensionsTest.java diff --git a/adapters/modded-common/src/versions/1.21.1/test/java/art/arcane/volmlib/nativelib/minecraft26_2/modded/NativePersistedDimensionsTest.java b/adapters/modded-common/src/versions/1.21.1/test/java/art/arcane/volmlib/nativelib/minecraft26_2/modded/NativePersistedDimensionsTest.java new file mode 100644 index 000000000..4e4ff8aa7 --- /dev/null +++ b/adapters/modded-common/src/versions/1.21.1/test/java/art/arcane/volmlib/nativelib/minecraft26_2/modded/NativePersistedDimensionsTest.java @@ -0,0 +1,61 @@ +package art.arcane.volmlib.nativelib.minecraft26_2.modded; + +import net.minecraft.SharedConstants; +import net.minecraft.core.Holder; +import net.minecraft.resources.ResourceKey; +import net.minecraft.server.Bootstrap; +import net.minecraft.world.level.chunk.ChunkGenerator; +import net.minecraft.world.level.dimension.DimensionType; +import net.minecraft.world.level.dimension.LevelStem; +import net.minecraft.world.level.levelgen.WorldDimensions; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.LinkedHashMap; +import java.util.Map; + +import static org.junit.Assert.assertSame; +import static org.mockito.Mockito.mock; + +public class NativePersistedDimensionsTest { + private static final Holder TYPE = Holder.direct(mock(DimensionType.class)); + + @BeforeClass + public static void bootstrap() { + SharedConstants.tryDetectVersion(); + Bootstrap.bootStrap(); + } + + @Test + public void replacedDimensionsKeepTheirSavedGenerator() { + LevelStem savedNether = new LevelStem(TYPE, mock(ChunkGenerator.class)); + LevelStem overworld = new LevelStem(TYPE, mock(ChunkGenerator.class)); + LevelStem irisNether = new LevelStem(TYPE, mock(NativeModdedChunkGenerator.class)); + NativePersistedDimensions.loaded(dimensions(LevelStem.OVERWORLD, overworld, LevelStem.NETHER, savedNether)); + + WorldDimensions persisted = NativePersistedDimensions.persisted( + dimensions(LevelStem.OVERWORLD, overworld, LevelStem.NETHER, irisNether)); + + assertSame(savedNether, persisted.dimensions().get(LevelStem.NETHER)); + assertSame(overworld, persisted.dimensions().get(LevelStem.OVERWORLD)); + } + + @Test + public void irisWorldsAndNewDimensionsPersistAsTheyRun() { + LevelStem savedIris = new LevelStem(TYPE, mock(NativeModdedChunkGenerator.class)); + LevelStem liveIris = new LevelStem(TYPE, mock(NativeModdedChunkGenerator.class)); + LevelStem addedIris = new LevelStem(TYPE, mock(NativeModdedChunkGenerator.class)); + NativePersistedDimensions.loaded(dimensions(LevelStem.OVERWORLD, savedIris, LevelStem.END, savedIris)); + WorldDimensions live = dimensions(LevelStem.OVERWORLD, liveIris, LevelStem.NETHER, addedIris); + + assertSame(live, NativePersistedDimensions.persisted(live)); + } + + private static WorldDimensions dimensions(ResourceKey firstKey, LevelStem first, + ResourceKey secondKey, LevelStem second) { + Map, LevelStem> stems = new LinkedHashMap<>(); + stems.put(firstKey, first); + stems.put(secondKey, second); + return new WorldDimensions(stems); + } +} diff --git a/adapters/modded-common/src/versions/1.21.1/test/source-replacements.json b/adapters/modded-common/src/versions/1.21.1/test/source-replacements.json index 6a48d6c28..b5287de53 100644 --- a/adapters/modded-common/src/versions/1.21.1/test/source-replacements.json +++ b/adapters/modded-common/src/versions/1.21.1/test/source-replacements.json @@ -425,6 +425,12 @@ "pattern": "player\\.level\\(\\)", "replacement": "player.serverLevel()" } + ], + "art/arcane/iris/modded/ModdedMixinAuditTest.java": [ + { + "pattern": "\"volmlib\\.entity\\.mixins\\.json/ServerLevelStructureBootstrapMixin\",", + "replacement": "\"volmlib.entity.mixins.json/ServerLevelStructureBootstrapMixin\",\n \"volmlib.entity.mixins.json/WorldDimensionsBakeMixin\",\n \"volmlib.entity.mixins.json/WorldGenSettingsPersistenceMixin\"," + } ] } }