From 7a099cbd5e7f053b7ede11a420d8c60317a62546 Mon Sep 17 00:00:00 2001 From: Brian Neumann-Fopiano Date: Sat, 12 Sep 2026 16:06:08 -0400 Subject: [PATCH] Merge Back --- .../localization/ModdedMessageContributorTest.java | 9 ++++----- core/build.gradle | 3 --- .../arcane/iris/generation/concurrent/MultiBurst.java | 8 -------- .../generation/hydrology/IrisSurfaceRiverBankConfig.java | 7 +++++-- .../generation/hydrology/IrisSurfaceRiverBedConfig.java | 2 +- .../iris/world/storage/matter/PreObjectMatter.java | 6 +++--- core/src/main/resources/languages/de_DE.toml | 1 + core/src/main/resources/languages/es_ES.toml | 1 + core/src/main/resources/languages/fi_FI.toml | 1 + core/src/main/resources/languages/fr_FR.toml | 1 + core/src/main/resources/languages/he_IL.toml | 1 + core/src/main/resources/languages/it_IT.toml | 1 + core/src/main/resources/languages/ja-JP.toml | 1 + core/src/main/resources/languages/ko_KR.toml | 1 + core/src/main/resources/languages/lt_LT.toml | 1 + core/src/main/resources/languages/nl_NL.toml | 1 + core/src/main/resources/languages/pl_PL.toml | 1 + core/src/main/resources/languages/pt_PT.toml | 1 + core/src/main/resources/languages/ru_RU.toml | 1 + core/src/main/resources/languages/tr_TR.toml | 1 + core/src/main/resources/languages/vi_VI.toml | 1 + core/src/main/resources/languages/zh_CN.toml | 1 + core/src/main/resources/languages/zh_TW.toml | 1 + .../generation/hydrology/IrisRiverConfigurationTest.java | 3 ++- .../iris/pack/schema/SchemaBuilderIdentityTest.java | 2 +- .../structure/object/IrisStaticObjectCompatTest.java | 8 +++++--- 26 files changed, 38 insertions(+), 27 deletions(-) diff --git a/adapters/modded-common/src/test/java/art/arcane/iris/modded/localization/ModdedMessageContributorTest.java b/adapters/modded-common/src/test/java/art/arcane/iris/modded/localization/ModdedMessageContributorTest.java index 743636d1c..bd27993d6 100644 --- a/adapters/modded-common/src/test/java/art/arcane/iris/modded/localization/ModdedMessageContributorTest.java +++ b/adapters/modded-common/src/test/java/art/arcane/iris/modded/localization/ModdedMessageContributorTest.java @@ -4,9 +4,8 @@ import art.arcane.iris.localization.IrisLanguage; import art.arcane.iris.localization.IrisMessages; import art.arcane.iris.testsupport.ProjectPaths; import art.arcane.volmlib.util.localization.MessageKey; +import art.arcane.volmlib.util.localization.TomlLanguageParser; import art.arcane.volmlib.util.localization.VolmitLocales; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; import org.junit.Test; import java.nio.file.Files; @@ -30,9 +29,9 @@ public class ModdedMessageContributorTest { public void completeLoaderCatalogStillMatchesEveryDownloadableLocale() throws Exception { Path sourceRoot = ProjectPaths.repositoryFile("core/src/main/resources/languages"); for (String locale : VolmitLocales.nonEnglish()) { - JsonObject document = JsonParser.parseString(Files.readString(sourceRoot.resolve(locale + ".json"))) - .getAsJsonObject(); - assertEquals(locale, IrisLanguage.catalog().ids(), document.getAsJsonObject("messages").keySet()); + Path source = sourceRoot.resolve(locale + ".toml"); + assertEquals(locale, IrisLanguage.catalog().ids(), + TomlLanguageParser.parseValidValues(Files.readString(source), IrisLanguage.catalog()).keySet()); } } } diff --git a/core/build.gradle b/core/build.gradle index 9a729027c..913ebb473 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -303,8 +303,6 @@ List unusedVolmLibClasses = [ 'art/arcane/volmlib/util/json/JSONWriter', 'art/arcane/volmlib/util/json/XML', 'art/arcane/volmlib/util/json/XMLTokener', - 'art/arcane/volmlib/util/hud/HudBid', - 'art/arcane/volmlib/util/hud/HudBidder', 'art/arcane/volmlib/util/hud/HudLocalLedger', 'art/arcane/volmlib/util/hud/HudTitleClaim', 'art/arcane/volmlib/util/hud/HudTitleService', @@ -343,7 +341,6 @@ List unusedVolmLibClasses = [ 'art/arcane/volmlib/util/exceptions/MissingDimensionException', 'art/arcane/volmlib/util/function/Supplier2', 'art/arcane/volmlib/util/function/Supplier3', - 'art/arcane/volmlib/util/hud/HudPriority', 'art/arcane/volmlib/util/inventorygui/UIRainbowDecorator', 'art/arcane/volmlib/util/io/Converter', 'art/arcane/volmlib/util/matter/MatterPlacer', diff --git a/core/src/main/java/art/arcane/iris/generation/concurrent/MultiBurst.java b/core/src/main/java/art/arcane/iris/generation/concurrent/MultiBurst.java index 84f9aea7c..d356c978e 100644 --- a/core/src/main/java/art/arcane/iris/generation/concurrent/MultiBurst.java +++ b/core/src/main/java/art/arcane/iris/generation/concurrent/MultiBurst.java @@ -2,7 +2,6 @@ package art.arcane.iris.generation.concurrent; import art.arcane.iris.spi.IrisLogging; import art.arcane.iris.configuration.IrisSettings; -import art.arcane.volmlib.util.hunk.HunkBurst; import art.arcane.volmlib.util.parallel.MultiBurstSupport; import art.arcane.volmlib.util.math.M; import java.util.concurrent.ExecutorService; @@ -25,13 +24,6 @@ public class MultiBurst extends MultiBurstSupport { public static final MultiBurst hydrology = new MultiBurst("Iris Hydrology", () -> Math.max(2, IrisSettings.getThreadCount(IrisSettings.get().getConcurrency().getParallelism()))); private final AtomicInteger parallelismBaseline = new AtomicInteger(); - static { - // Hunk's parallel section splits live in VolmLib and have no view of Iris' concurrency - // settings, so point them at the same pool the generation stages use. Without this they - // would spin up a second, untuned pool alongside it. - HunkBurst.install(burst::burst); - } - public MultiBurst() { this("Iris"); } diff --git a/core/src/main/java/art/arcane/iris/generation/hydrology/IrisSurfaceRiverBankConfig.java b/core/src/main/java/art/arcane/iris/generation/hydrology/IrisSurfaceRiverBankConfig.java index 309c3c49d..5d6cca9dc 100644 --- a/core/src/main/java/art/arcane/iris/generation/hydrology/IrisSurfaceRiverBankConfig.java +++ b/core/src/main/java/art/arcane/iris/generation/hydrology/IrisSurfaceRiverBankConfig.java @@ -49,8 +49,11 @@ public class IrisSurfaceRiverBankConfig { @Description("Blocks added to every eroded valley width before the blend width limits apply, so even a shallow cut erodes at least this far beyond the shore; 0 leaves the width proportional to the cut alone.") private double blendBaseWidth = 0D; - @Description("Optional palette painted over the shore bench columns instead of the biome's own layers. Disabled by default, which keeps the shore biome's layers.") - private IrisRiverMaterialConfig shoreMaterial = new IrisRiverMaterialConfig(); + @Description("Palette painted over the shore bench columns instead of the biome's own layers. The default is a two-block sand beach.") + private IrisRiverMaterialConfig shoreMaterial = new IrisRiverMaterialConfig() + .setEnabled(true) + .setPalette(new IrisMaterialPalette().qclear().qadd("sand")) + .setDepth(2); @Description("Optional palette painted over the eroded bank columns outside the shore bench instead of the biome's own layers. Disabled by default, which keeps the bank biome's layers.") private IrisRiverMaterialConfig bankMaterial = new IrisRiverMaterialConfig(); diff --git a/core/src/main/java/art/arcane/iris/generation/hydrology/IrisSurfaceRiverBedConfig.java b/core/src/main/java/art/arcane/iris/generation/hydrology/IrisSurfaceRiverBedConfig.java index a2db01c67..e2d2c0bd3 100644 --- a/core/src/main/java/art/arcane/iris/generation/hydrology/IrisSurfaceRiverBedConfig.java +++ b/core/src/main/java/art/arcane/iris/generation/hydrology/IrisSurfaceRiverBedConfig.java @@ -15,7 +15,7 @@ import lombok.experimental.Accessors; @Data public class IrisSurfaceRiverBedConfig { @Description("Allow sand, gravel and other falling blocks in the bed, shore and eroded banks. When false they are replaced by the padding palette.") - private boolean allowGravityBlocks = false; + private boolean allowGravityBlocks = true; @MinNumber(0) @MaxNumber(8) diff --git a/core/src/main/java/art/arcane/iris/world/storage/matter/PreObjectMatter.java b/core/src/main/java/art/arcane/iris/world/storage/matter/PreObjectMatter.java index b51a2f852..1e85807ad 100644 --- a/core/src/main/java/art/arcane/iris/world/storage/matter/PreObjectMatter.java +++ b/core/src/main/java/art/arcane/iris/world/storage/matter/PreObjectMatter.java @@ -50,19 +50,19 @@ public final class PreObjectMatter extends MappedHunk @Override public PreObjectMatter iterateSync(Consumer4 consumer) { - super.iterateSync(consumer); + super.iterateEntriesSync(consumer); return this; } @Override public PreObjectMatter iterateSyncIO(Consumer4IO consumer) throws IOException { - super.iterateSyncIO(consumer); + super.iterateEntriesSyncIO(consumer); return this; } @Override public void empty(PreObjectMatterCell value) { - super.empty(value); + clear(); } @Override diff --git a/core/src/main/resources/languages/de_DE.toml b/core/src/main/resources/languages/de_DE.toml index cda10dde4..658d8ad99 100644 --- a/core/src/main/resources/languages/de_DE.toml +++ b/core/src/main/resources/languages/de_DE.toml @@ -2075,6 +2075,7 @@ loading = "Nachrichten für {locale} werden geladen..." "part.line" = "Zeile {line}" "value.none" = "Keine" "value.empty" = "(leer)" +title = "{plugin} / {section}" [debug.error] missing-permission = "Fehlende Berechtigung: {permission}" diff --git a/core/src/main/resources/languages/es_ES.toml b/core/src/main/resources/languages/es_ES.toml index 241a93324..b0aa8e048 100644 --- a/core/src/main/resources/languages/es_ES.toml +++ b/core/src/main/resources/languages/es_ES.toml @@ -2075,6 +2075,7 @@ loading = "Cargando los mensajes de {locale}..." "part.line" = "Línea {line}" "value.none" = "Ninguno" "value.empty" = "(vacío)" +title = "{plugin} / {section}" [debug.error] missing-permission = "Falta el permiso: {permission}" diff --git a/core/src/main/resources/languages/fi_FI.toml b/core/src/main/resources/languages/fi_FI.toml index f0a1981a3..d82e38673 100644 --- a/core/src/main/resources/languages/fi_FI.toml +++ b/core/src/main/resources/languages/fi_FI.toml @@ -2080,6 +2080,7 @@ loading = "Ladataan kielen {locale} viestejä..." "part.line" = "Rivi {line}" "value.none" = "Ei ole" "value.empty" = "(tyhjä)" +title = "{plugin} / {section}" [debug.error] missing-permission = "Puuttuva käyttöoikeus: {permission}" diff --git a/core/src/main/resources/languages/fr_FR.toml b/core/src/main/resources/languages/fr_FR.toml index 6de0596ea..42fd062ab 100644 --- a/core/src/main/resources/languages/fr_FR.toml +++ b/core/src/main/resources/languages/fr_FR.toml @@ -2075,6 +2075,7 @@ loading = "Chargement des messages en {locale}..." "part.line" = "Ligne {line}" "value.none" = "Aucune" "value.empty" = "(vide)" +title = "{plugin} / {section}" [debug.error] missing-permission = "Permission manquante : {permission}" diff --git a/core/src/main/resources/languages/he_IL.toml b/core/src/main/resources/languages/he_IL.toml index e3218c83e..ed22c94e8 100644 --- a/core/src/main/resources/languages/he_IL.toml +++ b/core/src/main/resources/languages/he_IL.toml @@ -2080,6 +2080,7 @@ loading = "טוען הודעות עבור {locale}..." "part.line" = "שורה {line}" "value.none" = "אין" "value.empty" = "(ריק)" +title = "{plugin} / {section}" [debug.error] missing-permission = "חסרה הרשאה: {permission}" diff --git a/core/src/main/resources/languages/it_IT.toml b/core/src/main/resources/languages/it_IT.toml index 136592a2e..7bd4efc72 100644 --- a/core/src/main/resources/languages/it_IT.toml +++ b/core/src/main/resources/languages/it_IT.toml @@ -2075,6 +2075,7 @@ loading = "Caricamento dei messaggi in {locale}..." "part.line" = "Riga {line}" "value.none" = "Nessuno" "value.empty" = "(vuoto)" +title = "{plugin} / {section}" [debug.error] missing-permission = "Permesso mancante: {permission}" diff --git a/core/src/main/resources/languages/ja-JP.toml b/core/src/main/resources/languages/ja-JP.toml index af11d0285..e18276e6d 100644 --- a/core/src/main/resources/languages/ja-JP.toml +++ b/core/src/main/resources/languages/ja-JP.toml @@ -2078,6 +2078,7 @@ loading = "{locale}のメッセージを読み込んでいます..." "part.line" = "行{line}" "value.none" = "なし" "value.empty" = "(空)" +title = "{plugin} / {section}" [debug.error] missing-permission = "権限がありません: {permission}" diff --git a/core/src/main/resources/languages/ko_KR.toml b/core/src/main/resources/languages/ko_KR.toml index 13f6b4d0c..1a7de8097 100644 --- a/core/src/main/resources/languages/ko_KR.toml +++ b/core/src/main/resources/languages/ko_KR.toml @@ -2078,6 +2078,7 @@ loading = "{locale} 메시지를 불러오는 중..." "part.line" = "{line}번째 줄" "value.none" = "없음" "value.empty" = "(비어 있음)" +title = "{plugin} / {section}" [debug.error] missing-permission = "권한이 없습니다: {permission}" diff --git a/core/src/main/resources/languages/lt_LT.toml b/core/src/main/resources/languages/lt_LT.toml index 383a045dd..430aac6e3 100644 --- a/core/src/main/resources/languages/lt_LT.toml +++ b/core/src/main/resources/languages/lt_LT.toml @@ -2080,6 +2080,7 @@ loading = "Įkeliami kalbos {locale} pranešimai..." "part.line" = "Eilutė {line}" "value.none" = "Nėra" "value.empty" = "(tuščia)" +title = "{plugin} / {section}" [debug.error] missing-permission = "Trūksta leidimo: {permission}" diff --git a/core/src/main/resources/languages/nl_NL.toml b/core/src/main/resources/languages/nl_NL.toml index 81899f0ca..f0e7625c2 100644 --- a/core/src/main/resources/languages/nl_NL.toml +++ b/core/src/main/resources/languages/nl_NL.toml @@ -2075,6 +2075,7 @@ loading = "Berichten voor {locale} laden..." "part.line" = "Regel {line}" "value.none" = "Geen" "value.empty" = "(leeg)" +title = "{plugin} / {section}" [debug.error] missing-permission = "Ontbrekende machtiging: {permission}" diff --git a/core/src/main/resources/languages/pl_PL.toml b/core/src/main/resources/languages/pl_PL.toml index a0eefc734..695f1a982 100644 --- a/core/src/main/resources/languages/pl_PL.toml +++ b/core/src/main/resources/languages/pl_PL.toml @@ -2080,6 +2080,7 @@ loading = "Wczytywanie wiadomości w języku {locale}..." "part.line" = "Linia {line}" "value.none" = "Brak" "value.empty" = "(pusty)" +title = "{plugin} / {section}" [debug.error] missing-permission = "Brak uprawnienia: {permission}" diff --git a/core/src/main/resources/languages/pt_PT.toml b/core/src/main/resources/languages/pt_PT.toml index f9e7fcba7..b14652f6e 100644 --- a/core/src/main/resources/languages/pt_PT.toml +++ b/core/src/main/resources/languages/pt_PT.toml @@ -2075,6 +2075,7 @@ loading = "A carregar as mensagens de {locale}..." "part.line" = "Linha {line}" "value.none" = "Nenhum" "value.empty" = "(vazio)" +title = "{plugin} / {section}" [debug.error] missing-permission = "Permissão em falta: {permission}" diff --git a/core/src/main/resources/languages/ru_RU.toml b/core/src/main/resources/languages/ru_RU.toml index 0ca3028c9..6df859645 100644 --- a/core/src/main/resources/languages/ru_RU.toml +++ b/core/src/main/resources/languages/ru_RU.toml @@ -2080,6 +2080,7 @@ loading = "Загрузка сообщений для {locale}..." "part.line" = "Строка {line}" "value.none" = "Нет" "value.empty" = "(пусто)" +title = "{plugin} / {section}" [debug.error] missing-permission = "Нет разрешения: {permission}" diff --git a/core/src/main/resources/languages/tr_TR.toml b/core/src/main/resources/languages/tr_TR.toml index 08cc296c5..10f111483 100644 --- a/core/src/main/resources/languages/tr_TR.toml +++ b/core/src/main/resources/languages/tr_TR.toml @@ -2080,6 +2080,7 @@ loading = "{locale} mesajları yükleniyor..." "part.line" = "Satır {line}" "value.none" = "Yok" "value.empty" = "(boş)" +title = "{plugin} / {section}" [debug.error] missing-permission = "Eksik izin: {permission}" diff --git a/core/src/main/resources/languages/vi_VI.toml b/core/src/main/resources/languages/vi_VI.toml index 25e9a75d3..ae34ed63d 100644 --- a/core/src/main/resources/languages/vi_VI.toml +++ b/core/src/main/resources/languages/vi_VI.toml @@ -2078,6 +2078,7 @@ loading = "Đang tải tin nhắn cho {locale}..." "part.line" = "Dòng {line}" "value.none" = "Không có" "value.empty" = "(trống)" +title = "{plugin} / {section}" [debug.error] missing-permission = "Thiếu quyền: {permission}" diff --git a/core/src/main/resources/languages/zh_CN.toml b/core/src/main/resources/languages/zh_CN.toml index 96c03751b..2a9be1419 100644 --- a/core/src/main/resources/languages/zh_CN.toml +++ b/core/src/main/resources/languages/zh_CN.toml @@ -2078,6 +2078,7 @@ loading = "正在加载 {locale} 的消息..." "part.line" = "第 {line} 行" "value.none" = "无" "value.empty" = "(空)" +title = "{plugin} / {section}" [debug.error] missing-permission = "缺少权限:{permission}" diff --git a/core/src/main/resources/languages/zh_TW.toml b/core/src/main/resources/languages/zh_TW.toml index 2ddb24a2d..5988fd6c9 100644 --- a/core/src/main/resources/languages/zh_TW.toml +++ b/core/src/main/resources/languages/zh_TW.toml @@ -2078,6 +2078,7 @@ loading = "正在載入 {locale} 的訊息..." "part.line" = "第 {line} 行" "value.none" = "無" "value.empty" = "(空)" +title = "{plugin} / {section}" [debug.error] missing-permission = "缺少權限:{permission}" diff --git a/core/src/test/java/art/arcane/iris/generation/hydrology/IrisRiverConfigurationTest.java b/core/src/test/java/art/arcane/iris/generation/hydrology/IrisRiverConfigurationTest.java index a161dbd0c..f8ebb9555 100644 --- a/core/src/test/java/art/arcane/iris/generation/hydrology/IrisRiverConfigurationTest.java +++ b/core/src/test/java/art/arcane/iris/generation/hydrology/IrisRiverConfigurationTest.java @@ -69,8 +69,9 @@ public class IrisRiverConfigurationTest { assertTrue(surface.getBanks().isExposeCutStrata()); assertEquals(0D, surface.getBanks().getShoreRise(), 0D); assertEquals(0D, surface.getBanks().getBlendBaseWidth(), 0D); - assertDisabledMaterial(surface.getBanks().getShoreMaterial()); + assertMaterial(surface.getBanks().getShoreMaterial(), "sand", 2); assertDisabledMaterial(surface.getBanks().getBankMaterial()); + assertTrue(surface.getBed().isAllowGravityBlocks()); assertDisabledMaterial(surface.getBed().getMaterial()); assertEquals(2, surface.getFlow().getCascadeRun()); assertEquals(6, surface.getFlow().getWaterfallMinimumDrop()); diff --git a/core/src/test/java/art/arcane/iris/pack/schema/SchemaBuilderIdentityTest.java b/core/src/test/java/art/arcane/iris/pack/schema/SchemaBuilderIdentityTest.java index 2a41be4c1..7aca65265 100644 --- a/core/src/test/java/art/arcane/iris/pack/schema/SchemaBuilderIdentityTest.java +++ b/core/src/test/java/art/arcane/iris/pack/schema/SchemaBuilderIdentityTest.java @@ -78,7 +78,7 @@ public class SchemaBuilderIdentityTest { @ClassRule public static final PlatformLeakGuard PLATFORM_GUARD = PlatformLeakGuard.clean(); - private static final String EXPECTED_SCHEMA_DIGEST = "f9f759367e4712bc5d0ade01b0086d5d5855ede41e8a57d56e067d8c03964d14"; + private static final String EXPECTED_SCHEMA_DIGEST = "da993d49349b961b46f86a4966b8d2ab228a6b005c2a4ee279018e03e1139783"; private static final List> SCHEMA_ROOTS = List.of( IrisDimension.class, diff --git a/core/src/test/java/art/arcane/iris/structure/object/IrisStaticObjectCompatTest.java b/core/src/test/java/art/arcane/iris/structure/object/IrisStaticObjectCompatTest.java index e51f0f771..06fe7852b 100644 --- a/core/src/test/java/art/arcane/iris/structure/object/IrisStaticObjectCompatTest.java +++ b/core/src/test/java/art/arcane/iris/structure/object/IrisStaticObjectCompatTest.java @@ -66,10 +66,12 @@ public class IrisStaticObjectCompatTest { public void bindPlatform() { previousSettings = IrisSettings.settings; IrisSettings.settings = new IrisSettings(); - // Water, clay and dirt are what a default dimension composes (fluid palette, river bed padding); without - // them the dimension itself is excluded and the static object is never the deciding unit. + // Water, clay, dirt and sand are what a default dimension composes (fluid palette, river bed padding, the + // default sand shore bench); without them the dimension itself is excluded and the static object is never + // the deciding unit. platform = CompatTestPlatform.bind(temporaryFolder.getRoot(), List.of("minecraft:stone", - "minecraft:cobblestone", "minecraft:air", "minecraft:water", "minecraft:clay", "minecraft:dirt")); + "minecraft:cobblestone", "minecraft:air", "minecraft:water", "minecraft:clay", "minecraft:dirt", + "minecraft:sand")); previousRotator = IrisObjectRotation.bindPlatformRotator((rotation, block, x, y, z) -> block); }