-
Bug
-
Resolution: Won't Fix
-
Minecraft 1.9, Minecraft 1.9.1 Pre-Release 1, Minecraft 1.9.1 Pre-Release 2, Minecraft 1.9.1 Pre-Release 3, Minecraft 1.9.1, Minecraft 1.9.2, Minecraft 16w15a, Minecraft 16w15b, Minecraft 1.9.3, Minecraft 1.9.4, Minecraft 16w20a, Minecraft 1.10.2
-
None
-
Windows 10 - Java version included in Minecraft
-
Community Consensus
Here is a comparison bewteen lag caused by huge amounts of entities in 1.8.9 & in 1.9.
To compare the two version I use the following setup with 3 command blocks :
/kill @e[type=ArmorStand]
/summon ArmorStand ~ ~1 ~ {Invulnerable:1b,Marker:1b,NoGravity:1b,Invisible:1b,Team:"TEST"}
/execute @e[type=ArmorStand] ~ ~ ~ summon ArmorStand ~ ~ ~ {Invulnerable:1b,Marker:1b,NoGravity:1b,Invisible:1b,Team:"TEST"}
See the Setup picture below.
So for each version, I first activate the second Command Block (so 1 ArmorStand spawn). After what I activate the third Command Block many times, so the number of ArmorStand increase like 2^n.
When I arrive at 512 ArmorStands, I take a screenshot with the debug pie on (Alt+F3). Same for 1024, 2048 & 4096 ArmorStands.
Before making the 1.9 test, I activate the first command block to kill every ArmorStand. After opening the world in 1.9 I do the following command : /scoreboard teams option TEST collisionRule never. It's very important.
PS : I define "lag" with the color & the height of the debug pie.
Here are the results :
1.8.9 :
- 512 : 89 FPS ; No lag.
- 1024 : 84 FPS ; A few lag.
- 2048 : 40 FPS ; Definitely becoming laggy.
- 4096 : 15 FPS ; Very laggy.
1.9 :
- 512 : 82 FPS ; Very few lag.
- 1024 : 2 FPS ; Unplayable, I can't even see the top of the debug pie.
- 2048 or higher : Minecraft crash, so I can't even take a screenshot.
See the screenshots for each step
Conclusion : The lag caused by entities in 1.9 seems to grow exponentially, because for 512 AS there is no real difference, but for 1024 AS there's no problem in 1.8.9 when in 1.9 it's unplayable.
I think this is due to the new collision of entities. But this doesn't make sense because the ArmorStand are in Marker mode & are in a team without collision.
I think the way it's calculated doesn't care if the entity should take collision or not - it calculates the collision anyway, and then don't apply it if the entity do not take collisions.
EDIT : World download are now in Attachments files.
Code analysis by marcono1234 can be found in this comment.
Possible fix made by inasm can be found in this comment