Skip to content

Commit a590de2

Browse files
committed
Add ItemHoloChat translate component support
1 parent f75ba81 commit a590de2

File tree

3 files changed

+35
-9
lines changed

3 files changed

+35
-9
lines changed

src/main/java/org/maxgamer/quickshop/chat/platform/minedown/BungeeQuickChat.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.maxgamer.quickshop.chat.QuickComponentImpl;
3636
import org.maxgamer.quickshop.util.MsgUtil;
3737
import org.maxgamer.quickshop.util.ReflectFactory;
38+
import org.maxgamer.quickshop.util.TextSplitter;
3839
import org.maxgamer.quickshop.util.Util;
3940

4041
import java.lang.reflect.InvocationTargetException;
@@ -79,7 +80,16 @@ public void sendItemHologramChat(@NotNull Player player, @NotNull String text, @
7980
TextComponent errorComponent = new TextComponent(QuickShop.getInstance().text().of(player, "menu.item-holochat-error").forLocale());
8081
try {
8182
String json = ReflectFactory.convertBukkitItemStackToJson(itemStack);
82-
TextComponent centerItem = new TextComponent(text);
83+
ComponentBuilder builder = new ComponentBuilder();
84+
TextSplitter.SpilledString spilledString = TextSplitter.deBakeItem(text);
85+
if (spilledString == null) {
86+
builder.append(text);
87+
} else {
88+
builder.append(spilledString.getLeft())
89+
.append(spilledString.getComponents())
90+
.append(spilledString.getRight());
91+
}
92+
TextComponent centerItem = new TextComponent(builder.create());
8393
ComponentBuilder cBuilder = new ComponentBuilder(json);
8494
centerItem.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_ITEM, cBuilder.create())); //FIXME: Update this when drop 1.15 supports
8595
player.spigot().sendMessage(centerItem);
@@ -98,7 +108,18 @@ public void sendItemHologramChat(@NotNull Player player, @NotNull String text, @
98108
if (json == null) {
99109
return new QuickComponentImpl(errorComponent);
100110
}
101-
TextComponent normalmessage = new TextComponent(message + " " + QuickShop.getInstance().text().of(player, "menu.preview").forLocale());
111+
ComponentBuilder builder = new ComponentBuilder();
112+
TextSplitter.SpilledString spilledString = TextSplitter.deBakeItem(message);
113+
if (spilledString == null) {
114+
builder.append(message);
115+
} else {
116+
builder.append(spilledString.getLeft())
117+
.append(spilledString.getComponents())
118+
.append(spilledString.getRight());
119+
}
120+
builder.append(" ")
121+
.append(QuickShop.getInstance().text().of(player, "menu.preview").forLocale());
122+
TextComponent normalmessage = new TextComponent(builder.create());
102123
ComponentBuilder cBuilder = new ComponentBuilder(json);
103124
if (QuickShop.getPermissionManager().hasPermission(player, "quickshop.preview")) {
104125
normalmessage.setClickEvent(new ClickEvent(

src/main/java/org/maxgamer/quickshop/util/MsgUtil.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -688,9 +688,13 @@ public static void sendDirectMessage(@Nullable CommandSender sender, @Nullable S
688688
if (spilledString == null) {
689689
plugin.getQuickChat().send(sender, msg);
690690
} else {
691+
Util.debugLog("Built successfully");
691692
ComponentBuilder builder = new ComponentBuilder();
693+
Util.debugLog("Left " + Arrays.toString(TextComponent.fromLegacyText(spilledString.getLeft())));
692694
builder.append(TextComponent.fromLegacyText(spilledString.getLeft()));
695+
Util.debugLog("Center " + Arrays.toString(spilledString.getComponents()));
693696
builder.append(spilledString.getComponents());
697+
Util.debugLog("Right " + Arrays.toString(TextComponent.fromLegacyText(spilledString.getRight())));
694698
builder.append(TextComponent.fromLegacyText(spilledString.getRight()));
695699
plugin.getQuickChat().send(sender, new QuickComponentImpl(builder.create()));
696700
}

src/main/java/org/maxgamer/quickshop/util/TextSplitter.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,26 +31,27 @@
3131

3232
public class TextSplitter {
3333
public static String bakeComponent(BaseComponent[] components) {
34-
return "!!!@@@###@@@" +
34+
return "!!!=-=-=-=-=-=" +
3535
Base64.getEncoder().encodeToString(ComponentSerializer.toString(components).getBytes(StandardCharsets.UTF_8)) +
36-
"@@@###@@@!!!";
36+
"=-=-=-=-=-=!!!";
3737
}
3838

3939
@SneakyThrows
4040
public static SpilledString deBakeItem(String src) {
41-
if (!src.contains("!!!@@@###@@@")) {
41+
if (!src.contains("!!!=-=-=-=-=-=")) {
42+
Util.debugLog(src + " seems not a baked message");
4243
return null;
4344
}
44-
String base64 = StringUtils.substringBetween(src, "!!!@@@###@@@", "@@@###@@@!!!");
45+
String base64 = StringUtils.substringBetween(src, "!!!=-=-=-=-=-=", "=-=-=-=-=-=!!!");
4546
BaseComponent[] components = ComponentSerializer.parse(new String(Base64.getDecoder().decode(base64), StandardCharsets.UTF_8));
46-
String left = StringUtils.substringBefore(src, "!!!@@@###@@@");
47-
String right = StringUtils.substringAfter(src, "@@@###@@@!!!");
47+
String left = StringUtils.substringBefore(src, "!!!=-=-=-=-=-=");
48+
String right = StringUtils.substringAfter(src, "=-=-=-=-=-=!!!");
4849
return new SpilledString(left, right, components);
4950
}
5051

5152
@AllArgsConstructor
5253
@Data
53-
static class SpilledString {
54+
public static class SpilledString {
5455
private String left;
5556
private String right;
5657
private BaseComponent[] components;

0 commit comments

Comments
 (0)