Compare commits

..
2 Commits
Author SHA1 Message Date
Luca 95d1533342 Add Context Parameter to get Description (#60)
Yes this is breaking, but only to the changes that where merged not even
24 hours ago.
2026-05-24 13:35:25 +08:00
Luca 19179ec894 improve description fallback (#59) 2026-05-23 19:42:15 +02:00
4 changed files with 48 additions and 25 deletions

No files matched your search

@@ -57,11 +57,13 @@ public interface IStructureElement<T> {
* {@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<String> getDescription() {
default List<String> getDescription(T context) {
return null;
}
@@ -230,8 +232,8 @@ public interface IStructureElement<T> {
@Nullable
@Override
public List<String> getDescription() {
return IStructureElement.this.getDescription();
public List<String> getDescription(T context) {
return IStructureElement.this.getDescription(context);
}
};
}
@@ -65,10 +65,10 @@ public interface IStructureElementChain<T> extends IStructureElement<T> {
@Nullable
@Override
default List<String> getDescription() {
default List<String> getDescription(T context) {
Set<String> descriptions = new LinkedHashSet<>();
for (IStructureElement<T> fallback : fallbacks()) {
List<String> desc = fallback.getDescription();
List<String> desc = fallback.getDescription(context);
if (desc != null) {
descriptions.addAll(desc);
}
@@ -69,7 +69,7 @@ class LazyStructureElement<T> implements IStructureElementDeferred<T> {
@Nullable
@Override
public List<String> getDescription() {
return elem != null ? elem.getDescription() : null;
public List<String> getDescription(T context) {
return elem != null ? elem.getDescription(context) : null;
}
}
@@ -707,12 +707,22 @@ public class StructureUtility {
public static <T, TIER> IStructureElement<T> ofBlocksTiered(ITierConverter<TIER> tierExtractor,
@Nullable List<Pair<Block, Integer>> allKnownTiers, @Nullable TIER notSet, BiConsumer<T, TIER> setter,
Function<T, TIER> getter) {
return ofBlocksTiered(tierExtractor, allKnownTiers, notSet, setter, getter, null);
List<String> descriptions = null;
if (allKnownTiers != null) {
descriptions = new java.util.ArrayList<>();
for (Pair<Block, Integer> 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);
}
/**
* 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)
@@ -801,7 +811,18 @@ public class StructureUtility {
@Nullable
@Override
public List<String> getDescription() {
public List<String> getDescription(T context) {
TIER currentTier = getter.apply(context);
if (Objects.equals(currentTier, notSet)) return description;
for (Pair<Block, Integer> 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;
}
@@ -1431,7 +1452,7 @@ public class StructureUtility {
@Nullable
@Override
public List<String> getDescription() {
public List<String> getDescription(T context) {
Item item = Item.getItemFromBlock(block);
if (item == null) return null;
return Collections.singletonList(new ItemStack(item, 1, meta).getUnlocalizedName() + ".name");
@@ -1518,7 +1539,7 @@ public class StructureUtility {
@Nullable
@Override
public List<String> getDescription() {
public List<String> getDescription(T context) {
Item item = Item.getItemFromBlock(block);
if (item == null) return null;
return Collections.singletonList(new ItemStack(item, 1, meta).getUnlocalizedName() + ".name");
@@ -1568,7 +1589,7 @@ public class StructureUtility {
@Nullable
@Override
public List<String> getDescription() {
public List<String> getDescription(T context) {
Item item = Item.getItemFromBlock(block);
if (item == null) return null;
return Collections.singletonList(new ItemStack(item, 1, 0).getUnlocalizedName() + ".name");
@@ -1608,7 +1629,7 @@ public class StructureUtility {
@Nullable
@Override
public List<String> getDescription() {
public List<String> getDescription(T context) {
Item item = Item.getItemFromBlock(block);
if (item == null) return null;
return Collections.singletonList(new ItemStack(item, 1, 0).getUnlocalizedName() + ".name");
@@ -1879,8 +1900,8 @@ public class StructureUtility {
@Nullable
@Override
public List<String> getDescription() {
return element.getDescription();
public List<String> getDescription(T context) {
return element.getDescription(context);
}
};
}
@@ -1938,7 +1959,7 @@ public class StructureUtility {
@Nullable
@Override
public List<String> getDescription() {
public List<String> getDescription(T context) {
return description;
}
};
@@ -2000,8 +2021,8 @@ public class StructureUtility {
@Nullable
@Override
public List<String> getDescription() {
return element.getDescription();
public List<String> getDescription(T context) {
return element.getDescription(context);
}
};
}
@@ -2075,8 +2096,8 @@ public class StructureUtility {
@Nullable
@Override
public List<String> getDescription() {
return downstream.getDescription();
public List<String> getDescription(T context) {
return downstream.getDescription(context);
}
};
}
@@ -2178,8 +2199,8 @@ public class StructureUtility {
@Nullable
@Override
public List<String> getDescription() {
return elem.getDescription();
public List<String> getDescription(T context) {
return elem.getDescription(context.getCurrentContext());
}
};
}
@@ -3021,8 +3042,8 @@ public class StructureUtility {
@Nullable
@Override
public List<String> getDescription() {
return backing.getDescription();
public List<String> getDescription(T context) {
return backing.getDescription(context);
}
};
}