Add component support to actionbars and titles

This commit is contained in:
Draycia 2020-05-04 09:32:14 -07:00
parent 9308d5701d
commit 660cb7584a
2 changed files with 52 additions and 7 deletions

View File

@ -461,13 +461,59 @@ public class Player extends LivingEntity {
sendHeaderFooter(Chat.fromLegacyText(header, colorChar), Chat.fromLegacyText(footer, colorChar));
}
public void sendActionBarMessage(Component message) {
private void sendTitle(Component title, TitlePacket.Action action) {
TitlePacket titlePacket = new TitlePacket();
titlePacket.action = TitlePacket.Action.SET_ACTION_BAR;
titlePacket.actionBarText = Chat.toJsonString(message);
titlePacket.action = action;
switch (action) {
case SET_TITLE:
titlePacket.titleText = Chat.toJsonString(title);
break;
case SET_SUBTITLE:
titlePacket.subtitleText = Chat.toJsonString(title);
break;
case SET_ACTION_BAR:
titlePacket.actionBarText = Chat.toJsonString(title);
default:
throw new UnsupportedOperationException("Invalid TitlePacket.Action type!");
}
playerConnection.sendPacket(titlePacket);
}
public void sendTitleSubtitleMessage(Component title, Component subtitle) {
sendTitle(title, TitlePacket.Action.SET_TITLE);
sendTitle(subtitle, TitlePacket.Action.SET_SUBTITLE);
}
public void sendTitleMessage(Component title) {
sendTitle(title, TitlePacket.Action.SET_TITLE);
}
public void sendTitleMessage(String title, char colorChar) {
sendTitleMessage(Chat.fromLegacyText(title, colorChar));
}
public void sendTitleMessage(String title) {
sendTitleMessage(title, Chat.COLOR_CHAR);
}
public void sendSubtitleMessage(Component subtitle) {
sendTitle(subtitle, TitlePacket.Action.SET_SUBTITLE);
}
public void sendSubtitleMessage(String subtitle, char colorChar) {
sendSubtitleMessage(Chat.fromLegacyText(subtitle, colorChar));
}
public void sendSubtitleMessage(String subtitle) {
sendSubtitleMessage(subtitle, Chat.COLOR_CHAR);
}
public void sendActionBarMessage(Component actionBar) {
sendTitle(actionBar, TitlePacket.Action.SET_ACTION_BAR);
}
public void sendActionBarMessage(String message, char colorChar) {
sendActionBarMessage(Chat.fromLegacyText(message, colorChar));
}

View File

@ -1,6 +1,5 @@
package net.minestom.server.network.packet.server.play;
import net.minestom.server.chat.Chat;
import net.minestom.server.network.packet.PacketWriter;
import net.minestom.server.network.packet.server.ServerPacket;
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
@ -25,13 +24,13 @@ public class TitlePacket implements ServerPacket {
switch (action) {
case SET_TITLE:
writer.writeSizedString(Chat.toJsonString(Chat.fromLegacyText(titleText)));
writer.writeSizedString(titleText);
break;
case SET_SUBTITLE:
writer.writeSizedString(Chat.toJsonString(Chat.fromLegacyText(subtitleText)));
writer.writeSizedString(subtitleText);
break;
case SET_ACTION_BAR:
writer.writeSizedString(Chat.toJsonString(Chat.fromLegacyText(actionBarText)));
writer.writeSizedString(actionBarText);
break;
case SET_TIMES_AND_DISPLAY:
writer.writeInt(fadeIn);