From 95d153334292070384209ed805213176878c866e Mon Sep 17 00:00:00 2001 From: Luca <38906805+Luca-Guettinger@users.noreply.github.com> Date: Sun, 24 May 2026 07:35:25 +0200 Subject: [PATCH] Add Context Parameter to get Description (#60) Yes this is breaking, but only to the changes that where merged not even 24 hours ago. --- .../structure/IStructureElement.java | 8 ++-- .../structure/IStructureElementChain.java | 4 +- .../structure/LazyStructureElement.java | 4 +- .../structure/StructureUtility.java | 41 ++++++++----------- 4 files changed, 27 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureElement.java b/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureElement.java index bff3d9f9..f6ed4c71 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureElement.java +++ b/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureElement.java @@ -57,11 +57,13 @@ public interface IStructureElement { * {@code StatCollector.translateToLocal()}. If a key has no matching translation, {@code translateToLocal} returns * the input string unchanged, so pre-translated fallback strings also work. * + * @param context the context object (e.g. the multiblock controller), used to determine state-dependent + * descriptions * @return a list of accepted block descriptions as lang keys (or display names as fallback), or null if no * description is available */ @Nullable - default List getDescription() { + default List getDescription(T context) { return null; } @@ -230,8 +232,8 @@ public interface IStructureElement { @Nullable @Override - public List getDescription() { - return IStructureElement.this.getDescription(); + public List getDescription(T context) { + return IStructureElement.this.getDescription(context); } }; } diff --git a/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureElementChain.java b/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureElementChain.java index 70406a1f..87218270 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureElementChain.java +++ b/src/main/java/com/gtnewhorizon/structurelib/structure/IStructureElementChain.java @@ -65,10 +65,10 @@ public interface IStructureElementChain extends IStructureElement { @Nullable @Override - default List getDescription() { + default List getDescription(T context) { Set descriptions = new LinkedHashSet<>(); for (IStructureElement fallback : fallbacks()) { - List desc = fallback.getDescription(); + List desc = fallback.getDescription(context); if (desc != null) { descriptions.addAll(desc); } diff --git a/src/main/java/com/gtnewhorizon/structurelib/structure/LazyStructureElement.java b/src/main/java/com/gtnewhorizon/structurelib/structure/LazyStructureElement.java index 0b800429..042acc9a 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/structure/LazyStructureElement.java +++ b/src/main/java/com/gtnewhorizon/structurelib/structure/LazyStructureElement.java @@ -69,7 +69,7 @@ class LazyStructureElement implements IStructureElementDeferred { @Nullable @Override - public List getDescription() { - return elem != null ? elem.getDescription() : null; + public List getDescription(T context) { + return elem != null ? elem.getDescription(context) : null; } } diff --git a/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java b/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java index 2dd375b4..f4832571 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java +++ b/src/main/java/com/gtnewhorizon/structurelib/structure/StructureUtility.java @@ -722,7 +722,7 @@ public class StructureUtility { /** * Like {@link #ofBlocksTiered(ITierConverter, List, Object, BiConsumer, Function)}, but with an explicit - * description that will be returned by {@link IStructureElement#getDescription()}. + * description that will be returned by {@link IStructureElement#getDescription(Object)}. * * @param description the description lang keys to attach to this element, or null for no description * @see #ofBlocksTiered(ITierConverter, List, Object, BiConsumer, Function) @@ -735,11 +735,8 @@ 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); } @@ -750,7 +747,6 @@ 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()); @@ -815,9 +811,8 @@ public class StructureUtility { @Nullable @Override - public List getDescription() { - if (lastContext == null) return description; - TIER currentTier = getter.apply(lastContext); + public List getDescription(T context) { + TIER currentTier = getter.apply(context); if (Objects.equals(currentTier, notSet)) return description; for (Pair pair : hints) { @@ -1457,7 +1452,7 @@ public class StructureUtility { @Nullable @Override - public List getDescription() { + public List getDescription(T context) { Item item = Item.getItemFromBlock(block); if (item == null) return null; return Collections.singletonList(new ItemStack(item, 1, meta).getUnlocalizedName() + ".name"); @@ -1544,7 +1539,7 @@ public class StructureUtility { @Nullable @Override - public List getDescription() { + public List getDescription(T context) { Item item = Item.getItemFromBlock(block); if (item == null) return null; return Collections.singletonList(new ItemStack(item, 1, meta).getUnlocalizedName() + ".name"); @@ -1594,7 +1589,7 @@ public class StructureUtility { @Nullable @Override - public List getDescription() { + public List getDescription(T context) { Item item = Item.getItemFromBlock(block); if (item == null) return null; return Collections.singletonList(new ItemStack(item, 1, 0).getUnlocalizedName() + ".name"); @@ -1634,7 +1629,7 @@ public class StructureUtility { @Nullable @Override - public List getDescription() { + public List getDescription(T context) { Item item = Item.getItemFromBlock(block); if (item == null) return null; return Collections.singletonList(new ItemStack(item, 1, 0).getUnlocalizedName() + ".name"); @@ -1905,8 +1900,8 @@ public class StructureUtility { @Nullable @Override - public List getDescription() { - return element.getDescription(); + public List getDescription(T context) { + return element.getDescription(context); } }; } @@ -1964,7 +1959,7 @@ public class StructureUtility { @Nullable @Override - public List getDescription() { + public List getDescription(T context) { return description; } }; @@ -2026,8 +2021,8 @@ public class StructureUtility { @Nullable @Override - public List getDescription() { - return element.getDescription(); + public List getDescription(T context) { + return element.getDescription(context); } }; } @@ -2101,8 +2096,8 @@ public class StructureUtility { @Nullable @Override - public List getDescription() { - return downstream.getDescription(); + public List getDescription(T context) { + return downstream.getDescription(context); } }; } @@ -2204,8 +2199,8 @@ public class StructureUtility { @Nullable @Override - public List getDescription() { - return elem.getDescription(); + public List getDescription(T context) { + return elem.getDescription(context.getCurrentContext()); } }; } @@ -3047,8 +3042,8 @@ public class StructureUtility { @Nullable @Override - public List getDescription() { - return backing.getDescription(); + public List getDescription(T context) { + return backing.getDescription(context); } }; }