Commit Graph

23 Commits

Author SHA1 Message Date
Spottedleaf
f8132c51c3 Properly implement force loaded chunk API
We need to verify that the methods are only being invoked
on the global region.

Additionally, do not use CraftWorld#getChunk for retrieving
the Chunk object as it would trip a thread check. Rather,
we construct the CraftChunk manually as it is simply
a world+coordinates wrapper. The call never needed to block
until the chunk was loaded either.
2025-01-28 17:02:50 -08:00
Spottedleaf
87f8bd3e00 Implement Bukkit#getTps
Note that this requires the caller to be on a ticking region
or the global region, otherwise it will throw
UnsupportedOperationException.

Now the function returns the TPS for the current region.
2025-01-28 16:50:39 -08:00
Euphyllia Bierque
1f0b85d4e4 Add API to retrieve TPS from a specified location
Resolves https://github.com/PaperMC/Folia/pull/310
2025-01-28 16:49:08 -08:00
kerudion
5cc35a8e23 Fix flickering with teleportAsync
Fixes flickering of entities without passengers when teleporting
them with teleportAsync.

We do not need to untrack/track the entity when there are no
passengers, so we should not.
2025-01-28 16:11:25 -08:00
M2ke4U
35d31075a6
Use correct TrackedEntity variable in ChunkMap#addEntity
The variable `trackedEntity` is the input parameter, but we need use the TrackedEntity variable for the possible other entity.
2025-01-28 15:55:07 -08:00
Spottedleaf
ec78da5ae0 Fix spectator camera implementation
There are several problems that were solved:

1. Spectating failed to follow players through cross-region/cross-world
   teleporting.
2. Inability to set camera to off-region entity
3. Various crashes involved with off-region camera entity
4. Spectator does not always follow entities through portals

We fix #1 by sending ClientboundSetCameraPacket when the spectated
entity becomes in tracked, as the client appears to be unable to
correctly handle when the camera entity is removed, even temporarily.

We fix #2 by allowing off-region entities that are not dead.
However, this required the teleportation code in both setCamera
and the ServerPlayer#tick method to be modified to correctly
handle off-region camera targets.

We fix #3 by correctly teleporting to off-region locations
when needed.

We fix #4 by following the Bukkit entity. This allows spectator
mode to properly follow non-player entities through portals.

Issues #1 (cross-world) and #4 are probably present in Paper/Vanilla, however
solving #2 and #3 required a solution for these.

Fixes https://github.com/PaperMC/Folia/issues/324
2025-01-28 15:46:51 -08:00
Spottedleaf
e7bb50eac6 Add missing throw for ServerPlayer#teleport override
All teleports must use teleportAsync, so we need to throw
on the old implementations to prevent their usage.
2025-01-28 14:13:41 -08:00
Spottedleaf
81b9f70be9 Update Paper 2025-01-28 14:03:45 -08:00
Spottedleaf
e7e959208c Force out of region chunk in collision to collide
Instead of relying on COLLISION_FLAG_COLLIDE_WITH_UNLOADED_CHUNKS,
we will force a chunk not owned by the current region to collide
so that entities moving at high speed cannot move out of region.
2025-01-28 04:50:30 -08:00
Spottedleaf
92efc63ec3 Fix missing chunk shift on Z coordinate in last commit 2025-01-25 12:46:33 -08:00
Spottedleaf
41eab7ad00 Update Paper 2025-01-25 11:37:24 -08:00
Spottedleaf
75f1605833 Schedule POTENTIAL_JOB_SITE to correct region
The position may not be owned by the current region so we must
schedule the release to the correct region.

Fixes https://github.com/PaperMC/Folia/issues/319
2025-01-25 11:32:13 -08:00
Spottedleaf
4e7607dce4 Update Paper 2025-01-22 12:11:28 -08:00
Spottedleaf
290f78994a Do not invoke ender pearl registration logic
The owner of the projectile would need to be retrieved, which
may trip a thread check. We do not track ender pearls anyways,
so the registration logic does nothing regardless.

Fixes https://github.com/PaperMC/Folia/issues/315
2025-01-20 05:09:33 -08:00
Spottedleaf
35b98633ba Add thread check to YieldJobSite
We cannot yield the job site if it is outside of the current
region.

Fixes https://github.com/PaperMC/Folia/issues/316
2025-01-20 05:06:14 -08:00
Spottedleaf
b54ba0d75b Remove nearbyPlayers cache on ChunkData
We cannot guarantee that the current region owns the chunk
associated with the ChunkData. As a result, more than 1 region
may write to the field.

Additionally, we did not include any logic to adjust the field during
a region merge or split - which would leave invalid data in the field.

As a result, the nearbyPlayers data retrieved from the ChunkData
was possibly invalid which may have lead to entity tracker desync
problems.

Fixes https://github.com/PaperMC/Folia/issues/317
2025-01-20 04:56:56 -08:00
Spottedleaf
306dc07ce6 Update Paper 2025-01-16 14:31:34 -08:00
Spottedleaf
5198c2f583 Update Paper 2025-01-14 11:22:26 -08:00
Spottedleaf
7dbde1de00 Rebuild patches 2025-01-11 06:46:58 -08:00
Spottedleaf
0acb7b08b7 Split Minecraft patches into file patches 2025-01-11 06:45:50 -08:00
Spottedleaf
504f90840b Split paper feature patches into file patches 2025-01-11 06:42:06 -08:00
Spottedleaf
b1da93e90b Resolve notes 2025-01-11 06:36:44 -08:00
Spottedleaf
838465ab24 Begin hard fork 2025-01-11 05:26:16 -08:00