mirror of
https://github.com/Minestom/Minestom.git
synced 2024-10-01 07:57:41 +02:00
Compute the tags packet only once to improve performance on high connection traffic
This commit is contained in:
parent
5c9fd9294a
commit
69adb67394
@ -23,7 +23,6 @@ import net.minestom.server.event.item.ItemDropEvent;
|
||||
import net.minestom.server.event.item.ItemUpdateStateEvent;
|
||||
import net.minestom.server.event.item.PickupExperienceEvent;
|
||||
import net.minestom.server.event.player.*;
|
||||
import net.minestom.server.gamedata.tags.TagManager;
|
||||
import net.minestom.server.instance.Chunk;
|
||||
import net.minestom.server.instance.Instance;
|
||||
import net.minestom.server.instance.block.CustomBlock;
|
||||
@ -299,18 +298,19 @@ public class Player extends LivingEntity implements CommandSender {
|
||||
}
|
||||
// Recipes end
|
||||
|
||||
// Send server tags
|
||||
TagsPacket tags = new TagsPacket();
|
||||
TagManager tagManager = MinecraftServer.getTagManager();
|
||||
tagManager.addRequiredTagsToPacket(tags);
|
||||
// Tags start
|
||||
{
|
||||
TagsPacket tags = TagsPacket.getRequiredTagsPacket();
|
||||
|
||||
UpdateTagListEvent event = new UpdateTagListEvent(tags);
|
||||
callEvent(UpdateTagListEvent.class, event);
|
||||
UpdateTagListEvent event = new UpdateTagListEvent(tags);
|
||||
callEvent(UpdateTagListEvent.class, event);
|
||||
|
||||
getPlayerConnection().sendPacket(tags);
|
||||
this.playerConnection.sendPacket(tags);
|
||||
}
|
||||
// Tags end
|
||||
|
||||
// Some client update
|
||||
playerConnection.sendPacket(getPropertiesPacket()); // Send default properties
|
||||
this.playerConnection.sendPacket(getPropertiesPacket()); // Send default properties
|
||||
refreshHealth(); // Heal and send health packet
|
||||
refreshAbilities(); // Send abilities packet
|
||||
getInventory().update();
|
||||
|
@ -1,5 +1,6 @@
|
||||
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.server.ServerPacket;
|
||||
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
||||
@ -20,6 +21,12 @@ public class TagsPacket implements ServerPacket {
|
||||
public List<Tag> fluidTags = new LinkedList<>();
|
||||
public List<Tag> entityTags = new LinkedList<>();
|
||||
|
||||
private static final TagsPacket REQUIRED_TAGS_PACKET = new TagsPacket();
|
||||
|
||||
static {
|
||||
MinecraftServer.getTagManager().addRequiredTagsToPacket(REQUIRED_TAGS_PACKET);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(@NotNull BinaryWriter writer) {
|
||||
writeTags(writer, blockTags, name -> Registries.getBlock(name).ordinal());
|
||||
@ -48,4 +55,15 @@ 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
|
||||
*/
|
||||
@NotNull
|
||||
public static TagsPacket getRequiredTagsPacket() {
|
||||
return REQUIRED_TAGS_PACKET;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user