From 00cbacdd798b096309a00ebae9538f59f6d1aa28 Mon Sep 17 00:00:00 2001 From: TheRobbie72 Date: Sat, 27 Dec 2025 15:17:27 +0800 Subject: [PATCH] add method to omit commas in IotaType --- .../at/petrak/hexcasting/api/casting/iota/IotaType.java | 8 +++++++- .../at/petrak/hexcasting/api/casting/iota/ListIota.java | 9 +++++---- .../petrak/hexcasting/api/casting/iota/PatternIota.java | 5 +++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/IotaType.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/IotaType.java index c0167ae5df..3bb90c7c32 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/IotaType.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/IotaType.java @@ -3,7 +3,6 @@ import at.petrak.hexcasting.api.HexAPI; import at.petrak.hexcasting.api.utils.HexUtils; import at.petrak.hexcasting.common.lib.hex.HexIotaTypes; -import com.mojang.datafixers.util.Pair; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.Font; import net.minecraft.nbt.CompoundTag; @@ -53,6 +52,13 @@ public Component typeName() { .withStyle(style -> style.withColor(TextColor.fromRgb(color()))); } + /** + * If commas should be omitted when the iota is inside of a list iota + */ + public boolean omitCommas() { + return false; + } + public static CompoundTag serialize(Iota iota) { var type = iota.getType(); var typeId = HexIotaTypes.REGISTRY.getKey(type); diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ListIota.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ListIota.java index 0eddd14808..2c0c9ffbee 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ListIota.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/ListIota.java @@ -132,12 +132,13 @@ public Component display(Tag tag) { out.append(IotaType.getDisplay(csub)); // only add a comma between 2 non-patterns (commas don't look good with Inline patterns) - // TODO: maybe add a method on IotaType to allow it to opt out of commas? if (i < list.size() - 1) { - var thisIotaNeedsComma = IotaType.getTypeFromTag(csub) != PatternIota.TYPE; - var nextIotaNeedsComma = IotaType.getTypeFromTag(HexUtils.downcast(list.get(i+1), CompoundTag.TYPE)) != PatternIota.TYPE; + var thisType = IotaType.getTypeFromTag(csub); + var nextType = IotaType.getTypeFromTag(HexUtils.downcast(list.get(i+1), CompoundTag.TYPE)); + var thisIotaOmitsComma = thisType != null && thisType.omitCommas(); + var nextIotaOmitsComma = nextType != null && nextType.omitCommas(); var alwaysShowCommas = HexConfig.client() != null && HexConfig.client().alwaysShowListCommas(); - if (thisIotaNeedsComma || nextIotaNeedsComma || alwaysShowCommas) + if (!thisIotaOmitsComma || !nextIotaOmitsComma || alwaysShowCommas) out.append(", "); } } diff --git a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/PatternIota.java b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/PatternIota.java index 74db0a95fb..190dcdb25b 100644 --- a/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/PatternIota.java +++ b/Common/src/main/java/at/petrak/hexcasting/api/casting/iota/PatternIota.java @@ -155,6 +155,11 @@ public Component display(Tag tag) { public int color() { return 0xff_ffaa00; } + + @Override + public boolean omitCommas() { + return true; + } }; public static PatternIota deserialize(Tag tag) throws IllegalArgumentException {