Commit Graph
100 Commits
Author SHA1 Message Date
Spottedleaf 0339e8a094 Do not overload I/O threads with chunk data while flush saving
If the chunk count is high, then the memory used by the
chunks adds up and could cause problems. By flushing
every so many chunks, the server will not become
stressed for memory. It will also not increase the total
time to save, as flush saving performs a full flush at
the end anyways.
2021-10-16 02:22:11 -07:00
Spottedleaf 9ba1f65d29 Fix off by one for determining server view distance
It was 1 greater than it should've been. lvar renaming
caused the field viewDistance to be read when it should've
been reading the watchDistance
2021-10-15 19:20:32 -07:00
Spottedleaf 55ca8ebefe Null check isApplicable for CraftBlockEntityState#update
If the update call removed the TE, then isApplicable would
have NPE'd.
2021-10-12 13:35:29 -07:00
Spottedleaf 0981bf8e38 Discard out of bounds chunks during regionfile header recalc
The logic cannot even determine what local chunk they should be,
and out of bounds chunks can only occur from external modifications
to the regionfile.

If regionfile recalculation cannot occur, then do not attempt
to retry read actions.

Fixes https://github.com/PaperMC/Paper/issues/6718
2021-10-07 05:50:38 -07:00
Spottedleaf 36e77c4c63 Do not create nether portals that delete undestroyable blocks
Fixes https://github.com/PaperMC/Paper/issues/5773
2021-09-07 15:10:48 -07:00
SpottedleafandCallum Seabrook 3e7769feae Fixed layers from V2550 not being added to list (#6541)
Note from Spottedleaf:
Please note that this doesn't fix any problems using dataconverter
because dataconverter does not re-route world gen settings conversion.

Co-authored-by: Callum Seabrook <callum.seabrook@prevarinite.com>
2021-09-01 14:25:25 -07:00
SpottedleafandSpottedleaf 25134061a8 Remove the old updatingChunks and visibleChunks fields (#6535)
Just in case they cause problems again.

Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>
2021-08-31 19:33:14 -07:00
bc2890b955 Merge tuinity (#6413)
This PR contains all of Tuinity's patches. Very notable ones are:

- Highly optimised collisions
- Optimised entity lookups by bounding box (Mojang made regressions in 1.17, this brings it back to 1.16)
- Starlight https://github.com/PaperMC/Starlight
- Rewritten dataconverter system https://github.com/PaperMC/DataConverter
- Random block ticking optimisation (wrongly dropped from Paper 1.17)
- Chunk ticking optimisations
- Anything else I've forgotten in the 60 or so patches

If you are a previous Tuinity user, your config will not migrate. You must do it yourself. The config options have simply been moved into paper.yml, so it will be an easy migration. However, please note that the chunk loading options in tuinity.yml are NOT compatible with the options in paper.yml. 

* Port tuinity, initial patchset

* Update gradle to 7.2

jmp said it fixes rebuildpatches not working for me. it fucking better

* Completely clean apply

* Remove tuinity config, add per player api patch

* Remove paper reobf mappings patch

* Properly update gradlew

* Force clean rebuild

* Mark fixups

Comments and ATs still need to be done

* grep -r "Tuinity"

* Fixup

* Ensure gameprofile lastaccess is written only under the state lock

* update URL for dataconverter

* Only clean rebuild tuinity patches

might fix merge conflicts

* Use UTF-8 for gradlew

* Clean rb patches again

* Convert block ids used as item ids

Neither the converters of pre 1.13 nor DFU handled these cases,
as by the time they were written the game at the time didn't
consider these ids valid - they would be air. Because of this,
some worlds have logspam since only DataConverter (not DFU or
legacy converters) will warn when an invalid id has been
seen.

While quite a few do need to now be considered as air, quite a lot
do not. So it makes sense to add conversion for these items, instead
of simply suppressing or ignoring the logs. I've now added id -> string conversion
for all block ids that could be used as items that existed in the game
before 1.7.10 (I have no interest in tracking down the
exact version block ids stopped working) that were on
https://minecraft-ids.grahamedgecombe.com/

Items that did not directly convert to new items will
be instead converted to air: stems, wheat crops, piston head,
tripwire wire block

* Fix LightPopulated parsing in V1466

The DFU code was checking if the number existed, not if it
didn't exist. I misread the original code.

* Always parse protochunk light sources unless it is marked as non-lit

Chunks not marked as lit will always go through the light engine,
so they should always have their block sources parsed.

* Update custom names to JSON for players

Missed this fix from CB, as it was inside
the DataFixers class.

I decided to double check all of the CB changes again:

DataFixers.java was the only area I missed, as I had inspected all
datafixer diffs and implemented them all into DataConverter. I also
checked Bootstrap.java again, and re-evaluated their changes. I had
previously done this, but determined that they were all bad.

The changes to make standing_sign block map to oak_sign block in
V1450 is bad, because that's not the item id V1450 accepts. Only
in 1.14 did oak_sign even exist, and as expected there is a converter
to rename all existing sign items/blocks.

The fix to register the portal block under id 1440 is useless, as
the flattenning logic will default to the lowest registered id - which
is the exact blockstate that CB registers into 1440. So it just
doesn't do anything.

The extra item ids in the id -> string converter are already added,
but I found this from EMC originally.

The change for the spawn egg id 23 -> Arrow is just wrong,
that id DOES correspond to TippedArrow, NOT Arrow. As
expected, the spawn egg already has a dedicated mapping for
Arrow, which is id 10 - which was Arrow's entity id.

I also ported a fix for the cooked_fished id update. This doesn't
really matter since there is already a dataconverter to fix this,
but the game didn't accept cooked_fished at the time. So I see
no harm.

* Review all converters and walkers

- Refactor V99 to have helper methods for defining entity/tile
  entity types
- Automatically namespace all ids that should be namespaced.
  While vanilla never saved non-namespaced data for things that
  are namespaced, plugins/users might have.
- Synchronised the identity ensure map in HelperBlockFlatteningV1450
- Code style consistency
- Add missing log warning in V102 for ITEM_NAME type conversion
- Use getBoolean instead of getByte
- Use ConverterAbstractEntityRename for V143 TippedArrow -> Arrow
  rename, as it will affect ENTITY_NAME type
- Always set isVillager to false in V502 for Zombie
- Register V808's converter under subversion 1 like DFU
- Register a breakpoint for V1.17.1. In the future, all final
  versions of major releases will have a breakpoint so that
  the work required to determine if a converter needs a breakpoint
  is minimal
- Validate that a dataconverter is only registered for a version
  that is registered
- ConverterFlattenTileEntity is actually ConverterFlattenEntity
  It even registered the converters under TILE_ENTITY, instead of
  ENTITY.
- Fix id comparison in V1492 STRUCTURE_FEATURE renamer
- Use ConverterAbstractStatsRename for V1510 stats renamer
  At the time I had written that class, the abstract renamer didn't
  exist.
- Ensure OwnerUUID is at least set to empty string in
  V1904 if the ocelot is converted to a cat (this is
  likely so that it retains a collar)
- Use generic read/write for Records in V1946
  Records is actually a list, not a map. So reading map was
  invalid.

* Always set light to zero when propagating decrease

This fixes an almost infinite loop where light values
would be spam queued on a very small subset on blocks.

This also likely fixes the memory issues people were
seeing.

* re-organize patches

* Apply and fix conflicts

* Revert some patches

getChunkAt retains chunks so that plugins don't spam loads
revert mc-4 fix will remain unless issues pop up

* Shuffle iterated chunks if per player is not enabled

Can help with some mob spawning stacking up at locations

* Make per player default, migrate all configs

* Adjust comments in fixups

* Rework config for player chunk loader

Old config is not compatible. Move all configs to be
under `settings` in paper.yml

The player chunk loader has been modified to
less aggressively load chunks, but to send
chunks at higher rates compared to tuinity. There are
new config entries to tune this behavior.

* Add back old constructor to CompressionEncoder/Decoder (fixes
 Tuinity #358)

* Raise chunk loading default limits

* Reduce worldgen thread workers for lower core count cpus

* Raise limits for chunk loading config

Also place it under `chunk-loading`

* Disable max chunk send rate by default

* Fix conflicts and rebuild patches

* Drop default send rate again

Appears to be still causing problems for no known reason

* Raise chunk send limits to 100 per player

While a low limit fixes ping issues for some people, most people
do not suffer from this issue and thus should not suffer from
an extremely slow load-in rate.

* Rebase part 1

Autosquash the fixups

* Move not implemented up

* Fixup mc-dev fixes

Missed this one

* Rebase per player viewdistance api into the original api patch

* Remove old light engine patch part 1

The prioritisation must be kept from it, so that part
has been rebased into the priority patch.
Part 2 will deal with rebasing all of the patches _after_

* Rebase remaining patches for old light patch removal

* Remove other mid tick patch

* Remove Optimize-PlayerChunkMap-memory-use-for-visibleChunks.patch

Replaced by `Do not copy visible chunks`

* Revert AT for Vec3i setX/Y/Z

The class is immutable. set should not be exposed

* Remove old IntegerUtil class

* Replace old CraftChunk#getEntities patch

* Remove import for SWMRNibbleArray in ChunkAccess

* Finished merge checklist

* Remove ensureTickThread impl in urgency patch

Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>
Co-authored-by: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
2021-08-31 04:02:11 -07:00
SpottedleafandSpottedleaf 6522a6eed1 Ensure priority updates are determined by current level, not deferred level (#6507)
* Ensure priority updates are determined by current level, not deferred level

Deferral could cause an infinite loop to occur.

Also, re-add the light engine priority logic.

* Rebase

Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>
2021-08-27 19:20:31 -07:00
SpottedleafandSpottedleaf 882fe0543a Log when the async catcher is tripped (#6493)
The chunk system can swallow the exception given it's all
built with completablefuture, so ensure it is at least printed.

Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>
2021-08-25 20:35:35 -07:00
Spottedleaf 4355a3ac96 Readd chunk priority patch, including many chunk system fixes from tuinity (#6488) 2021-08-25 19:16:27 -07:00
Spottedleaf 4bfd5dbc06 Fix Codec log spam
Mojang did NOT add dataconverters for world gen configurations
that they CHANGED. So, the codec fails to parse old data.

This fixes two instances:
- IntProvider is new and Mojang did not account for old data.
  Thankfully, only ColumnPlace needed to be special cased.
- TreeConfiguration had changes. Thankfully, they were
  only renames for one value and thankfully defaults could
  be provided for two new values (WITHOUT changing behavior).
2021-06-20 12:58:35 +01:00
Spottedleaf 1d0a9b43ec Update Asynchronous chunk IO and loading for variable world height limits 2021-06-16 02:18:08 -07:00
Spottedleaf e42c200583 wor 2021-06-12 21:25:07 -07:00
Spottedleaf 09721118a4 even even even even more work 2021-06-12 21:03:02 -07:00
Spottedleaf 6690975133 wowe 2021-06-12 19:16:10 -07:00
Spottedleaf 6d2c131449 even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even even
more work
2021-06-12 02:17:20 -07:00
Spottedleaf 1c0fdc2824 even even even even even even even even even even even
even even even even even even even even even even
even even even even even even even even even even
even even even even even even even even even even
even even even even even even even even even even
even even even even even even even even even even
even even even even even even even even even even

more work
2021-06-12 02:01:04 -07:00
Spottedleaf 0891c7ab48 even even even even even even even even even more changes 2021-06-12 00:24:28 -07:00
Spottedleaf 4257a725ae even even even even even even even more work 2021-06-11 23:24:50 -07:00
Spottedleaf 4b66e6c02d even even more progress 2021-06-11 23:02:49 -07:00
Spottedleaf c6393c4571 even more progress 2021-06-11 22:20:08 -07:00
Spottedleaf 4edc9d91ac some patches 2021-06-11 21:38:04 -07:00
Spottedleaf e877697d29 Do not schedule poi task for each block write on chunk gen
Most of the time optional == optional1, so we shouldn't
schedule a task for each write.
2021-04-21 20:04:42 +01:00
Spottedleaf 0336df461a Make sure to remove correct TE during TE tick
See Hydra, March 29th 2021.
2021-03-29 09:08:29 +02:00
Spottedleaf d84c3d0036 [CI-SKIP] Removal from the MIT list (#5345)
Any future work I do will be under GPLv3. This doesn't affect current patches.
2021-03-11 16:36:30 -08:00
Spottedleaf c5ee34df0e Fix missing chunks on client (View distance issue) 2020-06-28 00:58:25 -04:00
Spottedleaf 9e1ccb01be Hide sync chunk writes behind flag 2020-06-26 22:37:38 -07:00
Spottedleaf ce8c91600b Updated Upstream (Bukkit/CraftBukkit/Spigot)
Upstream has released updates that appears 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:
3284612a SPIGOT-5853: Add DragonBattle#generateEndPortal()
e4db04ae SPIGOT-5841: New map colours broken

CraftBukkit Changes:
d4243510 SPIGOT-5853: DragonBattle#getEndPortalLocation() throws NPE on new world
1601ec31 SPIGOT-5845: ChatColor.RESET does not work in ItemMeta to reset italics
4d92db6f CraftChatMessageTest does not need AbstractTestingBase
71045d3d SPIGOT-5828: Unlock worlds on unload
dbc347b9 SPIGOT-5841: New map colours broken
14053c70 SPIGOT-5847: BlockFadeEvent cannot be triggered asynchronously from another thread

Spigot Changes:
6f4ff1b6 SPIGOT-5851: ChatColor (HEX) doesn't appear correctly in the ActionBar
d94a518a SPIGOT-5848: PlayerSpawnLocationEvent throws NPE when setting a location of another world
2020-06-26 22:12:11 -07:00
Spottedleaf a8624a2d1a Re-Add per player mob spawning 2020-06-26 21:57:36 -07:00
Spottedleaf 0f7c022cbc Merge branch 'ver/1.16' of https://github.com/stonar96/Paper into ver/1.16 2020-06-26 20:34:31 -07:00
Spottedleaf faf7dda51c fix async chunk loading disregardling light data 2020-06-26 20:05:12 -07:00
Spottedleaf a4f75b1ae0 fix recursion for leashing an abstract horse 2020-06-26 15:54:39 -07:00
Spottedleaf cd6b64113f Fix the piston duplication option when it is on 2020-06-26 14:36:48 -07:00
Spottedleaf 9b3bb0cf51 Pass predicate from default get hard colliding entities method 2020-06-26 14:33:49 -07:00
Spottedleaf 6e59ab0eb5 Fix the entity knockback by entity patch 2020-06-26 14:31:38 -07:00
Spottedleaf 002d3ab1b5 Fix packed data reading in anti-xray 2020-06-26 14:11:08 -07:00
Spottedleaf cfd598512a even even even even even even more work 2020-06-25 18:53:21 -07:00
Spottedleaf ec7bd6a7c6 even even even even more work 2020-06-25 16:38:24 -07:00
Spottedleaf 4aa7955818 even even more work 2020-06-25 06:11:48 -07:00
Spottedleaf d30edc35eb even more work 2020-06-25 05:04:34 -07:00
Spottedleaf fbbf45ec42 more progress 2020-06-25 04:00:35 -07:00
Spottedleaf 7c419073e4 Fix not running level updates for light if no pre/post task 2020-06-22 21:17:28 -04:00
Spottedleaf 2005255c62 Fix enderdragon exp dupe
Properly track death stage when unloading/loading in the dragon
2020-06-20 15:04:50 -04:00
Spottedleaf a993a5d1fd Prevent position desync in teleporting during movement
Caused the server to revert to the player's overworld coordinates
after teleporting into the end.

Sidenote: The underlying issue is that the move call can teleport
entities and do other things like kill the entity. In the future,
to fix all exploits derieved from this usually unexpected
behaviour, we need to move all of this dangerous logic outside
of the move call and into an appropriate place in the tick method.
2020-06-20 14:59:49 -04:00
Spottedleaf 66039d1eb3 Fix sand not dying correctly
If the falling block dies during teleportation (entity#move), then we need
to detect that by placing a check after the move.
2020-06-20 14:58:35 -04:00
Spottedleaf 53b2b9f391 Fix carpet and rail duping by pistons under same TNT duping config
This renames the config from enable tnt duping to enable piston duping

Normally we would not have a config for rails and carpet duping, but
the fix for TNT is the same fix for rails and carpet, so they are
having to be covered under that same config.
2020-06-20 14:56:08 -04:00
Spottedleaf 06cf33bf4f Fix more cases of Bedrock breaking
This is still covered under the setting to re-enable this.
2020-06-20 14:53:15 -04:00
Spottedleaf aba7b389ab Allow server startup for those poor people running <1G Xmx
Clamp logic for poolsize so we dont pass zero
2020-05-16 21:06:19 -07:00
Spottedleaf ab609796e6 Fix cases where no-tick < tick view distance 2020-05-16 20:53:09 -07:00
Spottedleaf 459f6194e8 Reduce MutableInt and Vec3d allocations, use ArrayDeque 2020-05-16 22:05:14 -04:00
Spottedleaf 4e7644ce04 Handle CraftPlayer#setSpectatorTarget better
Use a proper teleport for teleporting to entities in different
worlds.

Validate that the target entity is valid and deny spectate
requests from frozen players.

Also, make sure the entity is spawned to the client before
sending the camera packet. If the entity isn't spawned clientside
when it receives the camera packet, then the client will not
spectate the target entity.
2020-05-14 18:05:00 -05:00
Spottedleaf 584c2fbe18 No-Tick view distance implementation - Closes #3196
Implements world view distance getters/setters

Per-Player is absent due to difficulty of maintaining
the diff required to make it happen.
2020-05-06 03:49:52 -04:00
Spottedleaf fbaa9ae1f3 Stop copy-on-write operations for updating light data
Causes huge memory allocations + gc issues
2020-05-06 03:48:56 -04:00
Spottedleaf 7307189ab2 Optimize isOutsideRange to use distance maps
Use a distance map to find the players in range quickly
2020-05-06 03:48:18 -04:00
Spottedleaf fbe8958237 Use distance map to optimise entity tracker / Misc Utils
Use the distance map to find candidate players for tracking.

This also ports a few utility changes from Tuinity
2020-05-06 03:44:47 -04:00
Spottedleaf 444dd5a0c6 Optimize Entity Ticking to Loaded Chunks only
We retain a list of loaded entities specifically for this usage
2020-05-06 03:43:11 -04:00
Spottedleaf 89e22765be Improved oversized chunk data packet handling
Now target all TE data, except for TE's that do not have
update packets.
2020-05-01 23:18:33 -04:00
Spottedleaf 0e3875914c Improve random ticking behaviour - Fixes #3181 2020-04-19 06:07:57 -07:00
Spottedleaf dc66fe2c49 Make sure the chunk conversion task is executed immediately
Appending to the tail of the chunk tasks leaves a
window for the chunk to be moved to a
non-ticking status.

Additionally, use CB's callback executor so we
can ensure that we are not incorrectly
scheduling.
2020-04-18 08:41:02 -07:00
Spottedleaf c1fdcae86a Optimize entity list iteration requiring entities be in
loaded chunks

We retain a list of loaded entities specifically for this usage
2020-04-16 16:53:45 -07:00
Spottedleaf e7f799903e Fix incorect timing of mspt
Move oversleep and all task execution back into the timed area...
2020-04-15 18:48:07 -07:00
Spottedleaf 70131f31d3 Optimise entity hard collision checking
Very few entities actually hard collide, so store them in their own
entity slices and provide a special getEntites type call just for them.
This reduces entity collision checking impact (in my testing) by 25%
for crammed entities (shove 130 cows into an 8x6 area in one chunk).
Less crammed entities are likely to show significantly less benefit.
Effectively, this patch optimises crammed entity situations.
2020-04-16 00:40:47 -04:00
Spottedleaf 1b58ca2161 Don't run entity collision code if not needed
Will not run if max entity craming is disabled and
the max collisions per entity is less than or equal to 0
2020-04-16 00:40:34 -04:00
Spottedleaf 25d0fbed10 Optimise ArraySetSorted#removeIf
Remove iterator allocation and ensure the call is always O(n)
2020-04-15 18:24:39 -07:00
Spottedleaf b4124adee3 Fix getChunkAtIfCachedImmediately (#2915) 2020-01-28 17:26:07 -08:00
Spottedleaf 6745971d4e Performance patches prerequisite (#2802)
Prereq changes for the coming storm of performance patches.
Includes optimising incremental saving
2020-01-27 16:16:53 -08:00
Spottedleaf 9774f1ff47 1.15.2 update (#2887)
Functional GUI fix added by billygalbreath
2020-01-21 18:02:07 -08:00
Spottedleaf 5c206c7b04 Full chunk debug on incremental watchdog (#2868) 2020-01-18 09:50:23 -08:00
Spottedleaf 7bd813abb0 Fix last firework in stack not having effects when dispensed - #2871 (#2876)
CB used the resulting item in the dispenser rather than the item
dispensed. The resulting item would have size == 0 and therefore
be convertered to air, hence why the effects disappeared.
2020-01-18 09:31:05 -08:00
Spottedleaf d6efbad797 Ensure portal search radius is used when teleporting players (#2877)
Also add the create search radius mojang recently introduced
to config
2020-01-18 09:28:32 -08:00
Spottedleaf 026b28b171 Add more chunk debug to watchdog (#2851)
print chunk holder status, useful for indicating what steps the
server has gone through after loading chunks from disk

Also rebuild patches (cat...)
2020-01-12 13:06:05 -08:00
Spottedleaf 1c169a0ed6 Optimise IEntityAccess#getPlayerByUUID (#2842)
Use the world entity map instead of iterating over all players
2020-01-11 22:36:31 -08:00
Spottedleaf 624e6bcce3 Guard against serializing mismatching chunk coordinate (#2844)
Should help if something dumb happens
2020-01-11 22:32:44 -08:00
Spottedleaf 724664fc5f Fix race condition with regionfile being closed right after getting one (#2812)
Occurs when 1 thread retrieves a regionfile, and then the
regionfile is closed due to it being thrown out of cache.
2020-01-09 17:42:33 -08:00
Spottedleaf d118fdd5b3 Shift chunk key location in the correct direction (#2710) 2019-12-01 05:33:57 -08:00
Spottedleaf 829b622eea Fix racey NextTickListEntry creation. (#2683)
The counter is used to distinguish entries from each other, however
since we can concurrently increment the counter we could totally
screw over the comparision of entries (see a() in NextTickListEntry),
as it compares only the time when the entry will tick, the priority
at which it will tick, and the counter. The block is not compared.

Async loading loads the chunk asynchronously which creates these
entries asynchronously.
2019-11-10 10:00:16 -08:00
Spottedleaf 5ea1d44339 Fix server deadlock when loading some chunks (#2647)
Upstream has released updates that appears to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

CraftBukkit Changes:
7554e08e Add UUID support to CraftProfileBanList
3fe37460 SPIGOT-5378: Fix TileEntity fixer deadlock
12386dd4 SPIGOT-5375: Add spaces to coordinates from tile fixer
606c19e2 SPIGOT-5373: Simultaneous left+right click in creative mode does not work
13caf848 SPIGOT-5370: Fix Block#rayTrace considering other blocks.
2019-10-20 02:03:39 -07:00
Spottedleaf eacc91f30d Use getIfLoadedImmediately and not cached immediately for isLoa… (#2641) 2019-10-18 08:05:45 -07:00
Spottedleaf b0601574e0 Improve spawn loading and debug output for waiting on a chunk (#2595)
Spawn loading has been changed to use getChunkAt calls to manually
load chunks since watchdog can watch these calls and so we guard
against plugins/players changing the radius of a spawn while it's
loading

Debug output has been improved to note the status of the currently
waiting chunk
2019-09-29 18:23:09 -07:00
Spottedleaf fe0c5d9dc6 Remove debug logging for incremental saves (#2600) 2019-09-29 18:14:40 -07:00
Spottedleaf 0a5408a7d0 Add more timings to chunk provider tick (#2549)
- Misc mob spawning
- Chunk range checks
2019-09-29 14:06:03 -07:00
Spottedleaf 98854cdf4d Add server oversleep to timings (#2509)
Now everything except waiting for the next tick should be included
in timings
2019-09-29 13:49:38 -07:00
Spottedleaf 13d4dd046d Check if there are workers before trying to notify them (#2593)
* Fix #2591

We need to check if there are workers before trying to notify
them...
2019-09-29 13:29:56 -07:00
Spottedleaf 4d484708ad Drop Optimize-GameRules-to-use-LinkedHashMap (#2594)
Mojang has since replicated the logic
2019-09-29 13:01:21 -07:00
Spottedleaf ed4f937103 Check horse entity validity in container interactions (#2584)
Fixes #2580
2019-09-24 16:16:16 -07:00
Spottedleaf 02382b01b2 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#2576)
* Updated Upstream (Bukkit/CraftBukkit/Spigot)

Upstream has released updates that appears 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:
6527cb58 SPIGOT-5329: Clarify isGlowing documentation
5ddb414f Make Lantern extend BlockData
cb888903 Fix typos in previous commits
2a5e0ca2 Bring EnchantItemEvent documentation in line with EnchantmentOffer
3c5fcea2 SPIGOT-5317: Create accessors for player absorption hearts
c6e0d625 SPIGOT-5320: Clarify scope of ExactChoice

CraftBukkit Changes:
a3fdef8c SPIGOT-5331: Add support for Java 13
6ddeb980 SPIGOT-5317: Create accessors for player absorption hearts
5d335e96 SPIGOT-5315: Cannot serialize armor stand ItemMeta

Spigot Changes:
94af569b SPIGOT-5319: Async catcher for getNearbyEntities
2019-09-21 21:12:45 -07:00
Spottedleaf 7b3f64a452 Fix race conditions in flush allowing for previously scheduled tasks to execute later than the flush call (#2548) 2019-09-15 21:02:13 -07:00
Spottedleaf 859d398ff8 Improve save logic (#2485)
Only wait for IO at the end of the save
we also were not force flushing async saves with /save-all flush
2019-09-15 20:39:30 -07:00
Spottedleaf f636e0083c Improve POI data saving logic (#2475)
- Do not unload data if world saving is disabled
- Aggressively target unloading
2019-09-01 18:49:09 -07:00
Spottedleaf 76e4a9a0f6 Fix #2499 (#2500)
Proper scheduling if async chunks is disabled, we would execute
a task that is cancelled without setting its run status
2019-09-01 18:30:25 -07:00
Spottedleaf e5f584cf6b Target more sync loads (#2476) 2019-09-01 15:17:51 -07:00
Spottedleaf 45ed30b235 Fix #2511 (#2519)
Did not double-flush the file io thread if async = false
2019-09-01 14:18:40 -07:00
Spottedleaf 7f4d6050fd Async chunk api/io/loading (#2308) 2019-08-18 16:40:04 -07:00
Spottedleaf 38dc65720e Fix some API and commands usage of inactive chunks (#2457)
* /paper entity will no longer report entities in inactive chunks
* World#getEntityCount and World#getChunkCount will report only
in active chunks
2019-08-14 19:47:38 -07:00
Spottedleaf ada657bafd Print entity debug stacktrace on entity double add (#2438) 2019-08-14 19:37:07 -07:00
Spottedleaf 2ecd461296 Fix MC-158900 (#2458)
The problem was we were checking isExpired() on the entry, but if it
was expired at that point, then it would be null.
2019-08-14 19:32:25 -07:00
Spottedleaf 02105ddde6 Fix recursion in EntityFox (#2418)
I changed a method call without looking at the implications.
super.processDeath would re-invoke the unmapped method, whereas super.d
would call the super method.
2019-08-05 20:31:38 -07:00
Spottedleaf e6c3d60574 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#2415)
* fixup patch and rebuild

* Updated Upstream (Bukkit/CraftBukkit/Spigot)

Upstream has released updates that appears 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:
bde198c9 SPIGOT-5246: PlayerQuitEvent.get/setQuitMessage() is incorrectly marked as NotNull
24ad5a79 SPIGOT-5240: Vector.angle not valid for angles very close to each other
a143db9a SPIGOT-5231: ShotAtAngle API for Fireworks
10db5c3d SPIGOT-5226: Update Javadoc of PlayerDeathEvent

CraftBukkit Changes:
1ec1b05e SPIGOT-5245: Unneeded cast to WorldNBTStorage in CraftWorld#getWorldFolder
e5e8eec2 SPIGOT-5241: setAttributeModifiers does not work on untouched stack
803eaa31 SPIGOT-5231: ShotAtAngle API for Fireworks
7881d2ae SPIGOT-5237: Horses, pigs do not drop their inventory
06efc9ec Don't accept connections until all plugins have enabled
da62a66a SPIGOT-5225: World handle isn't closed if world is unloaded without saving
104b3831 SPIGOT-5222: Cannot get Long values from Entity memory
f0b3fe43 SPIGOT-5220: Server CPU usage reaches 100% when stdin is null

Spigot Changes:
e5b1b5db SPIGOT-5235: Destroy expired area effect clouds / fireworks that are inactive
cbcc8e87 Make region files more reliable to write to
8887c5f4 Remove redundant late-bind option
dac29063 Rebuild patches

* Preserve old flush on save flag for reliable regionfiles

Originally this patch was in paper

* Fix some issues with the death event

- Entities potentially entering a glitched state to the client where
they appear to be falling over
- Donkeys losing their chest if the event was cancelled (only an
issue since the upstream merge)
- Some wither death logic running for an entity killed by a wither
2019-08-05 09:35:40 -07:00
Spottedleaf 066f9c0345 Fix chest logic being weird for coordinates that sum to 0 or a… (#2364)
We were previously calling what looks like a legacy check for distance
away for the inventory. Unfortunately, with our logic, we called the
open logic before the active container was set. So the legacy check
would register 0 viewers and the logic would become bugged.
2019-08-02 10:48:22 -07:00