Fix cross-region teleportation in SpreadPlayersCommand #35
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
/spreadplayerscommandteleportAsyncinstead of synchronousteleportToto properly handle cross-region teleportationProblem
The
/spreadplayerscommand was causing thread errors because it attempted to teleport entities synchronously to random positions that could be in different regions than the current thread owns. This resulted in moonrise thread check failures during the position update.Solution
Replaced the synchronous
entity.teleportTo()call withentity.getBukkitEntity().teleportAsync(), which schedules the teleport on the entity's task scheduler. This ensures the teleport executes when the entity is being ticked by the appropriate thread that owns both the source and destination regions.Test plan
/spreadplayers ~ ~ 5 1000 false @aexecutes without errors