Commit graph

7680 commits

Author SHA1 Message Date
Spottedleaf
01a13871de
Rewrite chunk system (#8177)
Patch documentation to come

Issues with the old system that are fixed now:
- World generation does not scale with cpu cores effectively.
- Relies on the main thread for scheduling and maintaining chunk state, dropping chunk load/generate rates at lower tps.
- Unreliable prioritisation of chunk gen/load calls that block the main thread.
- Shutdown logic is utterly unreliable, as it has to wait for all chunks to unload - is it guaranteed that the chunk system is in a state on shutdown that it can reliably do this? Watchdog shutdown also typically failed due to thread checks, which is now resolved.
- Saving of data is not unified (i.e can save chunk data without saving entity data, poses problems for desync if shutdown is really abnormal.
- Entities are not loaded with chunks. This caused quite a bit of headache for Chunk#getEntities API, but now the new chunk system loads entities with chunks so that they are ready whenever the chunk loads in. Effectively brings the behavior back to 1.16 era, but still storing entities in their own separate regionfiles.

The above list is not complete. The patch documentation will complete it.

New chunk system hard relies on starlight and dataconverter, and most importantly the new concurrent utilities in ConcurrentUtil.

Some of the old async chunk i/o interface (i.e the old file io thread reroutes _some_ calls to the new file io thread) is kept for plugin compat reasons. It will be removed in the next major version of minecraft.

The old legacy chunk system patches have been moved to the removed folder in case we need them again.
2022-09-26 01:02:51 -07:00
Bjarne Koll
abe53a7eb4
Fix typos in isTickingWorlds API javadocs (#8382) 2022-09-25 01:01:17 +01:00
Lulu13022002
6d630052fd
Fix setEggCount method from TurtleLayEggEvent (#8385) 2022-09-24 18:34:20 +02:00
Owen
b4c025b92c
Fix player desync on dimension change (#8253) 2022-09-24 06:45:13 +01:00
Lulu13022002
62680d5f83
Avoid item meta usage for itemstack enchantment getter (#8373) 2022-09-24 06:19:51 +01:00
willkroboth
4d52f1d247
Add method isTickingWorlds to Bukkit (#8316)
Co-authored-by: Shane Freeder <theboyetronic@gmail.com>

Also, restores un/loading worlds mid tick. This will not be officially supported API contract that such a routine is safe, and these restrictions may be restored in the future.
2022-09-24 06:19:05 +01:00
Shane Freeder
6736f390a2
Fix mangled patch 2022-09-24 05:48:46 +01:00
willkroboth
d3326235f0
Avoid potential place where the world map could be modified after its iterator is created (#8315) 2022-09-24 05:33:20 +01:00
Shane Freeder
3996e6ef29
Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
c7c11188 SPIGOT-2620: Add Player#sendBlockChanges()
f63d2b44 Improve annotation test on parameters
3372e7b4 SPIGOT-1244, SPIGOT-6860, SPIGOT-6874: Various Javadoc and formatting fixes
a1e8a9ab PR-793: Ignore .checkstyle file generated by Eclipse IDE

CraftBukkit Changes:
c2c39089e SPIGOT-2620: Add Player#sendBlockChanges()
8209158db PR-1113: Ignore .checkstyle file generated by Eclipse IDE

Spigot Changes:
4aa5ead2 Rebuild patches
2022-09-24 02:38:12 +01:00
Jake Potrebic
f528f53e81
Correct javadocs on PlayerArmorStandManipulateEvent (#7719) 2022-09-23 06:55:02 +01:00
Lulu13022002
ec0c550482
Call BlockPhysicsEvent more often (#8264) 2022-09-23 06:35:15 +01:00
Lulu13022002
8681503d10
Call EntityChangeBlockEvent for frogs egg (#8136) 2022-09-23 06:32:32 +01:00
Shane Freeder
980c1d1f90
Updated Upstream (Bukkit/CraftBukkit) (#8378) 2022-09-23 06:08:43 +01:00
Jake Potrebic
339e85d491
Updated Upstream (CraftBukkit) (#8376) 2022-09-22 01:20:59 +01:00
Jake Potrebic
9e614e6f9a
Fix ground pathfinding (#7683) 2022-09-20 14:06:11 -07:00
ChristopheG
8db45c4312
Copper clear on lightning strike calls EntityChangeBlockEvent (#8126) 2022-09-20 03:35:38 +01:00
Owen
ad3dffe715
Respect preventMovingIntoUnloadedChunks for optimized collision checking (#8259) 2022-09-20 03:02:52 +01:00
tahmid-23
f7e68091a0
Fix Pathfinding After World Has Changed (#8068) 2022-09-20 02:39:46 +01:00
Nick Hensel
f8742e26cc
Also load resources from LibraryLoader (#8335) 2022-09-20 02:07:03 +01:00
Shane Freeder
dbc2d60ce0
Make WorldCreator#keepSpawnLoaded return the WorldCreator (Fixes #8321) (#8371)
* Make WorldCreator#keepSpawnLoaded return the WorldCreator (Fixes #8321)

Thought that I fixed this before push/merge, apparently not, hence, fix
the return type and add mitigation for this.

* Fix patch/build

* Rebuild patches
2022-09-20 01:28:22 +01:00
Shane Freeder
470c6388d2
Configurable chat thread limit (#7878) 2022-09-20 01:16:23 +01:00
Melncat
ea777c345b
Add a consumer parameter to ProjectileSource#launchProjectile (#8374)
Co-authored-by: MelnCat <melncatuwu@gmail.com>
2022-09-20 01:03:59 +01:00
Nex
63cb7472ac
Added byte array serialization/deserialization for PersistentDataContainers (#7505) 2022-09-18 05:06:53 +01:00
Lulu13022002
dbda887457
Missing some effect cause (#8307) 2022-09-18 04:46:20 +01:00
Lulu13022002
34777cdcbe
Missing eating regain reason (#8244) 2022-09-18 04:24:28 +01:00
Jake Potrebic
b826065a4b
fire EntityChangeBlockEvent in more places (#6371)
* fire EntityChangeBlockEvent in more places

* Rebuild patches

Co-authored-by: Shane Freeder <theboyetronic@gmail.com>
2022-09-18 04:03:54 +01:00
elmital
ef670ebafb
EndDragonFight killed statuses should be false for newly created worlds (#8354) 2022-09-18 02:44:06 +01:00
Peter Crawley
05f6a5c005
Limit size of Authenticator Cache Thread Pool (#8360) 2022-09-17 22:58:51 +01:00
Fruxz
f5f84ff476
Add custom destroyerIdentity parameter to the sendBlockBreak function (#5840) 2022-09-17 22:27:46 +01:00
Bjarne Koll
751d092af3
Properly close section storage managed files (#8364) 2022-09-17 19:50:01 +01:00
Shane Freeder
36f0c1b3cc
Rebuild patches 2022-09-17 04:35:39 +01:00
Jaren
267dd180b6
Stop large look changes from crashing the server (#8326) 2022-09-17 04:30:00 +01:00
karthanistyr
178f035aa7
Restore no-crash behaviour when read-only config file(s) (#8318) 2022-09-17 04:22:17 +01:00
Nassim Jahnke
ef0e5a642d
Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
9ae3f10f SPIGOT-3842: Add Player#fireworkBoost() and expand Firework API
48c0c547 PR-786: Add methods to get sounds from entities

CraftBukkit Changes:
5cc9c022a SPIGOT-7152: Handle hand item changing during air interact event
4ffa1acf6 SPIGOT-7154: Players get kicked when interacting with a conversation
4daa21123 SPIGOT-3842: Add Player#fireworkBoost() and expand Firework API
e5d6a9bbf PR-1100: Add methods to get sounds from entities
b7e9f1c8b SPIGOT-7146: Reduce use of Material switch in ItemMeta

Spigot Changes:
4c157bb4 Rebuild patches
2022-09-12 13:31:45 +02:00
Jake Potrebic
51183af967
Fix console completer/highlighter having invalid source stack (#8346) 2022-09-09 14:25:54 -07:00
Jake Potrebic
e51401e764
Updated Upstream (Bukkit/CraftBukkit/Spigot) (#8347) 2022-09-09 11:54:00 -07:00
okx-code
36a5f150c5
Allow preventing BlockDestroyEvent from dropping items (#8349) 2022-09-08 17:13:50 +02:00
Spottedleaf
09904fd780 Re-add legacy getChunkAtAsynchronously to ChunkProviderServer
Apparently some plugins use it
2022-09-02 04:42:05 -07:00
Spottedleaf
e8c2c3bfda Fix World#refreshChunk not working for chunks in no-tick range
The chunk would not be marked as ticking in this case, so
retrieving the ticking chunk would not work.
2022-09-01 15:39:24 -07:00
Spottedleaf
046466f3ba
Re-arrange most chunk system patches to front (#8338)
* Re-arrange most chunk system patches to front

Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>
2022-09-01 09:51:59 -07:00
Spottedleaf
eff22eb054 Ensure players are removed from pendingLogin
Looks like they would not have been removed if they disconnected
during the chunk load, preventing the world from being unloaded.
2022-08-29 06:21:45 -07:00
Spottedleaf
aabf676721 Prevent unloading worlds with pending player logins
Logging into an unloaded world isn't going to end well.
This may fix the cases of people seeing errors about regionfiles
being closed, as loading chunks in an unloaded world will cause this
as the regionfile cache is closed but not cleared.
2022-08-26 22:20:27 -07:00
Nassim Jahnke
0bf8790c9c
Fix client lag spikes due to client light recalc 2022-08-25 12:59:08 +02:00
José Miguel Moreno
a76998d235
Fix plugin loggers on shutdown (#5592)
Potentially this should be merged back into the original logging changes patches
2022-08-21 03:57:17 +01:00
Nassim Jahnke
2da891fcfa
Updated Upstream (Bukkit/CraftBukkit)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
0b32cbaa PR-782: ThrownPotion now extends ThrowableProjectile
474238ca SPIGOT-7138: Can't retrieve pixel color from map

CraftBukkit Changes:
cdef8fc72 PR-1097: CraftThrownPotion now extends CraftThrowableProjectile
419010b13 SPIGOT-7112: Mobs added 1.17 and after do not create an EntityTargetEvent properly
e71426201 SPIGOT-7079: Allays don't call EntityTargetEvent on ground items
f80adb8b9 SPIGOT-7138: Can't retrieve pixel color from map
2022-08-17 13:02:35 +02:00
petersv5
4ba43fe02a
Grant temporary immunity to hopper minecarts while actively pulling (fixes #8281) (#8282)
Reduce the impact from EAR on hopper minecart based unloaders by making them immune to
EAR while pulling objects. The EAR is still active outside misc activation range when
the hopper minecart is idle, keeping lag low.
2022-08-14 19:41:15 +02:00
Nassim Jahnke
4516aedb43
More ThrownPotion API 2022-08-14 19:12:02 +02:00
Josh Roy
5bf259115c Add NamespacedKey biome methods
Co-authored-by: Thonk <30448663+ExcessiveAmountsOfZombies@users.noreply.github.com>
2022-08-14 13:09:10 -04:00
Pedro
db17048325
[ci skip] Show @org.bukkit.UndefinedNullability in javadocs (#8291) 2022-08-14 17:18:39 +01:00
Nassim Jahnke
9592da1f84
Add method to get highest anger level of warden 2022-08-14 10:25:28 +02:00