When a falling block entity goes through an end gateway, the PortalCooldown
of the entity gets set to 300.
This cooldown should be over after 15 seconds, and the falling block should be able to go through another gateway after 15 seconds,
but it actually does not do that, it never counts down its PortalCooldown
, and the entity can never go through another gateway again.
The issue could be resolved by calling the processPortalCooldown()
method somewhere in the tick()
method of the FallingBlockEntity
class.
For most entities this method gets called as part of the handleNetherPortal()
method, but falling block entities do not call that method because they cannot use nether portals (MC-9644).
So basically, falling block entities do not process their PortalCooldown
, because they cannot use nether portals.
But falling block entities can use end gateways, and end gateways use the exact same PortalCooldown
variable, so falling block entities ought to process their PortalCooldown
.
To see this behavior in-game place two gateway blocks with a cobweb in between in mid-air in the end,
go through the upper gateway to generate a gateway on the outer end islands, and then let a falling sand entity fall through the gateway on the outer end islands.
The falling sand entity will teleport to the upper of the two gateways we placed, and then slowly fall through the cobwebs, and touch the lower gateway block with a delay of more than 15 seconds, but it will not go through the lower gateway.
After 30 seconds the falling sand entity will destroy itself without ever having gone through the lower gateway.
If the same experiment is done with a different entity, like for example a cow, then the cow will go through the lower gateway after 15 seconds.
This experiment demonstrates that falling sand entities do not count down their PortalCooldown
like other entities.
According to MC-9644, falling blocks should actually travel through Nether portals as well, so these two issues could be fixed at once.