Skip to content

Commit 2ae9c2d

Browse files
committed
Add helper for working with text components.
This helper currently does hover text and can format ticks as a component.
1 parent cb2c598 commit 2ae9c2d

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package net.darkhax.bookshelf.api.util;
2+
3+
import net.darkhax.bookshelf.mixin.entity.AccessorEntity;
4+
import net.minecraft.network.chat.Component;
5+
import net.minecraft.network.chat.HoverEvent;
6+
import net.minecraft.network.chat.MutableComponent;
7+
import net.minecraft.network.chat.TextComponent;
8+
import net.minecraft.network.chat.TranslatableComponent;
9+
import net.minecraft.util.StringUtil;
10+
import net.minecraft.world.entity.Entity;
11+
import net.minecraft.world.item.ItemStack;
12+
13+
public final class TextHelper {
14+
15+
public static MutableComponent getFormatedTime(int ticks, boolean includeHover) {
16+
17+
MutableComponent component = new TextComponent(StringUtil.formatTickDuration(ticks));
18+
19+
if (includeHover) {
20+
21+
component = setHover(component, new TranslatableComponent("text.bookshelf.ticks", ticks));
22+
}
23+
24+
return component;
25+
}
26+
27+
public static <T extends Component> T setHover(T component, Component hoverInfo) {
28+
29+
return setHover(component, HoverEvent.Action.SHOW_TEXT, hoverInfo);
30+
}
31+
32+
public static <T extends Component> T setHover(T component, ItemStack hoverInfo) {
33+
34+
return setHover(component, HoverEvent.Action.SHOW_ITEM, new HoverEvent.ItemStackInfo(hoverInfo));
35+
}
36+
37+
public static <T extends Component> T setHover(T component, Entity hoverInfo) {
38+
39+
if (hoverInfo instanceof AccessorEntity accessor) {
40+
41+
return setHover(component, accessor.bookshelf$createHoverEvent());
42+
}
43+
44+
return setHover(component, HoverEvent.Action.SHOW_ENTITY, new HoverEvent.EntityTooltipInfo(hoverInfo.getType(), hoverInfo.getUUID(), hoverInfo.getName()));
45+
}
46+
47+
public static <T extends Component, AT, A extends HoverEvent.Action<AT>> T setHover(T component, A action, AT arg) {
48+
49+
return setHover(component, new HoverEvent(action, arg));
50+
}
51+
52+
public static <T extends Component, AT, A extends HoverEvent.Action<AT>> T setHover(T component, HoverEvent hoverInfo) {
53+
54+
if (component instanceof MutableComponent mutable) {
55+
56+
mutable.withStyle(style -> style.withHoverEvent(hoverInfo));
57+
}
58+
59+
return component;
60+
}
61+
}

0 commit comments

Comments
 (0)