From 2c4ea3c3c49f70dcc514d9acd154786c3799263d Mon Sep 17 00:00:00 2001 From: TheMode Date: Mon, 20 Sep 2021 19:34:43 +0200 Subject: [PATCH] Serialize/Compress tag packet only once Signed-off-by: TheMode --- .../java/net/minestom/server/entity/Player.java | 10 +++++----- .../network/packet/server/play/TagsPacket.java | 16 +++++----------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Player.java b/src/main/java/net/minestom/server/entity/Player.java index 7ec5bfaa2..4cb3d079f 100644 --- a/src/main/java/net/minestom/server/entity/Player.java +++ b/src/main/java/net/minestom/server/entity/Player.java @@ -274,7 +274,7 @@ public class Player extends LivingEntity implements CommandSender, Localizable, // Recipes end // Tags - this.playerConnection.sendPacket(TagsPacket.getRequiredTagsPacket()); + this.playerConnection.sendFramedPacket(TagsPacket.DEFAULT_TAGS); // Some client updates this.playerConnection.sendPacket(getPropertiesPacket()); // Send default properties @@ -1660,7 +1660,7 @@ public class Player extends LivingEntity implements CommandSender, Localizable, @Override public void setSneaking(boolean sneaking) { - if(isFlying()) { //If we are flying, don't set the players pose to sneaking as this can clip them through blocks + if (isFlying()) { //If we are flying, don't set the players pose to sneaking as this can clip them through blocks this.entityMeta.setSneaking(sneaking); } else { super.setSneaking(sneaking); @@ -1696,12 +1696,12 @@ public class Player extends LivingEntity implements CommandSender, Localizable, */ public void refreshFlying(boolean flying) { //When the player starts or stops flying, their pose needs to change - if(this.flying != flying) { + if (this.flying != flying) { Pose pose = getPose(); - if(this.isSneaking() && pose == Pose.STANDING) { + if (this.isSneaking() && pose == Pose.STANDING) { setPose(Pose.SNEAKING); - } else if(pose == Pose.SNEAKING) { + } else if (pose == Pose.SNEAKING) { setPose(Pose.STANDING); } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/TagsPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/TagsPacket.java index 823eccf2a..014dff834 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/TagsPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/TagsPacket.java @@ -2,10 +2,13 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.MinecraftServer; import net.minestom.server.gamedata.tags.Tag; +import net.minestom.server.network.packet.FramedPacket; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; +import net.minestom.server.utils.PacketUtils; import net.minestom.server.utils.binary.BinaryReader; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import java.util.HashMap; @@ -13,7 +16,8 @@ import java.util.List; import java.util.Map; public class TagsPacket implements ServerPacket { - private static final TagsPacket REQUIRED_TAGS_PACKET = new TagsPacket(MinecraftServer.getTagManager().getTagMap()); + @ApiStatus.Internal + public static final FramedPacket DEFAULT_TAGS = PacketUtils.allocateTrimmedPacket(new TagsPacket(MinecraftServer.getTagManager().getTagMap())); public Map> tagsMap; @@ -69,14 +73,4 @@ public class TagsPacket implements ServerPacket { public int getId() { return ServerPacketIdentifier.TAGS; } - - /** - * Gets the {@link TagsPacket} sent to every {@link net.minestom.server.entity.Player} - * on login. - * - * @return the default tags packet - */ - public static @NotNull TagsPacket getRequiredTagsPacket() { - return REQUIRED_TAGS_PACKET; - } }