Mojira Archive
MCM-986

When a tag updates, packets are sent for every tag in the world

Partner Rank: (On a scale of 1 to 4 where 1 is the most important, how would you rank the importance of this bug?)

Rank 2

Partner Team Reporting:

Gamemode One

Verification builds:

Minecraft.Windows_1.13.35.0_x64_UAP.Release_Test

Minecraft.Windows_1.14.3002.0_x64_UAP.Release_Test

Minecraft.Windows_1.16.68.0_x64_UAP.Release_Test

Summary:

When a tag updates on an entity (by the "/tag add" or "/tag remove" command), there are packets sent for each tag in the world (any tag on any entity in the world), rather than just for the updated tag. This causes both server lag (large number of UpdateSoftEnumPackets), and client lag (large number of sortAndPacketiseEvents).

Impact:

Major performance issues on high-end devices and unplayable worlds on low-end devices.
It also slows down development time for a number of reasons. We are forced to use scoreboards to store boolean values, which require more overhead. We also have to be strict about when we can use tags to communicate with entity behavior, which forces us to remove features or come up with complex alternatives.

Repro Steps:

(Step by step instructions to reproduce this bug)

  1. Create a new world with cheats enabled and the provided behavior pack applied.
  2. Run "/function init" to create a scoreboard
  3. Place down a repeating command block and enter "/function test"
  4. Observe little change in FPS or Server Tick speed
  5. Run "/function add_tags"
  6. Observe a large decrease in FPS and Server Tick speed

Observed Results:

The game has a large decrease in FPS and Server Tick speed when there are a large number of tags in the world, as it sends a packet for every tag when any tag is updated.

Expected Results:

The game does not have a large decrease in FPS and Server Tick speed when there are a large number of tags in the world, as it sends a packet for only the updated tag.

Screenshots/Videos attached: Yes/No

I have attached a behavior pack and a video.

Regression Builds:

The bug exists in 1.13.0.35 but not in 1.13.0.9

Notes:

In 1.13.0.9, only one packet is sent when a tag is updated, but in 1.13.0.35, there are packets for every tags. This is why I believes this is a bug and not simply a consequence of its implementation.

Fixed

Adam Brady

2020-03-18, 03:27 PM

2020-10-30, 07:55 PM

2020-10-30, 07:55 PM

27

16

lag

Future Release

-