diff options
author | Anthony Hilyard <anthony.hilyard@gmail.com> | 2021-10-19 10:45:51 -0700 |
---|---|---|
committer | Anthony Hilyard <anthony.hilyard@gmail.com> | 2021-10-19 10:45:51 -0700 |
commit | 375b44103d136a5c4a598c52d659eef1b26eee17 (patch) | |
tree | 1efc23e39de8ba1eaa0e6b70774a3a0585221c01 /src/main/java/com/anthonyhilyard/iceberg/util/StringRecomposer.java | |
parent | e5e86bedca56374e40fe14fea76a16295cc1673e (diff) | |
download | Iceberg-375b44103d136a5c4a598c52d659eef1b26eee17.tar.gz Iceberg-375b44103d136a5c4a598c52d659eef1b26eee17.tar.bz2 Iceberg-375b44103d136a5c4a598c52d659eef1b26eee17.zip |
Added StringRecomposer helper. Fixed crash bug due to missing fonts.
Diffstat (limited to 'src/main/java/com/anthonyhilyard/iceberg/util/StringRecomposer.java')
-rw-r--r-- | src/main/java/com/anthonyhilyard/iceberg/util/StringRecomposer.java | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/src/main/java/com/anthonyhilyard/iceberg/util/StringRecomposer.java b/src/main/java/com/anthonyhilyard/iceberg/util/StringRecomposer.java index d88ae41..4ad448d 100644 --- a/src/main/java/com/anthonyhilyard/iceberg/util/StringRecomposer.java +++ b/src/main/java/com/anthonyhilyard/iceberg/util/StringRecomposer.java @@ -1,32 +1,55 @@ package com.anthonyhilyard.iceberg.util; +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.client.gui.screens.inventory.tooltip.ClientTextTooltip; +import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent; import net.minecraft.network.chat.FormattedText; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; import net.minecraft.network.chat.TextComponent; import net.minecraft.util.FormattedCharSink; -public class StringRecomposer implements FormattedCharSink +public class StringRecomposer { - private StringBuilder builder = new StringBuilder(); - private MutableComponent text = new TextComponent("").withStyle(Style.EMPTY); - - @Override - public boolean accept(int index, Style style, int charCode) + public static List<FormattedText> recompose(List<ClientTooltipComponent> components) { - builder.append(Character.toChars(charCode)); - - if (!style.equals(text.getStyle())) + List<FormattedText> recomposedLines = new ArrayList<>(); + for (ClientTooltipComponent component : components) { - text.append(new TextComponent(builder.toString()).withStyle(style)); - builder.setLength(0); + if (component instanceof ClientTextTooltip) + { + RecomposerSink recomposer = new RecomposerSink(); + ((ClientTextTooltip)component).text.accept(recomposer); + recomposedLines.add(recomposer.getFormattedText()); + } } - return true; + return recomposedLines; } - - public FormattedText getFormattedText() + + private static class RecomposerSink implements FormattedCharSink { - text.append(new TextComponent(builder.toString()).withStyle(text.getStyle())); - return text; + private StringBuilder builder = new StringBuilder(); + private MutableComponent text = new TextComponent("").withStyle(Style.EMPTY); + + @Override + public boolean accept(int index, Style style, int charCode) + { + builder.append(Character.toChars(charCode)); + + if (!style.equals(text.getStyle())) + { + text.append(new TextComponent(builder.toString()).withStyle(style)); + builder.setLength(0); + } + return true; + } + + public FormattedText getFormattedText() + { + text.append(new TextComponent(builder.toString()).withStyle(text.getStyle())); + return text; + } } } |