diff --git a/src/main/java/net/minestom/server/network/packet/server/play/DeathCombatEventPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/DeathCombatEventPacket.java index d890cdc87..b54af7cb1 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/DeathCombatEventPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/DeathCombatEventPacket.java @@ -7,7 +7,8 @@ import net.minestom.server.utils.binary.BinaryReader; import net.minestom.server.utils.binary.BinaryWriter; import org.jetbrains.annotations.NotNull; -public record DeathCombatEventPacket(int playerId, int entityId, Component message) implements ServerPacket { +public record DeathCombatEventPacket(int playerId, int entityId, + @NotNull Component message) implements ServerPacket { public DeathCombatEventPacket(BinaryReader reader) { this(reader.readVarInt(), reader.readInt(), reader.readComponent()); } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/DisconnectPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/DisconnectPacket.java index cb9b28196..8a6b273e5 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/DisconnectPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/DisconnectPacket.java @@ -12,7 +12,7 @@ import java.util.Collection; import java.util.Collections; import java.util.function.UnaryOperator; -public record DisconnectPacket(Component message) implements ComponentHoldingServerPacket { +public record DisconnectPacket(@NotNull Component message) implements ComponentHoldingServerPacket { public DisconnectPacket(BinaryReader reader) { this(reader.readComponent()); } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntityEffectPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntityEffectPacket.java index a1751cc3a..1c25936c1 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntityEffectPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntityEffectPacket.java @@ -7,7 +7,7 @@ import net.minestom.server.utils.binary.BinaryReader; import net.minestom.server.utils.binary.BinaryWriter; import org.jetbrains.annotations.NotNull; -public record EntityEffectPacket(int entityId, Potion potion) implements ServerPacket { +public record EntityEffectPacket(int entityId, @NotNull Potion potion) implements ServerPacket { public EntityEffectPacket(BinaryReader reader) { this(reader.readVarInt(), new Potion(reader)); } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntityEquipmentPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntityEquipmentPacket.java index cab2acee5..e69965798 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntityEquipmentPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntityEquipmentPacket.java @@ -11,7 +11,8 @@ import org.jetbrains.annotations.NotNull; import java.util.EnumMap; import java.util.Map; -public record EntityEquipmentPacket(int entityId, Map equipments) implements ServerPacket { +public record EntityEquipmentPacket(int entityId, + @NotNull Map equipments) implements ServerPacket { public EntityEquipmentPacket { equipments = Map.copyOf(equipments); } @@ -39,11 +40,10 @@ public record EntityEquipmentPacket(int entityId, Map } private static Map readEquipments(BinaryReader reader) { - EnumMap equipments = new EnumMap<>(EquipmentSlot.class); - boolean hasRemaining = true; - while (hasRemaining) { - byte slotEnum = reader.readByte(); - hasRemaining = (slotEnum & 0x80) == 0x80; + Map equipments = new EnumMap<>(EquipmentSlot.class); + while (true) { + final byte slotEnum = reader.readByte(); + if ((slotEnum & 0x80) != 0x80) break; equipments.put(EquipmentSlot.values()[slotEnum & 0x7F], reader.readItemStack()); } return equipments; diff --git a/src/main/java/net/minestom/server/network/packet/server/play/OpenBookPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/OpenBookPacket.java index a8b6af1f7..150d07aac 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/OpenBookPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/OpenBookPacket.java @@ -7,7 +7,7 @@ import net.minestom.server.utils.binary.BinaryReader; import net.minestom.server.utils.binary.BinaryWriter; import org.jetbrains.annotations.NotNull; -public record OpenBookPacket(Player.Hand hand) implements ServerPacket { +public record OpenBookPacket(@NotNull Player.Hand hand) implements ServerPacket { public OpenBookPacket(BinaryReader reader) { this(Player.Hand.values()[reader.readVarInt()]); } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/PlayerListHeaderAndFooterPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/PlayerListHeaderAndFooterPacket.java index 4e506aea2..f938458f1 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/PlayerListHeaderAndFooterPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/PlayerListHeaderAndFooterPacket.java @@ -8,39 +8,30 @@ import net.minestom.server.utils.binary.BinaryReader; import net.minestom.server.utils.binary.BinaryWriter; import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Objects; import java.util.function.UnaryOperator; -public record PlayerListHeaderAndFooterPacket(Component header, - Component footer) implements ComponentHoldingServerPacket { +public record PlayerListHeaderAndFooterPacket(@NotNull Component header, + @NotNull Component footer) implements ComponentHoldingServerPacket { public PlayerListHeaderAndFooterPacket(BinaryReader reader) { this(reader.readComponent(), reader.readComponent()); } @Override public void write(@NotNull BinaryWriter writer) { - writer.writeComponent(Objects.requireNonNullElseGet(header, Component::empty)); - writer.writeComponent(Objects.requireNonNullElseGet(footer, Component::empty)); + writer.writeComponent(header); + writer.writeComponent(footer); } @Override public @NotNull Collection components() { - List components = new ArrayList<>(); - if (header != null) { - components.add(header); - } - if (footer != null) { - components.add(footer); - } - return components; + return List.of(header, footer); } @Override public @NotNull ServerPacket copyWithOperator(@NotNull UnaryOperator operator) { - return new PlayerListHeaderAndFooterPacket(header == null ? null : operator.apply(header), footer == null ? null : operator.apply(footer)); + return new PlayerListHeaderAndFooterPacket(operator.apply(header), operator.apply(footer)); } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/RemoveEntityEffectPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/RemoveEntityEffectPacket.java index e3b4e9d9e..5d5655fcc 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/RemoveEntityEffectPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/RemoveEntityEffectPacket.java @@ -7,9 +7,11 @@ import net.minestom.server.utils.binary.BinaryReader; import net.minestom.server.utils.binary.BinaryWriter; import org.jetbrains.annotations.NotNull; -public record RemoveEntityEffectPacket(int entityId, PotionEffect potionEffect) implements ServerPacket { +import java.util.Objects; + +public record RemoveEntityEffectPacket(int entityId, @NotNull PotionEffect potionEffect) implements ServerPacket { public RemoveEntityEffectPacket(BinaryReader reader) { - this(reader.readVarInt(), PotionEffect.fromId(reader.readByte())); + this(reader.readVarInt(), Objects.requireNonNull(PotionEffect.fromId(reader.readByte()))); } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/ServerDifficultyPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/ServerDifficultyPacket.java index 79ffd519e..7a5f2a715 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/ServerDifficultyPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/ServerDifficultyPacket.java @@ -7,7 +7,7 @@ import net.minestom.server.utils.binary.BinaryWriter; import net.minestom.server.world.Difficulty; import org.jetbrains.annotations.NotNull; -public record ServerDifficultyPacket(Difficulty difficulty, boolean locked) implements ServerPacket { +public record ServerDifficultyPacket(@NotNull Difficulty difficulty, boolean locked) implements ServerPacket { public ServerDifficultyPacket(BinaryReader reader) { this(Difficulty.values()[reader.readByte()], reader.readBoolean()); } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SetSlotPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SetSlotPacket.java index 990b05c28..3541eea70 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SetSlotPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SetSlotPacket.java @@ -7,9 +7,11 @@ import net.minestom.server.utils.binary.BinaryReader; import net.minestom.server.utils.binary.BinaryWriter; import org.jetbrains.annotations.NotNull; -public record SetSlotPacket(byte windowId, int stateId, short slot, ItemStack itemStack) implements ServerPacket { +public record SetSlotPacket(byte windowId, int stateId, short slot, + @NotNull ItemStack itemStack) implements ServerPacket { public SetSlotPacket(BinaryReader reader) { - this(reader.readByte(), reader.readVarInt(), reader.readShort(), reader.readItemStack()); + this(reader.readByte(), reader.readVarInt(), reader.readShort(), + reader.readItemStack()); } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SetTitleSubTitlePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SetTitleSubTitlePacket.java index d85a60ba4..c2964f894 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SetTitleSubTitlePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SetTitleSubTitlePacket.java @@ -7,7 +7,7 @@ import net.minestom.server.utils.binary.BinaryReader; import net.minestom.server.utils.binary.BinaryWriter; import org.jetbrains.annotations.NotNull; -public record SetTitleSubTitlePacket(Component subtitle) implements ServerPacket { +public record SetTitleSubTitlePacket(@NotNull Component subtitle) implements ServerPacket { public SetTitleSubTitlePacket(BinaryReader reader) { this(reader.readComponent()); } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SetTitleTextPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SetTitleTextPacket.java index 419c8d464..b7ac73c4d 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SetTitleTextPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SetTitleTextPacket.java @@ -7,7 +7,7 @@ import net.minestom.server.utils.binary.BinaryReader; import net.minestom.server.utils.binary.BinaryWriter; import org.jetbrains.annotations.NotNull; -public record SetTitleTextPacket(Component title) implements ServerPacket { +public record SetTitleTextPacket(@NotNull Component title) implements ServerPacket { public SetTitleTextPacket(BinaryReader reader) { this(reader.readComponent()); } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SoundEffectPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SoundEffectPacket.java index 31883bc0a..b128b95a7 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SoundEffectPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SoundEffectPacket.java @@ -10,7 +10,8 @@ import net.minestom.server.utils.binary.BinaryReader; import net.minestom.server.utils.binary.BinaryWriter; import org.jetbrains.annotations.NotNull; -public record SoundEffectPacket(int soundId, Source source, int x, int y, int z, +public record SoundEffectPacket(int soundId, @NotNull Source source, + int x, int y, int z, float volume, float pitch) implements ServerPacket { public SoundEffectPacket(BinaryReader reader) { this(reader.readVarInt(), Source.values()[reader.readVarInt()], @@ -18,8 +19,10 @@ public record SoundEffectPacket(int soundId, Source source, int x, int y, int z, reader.readFloat(), reader.readFloat()); } - public SoundEffectPacket(SoundEvent sound, Source source, Point position, float volume, float pitch) { - this(sound.id(), source, (int) position.x(), (int) position.y(), (int) position.z(), volume, pitch); + public SoundEffectPacket(@NotNull SoundEvent sound, @NotNull Source source, + @NotNull Point position, float volume, float pitch) { + this(sound.id(), source, + (int) position.x(), (int) position.y(), (int) position.z(), volume, pitch); } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/StopSoundPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/StopSoundPacket.java index 77a80f6ae..e32ffa595 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/StopSoundPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/StopSoundPacket.java @@ -7,66 +7,40 @@ import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.utils.binary.BinaryReader; import net.minestom.server.utils.binary.BinaryWriter; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -import java.util.Objects; - -public final class StopSoundPacket implements ServerPacket { - private final byte flags; - private final Sound.Source source; - private final String sound; - - public StopSoundPacket(byte flags, Sound.Source source, String sound) { - this.flags = flags; - this.source = source; - this.sound = sound; +public record StopSoundPacket(byte flags, @Nullable Sound.Source source, + @Nullable String sound) implements ServerPacket { + public StopSoundPacket(BinaryReader reader) { + this(read(reader)); } - public StopSoundPacket(BinaryReader reader) { - this.flags = reader.readByte(); - if (flags == 3 || flags == 1) { - this.source = Sound.Source.values()[reader.readVarInt()]; - } else this.source = null; - if (flags == 2 || flags == 3) { - this.sound = reader.readSizedString(); - } else this.sound = null; + private StopSoundPacket(StopSoundPacket packet) { + this(packet.flags, packet.source, packet.sound); + } + + private static StopSoundPacket read(BinaryReader reader) { + var flags = reader.readByte(); + var source = flags == 3 || flags == 1 ? Sound.Source.values()[reader.readVarInt()] : null; + var sound = flags == 2 || flags == 3 ? reader.readSizedString() : null; + return new StopSoundPacket(flags, source, sound); } @Override public void write(@NotNull BinaryWriter writer) { writer.writeByte(flags); - if (flags == 3 || flags == 1) + if (flags == 3 || flags == 1) { + assert source != null; writer.writeVarInt(AdventurePacketConvertor.getSoundSourceValue(source)); - if (flags == 2 || flags == 3) + } + if (flags == 2 || flags == 3) { + assert sound != null; writer.writeSizedString(sound); - } - - public byte flags() { - return flags; - } - - public Sound.Source source() { - return source; - } - - public String sound() { - return sound; + } } @Override public int getId() { return ServerPacketIdentifier.STOP_SOUND; } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof StopSoundPacket that)) return false; - return flags == that.flags && source == that.source && - Objects.equals(sound, that.sound); - } - - @Override - public int hashCode() { - return Objects.hash(flags, source, sound); - } }