From a66cba6418085d9656558e55a39dfaf0eb728d0d Mon Sep 17 00:00:00 2001 From: Brian Neumann-Fopiano Date: Wed, 5 Aug 2026 02:28:14 -0600 Subject: [PATCH] dwa --- adapters/bukkit/nms/v26_2_R1/logs/latest.log | 3 --- .../iris/core/commands/CommandIris.java | 9 ++++++-- ...mmandIrisPackDimensionTypeHandlerTest.java | 21 +++++++++++++++++++ .../arcane/iris/core/tools/IrisToolbelt.java | 4 +++- .../tools/IrisToolbeltPackReferenceTest.java | 6 ++++++ 5 files changed, 37 insertions(+), 6 deletions(-) delete mode 100644 adapters/bukkit/nms/v26_2_R1/logs/latest.log create mode 100644 adapters/bukkit/plugin/src/test/java/art/arcane/iris/core/commands/CommandIrisPackDimensionTypeHandlerTest.java diff --git a/adapters/bukkit/nms/v26_2_R1/logs/latest.log b/adapters/bukkit/nms/v26_2_R1/logs/latest.log deleted file mode 100644 index 7ac5d39de..000000000 --- a/adapters/bukkit/nms/v26_2_R1/logs/latest.log +++ /dev/null @@ -1,3 +0,0 @@ -[10:47:09] [Test worker/INFO]: [STDERR]: [Iris/WARN] Native structure terrain envelope at 0,0 was clipped to Minecraft's 8-chunk structure reference range -[10:47:09] [Test worker/INFO]: [STDERR]: [Iris/WARN] Native structure burial at 0,0 clamped to world floor: wanted -19, used -4 -[10:47:09] [Test worker/INFO]: [STDERR]: [Iris/WARN] Native structure burial at 0,0 clamped to world floor: wanted -5, used -2 diff --git a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/commands/CommandIris.java b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/commands/CommandIris.java index 6a2565f34..7fcab57b5 100644 --- a/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/commands/CommandIris.java +++ b/adapters/bukkit/plugin/src/main/java/art/arcane/iris/core/commands/CommandIris.java @@ -975,8 +975,7 @@ public class CommandIris implements DirectorExecutor { try { IrisData data = IrisData.get(pack); for (String key : data.getDimensionLoader().getPossibleKeys()) { - options.add(key); - options.add(pack.getName() + ":" + key); + options.add(packDimensionOption(pack.getName(), key)); } } catch (Throwable ex) { Iris.warn("Failed to read dimension keys from pack %s: %s%s", @@ -990,6 +989,12 @@ public class CommandIris implements DirectorExecutor { return new KList<>(options); } + static String packDimensionOption(String packName, String dimensionKey) { + return packName.equalsIgnoreCase(dimensionKey) + ? packName + : packName + ":" + dimensionKey; + } + @Override public String toString(String value) { return value == null ? "" : value; diff --git a/adapters/bukkit/plugin/src/test/java/art/arcane/iris/core/commands/CommandIrisPackDimensionTypeHandlerTest.java b/adapters/bukkit/plugin/src/test/java/art/arcane/iris/core/commands/CommandIrisPackDimensionTypeHandlerTest.java new file mode 100644 index 000000000..610330b9e --- /dev/null +++ b/adapters/bukkit/plugin/src/test/java/art/arcane/iris/core/commands/CommandIrisPackDimensionTypeHandlerTest.java @@ -0,0 +1,21 @@ +package art.arcane.iris.core.commands; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class CommandIrisPackDimensionTypeHandlerTest { + @Test + public void matchingPackAndDimensionUsesBarePackName() { + assertEquals("overworld", + CommandIris.PackDimensionTypeHandler.packDimensionOption("overworld", "overworld")); + assertEquals("OverWorld", + CommandIris.PackDimensionTypeHandler.packDimensionOption("OverWorld", "overworld")); + } + + @Test + public void differingDimensionUsesExplicitPackReference() { + assertEquals("custom_pack:dimensions/sky", + CommandIris.PackDimensionTypeHandler.packDimensionOption("custom_pack", "dimensions/sky")); + } +} diff --git a/core/src/main/java/art/arcane/iris/core/tools/IrisToolbelt.java b/core/src/main/java/art/arcane/iris/core/tools/IrisToolbelt.java index a64470b36..df6deac03 100644 --- a/core/src/main/java/art/arcane/iris/core/tools/IrisToolbelt.java +++ b/core/src/main/java/art/arcane/iris/core/tools/IrisToolbelt.java @@ -168,7 +168,9 @@ public class IrisToolbelt { } String pack = requested.substring(0, separator).trim(); String dimension = requested.substring(separator + 1).trim(); - if (!isSafePackDescriptor(pack) || !isSafeDimensionKey(dimension)) { + if (!isSafePackDescriptor(pack) + || !isSafeDimensionKey(dimension) + || pack.equalsIgnoreCase(dimension)) { return null; } return new PackReference(pack, dimension, true); diff --git a/core/src/test/java/art/arcane/iris/core/tools/IrisToolbeltPackReferenceTest.java b/core/src/test/java/art/arcane/iris/core/tools/IrisToolbeltPackReferenceTest.java index 143e7d9e6..a9f908f1b 100644 --- a/core/src/test/java/art/arcane/iris/core/tools/IrisToolbeltPackReferenceTest.java +++ b/core/src/test/java/art/arcane/iris/core/tools/IrisToolbeltPackReferenceTest.java @@ -37,6 +37,12 @@ public class IrisToolbeltPackReferenceTest { assertTrue(reference.explicitDimension()); } + @Test + public void redundantExplicitDimensionIsRejected() { + assertNull(IrisToolbelt.parsePackReference("overworld:overworld")); + assertNull(IrisToolbelt.parsePackReference("OverWorld:overworld")); + } + @Test public void repositoryShorthandUsesRepositoryAsDefaultDimension() { IrisToolbelt.PackReference reference = IrisToolbelt.parsePackReference("IrisDimensions/overworld/stable");