From 19179ec89430a7e24a8484f473a450974bb6ceec Mon Sep 17 00:00:00 2001 From: Luca <38906805+Luca-Guettinger@users.noreply.github.com> Date: Sat, 23 May 2026 19:42:15 +0200 Subject: [PATCH] improve description fallback (#59) --- .../structure/StructureUtility.java | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java b/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java index 72ce0fa7..2dd375b4 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java +++ b/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java @@ -707,7 +707,17 @@ public class StructureUtility { public static IStructureElement ofBlocksTiered(ITierConverter tierExtractor, @Nullable List> allKnownTiers, @Nullable TIER notSet, BiConsumer setter, Function getter) { - return ofBlocksTiered(tierExtractor, allKnownTiers, notSet, setter, getter, null); + List descriptions = null; + if (allKnownTiers != null) { + descriptions = new java.util.ArrayList<>(); + for (Pair tier : allKnownTiers) { + Item item = Item.getItemFromBlock(tier.getLeft()); + if (item != null) { + descriptions.add(new ItemStack(item, 1, tier.getRight()).getUnlocalizedName() + ".name"); + } + } + } + return ofBlocksTiered(tierExtractor, allKnownTiers, notSet, setter, getter, descriptions); } /** @@ -725,8 +735,11 @@ public class StructureUtility { IStructureElementCheckOnly check = ofBlocksTiered(tierExtractor, notSet, setter, getter); return new StructureElement_Bridge() { + private T lastContext; + @Override public boolean check(T t, World world, int x, int y, int z) { + lastContext = t; return check.check(t, world, x, y, z); } @@ -737,6 +750,7 @@ public class StructureUtility { @Override public boolean couldBeValid(T t, World world, int x, int y, int z, ItemStack trigger) { + lastContext = t; Pair hint = getHint(trigger); if (hint == null) return true; TIER hintTier = tierExtractor.convert(hint.getKey(), hint.getValue()); @@ -802,6 +816,18 @@ public class StructureUtility { @Nullable @Override public List getDescription() { + if (lastContext == null) return description; + TIER currentTier = getter.apply(lastContext); + if (Objects.equals(currentTier, notSet)) return description; + + for (Pair pair : hints) { + TIER pairTier = tierExtractor.convert(pair.getKey(), pair.getValue()); + if (!Objects.equals(pairTier, currentTier)) continue; + Item item = Item.getItemFromBlock(pair.getKey()); + if (item == null) continue; + return Collections + .singletonList(new ItemStack(item, 1, pair.getValue()).getUnlocalizedName() + ".name"); + } return description; }