Type of bug
Performance issue or memory leak, Other unexpected behaviour
/ess dump all output
https://essentialsx.net/dump?bytebin=yrMKjtJY04
Error log (if applicable)
none, nothing is logged.
Bug description
EssentialsX uses PaperLib to teleport players and load chunks asynchronously on Paper. PaperLib 1.0.6 reads the server version from Bukkit#getVersion() with the regex \(MC: (\d)\.(\d+)\.?(\d+?)?(?: Pre-Release )?(\d)?\), which only accepts a single digit major version. On 26.x (... (MC: 26.3)) it does not match, PaperLib sees version 0, and it selects its synchronous handlers for teleportAsync, getChunkAtAsync and getBedSpawnLocationAsync. Every teleport EssentialsX does (/tp, /tpa, /home, /warp, /spawn, /back, /tpr and so on) then calls Entity#teleport, and every chunk it needs is loaded on the main thread.
Steps to reproduce
- Run Paper 26.1 or newer with EssentialsX
- Run
/home or /tpa to a location whose chunk is not loaded
- The chunk is loaded on the main thread before the teleport
To see which handlers were selected without teleporting anything, read the asyncTeleportHandler field of the PaperLib environment inside the EssentialsX jar. On 26.3 build 140 it is AsyncTeleportSync.
Expected behaviour
The asynchronous Paper handlers (AsyncTeleportPaper_13, AsyncChunksPaper_15 and BedSpawnLocationPaper) are selected, as they are on 1.21.x.
Actual behaviour
The synchronous handlers are selected.
Additional Information
EssentialsX supports 26.1.2, 26.2 and 26.3, so this applies to all of them. The same wrong version also leaves PaperLib's chunk-generated and bed spawn handlers on their fallbacks.
Type of bug
Performance issue or memory leak, Other unexpected behaviour
/ess dump alloutputhttps://essentialsx.net/dump?bytebin=yrMKjtJY04
Error log (if applicable)
none, nothing is logged.
Bug description
EssentialsX uses PaperLib to teleport players and load chunks asynchronously on Paper. PaperLib 1.0.6 reads the server version from
Bukkit#getVersion()with the regex\(MC: (\d)\.(\d+)\.?(\d+?)?(?: Pre-Release )?(\d)?\), which only accepts a single digit major version. On 26.x (... (MC: 26.3)) it does not match, PaperLib sees version 0, and it selects its synchronous handlers forteleportAsync,getChunkAtAsyncandgetBedSpawnLocationAsync. Every teleport EssentialsX does (/tp,/tpa,/home,/warp,/spawn,/back,/tprand so on) then callsEntity#teleport, and every chunk it needs is loaded on the main thread.Steps to reproduce
/homeor/tpato a location whose chunk is not loadedTo see which handlers were selected without teleporting anything, read the
asyncTeleportHandlerfield of the PaperLib environment inside the EssentialsX jar. On 26.3 build 140 it isAsyncTeleportSync.Expected behaviour
The asynchronous Paper handlers (
AsyncTeleportPaper_13,AsyncChunksPaper_15andBedSpawnLocationPaper) are selected, as they are on 1.21.x.Actual behaviour
The synchronous handlers are selected.
Additional Information
EssentialsX supports 26.1.2, 26.2 and 26.3, so this applies to all of them. The same wrong version also leaves PaperLib's chunk-generated and bed spawn handlers on their fallbacks.