diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-07-14 09:40:28 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-14 21:40:28 +0800 |
commit | 9244fb62fc445b10e44659a373c163ccb2a01dc7 (patch) | |
tree | 87ca675ebd4d54e57bff35583ea90bb2eb2fcabf /src/main | |
parent | 02ae5914e493e8291d34fb8ea61f482c9af547a6 (diff) | |
download | Skyblocker-9244fb62fc445b10e44659a373c163ccb2a01dc7.tar.gz Skyblocker-9244fb62fc445b10e44659a373c163ccb2a01dc7.tar.bz2 Skyblocker-9244fb62fc445b10e44659a373c163ccb2a01dc7.zip |
Fix result text displaying weirdly when its too long (#842)
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/itemlist/SearchResultsWidget.java | 36 |
1 files changed, 10 insertions, 26 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/SearchResultsWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/SearchResultsWidget.java index bb236526..c4de2be0 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/SearchResultsWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/SearchResultsWidget.java @@ -12,17 +12,15 @@ import net.minecraft.client.gui.widget.ToggleButtonWidget; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.LoreComponent; import net.minecraft.item.ItemStack; +import net.minecraft.text.OrderedText; +import net.minecraft.text.StringVisitable; import net.minecraft.text.Text; -import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; - -import org.jetbrains.annotations.Nullable; +import net.minecraft.util.Language; import java.util.ArrayList; import java.util.List; import java.util.Locale; -import java.util.regex.Matcher; -import java.util.regex.Pattern; public class SearchResultsWidget implements Drawable, Element { private static final ButtonTextures PAGE_FORWARD_TEXTURES = new ButtonTextures(Identifier.ofVanilla("recipe_book/page_forward"), Identifier.ofVanilla("recipe_book/page_forward_highlighted")); @@ -30,7 +28,6 @@ public class SearchResultsWidget implements Drawable, Element { private static final int COLS = 5; private static final int MAX_TEXT_WIDTH = 124; private static final String ELLIPSIS = "..."; - private static final Pattern FORMATTING_CODE_PATTERN = Pattern.compile("(?i)§[0-9A-FK-OR]"); private final MinecraftClient client; private final int parentX; @@ -134,11 +131,15 @@ public class SearchResultsWidget implements Drawable, Element { //Item name Text resultText = this.recipeResults.get(this.currentPage).getResult().getName(); - if (textRenderer.getWidth(Formatting.strip(resultText.getString())) > MAX_TEXT_WIDTH) { + if (textRenderer.getWidth(resultText) > MAX_TEXT_WIDTH) { drawTooltip(textRenderer, context, resultText, this.parentX + 11, this.parentY + 43, mouseX, mouseY); - resultText = Text.literal(getLegacyFormatting(resultText.getString()) + textRenderer.trimToWidth(Formatting.strip(resultText.getString()), MAX_TEXT_WIDTH) + ELLIPSIS).setStyle(resultText.getStyle()); + StringVisitable trimmed = StringVisitable.concat(textRenderer.trimToWidth(resultText, MAX_TEXT_WIDTH), StringVisitable.plain(ELLIPSIS)); + OrderedText ordered = Language.getInstance().reorder(trimmed); + + context.drawTextWithShadow(textRenderer, ordered, this.parentX + 11, this.parentY + 43, 0xffffffff); + } else { + context.drawTextWithShadow(textRenderer, resultText, this.parentX + 11, this.parentY + 43, 0xffffffff); } - context.drawTextWithShadow(textRenderer, resultText, this.parentX + 11, this.parentY + 43, 0xffffffff); //Arrow pointing to result item from the recipe context.drawTextWithShadow(textRenderer, "▶", this.parentX + 96, this.parentY + 90, 0xaaffffff); @@ -173,23 +174,6 @@ public class SearchResultsWidget implements Drawable, Element { drawTooltip(textRenderer, context, Text.of(text), textX, textY, mouseX, mouseY); } - /** - * Retrieves the first occurrence of section symbol formatting in a string - * - * @param string The string to fetch section symbol formatting from - * @return The section symbol and its formatting code or {@code null} if a match isn't found or if the {@code string} is null - */ - private static String getLegacyFormatting(@Nullable String string) { - if (string == null) { - return null; - } - Matcher matcher = FORMATTING_CODE_PATTERN.matcher(string); - if (matcher.find()) { - return matcher.group(0); - } - return null; - } - public void drawTooltip(DrawContext context, int mouseX, int mouseY) { RenderSystem.disableDepthTest(); for (ResultButtonWidget button : resultButtons) |