Teams 1.13+

This commit is contained in:
Bixilon 2020-07-15 21:35:04 +02:00
parent 0fa5037375
commit b4fc991572
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
3 changed files with 41 additions and 11 deletions

View File

@ -29,7 +29,13 @@ public enum ChatColor {
RED(0x0C), RED(0x0C),
PURPLE(0x0D), PURPLE(0x0D),
YELLOW(0x0E), YELLOW(0x0E),
WHITE(0x0F); WHITE(0x0F),
OBFUSCATED(16),
BOLD(17),
STRIKETHROUGH(18),
UNDERLINED(19),
ITALIC(20),
RESET(21);
final int color; final int color;

View File

@ -13,6 +13,8 @@
package de.bixilon.minosoft.game.datatypes.scoreboard; package de.bixilon.minosoft.game.datatypes.scoreboard;
import de.bixilon.minosoft.game.datatypes.TextComponent;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -20,13 +22,13 @@ import java.util.List;
public class Team { public class Team {
final String name; final String name;
final List<String> players; final List<String> players;
String displayName; TextComponent displayName;
String prefix; String prefix;
String suffix; String suffix;
boolean friendlyFire; boolean friendlyFire;
boolean seeFriendlyInvisibles; boolean seeFriendlyInvisibles;
public Team(String name, String displayName, String prefix, String suffix, boolean friendlyFire, boolean seeFriendlyInvisibles, String[] players) { public Team(String name, TextComponent displayName, String prefix, String suffix, boolean friendlyFire, boolean seeFriendlyInvisibles, String[] players) {
this.name = name; this.name = name;
this.displayName = displayName; this.displayName = displayName;
this.prefix = prefix; this.prefix = prefix;
@ -36,7 +38,7 @@ public class Team {
this.players = new ArrayList<>(Arrays.asList(players)); this.players = new ArrayList<>(Arrays.asList(players));
} }
public void updateInformation(String displayName, String prefix, String suffix, boolean friendlyFire, boolean seeFriendlyInvisibles) { public void updateInformation(TextComponent displayName, String prefix, String suffix, boolean friendlyFire, boolean seeFriendlyInvisibles) {
this.displayName = displayName; this.displayName = displayName;
this.prefix = prefix; this.prefix = prefix;
this.suffix = suffix; this.suffix = suffix;
@ -48,7 +50,7 @@ public class Team {
return name; return name;
} }
public String getDisplayName() { public TextComponent getDisplayName() {
return displayName; return displayName;
} }

View File

@ -24,7 +24,7 @@ import de.bixilon.minosoft.util.BitByte;
public class PacketTeams implements ClientboundPacket { public class PacketTeams implements ClientboundPacket {
String name; String name;
TeamActions action; TeamActions action;
String displayName; TextComponent displayName;
String prefix; String prefix;
String suffix; String suffix;
boolean friendlyFire; boolean friendlyFire;
@ -42,7 +42,7 @@ public class PacketTeams implements ClientboundPacket {
name = buffer.readString(); name = buffer.readString();
action = TeamActions.byId(buffer.readByte()); action = TeamActions.byId(buffer.readByte());
if (action == TeamActions.CREATE || action == TeamActions.INFORMATION_UPDATE) { if (action == TeamActions.CREATE || action == TeamActions.INFORMATION_UPDATE) {
displayName = buffer.readString(); displayName = buffer.readTextComponent();
prefix = buffer.readString(); prefix = buffer.readString();
suffix = buffer.readString(); suffix = buffer.readString();
setFriendlyFireByLegacy(buffer.readByte()); setFriendlyFireByLegacy(buffer.readByte());
@ -59,7 +59,7 @@ public class PacketTeams implements ClientboundPacket {
name = buffer.readString(); name = buffer.readString();
action = TeamActions.byId(buffer.readByte()); action = TeamActions.byId(buffer.readByte());
if (action == TeamActions.CREATE || action == TeamActions.INFORMATION_UPDATE) { if (action == TeamActions.CREATE || action == TeamActions.INFORMATION_UPDATE) {
displayName = buffer.readString(); displayName = buffer.readTextComponent();
prefix = buffer.readString(); prefix = buffer.readString();
suffix = buffer.readString(); suffix = buffer.readString();
setFriendlyFireByLegacy(buffer.readByte()); setFriendlyFireByLegacy(buffer.readByte());
@ -81,7 +81,7 @@ public class PacketTeams implements ClientboundPacket {
name = buffer.readString(); name = buffer.readString();
action = TeamActions.byId(buffer.readByte()); action = TeamActions.byId(buffer.readByte());
if (action == TeamActions.CREATE || action == TeamActions.INFORMATION_UPDATE) { if (action == TeamActions.CREATE || action == TeamActions.INFORMATION_UPDATE) {
displayName = buffer.readString(); displayName = buffer.readTextComponent();
prefix = buffer.readString(); prefix = buffer.readString();
suffix = buffer.readString(); suffix = buffer.readString();
byte friendlyFireRaw = buffer.readByte(); byte friendlyFireRaw = buffer.readByte();
@ -99,6 +99,28 @@ public class PacketTeams implements ClientboundPacket {
} }
} }
return true; return true;
case VERSION_1_13_2:
name = buffer.readString();
action = TeamActions.byId(buffer.readByte());
if (action == TeamActions.CREATE || action == TeamActions.INFORMATION_UPDATE) {
displayName = buffer.readTextComponent();
byte friendlyFireRaw = buffer.readByte();
friendlyFire = BitByte.isBitMask(friendlyFireRaw, 0x01);
seeFriendlyInvisibles = BitByte.isBitMask(friendlyFireRaw, 0x02);
nameTagVisibility = TeamNameTagVisibilities.byName(buffer.readString());
collisionRule = TeamCollisionRules.byName(buffer.readString());
color = TextComponent.ChatAttributes.byColor(ChatColor.byId(buffer.readByte()));
prefix = buffer.readString();
suffix = buffer.readString();
}
if (action == TeamActions.CREATE || action == TeamActions.PLAYER_ADD || action == TeamActions.PLAYER_REMOVE) {
int playerCount = buffer.readVarInt();
playerNames = new String[playerCount];
for (int i = 0; i < playerCount; i++) {
playerNames[i] = buffer.readString();
}
}
return true;
} }
return false; return false;
@ -106,7 +128,7 @@ public class PacketTeams implements ClientboundPacket {
@Override @Override
public void log() { public void log() {
Log.protocol(String.format("Received scoreboard Team update (name=\"%s\", action=%s, displayName=\"%s\", prefix=\"%s\", suffix=\"%s\", friendlyFire=%s, seeFriendlyInvisibiles=%s, playerCount=%s)", name, action.name(), displayName, prefix, suffix, friendlyFire, seeFriendlyInvisibles, ((playerNames == null) ? "null" : playerNames.length))); Log.protocol(String.format("Received scoreboard Team update (name=\"%s\", action=%s, displayName=\"%s\", prefix=\"%s\", suffix=\"%s\", friendlyFire=%s, seeFriendlyInvisibiles=%s, playerCount=%s)", name, action.name(), displayName.getColoredMessage(), prefix, suffix, friendlyFire, seeFriendlyInvisibles, ((playerNames == null) ? "null" : playerNames.length)));
} }
@Override @Override
@ -122,7 +144,7 @@ public class PacketTeams implements ClientboundPacket {
return action; return action;
} }
public String getDisplayName() { public TextComponent getDisplayName() {
return displayName; return displayName;
} }