The spawn selection may actually be farther than 32 blocks,
so we need a larger load radius to prevent a deadlock on startup.
Additionally, re-insert thread checks for sync loads that were
previously in 1.20.
If a player moves away before the raid is created, then we would
possibly trigger the raid cross-region.
Considering Vanilla doesn't trigger the raid cross-dimension, this
doesn't seem like an important behavior to break.
Fixes https://github.com/PaperMC/Folia/issues/264
CraftEntity properly tracks the underlying entity handle
when the entity teleports. This resolves a race condition
where if an enderpearl was ticked while its owner was teleporting,
the owner reference would be lost.
Fixes https://github.com/PaperMC/Folia/issues/279
This field is covered by the entity tracker optimisations in Paper,
but currently was not properly maintained - resulting in memory leaks.
Fixes https://github.com/PaperMC/Folia/issues/283
Most significant changes are to portal/teleport logic, there may
be some bugs there. Not really concerned about the passenger
teleport, as Folia had already added support for that.
Not sure how the spark changes are going to work.
Using the total number of users in the connection set
is not correct since those users may not be logged in
yet. Instead, track separately the number of users
who have passed the slot check.
Fixes https://github.com/PaperMC/Folia/issues/205
This may be invoked by a worldgen thread, in which case the
region data would be null and cause a crash. Returning true
is the default state of shouldSignal, so this should maintain
expected behavior.
The world tick will synchronise block data to clients. If
the connection tick is ran before, then the server will
send the block ack before the block updates - which causes
the client to think that any blocks it broke/placed
were rejected.
Fixes https://github.com/PaperMC/Folia/issues/194
The delta position packet instructs the client to update
the entity position by a position difference. However, this position
difference is relative to the last position in the entity tracker
state, not the last position which has been sent to the player. As
a result, if the last position the player has recorded is different
than the one stored in the entity tracker (which occurs when a new
player is added to an existing entity tracker state) then the sent
position difference will cause a position desync for the client.
We can resolve this problem by either tracking the last position
sent per-player, or by simply resetting the last sent position
in the entity tracker state every time a new player is added.
Resetting the last sent position every time a new player is
added to the tracker is just easier to do, so that is what
this patch does.
Fixes https://github.com/PaperMC/Folia/issues/197
The data both store are caches which are cleared after updates,
which means that there is no block/position data being tracked
across ticks. As long as each region has its own instance, there
should be no cross-region data access.
Fixes https://github.com/PaperMC/Folia/issues/202
It doesn't really make sense to use this as most of the features
involve stopping/stepping the world, which do not make much sense
given the nature of multiple parallel ticking regions.