mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-10-23 00:28:02 +00:00
World Changes
This commit is contained in:
1 parent
e42ab6fae6
commit
cd05fd1bca
58 files changed
+668
-313
No files matched your search
@@ -0,0 +1,51 @@
|
||||
package art.arcane.iris.core;
|
||||
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TemporaryFolder;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertThrows;
|
||||
|
||||
public class IrisWorldStorageTest {
|
||||
@Rule
|
||||
public TemporaryFolder temporaryFolder = new TemporaryFolder();
|
||||
|
||||
@Test
|
||||
public void derivesPaperDimensionRootFromNamespacedKey() throws Exception {
|
||||
File levelRoot = temporaryFolder.newFolder("world");
|
||||
NamespacedKey key = new NamespacedKey("iris", "runtime/studio");
|
||||
|
||||
File dimensionRoot = IrisWorldStorage.dimensionRoot(levelRoot, key);
|
||||
|
||||
assertEquals(new File(levelRoot, "dimensions/iris/runtime/studio").getAbsoluteFile(), dimensionRoot);
|
||||
assertEquals(key, IrisWorldStorage.keyFromDimensionRoot(levelRoot, dimensionRoot).orElseThrow());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void separatesLevelRootFromDimensionRoot() throws Exception {
|
||||
File levelRoot = temporaryFolder.newFolder("world");
|
||||
File dimensionRoot = new File(levelRoot, "dimensions/minecraft/overworld");
|
||||
|
||||
assertEquals(levelRoot.getAbsoluteFile(), IrisWorldStorage.levelRoot(dimensionRoot));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void mapsLegacyBukkitNamesToPaperKeys() {
|
||||
assertEquals(NamespacedKey.minecraft("overworld"), IrisWorldStorage.keyFromLegacyName("world", "world"));
|
||||
assertEquals(NamespacedKey.minecraft("the_nether"), IrisWorldStorage.keyFromLegacyName("world_nether", "world"));
|
||||
assertEquals(NamespacedKey.minecraft("the_end"), IrisWorldStorage.keyFromLegacyName("world_the_end", "world"));
|
||||
assertEquals(NamespacedKey.minecraft("iris_world"), IrisWorldStorage.keyFromLegacyName("Iris World", "world"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void rejectsKeysThatEscapeNamespaceStorage() throws Exception {
|
||||
File levelRoot = temporaryFolder.newFolder("world");
|
||||
NamespacedKey key = NamespacedKey.minecraft("../outside");
|
||||
|
||||
assertThrows(IllegalArgumentException.class, () -> IrisWorldStorage.dimensionRoot(levelRoot, key));
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
package art.arcane.iris.core.lifecycle;
|
||||
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.World;
|
||||
import org.junit.Test;
|
||||
|
||||
@@ -15,7 +16,7 @@ public class WorldLifecycleDiagnosticsTest {
|
||||
@Test
|
||||
public void studioCreateSelectionFailurePrintsFullStacktrace() {
|
||||
WorldLifecycleService service = new WorldLifecycleService(CapabilitySnapshot.forTesting(ServerFamily.PAPER, false, false, false));
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("studio", World.Environment.NORMAL, null, null, null, true, false, 1337L, true, false, WorldLifecycleCaller.STUDIO);
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("studio", NamespacedKey.minecraft("studio"), World.Environment.NORMAL, null, null, null, true, false, 1337L, true, false, WorldLifecycleCaller.STUDIO);
|
||||
|
||||
ByteArrayOutputStream output = new ByteArrayOutputStream();
|
||||
PrintStream originalErr = System.err;
|
||||
|
||||
+2
@@ -5,6 +5,7 @@ import art.arcane.iris.core.nms.INMSBinding;
|
||||
import art.arcane.iris.engine.framework.Engine;
|
||||
import art.arcane.iris.engine.framework.EngineTarget;
|
||||
import art.arcane.iris.engine.platform.PlatformChunkGenerator;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
import org.junit.Test;
|
||||
@@ -26,6 +27,7 @@ public class WorldLifecycleRuntimeLevelStemTest {
|
||||
CapabilitySnapshot capabilities = CapabilitySnapshot.forTestingRuntimeRegistries(ServerFamily.PURPUR, false, datapackDimensions, serverRegistryAccess);
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest(
|
||||
"studio",
|
||||
NamespacedKey.minecraft("studio"),
|
||||
World.Environment.NORMAL,
|
||||
new TestingPlatformChunkGenerator(),
|
||||
null,
|
||||
|
||||
+12
-11
@@ -1,5 +1,6 @@
|
||||
package art.arcane.iris.core.lifecycle;
|
||||
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.World;
|
||||
import org.junit.Test;
|
||||
|
||||
@@ -9,7 +10,7 @@ public class WorldLifecycleSelectionTest {
|
||||
@Test
|
||||
public void studioSelectsPaperLikeBackendOnPaper() {
|
||||
WorldLifecycleService service = new WorldLifecycleService(CapabilitySnapshot.forTesting(ServerFamily.PAPER, false, false, true));
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("studio", World.Environment.NORMAL, null, null, null, true, false, 1337L, true, false, WorldLifecycleCaller.STUDIO);
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("studio", NamespacedKey.minecraft("studio"), World.Environment.NORMAL, null, null, null, true, false, 1337L, true, false, WorldLifecycleCaller.STUDIO);
|
||||
|
||||
assertEquals("paper_like_runtime", service.selectCreateBackend(request).backendName());
|
||||
}
|
||||
@@ -17,7 +18,7 @@ public class WorldLifecycleSelectionTest {
|
||||
@Test
|
||||
public void studioSelectsPaperLikeBackendOnPurpur() {
|
||||
WorldLifecycleService service = new WorldLifecycleService(CapabilitySnapshot.forTesting(ServerFamily.PURPUR, false, false, true));
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("studio", World.Environment.NORMAL, null, null, null, true, false, 1337L, true, false, WorldLifecycleCaller.STUDIO);
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("studio", NamespacedKey.minecraft("studio"), World.Environment.NORMAL, null, null, null, true, false, 1337L, true, false, WorldLifecycleCaller.STUDIO);
|
||||
|
||||
assertEquals("paper_like_runtime", service.selectCreateBackend(request).backendName());
|
||||
}
|
||||
@@ -25,7 +26,7 @@ public class WorldLifecycleSelectionTest {
|
||||
@Test
|
||||
public void studioSelectsPaperLikeBackendOnCanvas() {
|
||||
WorldLifecycleService service = new WorldLifecycleService(CapabilitySnapshot.forTesting(ServerFamily.CANVAS, true, false, true));
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("studio", World.Environment.NORMAL, null, null, null, true, false, 1337L, true, false, WorldLifecycleCaller.STUDIO);
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("studio", NamespacedKey.minecraft("studio"), World.Environment.NORMAL, null, null, null, true, false, 1337L, true, false, WorldLifecycleCaller.STUDIO);
|
||||
|
||||
assertEquals("paper_like_runtime", service.selectCreateBackend(request).backendName());
|
||||
}
|
||||
@@ -33,7 +34,7 @@ public class WorldLifecycleSelectionTest {
|
||||
@Test
|
||||
public void studioSelectsPaperLikeBackendOnFolia() {
|
||||
WorldLifecycleService service = new WorldLifecycleService(CapabilitySnapshot.forTesting(ServerFamily.FOLIA, true, false, true));
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("studio", World.Environment.NORMAL, null, null, null, true, false, 1337L, true, false, WorldLifecycleCaller.STUDIO);
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("studio", NamespacedKey.minecraft("studio"), World.Environment.NORMAL, null, null, null, true, false, 1337L, true, false, WorldLifecycleCaller.STUDIO);
|
||||
|
||||
assertEquals("paper_like_runtime", service.selectCreateBackend(request).backendName());
|
||||
}
|
||||
@@ -41,7 +42,7 @@ public class WorldLifecycleSelectionTest {
|
||||
@Test
|
||||
public void studioSelectsBukkitBackendOnSpigot() {
|
||||
WorldLifecycleService service = new WorldLifecycleService(CapabilitySnapshot.forTesting(ServerFamily.SPIGOT, false, false, false));
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("studio", World.Environment.NORMAL, null, null, null, true, false, 1337L, true, false, WorldLifecycleCaller.STUDIO);
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("studio", NamespacedKey.minecraft("studio"), World.Environment.NORMAL, null, null, null, true, false, 1337L, true, false, WorldLifecycleCaller.STUDIO);
|
||||
|
||||
assertEquals("bukkit_public", service.selectCreateBackend(request).backendName());
|
||||
}
|
||||
@@ -49,7 +50,7 @@ public class WorldLifecycleSelectionTest {
|
||||
@Test
|
||||
public void persistentCreatePrefersBukkitBackendOnPaperLikeServers() {
|
||||
WorldLifecycleService service = new WorldLifecycleService(CapabilitySnapshot.forTesting(ServerFamily.PURPUR, false, false, true));
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("persistent", World.Environment.NORMAL, null, null, null, true, false, 1337L, false, false, WorldLifecycleCaller.CREATE);
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("persistent", NamespacedKey.minecraft("persistent"), World.Environment.NORMAL, null, null, null, true, false, 1337L, false, false, WorldLifecycleCaller.CREATE);
|
||||
|
||||
assertEquals("bukkit_public", service.selectCreateBackend(request).backendName());
|
||||
}
|
||||
@@ -57,7 +58,7 @@ public class WorldLifecycleSelectionTest {
|
||||
@Test
|
||||
public void persistentCreateSelectsPaperLikeBackendOnFolia() {
|
||||
WorldLifecycleService service = new WorldLifecycleService(CapabilitySnapshot.forTesting(ServerFamily.FOLIA, true, false, true));
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("persistent", World.Environment.NORMAL, null, null, null, true, false, 1337L, false, false, WorldLifecycleCaller.CREATE);
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("persistent", NamespacedKey.minecraft("persistent"), World.Environment.NORMAL, null, null, null, true, false, 1337L, false, false, WorldLifecycleCaller.CREATE);
|
||||
|
||||
assertEquals("paper_like_runtime", service.selectCreateBackend(request).backendName());
|
||||
}
|
||||
@@ -65,7 +66,7 @@ public class WorldLifecycleSelectionTest {
|
||||
@Test
|
||||
public void persistentCreateSelectsPaperLikeBackendOnCanvas() {
|
||||
WorldLifecycleService service = new WorldLifecycleService(CapabilitySnapshot.forTesting(ServerFamily.CANVAS, true, false, true));
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("persistent", World.Environment.NORMAL, null, null, null, true, false, 1337L, false, false, WorldLifecycleCaller.CREATE);
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("persistent", NamespacedKey.minecraft("persistent"), World.Environment.NORMAL, null, null, null, true, false, 1337L, false, false, WorldLifecycleCaller.CREATE);
|
||||
|
||||
assertEquals("paper_like_runtime", service.selectCreateBackend(request).backendName());
|
||||
}
|
||||
@@ -73,7 +74,7 @@ public class WorldLifecycleSelectionTest {
|
||||
@Test
|
||||
public void persistentCreateFallsBackToBukkitBackendOnFoliaWithoutRuntime() {
|
||||
WorldLifecycleService service = new WorldLifecycleService(CapabilitySnapshot.forTesting(ServerFamily.FOLIA, true, false, false));
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("persistent", World.Environment.NORMAL, null, null, null, true, false, 1337L, false, false, WorldLifecycleCaller.CREATE);
|
||||
WorldLifecycleRequest request = new WorldLifecycleRequest("persistent", NamespacedKey.minecraft("persistent"), World.Environment.NORMAL, null, null, null, true, false, 1337L, false, false, WorldLifecycleCaller.CREATE);
|
||||
|
||||
assertEquals("bukkit_public", service.selectCreateBackend(request).backendName());
|
||||
}
|
||||
@@ -82,7 +83,7 @@ public class WorldLifecycleSelectionTest {
|
||||
public void unloadUsesRememberedBackendFamily() {
|
||||
WorldLifecycleService service = new WorldLifecycleService(CapabilitySnapshot.forTesting(ServerFamily.PURPUR, false, false, true));
|
||||
|
||||
service.rememberBackend("studio", "paper_like_runtime");
|
||||
assertEquals("paper_like_runtime", service.selectUnloadBackend("studio").backendName());
|
||||
service.rememberBackend(NamespacedKey.minecraft("studio"), "paper_like_runtime");
|
||||
assertEquals("paper_like_runtime", service.selectUnloadBackend("minecraft:studio").backendName());
|
||||
}
|
||||
}
|
||||
+7
-4
@@ -39,10 +39,11 @@ public class TransientWorldCleanupSupportTest {
|
||||
public void collectsOnlyTransientStudioWorldFamiliesFromContainer() throws IOException {
|
||||
File container = Files.createTempDirectory("transient-world-cleanup-test").toFile();
|
||||
String baseName = "iris-123e4567-e89b-12d3-a456-426614174000";
|
||||
File baseFolder = new File(container, baseName);
|
||||
File netherFolder = new File(container, baseName + "_nether");
|
||||
File smokeFolder = new File(container, "iris-smoke-studio-deadbeef");
|
||||
File regularFolder = new File(container, "overworld");
|
||||
File namespace = new File(container, "dimensions/minecraft");
|
||||
File baseFolder = new File(namespace, baseName);
|
||||
File netherFolder = new File(namespace, baseName + "_nether");
|
||||
File smokeFolder = new File(namespace, "iris-smoke-studio-deadbeef");
|
||||
File regularFolder = new File(namespace, "overworld");
|
||||
baseFolder.mkdirs();
|
||||
netherFolder.mkdirs();
|
||||
smokeFolder.mkdirs();
|
||||
@@ -57,6 +58,8 @@ public class TransientWorldCleanupSupportTest {
|
||||
Files.deleteIfExists(netherFolder.toPath());
|
||||
Files.deleteIfExists(smokeFolder.toPath());
|
||||
Files.deleteIfExists(regularFolder.toPath());
|
||||
Files.deleteIfExists(namespace.toPath());
|
||||
Files.deleteIfExists(namespace.getParentFile().toPath());
|
||||
Files.deleteIfExists(container.toPath());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,24 @@
|
||||
package art.arcane.iris.core.tools;
|
||||
|
||||
import art.arcane.iris.core.service.StudioSVC;
|
||||
import art.arcane.iris.spi.IrisServices;
|
||||
import org.bukkit.World;
|
||||
import org.junit.After;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.lang.reflect.Proxy;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class IrisToolbeltPackReferenceTest {
|
||||
@After
|
||||
public void cleanServices() {
|
||||
IrisServices.remove(StudioSVC.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void plainPackUsesMatchingDimensionKey() {
|
||||
IrisToolbelt.PackReference reference = IrisToolbelt.parsePackReference("overworld");
|
||||
@@ -34,4 +45,16 @@ public class IrisToolbeltPackReferenceTest {
|
||||
assertNull(IrisToolbelt.parsePackReference("pack:"));
|
||||
assertNull(IrisToolbelt.parsePackReference(":dimension"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void accessReturnsNullAfterStudioServiceIsRemoved() {
|
||||
IrisServices.remove(StudioSVC.class);
|
||||
World world = (World) Proxy.newProxyInstance(
|
||||
World.class.getClassLoader(),
|
||||
new Class<?>[]{World.class},
|
||||
(proxy, method, args) -> null
|
||||
);
|
||||
|
||||
assertNull(IrisToolbelt.access(world));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package art.arcane.iris.engine.object;
|
||||
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class IrisWorldIdentityTest {
|
||||
@Test
|
||||
public void usesBukkitKeyBeforePlatformIdentity() {
|
||||
IrisWorld world = IrisWorld.builder()
|
||||
.key(new NamespacedKey("iris", "bukkit"))
|
||||
.platformIdentity("iris:modded")
|
||||
.build();
|
||||
|
||||
assertEquals("iris:bukkit", world.identity());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void usesPlatformIdentityWithoutBukkitKey() {
|
||||
IrisWorld world = IrisWorld.builder()
|
||||
.platformIdentity("minecraft:the_nether")
|
||||
.build();
|
||||
|
||||
assertEquals("minecraft:the_nether", world.identity());
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user