package net.md_5.bungee.protocol.packet; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import io.netty.buffer.ByteBuf; import java.util.UUID; import net.md_5.bungee.protocol.AbstractPacketHandler; import net.md_5.bungee.protocol.DefinedPacket; import net.md_5.bungee.protocol.ProtocolConstants; @Data @NoArgsConstructor @EqualsAndHashCode(callSuper = false) public class BossBar extends DefinedPacket { private UUID uuid; private int action; private String title; private float health; private int color; private int division; private byte flags; public BossBar(UUID uuid, int action) { this.uuid = uuid; this.action = action; } @Override public void read(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) { uuid = readUUID( buf ); action = readVarInt( buf ); switch ( action ) { // Add case 0: title = readString( buf ); health = buf.readFloat(); color = readVarInt( buf ); division = readVarInt( buf ); flags = buf.readByte(); break; // Health case 2: health = buf.readFloat(); break; // Title case 3: title = readString( buf ); break; // Style case 4: color = readVarInt( buf ); division = readVarInt( buf ); break; // Flags case 5: flags = buf.readByte(); break; } } @Override public void write(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) { writeUUID( uuid, buf ); writeVarInt( action, buf ); switch ( action ) { // Add case 0: writeString( title, buf ); buf.writeFloat( health ); writeVarInt( color, buf ); writeVarInt( division, buf ); buf.writeByte( flags ); break; // Health case 2: buf.writeFloat( health ); break; // Title case 3: writeString( title, buf ); break; // Style case 4: writeVarInt( color, buf ); writeVarInt( division, buf ); break; // Flags case 5: buf.writeByte( flags ); break; } } @Override public void handle(AbstractPacketHandler handler) throws Exception { handler.handle( this ); } }