Riley Park
00864ac5b1
Update Upstream ( PaperMC/Paper@cbcdfd03e7 )
2023-03-29 19:41:15 -07:00
Spottedleaf
749480c7ec
Fix getCenterChunk not returning the center chunk
...
Before, it returned the center chunk section. Also, now instead
of approximating the center chunk from the allocated sections,
actually retrieve all chunks inside the region directly.
2023-03-29 16:58:33 -07:00
Spottedleaf
9998ecd60d
Make ActivationRange#activateEntities use non-checked getEntities
...
We can do this because we thread-check the entities retrieved,
we want to do this because a large activation range may violate
thread-checks
2023-03-29 14:22:15 -07:00
Spottedleaf
f42c61aba6
Folia Metrics page
...
https://bstats.org/plugin/server-implementation/Folia/18084
2023-03-29 12:53:55 -07:00
Spottedleaf
7de5c541b3
Nerf default tick thread allocation
...
Allocates too many threads by default
2023-03-29 08:12:27 -07:00
Josh Roy
88167d59d2
Add Server#isGlobalTickThread ( #5 )
2023-03-28 18:59:19 -07:00
Spottedleaf
108dc2358b
Use chunk coords for thread check for CraftWorld#getHighestBlockYAt
...
Not block coords
2023-03-28 16:13:18 -07:00
Spottedleaf
1c5e9be7fd
Force prevent moving into unloaded chunks
...
Not safe to allow this anymore
2023-03-28 15:59:41 -07:00
Spottedleaf
d113346b6d
Fix isTickThread(world, blockX, blockZ)
...
Need to convert the Z to chunk, not block...
Also throw for CraftPlayer#teleport and friends
2023-03-27 20:29:16 -07:00
Spottedleaf
1175350400
Fix failure to initialise CraftWorld
...
Directly access spawn category limits rather than go through
the method
2023-03-27 16:06:19 -07:00
Josh Roy
5fa0556869
Use longs for scheduler delays/periods ( #4 )
2023-03-25 21:48:28 -07:00
Spottedleaf
75e3cdbc61
Rebase fixups
2023-03-25 16:29:07 -07:00
Spottedleaf
c435aaae96
Add world checks to retrieval of regionised world data
...
This is to mirror behavior of RegionizedData's world check.
2023-03-25 15:27:50 -07:00
Nassim Jahnke
3c62932250
Fix player disconnect call in PlayerList removAll
2023-03-25 19:44:11 +01:00
Nassim Jahnke
836dc75b65
Replace Vector with Position in isOwnedByCurrentRegion methods
...
Closes #3
2023-03-25 18:50:36 +01:00
Nassim Jahnke
8d15f3e23d
Add methods taking world, chunkX, chunkZ to RegionScheduler
2023-03-25 18:40:20 +01:00
Nassim Jahnke
dfc157075a
Renames for consistency
2023-03-25 00:22:47 +01:00
Spottedleaf
6a5fff3caa
Make ClickCallbackProviderImpl thread-safe
...
Can no longer process tasks from the main thread like that anymore,
it just needs to be concurrent.
2023-03-23 07:55:26 -07:00
Spottedleaf
d5b837c457
Make Damagecommand safe, and remove RideCommand
2023-03-23 07:36:44 -07:00
Spottedleaf
4c183bf960
Fix compile
2023-03-23 07:22:57 -07:00
Spottedleaf
c7fbdd87d2
Update to 1.19.4
...
Patches applied, but not yet checked compile.
2023-03-23 06:55:09 -07:00
Spottedleaf
50ad6c3131
New scheduler API
...
Now, entity/global/location schedulers implement a generic run,
runDelayed, and runAtFixedRate methods that provide a ScheduledTask
value that can be used to interact with the scheduled task.
Add also an async task scheduler that implements the same methods,
except the delays/periods are in time and not ticks, as the scheduler
is independent of the server tick process.
Additionally, throw on some unimplemented APIs now.
2023-03-23 02:51:04 -07:00
Spottedleaf
7e948a6179
Add global region scheduler
...
This will allow plugins to safely execute commands or perform
other global tick thread data modification.
2023-03-19 16:43:34 -07:00
Spottedleaf
0911c7a58a
Remove patches specific for stream
...
Specifically, the /msg and /me command removal and the operator
only chat. Additionally, remove the TPA commands.
2023-03-19 14:53:06 -07:00
Spottedleaf
ee737050a0
Add thread checks for CraftEntity#getHandle
...
Also resolve some issues found by this change.
Currently, the player handle checks are disabled.
2023-03-19 14:48:37 -07:00
Spottedleaf
a980944815
Regionise RedStoneWireBlock#shouldSignal
...
Global state used to update redstone, so it should be regionised.
2023-03-12 20:55:52 -07:00
Spottedleaf
6fe75ab068
Erase mob target in getTarget if it is not in the current region
...
This will prevent access to the target's position or data.
2023-03-12 15:36:05 -07:00
Spottedleaf
3aeb021748
Make PoiCompetitorScan region-safe
...
We implement it by ensuring that if the entity is not nearby
the job site, they automatically lose.
2023-03-12 15:25:06 -07:00
Spottedleaf
cf72543628
Rebase fixups
2023-03-12 15:04:00 -07:00
Spottedleaf
9561a53e7a
Log exceptions in ThreadedRegioniser explicitly
...
I suspect something called these methods, they threw and then
the error was hidden by some completablefuture somewhere.
2023-03-11 12:56:43 -08:00
Spottedleaf
a80cdafae9
Make uncaught exceptions in tick thread shut down the server
2023-03-11 12:36:37 -08:00
Spottedleaf
3f2b83c35a
Make SaplingBlock.treeType a thread-local
...
Now it is accessed concurrently
2023-03-11 06:27:35 -08:00
Spottedleaf
9e835221b9
Update new bee position before adding to beehive
...
This will ensure the thread check from discard does not fail
2023-03-11 06:14:05 -08:00
Spottedleaf
760de0a276
Move region center calculation into try-catch
...
Sometimes a region is empty, but only when the threaded regioniser
crashes. So, it should not prevent shutdown.
Additionally, only remove pending teleports after setting the
current region.
2023-03-11 05:46:20 -08:00
Spottedleaf
0fa5f339f2
Do not allow players to interact with entities outside the current region
2023-03-11 05:38:11 -08:00
Spottedleaf
d2a5acba4a
Do not allow players to interact with blocks outside of their region
2023-03-11 05:16:10 -08:00
Spottedleaf
4af9f6c889
Do not allow players to destroy blocks that are not owned
2023-03-11 05:10:34 -08:00
Spottedleaf
4cffea6652
Read cancelled field while holding region lock
...
This will prevent a race condition where the region is cancelled
and immediately re-scheduled, and where this all happens while
the tick thread is blocking on tryMarkTicking.
2023-03-10 20:46:58 -08:00
Spottedleaf
f6d776697b
Fix kicking player when they die on a vehicle with instant respawn
...
The respawn logic apparently can fire before the death is broadcasted
2023-03-10 20:11:08 -08:00
Spottedleaf
e1ad1b1d91
No longer give everyone access to /tps
...
Everyone had access to /tps for the private tests, but we cannot
trust everyone to use it responsibly for the public test
(i.e revealing coordinates of all logged in players).
2023-03-10 00:19:40 -08:00
Spottedleaf
8625606b3d
Fix crash if player disconnects during login stage
2023-03-09 21:17:18 -08:00
Spottedleaf
bbee4310fe
Fix fishing rods throwing exceptions
...
Need to move setOwner after the position update, as the thread-check
will fall back to position
2023-03-09 20:45:32 -08:00
Spottedleaf
950216171d
Do not let projectiles travel into chunks not owned by current region
...
Otherwise, the thread checks for moving the entity into the new
entity chunk section would throw and cause the projectile to
be deleted.
2023-03-08 20:15:22 -08:00
Spottedleaf
ef515cc6f5
Consider non-owned chunks in entity movement as unloaded
...
This should prevent entities from moving into areas not owned
by the current region.
2023-03-08 19:44:01 -08:00
Spottedleaf
afd678cab6
Fall back to position check if the entity has a null entity callback
...
In the case that the entity has a null callback, it means the
entity has not been added to the world - so, we should treat
it the same as entity#isRemoved.
2023-03-08 19:38:50 -08:00
Spottedleaf
deae156e59
Make Level#getBlockEntity return null immediately if not tickthread
...
Otherwise, the world data will be null and we will NPE. The
function is supposed to return null for off-thread access,
anyways.
2023-03-08 17:40:28 -08:00
Spottedleaf
74f665b6f5
Fix compilation
2023-03-07 20:06:08 -08:00
Spottedleaf
b00a16a66d
Fix command label placeholder in usage for /tps
...
Only <command> gets replaced with the provided label
2023-03-07 17:34:45 -08:00
Spottedleaf
68b20e0acc
Add API for checking ownership of region by position/entity
...
This may be useful for plugins which want to perform operations
over large areas outside of the buffer zone provided by the
regionaliser, as it is not guaranteed that anything outside
of the buffer zone is owned. Then, the plugins may use
the schedulers depending on the result of the ownership
check.
2023-03-07 14:44:37 -08:00
Spottedleaf
386bcd1094
Make ServerLevel#areChunksLoadedForMove also check region ownership
...
We do not want players to move into chunks that are not owned
by the current region
2023-03-07 13:31:59 -08:00