Serialize/Compress tag packet only once

Signed-off-by: TheMode <themode@outlook.fr>
This commit is contained in:
TheMode 2021-09-20 19:34:43 +02:00
parent 8f3e8c5a13
commit 2c4ea3c3c4
2 changed files with 10 additions and 16 deletions

View File

@ -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);
}
}

View File

@ -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<Tag.BasicType, List<Tag>> 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;
}
}