29 Commits

Author SHA1 Message Date
MrHua269
b5fafd61d1 Fix incorrect player death check in AbstractContainerMenu 2025-02-11 13:51:11 +08:00
Spottedleaf
8b9ddf1859 Update Paper 2025-02-10 12:24:57 -08:00
Spottedleaf
5558184374 Update Paper 2025-02-02 11:25:26 -08:00
Spottedleaf
a76d8448b7 Reset stored movementThisTick on teleport
This fixes a possible problem where later the server will try to
apply movement to blocks which may be off-region. This also
correctly adhere's to Vanillas behavior, which is to clear
movementThisTick when teleporting.
2025-02-02 10:49:05 -08:00
Spottedleaf
873afea939 Update Paper 2025-01-28 18:22:53 -08:00
Spottedleaf
b05f1ef01d Remove MSPT command
Users should use the improved /tps command instead, as the
mspt command is not implemented correctly in Folia.
2025-01-28 17:07:07 -08:00
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