Code/net/minecraft/client/gui/components/Tooltip.java

59 lines
2.0 KiB
Java
Raw Permalink Normal View History

2025-07-01 06:20:03 +00:00
package net.minecraft.client.gui.components;
import java.util.List;
import javax.annotation.Nullable;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.narration.NarratedElementType;
import net.minecraft.client.gui.narration.NarrationElementOutput;
import net.minecraft.client.gui.narration.NarrationSupplier;
import net.minecraft.locale.Language;
import net.minecraft.network.chat.Component;
import net.minecraft.util.FormattedCharSequence;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public class Tooltip implements NarrationSupplier {
private static final int MAX_WIDTH = 170;
private final Component message;
@Nullable
private List<FormattedCharSequence> cachedTooltip;
@Nullable
private Language splitWithLanguage;
@Nullable
private final Component narration;
private Tooltip(Component p_260262_, @Nullable Component p_260005_) {
this.message = p_260262_;
this.narration = p_260005_;
}
public static Tooltip create(Component p_259571_, @Nullable Component p_259174_) {
return new Tooltip(p_259571_, p_259174_);
}
public static Tooltip create(Component p_259142_) {
return new Tooltip(p_259142_, p_259142_);
}
@Override
public void updateNarration(NarrationElementOutput p_260330_) {
if (this.narration != null) {
p_260330_.add(NarratedElementType.HINT, this.narration);
}
}
public List<FormattedCharSequence> toCharSequence(Minecraft p_260243_) {
Language language = Language.getInstance();
if (this.cachedTooltip == null || language != this.splitWithLanguage) {
this.cachedTooltip = splitTooltip(p_260243_, this.message);
this.splitWithLanguage = language;
}
return this.cachedTooltip;
}
public static List<FormattedCharSequence> splitTooltip(Minecraft p_259133_, Component p_260172_) {
return p_259133_.font.split(p_260172_, 170);
}
}