Commit graph

2759 commits

Author SHA1 Message Date
Aikar
3b63ba9db1 Thread Safe Vanilla Command permission checking
Datapacks check this on load and are built concurrently. This was breaking them badly due
to race conditions.

Plus, .canUse we want to be safe for async anyways.

Fixes #3722
2020-07-11 03:55:59 -04:00
BillyGalbreath
5f0de8fc57 Fix MC-125757 (#3859) 2020-07-09 19:40:37 -05:00
Aikar
3ccbdd3c85 Only convert lore lines that actually look legacy
Spigot stored previous componenents as new ChatComponentText("legacy codes") which
this patch aimed to convert to the new format.

However, the impl ended up converting all lines.

If a plugin had a section symbol in the lore that isn't a color conversion, it would
make trigger this process every single time.

So now we will only process it if the pattern looks like the legacy bukkit format

Fixes #3869
2020-07-09 20:31:04 -04:00
Aikar
8b5bb0dbe0 Misc Improvements to Async Teleporting and Light patch
Stop light copy was missing a default in the impl.
Should of been extremely low chance of impacting anything though
as the very first copy operation would have fixed it.

Sadly this doesn't fix the issues weve been trying to fix.

Fix player async teleporting adding priority to wrong world for cross world teleports

Also improve teleporting to wait for entity ticking status before teleporting to prevent neighbors loading
2020-07-09 19:24:10 -04:00
Automated
7c7443c1bd [Auto] Updated Upstream (CraftBukkit)
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:
72f368909 SPIGOT-5965: BlockRedstoneEvent.setNewCurrent(0) crashes server
60f8a29d1 SPIGOT-5968: Killer rabbits can't be set to the non-killer rabbit behavior
69fddc725 #705: Improve implementation of furnace related block states
2020-07-08 19:17:08 -04:00
Mariell
4455020aa4 Fix Villagers WeightedList issue (#3860)
dont clone the list for villagers as the list is accessed post sort and needs to have sorted data.
2020-07-08 21:57:24 +02:00
Aikar
aa9c5663ec Fix bug on y bitset extraction from 1.16 update
accidently copied z's to y.

seems to impact light only, but is not the source of the light bug we've been trying to fix
2020-07-07 01:41:02 -04:00
Wyatt Childers
81f9964fcb Optimize the advancement data player iteration to be O(N) rather than O(N^2) 2020-07-04 23:08:23 -04:00
Automated
386cb1c1c9 [Auto] Updated Upstream (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

CraftBukkit Changes:
2f1810812 Improve physics code

Spigot Changes:
c3a49df2 Rebuild patches
2020-07-06 19:47:11 -04:00
Aikar
bf940a42e0 Fix Concurrency issue in WeightedList
if multiple threads from worldgen sort at same time, it will crash.
So make a copy of the list for sorting purposes.

Fixes #3732
Fixes #3824
2020-07-06 18:38:10 -04:00
Andrew Steinborn
7a714e6e13 [1.16] Optimize NetworkManager exception handling (#3819) 2020-07-06 00:27:37 -04:00
Aikar
7f78e35522 Fire inventory listeners if PrepareResult changes item
Fixes #3810
2020-07-05 15:33:23 -04:00
Aikar
130bffdf85 Don't check chunk for portal on world gen entity add - Fixes #3780 2020-07-05 15:00:07 -04:00
BillyGalbreath
3aa6d3b3c0 Implements #3761 - Add entity liquid API (#3762) 2020-07-05 02:00:09 -05:00
Aikar
174560824a Fix anvils bug - Fixes #3802 2020-07-05 02:25:29 -04:00
Aikar
1e75e54195 Move bedrock config under unsupported, add comments to these configs
Hopefully help 'technical minecrafters' find and understand these configs
by adding notes to them, and fixing the incorrect config placement on the
bedrock config.
2020-07-05 02:12:14 -04:00
MiniDigger | Martin
149172d006 Allow delegation to vanilla chunk gen 2020-04-29 02:12:51 +02:00
MiniDigger | Martin
4cb36133b6 Allow delegation to vanilla chunk gen 2020-04-29 02:12:51 +02:00
BillyGalbreath
b7c653f532 Add PrepareResultEvent (#3776)
Adds a new event for all crafting stations that generate a result slot item

Anvil and Grindstone now extend this event
2020-07-04 22:36:46 -05:00
BillyGalbreath
3de79cd7c3 Report proxy onlinde mode to bstats as online (#3093) 2020-07-04 21:59:25 -05:00
William Blake Galbreath
2ce563b6d0 Fix #3701 - Loottables erasing on viewing 2020-07-02 15:34:26 -05:00
Jake Potrebic
5064606627 Incorrect spawn reason for monsters from spawner - Fixes #3708 (#3764) 2020-07-04 19:54:39 -06:00
Josh Roy
0ad44580b3 Remove streams from classes related to villager gossip (#3748) 2020-07-04 21:31:58 -04:00
Jake Potrebic
bbf35c13bb add EntityTargetLivingEntityEvent for new 1.16 mobs (#3782) 2020-07-04 19:30:13 -06:00
BillyGalbreath
7de9b9d112 Update itemstack legacy name and lore (#3741) 2020-07-04 19:47:24 -05:00
Automated
27e5ecf06c [Auto] Updated Upstream (CraftBukkit)
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:
833047174 Increase outdated build delay to 7 days
5209a4f73 SPIGOT-5940: EntityChangeBlockEvent is not called for villager emptying composter
2020-07-04 19:02:13 -04:00
Wyatt Childers
9fd4674a11 Spawn player in correct world on login 2020-07-03 14:57:28 -04:00
Aikar
d1261a7551 Support String UUID's in old player skulls
Should fix remaining skull issues for people with unconverted old skulls.

Fixes #3734
2020-07-03 02:16:51 -04:00
Aikar
d6e23b14a7 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:
0ca45a21 #503: Add PlayerHarvestBlockEvent
dfa80a52 SPIGOT-5930: Add PlayerRespawnEvent#isAnchorSpawn

CraftBukkit Changes:
145921e2 #676: Add PlayerHarvestBlockEvent
47abffa2 SPIGOT-5929: Angered zombified piglins do not inherit killed_by_player status
7f6b4f58 SPIGOT-5930: Add PlayerRespawnEvent#isAnchorSpawn
94eff632 SPIGOT-5867, MC-193339: NPE during shutdown when rcon enabled with no password
068618eb SPIGOT-5927: Some items NBT data disappears

Spigot Changes:
beb7d47c Rebuild patches

Fixes #3738
2020-07-03 02:08:00 -04:00
Jake Potrebic
0740b03bab Bandaid italic legacy serialization #3757 (#3760) 2020-07-02 15:42:23 -06:00
MiniDigger | Martin
cbc2d143d7 Support components in ItemMeta (#3513) 2020-07-02 17:53:21 +02:00
Callum
c09194971e Fix MOTD new line support (#3756) 2020-07-02 13:58:39 +01:00
Callum
85408c2f74 Fix hex colours not being allowed in MOTD (#3755) 2020-07-02 08:19:43 +01:00
Automated
0f6675fffa [Auto] Updated Upstream (CraftBukkit)
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:
d9bd43b06 Change outdated build delay to 3 days
2020-07-01 19:17:11 -04:00
Josh Roy
a03c4deb10 [1.16] Remove some streams from structures (#3704)
This showed up a lot in the spark profiler, should have a low-medium performance improvement.
2020-07-01 09:53:16 -04:00
Shane Freeder
3bc3b61ce3 Fix shutdown on eula not being agreed (Fixes #4647) 2020-07-01 12:21:57 +01:00
Aikar
e32b8cfddb Improve old UUID support, clean up old legacy keys.
If we set a UUID to new format, need to make sure old format doesn't
exist anymore. Additionally, ensure if new format exists, we prefer it over old.
2020-07-01 05:42:51 -04:00
Aikar
62802db4ac Allow teleporting through end gateways as a passenger/vehicle
Vanilla allows this now for same world teleports

Fixes #3735
2020-07-01 05:42:22 -04:00
Aikar
be5f765e93 Convert legacy attributes in Item Meta
Fixes #3705
2020-07-01 04:28:56 -04:00
Aikar
7b5d35ff25 Fix server not stopping when eula not agreed yet 2020-07-01 03:32:26 -04:00
Aikar
438da20dd5 Clean up duplicated GameProfile Properties
We had a bug where we accidently cloned properties resulting in skulls
growing to large sizes and preventing login.

This now automatically cleans up the extra properties.

Fixes #3719
Fixes #3667
2020-07-01 03:15:52 -04:00
Aikar
d9bdfa4aa2 Fix supporting more places of the old UUID format
Fixes #3734
2020-07-01 03:13:57 -04:00
Aikar
174c81a963 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:
6ff65c82 SPIGOT-5908: CompassMeta for new lodestone compass data

CraftBukkit Changes:
3b9cf0f8 Improve code formatting
008f039f SPIGOT-5913: MOTD no longer supports new line character
b8b65eb7 SPIGOT-5908: CompassMeta for new lodestone compass data

Spigot Changes:
4d9262cf Rebuild patches
d27f7952 SPIGOT-5912: Outdated client message shows outdated server message
2020-07-01 02:11:46 -04:00
Aikar
860f4c4b58 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:
42d5a714 SPIGOT-5899: Hoglins API similar to Piglins
2c1ee10e SPIGOT-5887: ClickType doesn't include off hand swaps
5ff7c7ce SPIGOT-5886: Missing BlockData

CraftBukkit Changes:
7560f5f5 SPIGOT-5905: Fix hex colours not being allowed in MOTD
d47c47ee SPIGOT-5889: Villager using composter should call EntityChangeBlockEvent
2fe6b4a3 SPIGOT-5899: Hoglins API similar to Piglins
e09dbeca SPIGOT-5887: ClickType doesn't include off hand swaps
23aac2a5 SPIGOT-5903: EntityDismountEvent cannot be triggered asynchronously
92cbf656 SPIGOT-5884: Tab completions lost on reloadData / minecraft:reload
fb4e54ad SPIGOT-5902: PlayerRespawnEvent places player at spawn before event is called
aa8f3d5a SPIGOT-5901: Structures are generated in all worlds based on the setting for the main world
a0c35937 SPIGOT-5895: PlayerChangedWorldEvent#getFrom is incorrect
89c0a5c3 SPIGOT-5886: Missing BlockData

Spigot Changes:
0287a20d SPIGOT-5903: EntityDismountEvent cannot be triggered asynchronously
2020-06-30 01:20:29 -04:00
Shane Freeder
d2d7dfbef2 Fix compile 2020-06-29 15:03:41 +01:00
Shane Freeder
d84b4a3b26 fix EntityDismountEvent being fired on gen threads 2020-06-29 14:48:24 +01:00
Aikar
849ede2317 Don't fire unleash/dismount events from worldgen threads
Mojang can trigger this during worldgen and tries to fire bukkit events.
2020-06-29 04:04:18 -04:00
Aikar
b94e847258 Support old UUID format for NBT
We have stored UUID in plenty of places that did not get DFU'd

So just look for old format and load it if it exists.
2020-06-29 03:28:10 -04:00
Aikar
c4520e6199 Improve Legacy Component serialization size
Don't constantly send format: false for all formatting options when parent already
has it false

Fixes #3680
2020-06-28 21:27:16 -04:00
Aikar
8e46a01608 Fix case where some skulls still have string UUID's
These heads are technically outdated, but this patch shouldn't care about
what format the original value was in, so keep it the same.
2020-06-28 20:33:14 -04:00
Aikar
52496b075b Fix Reloadable save players error on stop
Not sure what plugins or panels are doing to have triggered this.
Reloading resource packs appear to have been happening during shutdown

So this will abort the end of the reload process if we are not on the
correct thread and stop saving players as part of this task too.
2020-06-28 20:06:26 -04:00
Aikar
b15e37b0e9 revert chat changes for now until can get it properly working 2020-06-28 20:03:31 -04:00
Aikar
bc0095b99a Add /paper dumpitem command
Allows inspecting an items NBT at ease of the item in the players hand.
2020-06-28 19:38:30 -04:00
Aikar
73fe12740d Fix texture profile properties getting duplicated - Fixes #3667 2020-06-28 19:37:53 -04:00
Aikar
255f221550 Don't allow null UUID's for chat
Fixes null issue on sending chat packets if some how it got sent null

likely caused by plugins
2020-06-28 19:37:31 -04:00
Aikar
0aed7fbd54 Improve Legacy Component serialization size
Don't constantly send format: false for all formatting options when parent already
has it false

Going to PR this to Spigot, but putting it out here for now

Should help with reducing size of items with lots of colors from
legacy format.
2020-06-28 19:12:11 -04:00
Aikar
58d7a7ae1d Fix more null pointer issues around deleted worlds - Fixes #3660 2020-06-28 18:44:34 -04:00
Aikar
8736217b0f Fix player skulls rendering - Fixes #3672 2020-06-28 18:04:04 -04:00
MiniDigger | Martin
5000be556c [1.16] Fix MobGoals#getAllGoals not actually returning all goals (#3670) 2020-06-28 21:57:31 +02:00
Shane Freeder
2379693a9f Fix NPE from an invalid spawn dimension (Fixes #3660) 2020-06-28 18:29:52 +01:00
Shane Freeder
df7c31a1da [CI-SKIP] Drop accidental import from last commit 2020-06-28 12:24:09 +01:00
Shane Freeder
2a6753b507 Restore Player#refreshPlayer (Fixes #3650)
untested, don't @ me
2020-06-28 12:16:36 +01:00
Aikar
900f77fa66 Log Minecraft Internal Scheduler logs correctly 2020-06-28 05:34:23 -04:00
Aikar
c09346c798 Revert recent changes around player skulls using user cache 2020-06-28 05:13:46 -04:00
Shane Freeder
fcd156a98e Fix missing hunk from ProfileWhitelistVerifyEvent (Fixes #3645) 2020-06-28 09:43:47 +01:00
Aikar
d0a723841a Remove no longer needed undead horse leash patch
This is now default vanilla behavior

Fixes #3644
2020-06-28 04:35:41 -04:00
Aikar
0aa8d8f0e5 Fix null pointer in portal search config 2020-06-28 04:21:40 -04:00
Aikar
53ea88badf Fix Per World Difficulty / Remembering Difficulty
Fixes per world difficulty with /difficulty command and also
makes it so that the server keeps the last difficulty used instead
of restoring the server.properties every single load.
2020-06-28 04:01:01 -04:00
Aikar
20018f2b4f Disable the memory information in /tps unless argument is passed
Memory usage is a pretty useless value in any modern garbage collector
as the way memory is used makes this information not representive of
any actionable data.

In the recommended GC flags, this memory value will constantly rise until
it is near max and then goes down. This is perfectly normal and expected.

Having this information shown will lead to confusion.

Plus, many servers give this command to end users, which now really might
not want to expose this memory data.

So this disables it unless /tps mem is used, and also requires a permission
node to even run this subcommand.
2020-06-28 01:29:54 -04:00
Spottedleaf
c5ee34df0e Fix missing chunks on client (View distance issue) 2020-06-28 00:58:25 -04:00
Aikar
e1088e833c 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:
f009c3dd SPIGOT-5810, SPIGOT-5835: 'Better' handling of Player.isOnGround
e677c370 Update ECJ version
5058a35d SPIGOT-5860: Item.setItemStack should be NotNull

CraftBukkit Changes:
d77f4d9b SPIGOT-5810, SPIGOT-5835: 'Better' handling of Player.isOnGround
53c95627 SPIGOT-5865: Piglin does not trigger EntityPickupItemEvent
2ab04d24 Update ECJ version
7884e079 SPIGOT-5868: Blocks do not tick in custom nether / end
2a848286 SPIGOT-5863: Don't check colour in scoreboard length validation
f2cbce30 SPIGOT-5866: Beehive unknown TargetReason

Spigot Changes:
ad703da0 SPIGOT-5870: /plugins "website" field shows "version"
1a27cfd8 #98: Improve output of /plugins command using text components
732d5bab Disable checkstyle in Spigot blocks
0199a9a6 #97: Add Memory Usage to Ticks Per Second Command.
33ea98fc SPIGOT-5858: NPE: Joining the server with an invalid dimension
2020-06-27 21:54:05 -04:00
Aikar
5b8bdf1dbc Fix Piglin issue 2020-06-27 20:32:49 -04:00
Omer Uddin
5ead0fc8e0 Fix comment mistake 2020-06-27 16:00:08 -04:00
kickash32
f496665f67 fixup 2020-06-27 15:02:40 -04:00
kickash32
76f7b1fde7 fix headers 2020-06-27 14:38:26 -04:00
kickash32
c438e9cf0e port 4 patches 2020-06-27 14:35:52 -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
stonar96
8088a42029 Fix Anti-Xray 2020-06-27 04:27:03 +02: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
Nassim Jahnke
2bdad1f69a Some fixes (#3630)
* Fix block action sending

* Fix chest property check
2020-06-26 21:34:52 +02:00
MiniDigger | Martin
7b7d482818 [WIP|1.16] Misc fixes (#3627) 2020-06-26 18:20:03 +02:00
MiniDigger | Martin
67522d46ae [1.16] Make it run (#3626)
* She compiles!

Also readded the armorstand ticking patch, thanks cat

* Update mob goal api

* Misc fixes to make it run

drop per playing mob spawns for now
2020-06-26 14:04:38 +02:00
Aikar
fe2a0ea500 Latest progress - restored patches, some issues resolved 2020-06-26 02:29:44 -04:00
Aikar
bc5acdddad Current non compilable status of all patches - THIS IS NOT READY
THERE IS STILL NO ETA. GOBLINS WILL EAT YOU.
2020-06-25 21:58:00 -04: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
MiniDigger | Martin
e943ece469 even even even more work 2020-06-25 16:09:55 +02: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
Aikar
5287c1ba7c Current progress - Leaf, tag your it 2020-06-25 05:27:25 -04:00
Aikar
175f83e9d0 Current progress 2020-06-25 00:02:26 -04:00
Aikar
e212d4bb19 1.16.1 prep 2020-06-24 21:10:30 -04:00
Aikar
872f10bf7b Initial prep for 1.16
Remove patcehs we know need to go
add comment on one im not sure should be dropped

go ahead and fix patched repos to turn off gpg signing, as this
helps rebase/apply --continue commands not suck.

Go ahead and prep the pom file change
2020-06-24 04:38:17 -04:00
Aikar
48473fe003 1.15.2 - Updated Upstream (Bukkit/CraftBukkit)
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:
149527f7 SPIGOT-5782: Set Arrow Launched From Crossbow

CraftBukkit Changes:
be6aaf04 SPIGOT-5782: Set Arrow Launched From Crossbow
833da9c4 SPIGOT-5799: InventoryCloseEvent fires after PlayerQuitEvent
26c0084f SPIGOT-5675, SPIGOT-5798, MC-149563: Fix tracking of entities across dimensions
7f3e7c3f SPIGOT-5797: Zombie(Villagers) Instant Convert based on their lifetime
2020-06-23 20:25:28 -04:00
Jan Tuck
3d69f1846a Add PrepareGrindstoneEvent 2020-06-22 01:16:21 +02:00
Aikar
03240a3fdd Fix Player skulls for offline mode servers
Always use online mode for them in Profile API calls

Adds new API to profile API to let you control online mode yourself

Fixes #3594
2020-06-23 04:53:02 -04:00
Aikar
6260d7ba7f 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:
b2f1908c SPIGOT-5783: Add helpful info to UnknownDependencyException
e4f46260 SPIGOT-2623: Add EntityEquipment methods to get/set ItemStacks by slot.
529a9a69 SPIGOT-5751: Clarify behaviour of block drop-related API methods

CraftBukkit Changes:
8ea9b138 Remove outdated build delay.
ffc2b251 Revert "#675: Fix redirected CommandNodes sometimes not being properly redirected"
cb701f6b #675: Fix redirected CommandNodes sometimes not being properly redirected
c9d7c16b SPIGOT-2623: Add EntityEquipment methods to get/set ItemStacks by slot.
fad2494a #673: Fix Craftworld#isChunkLoaded
8637ec00 SPIGOT-5751: Made breakNaturally and getDrops returns the correct item if no argument is given

Spigot Changes:
a99063f7 Rebuild patches

Fixes #3602
2020-06-23 04:30:45 -04:00
Aikar
1c5229f4e4 Fix many chunk loading issues
Fixes a few various issues with chunk ticket state

restores mojangs ticket throttle but tries to be smarter about it.
fixes a few state mismatches that needed to be handled.

Fixes fake NPC's adding player tickets when they shouldn't have been.

Improves teleport chunk loading by processing high priority on new area

Fixes #3605
Fixes #3537
Fixes #3573
2020-06-23 04:10:08 -04:00
Spottedleaf
7c419073e4 Fix not running level updates for light if no pre/post task 2020-06-22 21:17:28 -04:00
Josh Roy
ce5e21f683 Add and implement PlayerRecipeBookClickEvent (#3351)
Co-authored-by: LordKorea <lk97798@posteo.net>
2020-06-23 00:33:08 -04:00
Mariell
706761b531 Fix piston dupe patch creating ghost blocks (#3603)
The 2 flag (send change to clients) must always be set. If it is only set
when the `map.replace` call before it does something, as was suggested
on Discord, the issue will not change whatsoever.

Fixes #3593
2020-06-23 01:00:00 +02:00
PatoTheBest
7ae726ce8d Fix NPE on TileEntitySkull (#3598)
The setGameProfile method on TileEntitySkull is annotated with the @nullable annotation,
but the skull didn't check for null profiles before attempting to retrieve cached skin.
This bug was introduced by the commit making the skull use spigot's User Cache.

Additionally, CraftMetaSkull also had the same issue with a null GameProfile, so this also
ensures it doesn't break.

The whole CraftPlayerProfile class is not null-safe, it requires a GameProfile that isn't
null so we add a Validation on the constructor, that way it is easier to catch this kind
of issue in the future.
2020-06-21 21:59:34 -05:00
Nesaak
f0a807b3bd Expose getItemStack in Arrows 2020-05-22 13:56:24 -04:00
kickash32
9ae97409d4 Track Ender Dragon at current (no tick) view distance 2020-06-12 21:47:18 -04:00
Mariell Hoversholm
0de2f11f56 Add clear reputation API 2020-05-26 21:49:02 +02:00
ㄗㄠˋ ㄑㄧˊ
4f81cb8c92 Add history file for terminal 2020-05-23 11:23:27 +08:00
Max Lee
d18935ed70 Add Inventory getHolder methods without creating new block snapshots (#3535) 2020-06-20 20:34:56 +01:00
Techcable
913467791a Make enableTreasureMaps apply to shipwreck loot generation
Fixes #3480
Previously it only controlled whether villagers could trade treasure maps.
Now it should apply to loot generated in treasure maps.

We don't unregister treasure maps from the loot table,
since this option is per-world and the table is global.
Instead I just replaced the implementation with a NOP.
2020-06-16 13:31:54 -07:00
HeartPattern
36e82720c5 Remove useless warn logging while disconnecting
Remove useless "handleDisconnection() called twice" logging.
This warning log every time player kicked by server.
2020-06-13 02:21:29 +09: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
Mariell
1bb4fa735d Only complete from cache if ID is given (#3591)
As it stands, one can complete from the cache if no ID is given. If
there is no ID, it will throw an NPE, as ConcurrentHashMap (which is used
in UserCache) does not support null keys. This should fix any current
and future issues where exceptions are thrown just because a UUID is not
currently given on the profile due to a plugin or server bug/issue.

Fixes #3590.
2020-06-20 20:46:57 +02:00
Aikar
f3af3b7d5f Revert a change made to getChunkFuture for isUnloading
Talked with leaf on it and understand what its going now even though
it was a hack fix by Spigot, but seems ok.

I had orig made this change thinking it was the source of another
issue but that came out to not be true.

Fixes #3573
2020-06-20 14:23:09 -04:00
Aikar
93655fce88 Ensure we load chunks for Entity getCubes
Was some other code paths missing the set for loading chunks

Fixes #3582
Fixes #3368

Probably helps with "falling through world" issues too.
2020-06-20 05:22:09 -04:00
Aikar
5b7c4a0281 Optimize Network Manager Closed channel handling and flushing
Adds Netty Channel Flush Consolidation to reduce the amount of flushing
This improves performanceo of netty event loop.

If a problem is encountered with this, you can disable it by adding the java flag:
  -DPaper.disableFlushConsolidate=true

Also avoids spamming closed channel exception by rechecking closed state in dispatch
and then catch exceptions and close if they fire.

This should resolve connections getting stuck spamming ChannelClosed in logs and
let them clean up and close correctly.
2020-06-20 04:37:17 -04:00
Aikar
184795a274 Improvements to chunk priority / bug fixes
ensure we add missing player tickets even if already full status
remove the player ticket throttler entirely... causes a lot of issues and
our system handles the role that it was serving now too.

increase max delays on farther out chunks load delay

remove -5 priority delay for distant chunks seemed it applied at weird times.

ensure if delay distance manager tick ever got left lingering it unsets on a chunk load.

Fixes #3572
2020-06-20 02:37:21 -04:00
Aikar
ac6d387124 Make Skull Texture Lookup use the User Cache
Spigots cache only cached by name which really was not correct...

Additionally, user cache exposes a cache of any player who has logged in
once this session too even if offline.

Also fixed some quirks with Profile API where we might of had textures
in the cache that we didn't even try to look up.

So this should overall help reduce API calls to Mojang.

Sadly, the User Cache doesn't cache textures, but if that ever
changes in future, we would gain benefit there too.
2020-06-19 21:32:42 -04:00
Aikar
f6f42ece6b Improve light optimizations and fix bugs
Rewrites the Threaded task logic to no longer use 2 queues and instead
keep a single prioritized queue and do all of a chunks light tasks in a single batch

Fix a math issue in one place (Thankfully didn't seem to really be a common place since didn't notice anything)
2020-06-19 19:10:38 -04:00
Zach Brown
d933177708 Also restrict height in the vanilla teleport command
Uses the same ridiculously large limit as before,
just now also applied to the Y coord.

Fixes GH-3575
2020-06-17 17:46:45 -05:00
Josh Roy
c5b5820901 Add unsupported-settings section to config (piston tnt dupe config option) (#3565) 2020-06-15 12:29:39 -04:00
Spottedleaf
cf3f29c3ac Fix piston physics inconsistency (fix tnt dupers) (#3544)
Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>
2020-06-12 00:30:30 -07:00
David Slovikosky
be6b3b9b37 Fix missing chunks due to integer overflow (#3527)
This patch fixes a bug in the WorldChunkManagerTheEnd class where the distance
from 0,0 squared overflows the maximum size of an integer. The overflow leads
to hard chunk borders around 370,000 blocks from 0,0. After this cutoff there
is a few hundred thousand block gap before end land resuming to generate at
530,000 blocks from spawn. This is due to the integer flipping back and forth.

The fix for the issue is quite simple, casting chunk coordinates to longs
allows the distance calculation to avoid overflow and work as intended.
2020-06-12 00:30:18 -07:00
avaruus1
9775c90c51 Scheduling an async task timer creates a non-repeating task (#3543) 2020-06-12 02:32:48 +03:00
Aikar
0ded25feee Fix issues with SIGTERM not shutting down gracefully - Fixes #3062
We had 2 issues.
1) Log4J2 Shutdown hook seemed to be causing issues as it shutdown logger while we still needed it
2) ServerShutdownThread needs to stay alive until server is shutdown to keep jvm open.

It appears SIGINT is handled differently than SIGTERM, as SIGINT worked correctly.

But this will make both methods work.
2020-06-10 23:40:28 -04:00
Spottedleaf
4347fa1b85 Ensure chunk gen tasks return to main thread before completing futures 2020-06-10 23:24:35 -04:00
Aikar
3ef000597a Improve chunk loading speed and prioritization further - Fixes #3530 2020-06-10 08:06:34 -04:00
Aikar
2a50b14734 Improve Chunk Priority, Frustum Priority and Load Speed Algorithms
Fix bug where mojang has a -90 modifier in yaw resulting in us calculating
chunks to the players left rather than in front of them.

Drastically improve Frustum Prioritization function to reduce lag from its
calculations (Found it was being spammed really heavy on world add/teleport)

Also improved the logic behind choosing chunks to prioritize.

Add Priority tickets to a radius of 3 on any login, world chnge or teleport

This should help improve world load / chunk sending upon a player changing
locations by loading those chunks faster.

Improved the Player Ticket Delayer to be a little bit smarter about delays to
let closer chunks load a bit faster and only delay the farther out ones more.

This update will provide significant improvements to priority of chunks and
reduce the cpu cost of doing these calculations.

Fixes #3530
2020-06-09 23:06:34 -04:00
Aikar
bfe5d554d3 Improve ChunkMapDistance.b crash fix to clean up properly
There is some vanilla level bug where this tracking state appears
to get messed up and player doesn't exists in chunk its trying to untrack.

We returned early to prevent crashing, but I suspect if there was a level being
tracked for the chunk, it got leaked due to the early return.

So going to ensure we clean up the level tracker when this state occurs.

This may help with any leaked chunk issues.
2020-06-09 23:01:47 -04:00
Aikar
edc73f0d2b Improve Plugin Ticket Management
Now supports async chunk access even though doing that is bad
and shouldn't be done anyways since we force you back to main, itll
now just delay the ticket add to main the same way.

Now only add the ticket if the plugin CAUSED the chunk load, so no longer
adds ticket if the chunk was already loaded.

Additionally, cap chunk ticket limits to 1 second (Effectively ignoring chunk-gc config
unless the config is lower than 20 ticks)

Fixes #3533
2020-06-09 21:13:51 -04:00
stonar96
65154f7929 Make Anti-Xray multithreaded (#3520)
Obfuscate multiple chunks at a time over the server thread pool.

Will speed up chunk processing when anti xray is enabled.

Co-authored-by: Aikar <aikar@aikar.co>
2020-06-09 10:12:20 +02:00
Aikar
2dc5846adf Add PluginTickets to API Chunk Methods
Like previous versions, plugins loading chunks kept them loaded until
they garbage collected to avoid constant spamming of chunk loads

This adds tickets to a few more places so that they can be unloaded.

Additionally, this drops their ticket level to BORDER so they wont be ticking
so they will just sit inactive instead.

Using .loadChunk to keep a chunk ticking was a horrible idea for upstream
when we have TWO methods that are able to do that already in the API.

Not adding it to .getType() though to keep behavior consistent with vanilla.
2020-06-09 03:43:11 -04:00
Aikar
9eca5e3b19 Improve Chunk Prioritization and Internal Scheduler
In previous MC versions, we had a rather simple internal scheduler
for delayed tasks that would just keep pushing task back until desired
tick was reached.

The method it called to schedule the task changed behavior in 1.14, and now
this scheduler is not working nowhere near what it was supposed to be doing.

This was causing long delayed task to eat up CPU (In Oversleep for example)

Rewrite this to just use the CraftScheduler for scheduling delayed tasks.

Once this was fixed, it became quite clear the code that delayed ticket
additions for chunks based on distance was clearly not right, as it was
tested on the previous broken logic.

So the ticket delay process has been vastly revamped to be even smarter.
Chunks behind the player can load slower than the chunks in front of the player.
We also can delay ticket adding until one of its neighbors has loaded, as
this lets us get a smoother spiral out for the chunks (minus frustum intent).

Additionally on frustum previous commit inadvertently broke frustum trying to
fix an issue when the real fix lied elsewhere, so restore chunk priority so
it works again.
2020-06-09 03:17:25 -04:00
Aikar
d7e48a1126 Improve Login to use Urgent priority - improves login chunk load times 2020-06-08 21:44:52 -04:00
Aikar
da229313aa Delay Chunk Unloads based on Player Movement
When players are moving in the world, doing things such as building or exploring,
they will commonly go back and forth in a small area. This causes a ton of chunk load
and unload activity on the edge chunks of their view distance.

A simple back and forth movement in 6 blocks could spam a chunk to thrash a
loading and unload cycle over and over again.

This is very wasteful. This system introduces a delay of inactivity on a chunk
before it actually unloads, which will be handled by the ticket expiry process.

This allows servers with smaller worlds who do less long distance exploring to stop
wasting cpu cycles on saving/unloading/reloading chunks repeatedly.
2016-06-18 23:22:12 -04:00
Aikar
e88802ec8f Drop Close region files patch, doesn't add any value.
Upon further knowledge of the system, it is known that region files
are closing properly, as well as this didn't help native memory use anyways.

This patch also caused issues compiling on a newer JDK being able to
release the jar to java 8 users.
2020-06-08 17:07:23 -04:00
Aikar
fc517efae4 Fix undesirable behavior around world level changes due to priority
priority tickets being added at 33 was hurting sync EMPTY and lesser requests.

this was likely the source of recent treasure map issues.

This then further hurt nether portal travel too. lots of oddness around.

This also avoids scheduling a level change on ticket removal when the level
is unchanged, as well as ditches CB's horrible change to not letting
you access an unloading chunk which should be valid to cancel the unload
2020-06-08 17:03:42 -04:00
Aikar
5c048e9ae3 Fix timings task name generation for extreme cases - Fixes #3499
I'm going make a class, and in that class i'm going to
make a method. And in that method, I'm going to make a local class.

And then in that local class, I'm going to make another inner class.

I heard you like complex class trees.
2020-06-08 12:22:40 -04:00
Aikar
5ba1921c99 Ensure ThreadDeath propagates fully - Fixes #3521 2020-06-08 11:54:12 -04:00