Merge Back

This commit is contained in:
Brian Neumann-Fopiano committed 2026-09-12 16:06:08 -04:00
1 parent e832239730
commit 7a099cbd5e
26 files changed
+38 -27

No files matched your search

@@ -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());
}
}
}
-3
View File
@@ -303,8 +303,6 @@ List<String> 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<String> 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',
@@ -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");
}
@@ -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();
@@ -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)
@@ -50,19 +50,19 @@ public final class PreObjectMatter extends MappedHunk<PreObjectMatterCell>
@Override
public PreObjectMatter iterateSync(Consumer4<Integer, Integer, Integer, PreObjectMatterCell> consumer) {
super.iterateSync(consumer);
super.iterateEntriesSync(consumer);
return this;
}
@Override
public PreObjectMatter iterateSyncIO(Consumer4IO<Integer, Integer, Integer, PreObjectMatterCell> consumer) throws IOException {
super.iterateSyncIO(consumer);
super.iterateEntriesSyncIO(consumer);
return this;
}
@Override
public void empty(PreObjectMatterCell value) {
super.empty(value);
clear();
}
@Override
@@ -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}"
@@ -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}"
@@ -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}"
@@ -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}"
@@ -2080,6 +2080,7 @@ loading = "טוען הודעות עבור {locale}..."
"part.line" = "שורה {line}"
"value.none" = "אין"
"value.empty" = "(ריק)"
title = "{plugin} / {section}"
[debug.error]
missing-permission = "חסרה הרשאה: {permission}"
@@ -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}"
@@ -2078,6 +2078,7 @@ loading = "{locale}のメッセージを読み込んでいます..."
"part.line" = "行{line}"
"value.none" = "なし"
"value.empty" = "(空)"
title = "{plugin} / {section}"
[debug.error]
missing-permission = "権限がありません: {permission}"
@@ -2078,6 +2078,7 @@ loading = "{locale} 메시지를 불러오는 중..."
"part.line" = "{line}번째 줄"
"value.none" = "없음"
"value.empty" = "(비어 있음)"
title = "{plugin} / {section}"
[debug.error]
missing-permission = "권한이 없습니다: {permission}"
@@ -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}"
@@ -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}"
@@ -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}"
@@ -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}"
@@ -2080,6 +2080,7 @@ loading = "Загрузка сообщений для {locale}..."
"part.line" = "Строка {line}"
"value.none" = "Нет"
"value.empty" = "(пусто)"
title = "{plugin} / {section}"
[debug.error]
missing-permission = "Нет разрешения: {permission}"
@@ -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}"
@@ -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}"
@@ -2078,6 +2078,7 @@ loading = "正在加载 {locale} 的消息..."
"part.line" = "第 {line} 行"
"value.none" = "无"
"value.empty" = "(空)"
title = "{plugin} / {section}"
[debug.error]
missing-permission = "缺少权限:{permission}"
@@ -2078,6 +2078,7 @@ loading = "正在載入 {locale} 的訊息..."
"part.line" = "第 {line} 行"
"value.none" = "無"
"value.empty" = "(空)"
title = "{plugin} / {section}"
[debug.error]
missing-permission = "缺少權限:{permission}"
@@ -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());
@@ -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<Class<?>> SCHEMA_ROOTS = List.of(
IrisDimension.class,
@@ -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);
}