32位Java可分配内存少导致内存溢出
Confirmed in 1.18.2 & 22w16b
This is why it happens:
In Minecraft 1.16.1 and earlier versions, thrown projects checks if the OUTLINE shapes of blocks, to find potential collisions and chances to be teleported ("hit" a nether_portal block, for example)(See ThrowableProjectile.tick()). A portal has its non-empty OUTLINE shapes though it has no collision box which can stop regular entity movement, so thrown projectiles can always detect if it can be teleported no matter how high their velocity is.
But in 1.16.2-pre1, something was changed. The OUTLINE shape get no longer used in collision checks, instead, the COLLIDER shape has been used since then (See ThrowableProjectile.tick() & ProjectileUtil.getHitResult()). However, portals has empty COLLIDER shapes, so the teleporting check became dead code. And entities only stays in some seperated points, thus if the velocity of a thrown projectile entity is greater than 1 bloch per tick, it may pass through the portal if it failed to be teleported in the Entity.handleNetherPortal() method.
Suggestions to solve it:
The change may be intended to fix MC-73844, simply changing it back is not a good idea. But a addional ray trace may be introduced when the speed of the entity is higher than 1 block pre tick, just like what falling_blocks of concrete powder do.
This is why it happens:
In Minecraft 1.16.1 and earlier versions, thrown projects checks if the OUTLINE shapes of blocks, to find potential collisions and chances to be teleported ("hit" a nether_portal block, for example)(See ThrowableProjectile.tick()). A portal has its non-empty OUTLINE shapes though it has no collision box which can stop regular entity movement, so thrown projectiles can always detect if it can be teleported no matter how high their velocity is.
But in 1.16.2-pre1, something was changed. The OUTLINE shape get no longer used in collision checks, instead, the COLLIDER shape has been used since then (See ThrowableProjectile.tick() & ProjectileUtil.getHitResult()). However, portals has empty COLLIDER shapes, so the teleporting check became dead code. And entities only stays in some seperated points, thus if the velocity of a thrown projectile entity is greater than 1 bloch per tick, it may pass through the portal if it failed to be teleported in the Entity.handleNetherPortal() method.
Suggestions to solve it:
The change may be intended to fix MC-73884, simply changing it back is not a good idea. But a addional ray trace may be introduced when the speed of the entity is higher than 1 block pre tick, just like what falling_blocks of concrete powder do.
These log items are sometimes supposed to be produced,as they are only presenting when failure in playing a sound the server intends to have it played takes place.However, outputting them is not a good choice, beacuse such a large amount of log printing is very expensive.
Some Solutions:
Remove the code of printing the log items driectly.
Batch the outputting,like printing the number of sound handles which is failed to be created per minute
Print the log only when the debugging mode is enabled
Recently I have found that stacked minecarts has a infinite motion, making them behaves so strange.I think that may be produced buy the pushment between the minecarts.
It is a very annoying problem which makes the client more lagged or crash by sending so many messages to the console.You may know that calculating the square root of integers between 0 and 1M and output to the console is more than 10 times slower than only calculating them.So the carpetmod decides to avoid the annoying messages by adding a rule to decide if messages like this should be output.
It is a very annoying problem which makes the client more lagged or crash by sending so many messages to the console.You may know that calculating the square root of integers between 0 and 1M and output to the console is more than 10 times slower than only calculating them.So the carpetmod decides to avoid the annoying messages by adding a rule to decide if messages like this should be output.
working as intended
He means versions after than 1.12.2 cannot be launched.
How do you think villagers play hand animate?
I mean, the last modified time of the contents of backup archives, like .mca files are reset to the created time of the archive.