From 90ff098521f36e334e28ff68b7a54e44228eb959 Mon Sep 17 00:00:00 2001 From: johni0702 Date: Wed, 25 Mar 2015 17:35:59 +0100 Subject: [PATCH] Handle 'FriedlyFire' byte as distinct friendly fire (0x1) and visibility of invisible team members (0x2) flags --- .../data/game/values/MagicValues.java | 4 --- .../game/values/scoreboard/FriendlyFire.java | 9 ------ .../server/scoreboard/ServerTeamPacket.java | 30 ++++++++++++++----- 3 files changed, 22 insertions(+), 21 deletions(-) delete mode 100644 src/main/java/org/spacehq/mc/protocol/data/game/values/scoreboard/FriendlyFire.java diff --git a/src/main/java/org/spacehq/mc/protocol/data/game/values/MagicValues.java b/src/main/java/org/spacehq/mc/protocol/data/game/values/MagicValues.java index f2bfd2cf2..af5b9da70 100644 --- a/src/main/java/org/spacehq/mc/protocol/data/game/values/MagicValues.java +++ b/src/main/java/org/spacehq/mc/protocol/data/game/values/MagicValues.java @@ -332,10 +332,6 @@ public class MagicValues { register(TeamAction.ADD_PLAYER, 3); register(TeamAction.REMOVE_PLAYER, 4); - register(FriendlyFire.OFF, 0); - register(FriendlyFire.ON, 1); - register(FriendlyFire.FRIENDLY_INVISIBLES_VISIBLE, 3); - register(ScoreboardAction.ADD_OR_UPDATE, 0); register(ScoreboardAction.REMOVE, 1); diff --git a/src/main/java/org/spacehq/mc/protocol/data/game/values/scoreboard/FriendlyFire.java b/src/main/java/org/spacehq/mc/protocol/data/game/values/scoreboard/FriendlyFire.java deleted file mode 100644 index 7fa0a4fa0..000000000 --- a/src/main/java/org/spacehq/mc/protocol/data/game/values/scoreboard/FriendlyFire.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.spacehq.mc.protocol.data.game.values.scoreboard; - -public enum FriendlyFire { - - OFF, - ON, - FRIENDLY_INVISIBLES_VISIBLE; - -} diff --git a/src/main/java/org/spacehq/mc/protocol/packet/ingame/server/scoreboard/ServerTeamPacket.java b/src/main/java/org/spacehq/mc/protocol/packet/ingame/server/scoreboard/ServerTeamPacket.java index 49fccf791..b98c55440 100644 --- a/src/main/java/org/spacehq/mc/protocol/packet/ingame/server/scoreboard/ServerTeamPacket.java +++ b/src/main/java/org/spacehq/mc/protocol/packet/ingame/server/scoreboard/ServerTeamPacket.java @@ -1,7 +1,6 @@ package org.spacehq.mc.protocol.packet.ingame.server.scoreboard; import org.spacehq.mc.protocol.data.game.values.MagicValues; -import org.spacehq.mc.protocol.data.game.values.scoreboard.FriendlyFire; import org.spacehq.mc.protocol.data.game.values.scoreboard.NameTagVisibility; import org.spacehq.mc.protocol.data.game.values.scoreboard.TeamAction; import org.spacehq.mc.protocol.data.game.values.scoreboard.TeamColor; @@ -10,7 +9,6 @@ import org.spacehq.packetlib.packet.Packet; import java.io.IOException; -import java.util.UUID; public class ServerTeamPacket implements Packet { @@ -19,7 +17,8 @@ public class ServerTeamPacket implements Packet { private String displayName; private String prefix; private String suffix; - private FriendlyFire friendlyFire; + private boolean friendlyFire; + private boolean seeFriendlyInvisibles; private NameTagVisibility nameTagVisibility; private TeamColor color; private String players[]; @@ -43,23 +42,25 @@ public ServerTeamPacket(String name, TeamAction action, String players[]) { this.players = players; } - public ServerTeamPacket(String name, String displayName, String prefix, String suffix, FriendlyFire friendlyFire, NameTagVisibility nameTagVisibility, TeamColor color) { + public ServerTeamPacket(String name, String displayName, String prefix, String suffix, boolean friendlyFire, boolean seeFriendlyInvisibles, NameTagVisibility nameTagVisibility, TeamColor color) { this.name = name; this.displayName = displayName; this.prefix = prefix; this.suffix = suffix; this.friendlyFire = friendlyFire; + this.seeFriendlyInvisibles = seeFriendlyInvisibles; this.nameTagVisibility = nameTagVisibility; this.color = color; this.action = TeamAction.UPDATE; } - public ServerTeamPacket(String name, String displayName, String prefix, String suffix, FriendlyFire friendlyFire, NameTagVisibility nameTagVisibility, TeamColor color, String players[]) { + public ServerTeamPacket(String name, String displayName, String prefix, String suffix, boolean friendlyFire, boolean seeFriendlyInvisibles, NameTagVisibility nameTagVisibility, TeamColor color, String players[]) { this.name = name; this.displayName = displayName; this.prefix = prefix; this.suffix = suffix; this.friendlyFire = friendlyFire; + this.seeFriendlyInvisibles = seeFriendlyInvisibles; this.nameTagVisibility = nameTagVisibility; this.color = color; this.players = players; @@ -86,10 +87,14 @@ public String getSuffix() { return this.suffix; } - public FriendlyFire getFriendlyFire() { + public boolean getFriendlyFire() { return this.friendlyFire; } + public boolean getSeeFriendlyInvisibles() { + return seeFriendlyInvisibles; + } + public NameTagVisibility getNameTagVisibility() { return this.nameTagVisibility; } @@ -110,7 +115,9 @@ public void read(NetInput in) throws IOException { this.displayName = in.readString(); this.prefix = in.readString(); this.suffix = in.readString(); - this.friendlyFire = MagicValues.key(FriendlyFire.class, in.readByte()); + byte flags = in.readByte(); + this.friendlyFire = (flags & 0x1) != 0; + this.seeFriendlyInvisibles = (flags & 0x2) != 0; this.nameTagVisibility = MagicValues.key(NameTagVisibility.class, in.readString()); this.color = MagicValues.key(TeamColor.class, in.readByte()); } @@ -131,7 +138,14 @@ public void write(NetOutput out) throws IOException { out.writeString(this.displayName); out.writeString(this.prefix); out.writeString(this.suffix); - out.writeByte(MagicValues.value(Integer.class, this.friendlyFire)); + byte flags = 0; + if (this.friendlyFire) { + flags |= 0x1; + } + if (this.seeFriendlyInvisibles) { + flags |= 0x2; + } + out.writeByte(flags); out.writeString(MagicValues.value(String.class, this.nameTagVisibility)); out.writeByte(MagicValues.value(Integer.class, this.color)); }