Commit Graph

3134 Commits

Author SHA1 Message Date
Shane Freeder 85eccb571b Don't assume that entries exist for SafeNBTCopy 2020-10-17 12:20:44 +01:00
Mariell 595734a57e
Updated Upstream (Bukkit/CraftBukkit/Spigot) (#4659)
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:
01e22e09 Misc maven build updates
746f5324 #556: Allow sending messages from specific UUIDs
92b99cde #501: Add PersistentDataHolder to Chunk

CraftBukkit Changes:
4ef13f94 Misc maven build updates
04639f5a #759: Allow sending messages from specific UUIDs
77c894a2 #672: Add PersistentDataHolder to Chunk

Spigot Changes:
57bbdd8e Rebuild patches

Co-authored-by: Shane Freeder <theboyetronic@gmail.com>
2020-10-17 11:39:45 +01:00
Shane Freeder fa990d26af Revert "Updated Upstream (Bukkit/CraftBukkit/Spigot)"
This reverts commit 23826a3f66.
2020-10-17 10:48:00 +01:00
Shane Freeder 23826a3f66 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:
01e22e09 Misc maven build updates
746f5324 #556: Allow sending messages from specific UUIDs
92b99cde #501: Add PersistentDataHolder to Chunk

CraftBukkit Changes:
4ef13f94 Misc maven build updates
04639f5a #759: Allow sending messages from specific UUIDs
77c894a2 #672: Add PersistentDataHolder to Chunk

Spigot Changes:
57bbdd8e Rebuild patches
2020-10-17 09:24:25 +01:00
stonar96 efd90b1e9c
Anti Xray: Obfuscate blocks touching lava feature (#3311) 2020-10-16 17:08:33 -04:00
Mariell Hoversholm 74f507f4e3 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:
e461dcfe #555: Item - add getters/setters for owner/thrower

CraftBukkit Changes:
055870c4 #758: Item - add getters/setters for owner/thrower
2020-10-14 10:44:15 -04:00
Aurora ffe68e8875
Update discord link in the paper.yml (#4646) 2020-10-13 18:37:34 -07:00
Spottedleaf 68a1f9ffa7
Reduce blockpos allocation from pathfinding 2020-10-11 19:51:10 -04:00
Spottedleaf 98f1aae7fa
Retain block place order when capturing blockstates
Fixes twisted vines not connecting properly when grown via
bonemeal by a player.

In general, look at making this logic more robust (i.e properly handling
cases where a captured entry is overriden) - but for now this will do.
2020-10-11 19:51:02 -04:00
Spottedleaf 431bb179c9
Improve inlinig for some hot IBlockData methods 2020-10-11 19:18:27 -04:00
Spottedleaf 559ff369be
Optimise getType calls
Remove the map lookup for converting from Block->Bukkit Material
2020-10-11 18:52:57 -04:00
Spottedleaf cbecca2636
Fix for large move vectors crashing server
Check movement distance also based on current position.
2020-10-11 18:48:05 -04:00
ForceUpdate1 217702d573
Fix distance in checkHighPriorityChunks (Fixes #4582) (#4605) 2020-10-11 18:24:06 -04:00
Aikar 6eda4251f3
Reset Ender Crystals on Dragon Spawn - Fixes #3522
Crystals can end up in a bad state in certain conditions which causes
an exception on the expected number of crystals going negative.

This ensures the crystals/pillars are in expected state when the dragon spawns.
2020-10-11 16:11:57 -04:00
chickeneer 01b1971a43
MC-147729: Drop items that are extra from a crafting recipe 2020-10-11 13:47:45 -04:00
Aikar b2381db24e
Improve Priority handling of neighbor chunks
Restores vanilla like behavior where neighbor chunks have less priority than the source chunk.

This resolves the issue where teleporting sometimes has the chunk your arriving in slow to send.

Also improves light tasks to always process tasks when tasks from the current priority level are collected
instead of bundling them.
2020-10-10 22:12:43 -04:00
jmp 1c446c222d Fix CME when adding a passenger during Spawn events (#4616) 2020-10-10 17:05:17 +02:00
Aikar f3927b25eb
Fix "Not a string" Map Conversion spam - Fixes #3901
The maps did convert successfully, but had noisy logs due to Spigot
implementing this logic incorrectly.

This stops the spam by converting the old format to new before
requesting the world.
2020-10-08 00:02:03 -04:00
Aikar 3ece90368d
[CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2020-10-07 16:27:02 -04:00
William Blake Galbreath 551fac7ec5 Fix deop kicking non-whitelisted player when white list is not enabled 2020-10-07 22:22:06 +02:00
Mariell faf8eb035a
Updated Upstream (CraftBukkit) (#4622)
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:
1f4693a8 SPIGOT-6168: Fix error with Player.getBedSpawnLocation when world is unloaded while server running
2020-10-06 09:59:35 -04:00
Mariell d62bab6e25
Add a missing return in Eigencraft redstone (#4621) 2020-10-05 17:03:41 +01:00
BillyGalbreath 5234e6e242
Entity#isTicking (#4612) 2020-10-03 23:05:33 -04:00
Andrew Steinborn 1165d59526 Lazily track plugin scoreboards by default
On servers with plugins that constantly churn through scoreboards, there is a risk of degraded GC performance due to the number of scoreboards held on by weak references. Most plugins don't even need the (vanilla) functionality that requires all plugin scoreboards to be tracked by the server. Instead, only track scoreboards when an objective is added with a non-dummy criteria.

This is a breaking change, however the change is a much more sensible default. In case this breaks your workflow you can always force all scoreboards to be tracked with settings.track-plugin-scoreboards in paper.yml.
2020-10-03 21:13:12 +02:00
Mariell Hoversholm 8a046c95a4 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:
5c77bd28 SPIGOT-6147: InventoryCloseEvent does not fire after closing player inventory
2020-10-01 10:33:58 -04:00
Mariell Hoversholm a7861cbb48 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:
5da21f87 SPIGOT-6152: End exit gates in custom ends do not send back to overworld
1ee373fe SPIGOT-6157: Crash when PortalCreateEvent cancelled
2020-09-30 16:17:26 -04:00
MeFisto94 6c512a082d Expose the Entity Counter to allow plugins to use valid and non-conflicting Entity Ids 2020-09-29 19:16:25 +02:00
Mariell Hoversholm 654b792caf 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:
a339310c #755: Fix NPE when calling getInventory() for virtual EnderChests
2577f9bf Increase outdated build delay
1dabfdc8 #754: Fix pre-1.16 serialized SkullMeta being broken on 1.16+, losing textures
2020-09-27 11:04:51 -04:00
Mariell Hoversholm 5a988f2e45 Patch SPIGOT-6086 for all invalid locations
md_5's patch for SPIGOT-6086 only applies to locations over the world,
not those under or outside it.
2020-09-27 10:39:37 -04:00
Aikar 079a793b51
Revert "Only consider chunks Loaded if at BORDER status"
This reverts commit 9efe071062.

Issues have been found post merge that sadly no one discovered during test builds.
Reverting for now until we can identify the issue and do another test round.
2020-09-21 22:12:28 -04:00
Mariell Hoversholm eda80e3d7c Prevent fire from spreading to invalid locations 2020-09-21 21:09:04 +02:00
Aikar 826e09f369
Light improvements
Trying to solve random hangs we've seen, ensuring that this part of code isnt the culprit

also fixing a vanilla bug reportedby PhiPro where tickets are released too early
hoping this reduces amount of incorrect light issues.
2020-09-19 14:04:25 -04:00
Aikar e3e1191ac9
Preserve initial velocity of spawned entities - Fixes #4292 2020-09-19 13:19:34 -04:00
Aikar bd648dfb47 Optimize some methods for inlining
Adds final to some methods to improve inlining ability
2020-09-19 12:54:05 -04:00
Aikar 9efe071062 Only consider chunks Loaded if at BORDER status
This greatly improves performance as it drastically reduces the amount
of Entities and Tile Entities that are "registered" into the world, as
purely "cached" chunks will no longer have their entities hanging out in the world.

Additionally this fixes our Entity Add To World and Entity Remove From World events

Those events have not been firing correctly since MC changed how chunks work here.

Now the server will only consider a chunk "loaded" if it's got a ticket putting
it at level 33 or lower, which matches the public Bukkit API.
2020-09-19 12:54:05 -04:00
Shane Freeder 298c9022b0 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:
ccb9614e #548: LivingEntity - add methods for getting/setting invisibility

CraftBukkit Changes:
f8d4da08 #743: LivingEntity - add methods for getting/setting invisibility

Spigot Changes:
17d78dbd Rebuild patches
2020-09-19 12:29:53 +01:00
Shane Freeder d802a50a9a Extend block drop capture to capture all items added to the world (Fixes #4307)
Closes #4316
2020-09-17 00:40:07 +01:00
Aikar 613bdc3f96
[Auto] 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:
d75d8a38 #549: Add Fluid types / tags

CraftBukkit Changes:
890130b46 #746: Add Fluid types / tags
2020-09-14 05:57:06 -04:00
Aikar e6faa36eb9
Cache DataFixerUpper Rewrite Rules on demand
Mojang precaches every single potential rewrite rule that could ever
exist on server startup. This includes rules from all the way back to versions from 6+ years ago.

This is the source of why the server hogs every CPU core at 100% every start.

For anyone who hard resets for updates or has force upgraded their entire world, this
results in completely wasted cpu cycles.

This massive CPU usage also delays server startup time.

We improve this by making "min version to precache" that defaults to a future version
so that no rewrite rules are precached.

someone who expects to be converting a lot chunks could theoretically set
-DPaper.minPrecachedDatafixVersion=<dataVersionConvertingFrom> as a startup
parameter and only build from that point on.

However this will likely never be needed as the server will still run
the same cache logic on demand when it's actually needed. The only
cost would be some delay on the FIRST chunk conversion, but paper already
runs chunk conversions on another thread so this will likely never be
a concern for TPS.

This patch will significantly reduce CPU use on startup, reduce memory usage,
and improve server startup time.
2020-09-12 17:56:00 -04:00
Mariell a0b8b886c8
Updated Upstream (CraftBukkit/Spigot) (#4318)
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:
d5a72960 SPIGOT-6063: ConsoleSender sending extra lines in Java 13+

Spigot Changes:
2740d5ae Rebuild patches
2020-09-12 15:57:21 -04:00
Aikar fb71c71c80
Restore thread pool names for Bootstrap vs main
1.16.2 introduced 2 thread pools for Bootstrap vs main we didn't account for.

This also sets Bootstrap priority to be 1 less thread priority too so MC Main threads will always have
more priority specially on servers running multiple instances, since bootstrap tends to use up all CPU.
2020-09-12 11:25:30 -04:00
Aikar 5b352d9b33
[Auto] 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:
91957aa3 #550: Add getHandlerList into ArrowBodyCountChangeEvent
30dc3e37 Update deprecation message for PotionMeta.setMainEffect

CraftBukkit Changes:
6f55306c4 SPIGOT-5794: Only skip interact event if position, hand and itemstack are equal
2020-09-11 18:42:19 -04:00
Aikar 7d85344efd
(1.16.3) Missed some fixes to include in commit 2020-09-10 19:56:58 -04:00
Aikar 64ed429884
(FIRST 1.16.3): Update Paper to 1.16.3
This is a pretty tiny update with very little changed. Recommended to update
from 1.16.2 ASAP as 1.16.2 is now no longer supported.

Plugins should mostly remain working as the NMS revision did not change.
2020-09-10 19:47:58 -04:00
Aikar fa9c5e0f95
(FINAL 1.16.2) Improve Entity Activation Range passenger behavior
Previously, Entity Activation Range only applied to the root entity of a vehicle chain.
If that vehicle is active, every entity as it's passenger would then tick.

This creates scenarios where EAR does not apply your desired ranges to passengers.
Additionally, any entity that was a passenger never had its inactiveTick method called
when the parent was inactive, creating behavioral desyncs.

This could of been a source of many villager issues when those villagers were in minecarts
as players commonly do.

Now we will process passengers checking their activation state independently of their vehicle
and if they are inactive, call their inactiveTick() method to ensure state remains consistent.

This also helps improve any desync issues with entity position of passengers too.

This also removes immunity for passenger/vehicles, so it should improve performance
of these minecart villagers too for EAR.
2020-09-10 19:08:02 -04:00
Aikar 6fda3fd0ed
(FINAL 1.16.2) Improve Timings support for Active vs Inactive vs Passengers
This makes it so entities that are passengers of other entities no longer count in the parents timings, as well as
tracks them as a separate timers per their tick status.

This lets you see how much time is spent in activated entities vs inactive (as inactive still has to do work)

Passengers is also tracked separately so you can identify "Villagers in Minecarts" vs roaming villagers, as
the lack of ability to move can impact their performance characteristics.

This will likely break any plugin that was naughty and directly messed with our internal timings as this
moves the timings to the EntityTypes object, speeding up creation of Entities to no longer store
a timing handler object per entity.

This will also change the output of the entities in timings to use internal ID's instead of class names.

If a plugin is broken by this, shame them for doing bad things. Paper will not fix it, they will have to fix it.
2020-09-10 19:08:02 -04:00
JRoy 794e6baf14 Add additional open container api to HumanEntity 2020-09-10 20:31:49 +02:00
Shane Freeder 44e822f7cf Fix block data exception when cancelling PortalCreateEvent (#4199) 2020-09-10 09:02:22 +01:00
Aikar 4be8312fe7
[CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2020-09-03 21:52:16 -04:00
Daniel Ennis 43e5174a01
Fix Entity Teleportation and cancel velocity if teleported (#4210) 2020-09-03 21:48:44 -04:00
Aikar 0fb3daf4f6
[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:
a05df28a7 SPIGOT-6122: Revert "SPIGOT-5794: Do not skip PlayerInteractEvent"
2020-09-03 16:52:21 -04:00
MiniDigger 819ff32435 Use wrapped StructureManager to prevent worldgen deadlock 2020-09-03 12:56:03 +02:00
Joshua Dean Küpper 507f302cd2 Fix Zombie ShouldBurnInDay API (#4268) 2020-09-03 12:35:37 +02:00
Aikar ef5af6f604
[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:
1d7440332 #745: Fix getLocation for Cartography Table and Stonecutter
2020-09-03 04:47:24 -04:00
miclebrick c247857fd4 Cache block data strings 2020-09-02 14:11:44 +02:00
Aikar ce2eae5ce3
[Auto] 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:
b56e8160 #519: Add ArrowBodyCountChangeEvent

CraftBukkit Changes:
39806409e #697: Add ArrowBodyCountChangeEvent
2020-09-02 05:12:25 -04:00
Shane Freeder 563f77ad23
install remapped server jar to paper package space
Spigot has been stripping the minecraft-server jar down in order to
reduce it's size, primarily by removing classes they don't use from
fastutil. as we use fastutil and offer it as API, this is useless
to us, and creates headaches when it breaks builds due to spigots
version of this being installed.
2020-09-01 23:20:58 +01:00
Aikar 1ab021ddca 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:
565a5727 #533: Add consumed item, hand and consumeItem boolean to EntityShootBowEvent

CraftBukkit Changes:
927200a9 #718: Add consumed item, hand and consumeItem boolean to EntityShootBowEvent
2020-08-31 08:30:51 -04:00
chickeneer c970f88057
Properly pass the close reason for new inventory opens (#2658) (#4247) 2020-08-31 07:12:14 -04:00
ysl3000 07bca94f71 Create HoverEvent from ItemStack Entity
add myself to MIT list

Co-authored-by: Mariell <proximyst@proximyst.com>
Co-authored-by: MiniDigger <admin@minidigger.me>
2020-08-31 12:27:30 +02:00
MeFisto94 da33f8bbe1 Add a way to get translation keys for blocks, entities and materials 2020-08-31 11:56:32 +02:00
BillyGalbreath 5a20cbd759 Add more Evoker API 2020-08-31 11:22:26 +02:00
Aikar b0cbebdc7b
Fix build conflicts 2020-08-30 14:38:49 -04:00
Mariell dfc54a8b92
Add zombie targets turtle egg config (#4181)
Co-authored-by: BillyGalbreath <Blake.Galbreath@GMail.com>
2020-08-30 14:27:50 -04:00
Eearslya Sleiarion 0fe00f61fd
Add BellRingEvent for village bells (#2230) 2020-08-30 14:26:15 -04:00
Daniel Ennis 5c7f3fc091
Fix PersistentDataContainer contract violation (_->!null returns null) (#3990) 2020-08-30 14:02:34 -04:00
Aikar 65dbf5ff0c
[CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2020-08-30 14:02:15 -04:00
Josh Roy 7ed0f7f003
Fix NPE in getBedSpawnLocation (#4238) 2020-08-30 13:59:14 -04:00
foss-mc 6c138412fb
Fix CraftTeam null check (#4249) 2020-08-30 11:33:25 -04:00
Mariell Hoversholm a67abf5b2a Increase visibility of a few methods
Fixes PaperMC/Paper#4094.
2020-08-29 10:22:30 +02:00
Aikar 7d69214b54
[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:
00bff0270 SPIGOT-5794: Do not skip PlayerInteractEvent
2020-08-29 00:17:19 -04:00
Mariell Hoversholm cbfc236260
PortalCreateEvent needs to know its entity
Fixes PaperMC/Paper#4076.
2020-08-28 20:46:00 +02:00
Mariell Hoversholm 29032edb5b
Fix PersistentDataContainer contract violation (_->!null returns null) 2020-08-28 20:40:58 +02:00
Aikar f42c53dfeb
[CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2020-08-28 07:42:03 -04:00
Mariell Hoversholm 3efe45f56d Port Eigencraft to 1.16 2020-08-28 13:38:55 +02:00
stonar96 0bad695802 Make engine-mode 2 truly random
Up to now a simple counter variable was used to iterate through the
hidden-blocks in engine-mode 2 while obfuscating. This results in low
quality obfuscation.

One could for example easily write a hack, which bypasses Anti-Xray
by not showing ores, which have a certain pattern.

Furthermore, engine-mode 1 is slightly optimized by this commit.
However, engine-mode 2 is probably somewhat slower. I did some tests but
I wasn't able to get stable results for some reason. Therefore this
needs further testing.

An optimized random algorithm is utilized to pick random blocks from the
hidden-blocks list. This implementation uses xorshift and integer
multiplication for bounding. The resulting distribution is negligibly
biased because xorshift doesn't generate 0 and integer multiplication
also implies biased results.
2020-08-28 13:20:21 +02:00
Shane Freeder cd06ca5eb8
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:
3f572834 #740: Fix EntityDamageEvent not being called for non EntityDamageSource for End Crystals
3c7143e7 SPIGOT-5953, SPIGOT-5914: Use LinkedHashMap to keep captured block states in order
2020-08-28 12:06:39 +01:00
Professor Bloodstone ef36b4f80c Fix TNT not pushing creative players 2020-08-28 12:51:11 +02:00
JRoy 915fe5225e Fix hex colors not working in some kick messages 2020-08-28 12:29:41 +02:00
Aikar 757948dca3
[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:
e14c9acbe SPIGOT-6113: Ender Pearls thrown into portals that lead to disabled dimensions crash the server
97da39889 SPIGOT-6114: PlayerRespawnEvent player's location changed before event called
3b5c36769 SPIGOT-6115: Items being deleted on pick up with full inventory
2020-08-27 22:37:10 -04:00
Shane Freeder 0893de14dc
Fix reading the brand message from clients
Also try to catch the exception caused by clients/plugins seemingly
mangling this information
2020-08-27 17:11:13 +01:00
Shane Freeder 243d2313b9
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:
323d6ca3 #535: Add EntityCategory API to LivingEntity
7d3323d8 #526: Add Block#applyBoneMeal()

CraftBukkit Changes:
bf451617 SPIGOT-6109: Improve loot handling
bfea4559 SPIGOT-6111: NPE in CraftHumanEntity#openWorkbench & CraftHumanEntity#openEnchanting
ee7116b4 Add note to CONTRIBUTING.md to suggest keeping commit messages / titles the same
eae15943 #721: Add EntityCategory API to LivingEntity
8c611560 #702: Add Block#applyBoneMeal()
8408de02 #716: Fix barrel open API playing sound twice
74b6982b #711: Add Full RGB support to the console
2020-08-27 14:37:37 +01:00
William Blake Galbreath 4cc7de6c51
Add playPickupItemAnimation to LivingEntity 2020-08-26 15:13:33 +01:00
Aikar 20fc1b5c2a
[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:
049120068 SPIGOT-6101: Store persist state of entities
0de8365dd SPIGOT-6103: Summoning an Eye of Ender throw an Error

Spigot Changes:
b5a13e6d Rebuild patches
2020-08-26 04:46:59 -04:00
Aikar 655258b339
[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:
9aafdc9a7 SPIGOT-6099: PlayerPortalEvent.setTo ignores world for end portal travel
2020-08-26 04:22:13 -04:00
Aikar 167b1db604
Fix some modded clients getting kicked for invalid payload - Fixes #4201 2020-08-25 20:06:04 -04:00
Aikar 7f0786cdd1
Fix enderdragon tracking range to honor vanilla 2020-08-25 19:38:19 -04:00
Shane Freeder 853f4168f4
Remove debug
Today is going to be a long day
2020-08-25 13:30:52 +01:00
Shane Freeder 4d7ea42991
fix config option in last commit 2020-08-25 13:23:58 +01:00
Shane Freeder 74d2746308
Buffer joins to world
This patch buffers the number of logins which will attempt to join
the world per tick, this attempts to reduce the impact that join floods
has on the server
2020-08-25 12:30:57 +01:00
Daniel Ennis c97ce029e9
1.16.2 Release (#4123)
PaperMC believes that 1.16.2 is now ready for general release as we fixed the main issue plagueing the 1.16.x release, the MapLike data conversion issues.

Until now, it was not safe for a server to convert a world to 1.16.2 without data conversion issues around villages and potentially other things. If you did, those MapLike errors meant something went wrong.

This is now resolved.

Big thanks to all those that helped, notably @BillyGalbreath and @Proximyst who did large parts of the update process with me.

Please as always, backup your worlds and test before updating to 1.16.2!

If you update to 1.16.2, there is no going back to an older build than this.

---------------------------------

Co-authored-by: William Blake Galbreath <Blake.Galbreath@GMail.com>
Co-authored-by: Mariell Hoversholm <proximyst@proximyst.com>
Co-authored-by: krolik-exe <69214078+krolik-exe@users.noreply.github.com>
Co-authored-by: BillyGalbreath <BillyGalbreath@users.noreply.github.com>
Co-authored-by: stonar96 <minecraft.stonar96@gmail.com>
Co-authored-by: Shane Freeder <theboyetronic@gmail.com>
Co-authored-by: Jason <jasonpenilla2@me.com>
Co-authored-by: kashike <kashike@vq.lc>
Co-authored-by: Aurora <21148213+aurorasmiles@users.noreply.github.com>
Co-authored-by: KennyTV <kennytv@t-online.de>
Co-authored-by: commandblockguy <commandblockguy1@gmail.com>
Co-authored-by: DigitalRegent <misterwener@gmail.com>
Co-authored-by: ishland <ishlandmc@yeah.net>
2020-08-24 22:40:19 -04:00
DigitalRegent 627f4b8561
Brand support 2020-08-23 05:19:14 -07:00
Zach Brown 7470c3ef69
Do not let the server load chunks from newer versions (1.16.2+)
If the server attempts to load a chunk generated by a newer version of
the game, immediately stop the server to prevent data corruption.

You can override this functionality at your own peril.
2020-08-21 19:27:25 -04:00
Matt Baxter 60a5ca6d7d
Fix regex mistake in CB NBT int deserialization (#4146)
The existing regex is too open and allows for the absence of any actual
number data, detecting an NBT entry of just the letter "i" in upper or
lower case. This causes a single-character NBT entry to be processed as
an integer ending in "i", passing an empty String to to Integer.parseInt,
triggering an exception in loading the item.

This commit forces numbers to be present prior to the ending "i"
letter.
2020-08-17 10:13:15 -07:00
MrIvanPlays 2b4ce0b370 Restore incremental player saving
This patch was dropped in 1.14 . I couldn't find it in removed so I got it from 1.13
Tested with 30-40 players and works fine with default settings.
Closes https://github.com/PaperMC/Paper/issues/4070
2020-08-11 09:55:10 -04:00
Mariell Hoversholm b91d964b17 Restore Pathfinder Optimizations from 1.15.2
We dropped the patch in 1.16.1 update due to it being a major conflict.
This restores it.

Co-Authored-By: Aikar <aikar@aikar.co>
2020-08-06 22:55:24 -04:00
Aikar adadf16548 Drop syncPosition on teleportation patch
I'm not sure it was really helping, and now suspecting it might be causing issues
Movement sucks
2020-08-06 22:55:24 -04:00
Aikar 6f66fa5714
Fix Light Thread causing world memory leak - Fixes #4045 2020-08-06 20:02:20 -04:00
Aikar 6742309074
Improve EntityTargetLivingEntityEvent for 1.16 mobs
CraftBukkit has a bug in their implementation and is incorrectly handling forget
Also adds more target reasons for why it forgot target.

Fixes #4042
2020-08-06 19:38:49 -04:00
Aikar 9788250b10
Clean up a lot of obfuscation helpers and impls
This fixes a bug with obfuscation helpers for attack cooldown
But every other change should stay the same.

Cleaning up a lot of helpers that pointed to already unobfuscated items.
Also adds final to many of the obfhelpers to assist with inlining.

This is pretty much a patch maintenance
2020-08-02 01:39:36 -04:00
William Blake Galbreath 58a745eba0
Fix scoreboard vanilla colors not working in chat 2020-07-31 16:20:29 +01:00
Aikar 3cf2c52d95
Improve Light Optimizations more
Hopefully fixes #4030 and hopefully fixes #4025

Use the concurrent enqueue process for all light tasks.
Restore dedicated light thread, helpful for profiling and identifying light work
as well as lets us give it a boosted thread priority
2020-07-30 22:04:56 -04:00
Mariell Hoversholm 0b33230f2d 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:
eeb1042f #491: Add support to change block's lid state

CraftBukkit Changes:
8fb65851 #660: Add support to change block's lid state
2020-07-29 16:01:09 -04:00
Aikar 960d992fd2
Further improve Chunk Light Prioritization
This is as fast as its going to get outside of making the light engine calculations it self faster.

Fixes #4022
2020-07-29 01:51:57 -04:00
Aikar 0d19e4579b
Fix deadlock issue with watchdog stopping
Fixes #4008
2020-07-28 22:22:46 -04:00
Aikar baf1fabe9e
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:
c3a22e78 SPIGOT-6032: Add best effort target events for new entities
2020-07-28 22:22:46 -04:00
Aikar 6e7dc3f81d
[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:
52fd29c0d SPIGOT-6033: Bukkit.getUnsafe().getMaterial() won't match renamed block materials
2020-07-28 04:36:52 -04:00
Spottedleaf dafc7b8f8d
Fix off by one error for scheduling block ticks (#4014)
Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>

Fixes #4015
2020-07-28 01:19:11 -04:00
Spottedleaf a8ef09b82c
Tighten logic for handling target tick times in tick scheduler (#4010)
No longer rely on world time as plugins like to screw it up.

Add a new flag -Dpaper.ticklist-max-tick-delay= that
will automatically drop any tick entries that have a delay
exceeding the specified amount. This is only useful
for cleaning up a world that has been corrupted by
certain blocks having a huge tick delay.

Aimed at resolving #3251

Also fix an issue with some rails connecting incorrectly
that I found when testing.

Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>
2020-07-27 23:05:27 -04:00
Aikar d5ccd41393
Remove ability to disable async chunks unless single core cpu
Too many people try to disable async chunks thinking its the cure
to some mysterious problem.

It is not possible to fully disable async chunks, and the portion
that this config controls is so minor in the grand scheme of things.

People are needlessly hurting their server following bad advice, so
just kill this config except for the people who might actually benefit from it.
2020-07-27 23:01:56 -04:00
Aikar 76728529f9
Fix Light Prioritization Issues
Ensures light priorities are properly processed before processing new
work, skipping the threads queue.

also stops processing work on task submission.

Also drops dead chunks light work to not waste time on work thats going to be discarded.

Fixes #3986
Fixes #4002
Fixes #3951
2020-07-27 22:54:45 -04:00
Shane Freeder 51d10c2012
Add missing strikeLighting call to World#spigot()#strikeLightningEffect 2020-07-26 12:12:19 +01:00
Spottedleaf 0cf106087d
[1.16] Do not sync load POI data (#3996)
Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>
2020-07-25 04:28:57 +01:00
Shane Freeder 188df6501e
Don't make per-player scale mob counts with the spawn range
https://github.com/PaperMC/Paper/pull/3971#issuecomment-663316000
2020-07-24 21:34:41 +01:00
Spottedleaf 55e2de5c6e
Improve per player mob spawning (#3971)
Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>
2020-07-23 14:10:46 -04:00
Prof-Bloodstone 42433c2626
Updated Upstream (Bukkit/CraftBukkit) (#3980)
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:
09f10fd9 SPIGOT-5950: Add PrepareSmithingEvent event

CraftBukkit Changes:
7c03d257 SPIGOT-6011: End Gateways do not work on Non-Main End Worlds
d492e363 SPIGOT-6015: Small Armor Stand doesn't drop items
5db13eea SPIGOT-5950: Add PrepareSmithingEvent event
2020-07-22 19:35:44 -04:00
tofipix e5ede546a2
Fix IDE Debug JVM Flag for 1.16 (#3983) 2020-07-22 19:18:36 -04:00
Aikar 2712c68885
[Auto] 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:
f1e73b03 #525: Add contributors plugin.yml field.
ef0999fe #529: Added getRecipe() method to retrieve a Recipe by it's NamespacedKey

CraftBukkit Changes:
8b831a965 #714: Added getRecipe() method to retrieve a Recipe by it's NamespacedKey
2020-07-22 04:26:59 -04:00
Nassim 0901ffd046
Use title packet for actionbar methods (#3959) 2020-07-22 04:01:35 -04:00
Aikar cc25ae47c0
Amend last commit to fix decompile error forgot to commit 2020-07-22 02:15:51 -04:00
Spottedleaf f503db37c6
Fix AdvancementDataPlayer leak due from quitting early in login
Move the criterion storage to the AdvancementDataPlayer object
itself, so the criterion object stores no references - and thus
needs no cleanup.

Fixes #3050
2020-07-22 02:10:13 -04:00
William Blake Galbreath 282763b885
Fix SPIGOT-5885 Unable to disable advancements 2020-07-22 01:38:36 -04:00
William Blake Galbreath 9b93d122ec
Fix SPIGOT-5824 Bukkit world-container is not used 2020-07-22 01:29:20 -04:00
Aikar bede4d304d
Load config files early on
also fixes the ide commodore rewrite patch version

Prep for other PR's to be updated to use these as some options need to use some values earlier
2020-07-22 01:01:01 -04:00
Mariell dc80610ff3
Only get spawn block if it's relevant, fixes #3934 (#3942) 2020-07-19 13:58:29 +01:00
Aikar f6b63c6cdb
[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:
2361cb8a8 Increase outdated build delay to 3 weeks

Spigot Changes:
d4cbb644 Update bungeecord-chat
2020-07-18 03:57:21 -04:00
Mariell 108efeeeff
Fix zero reputation deleting villagers (#3857) 2020-07-17 13:47:04 -04:00
Aikar 7db30ebd57
Use consistent priorities for light tasks
Should fix high priority chunk loads prioritizing over urgent sync loads

Also fixes build Kenny broke! Bad Kenny.
2020-07-17 13:24:12 -04:00
Josh Roy 018d860243
Fix SPIGOT-5989 (#3920) 2020-07-17 12:49:50 -04:00
Nassim 4590995458
Fix moveToWorld worldserver reference (#3929) 2020-07-17 12:44:39 -04:00
Aikar 9c16c413ec
[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:
75a2fb8e0 SPIGOT-5901: Improve multiworld support
2020-07-16 19:07:15 -04:00
Spottedleaf 45ffc2bf1a
Move range check for block placing up (#3917)
Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>
2020-07-16 03:38:53 +01:00
Spottedleaf 94315dad74
Fix erroneuous entity count reporting in timings 2020-07-14 11:58:55 +01:00
Aikar 775a764eca
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 fa90052a82
Fix MC-125757 (#3859) 2020-07-09 20:40:37 -04:00
Aikar 071c08d77e
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:38:24 -04:00
Aikar 8c4787e306
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:46:36 -04:00
Aikar b74fee9e93
[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 e87aa727d5
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 15:57:24 -04:00
Aikar 29453f1dbe
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 97cedaa589
Optimize the advancement data player iteration to be O(N) rather than O(N^2) 2020-07-07 01:19:12 -04:00
Aikar c2c4cf44b6
[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 e588fd94a8
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:41:20 -04:00
Andrew Steinborn da15798cab
[1.16] Optimize NetworkManager exception handling (#3819) 2020-07-06 00:27:37 -04:00
Aikar f3d98fefef
Fire inventory listeners if PrepareResult changes item
Fixes #3810
2020-07-05 19:25:13 -04:00
Aikar 4ca3d61623
Don't check chunk for portal on world gen entity add - Fixes #3780 2020-07-05 19:25:13 -04:00
Aikar 166e52b574
[CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2020-07-05 03:07:02 -04:00
BillyGalbreath 5a17ba07bb
Implements #3761 - Add entity liquid API (#3762) 2020-07-05 03:00:09 -04:00
Aikar e0cae289c4
Fix anvils bug - Fixes #3802 2020-07-05 02:25:29 -04:00
Aikar 4793f774c8
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 adf1de586b
Allow delegation to vanilla chunk gen 2020-07-04 23:55:22 -04:00
MiniDigger 40ace3f7b7
Allow delegation to vanilla chunk gen 2020-07-04 23:45:11 -04:00
BillyGalbreath 178a6e502d
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 23:36:46 -04:00
BillyGalbreath 57697cd515
Report proxy onlinde mode to bstats as online (#3093) 2020-07-04 22:59:25 -04:00
William Blake Galbreath 6579ce0517
Fix #3701 - Loottables erasing on viewing 2020-07-04 22:04:49 -04:00
Aikar 030da7b896
[CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2020-07-04 22:02:02 -04:00
Jake Potrebic d43def7954
Incorrect spawn reason for monsters from spawner - Fixes #3708 (#3764) 2020-07-04 21:54:39 -04:00
Aikar 0543f051a0
[CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2020-07-04 21:36:56 -04:00
Josh Roy f3cd94c42b
Remove streams from classes related to villager gossip (#3748) 2020-07-04 21:31:58 -04:00
Jake Potrebic b49104db64
add EntityTargetLivingEntityEvent for new 1.16 mobs (#3782) 2020-07-04 21:30:13 -04:00
Aikar 7e03e44ea3
[CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2020-07-04 21:02:03 -04:00
BillyGalbreath 8bb002728a
Update itemstack legacy name and lore (#3741) 2020-07-04 20:47:24 -04:00
Aikar 81f6d51f0e
[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 4fd1744529
Spawn player in correct world on login 2020-07-04 04:49:51 -04:00
Aikar b25236f0b7
[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:
b6a876bc3 SPIGOT-5936: BlockPlaceEvent does not fire for lily_pad
2020-07-03 19:12:08 -04:00
Aikar a12a677859
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:19:50 -04:00
Aikar b3f265d1b1
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:19:33 -04:00
Jake Potrebic 824f8086cf
Bandaid italic legacy serialization #3757 (#3760) 2020-07-02 17:42:23 -04:00
MiniDigger 1eeb8ad14b
Support components in ItemMeta (#3513) 2020-07-02 11:53:21 -04:00
Callum ea8823ef57
Fix MOTD new line support (#3756) 2020-07-02 08:58:39 -04:00
Callum 4b5b20d4cd
Fix hex colours not being allowed in MOTD (#3755) 2020-07-02 03:19:43 -04:00
Aikar a96d3e8984
[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:
dc7c3c61f SPIGOT-5921: Improve setNoDamageTicks for Players
53849f57f SPIGOT-5922: Smithing recipes not registering
2020-07-01 21:27:09 -04:00
Aikar 0823d3fdce
[Auto] 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:
1cb03826 SPIGOT-5900: Re-order Material enum entries to match Minecraft's order
fdd705db #507: Add hasDiscoveredRecipe() and getDiscoveredRecipes()

CraftBukkit Changes:
551e770f5 SPIGOT-5900: Add test for the order of Material enum entries
8297676c2 #682: Add hasDiscoveredRecipe() and getDiscoveredRecipes()
2020-07-01 19:41:58 -04:00
Aikar 75645fbfbf
[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 d78cbb8553
[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 14:53:16 +01:00
Shane Freeder 8522e7b274
Fix shutdown on eula not being agreed (Fixes #4647) 2020-07-01 12:22:24 +01:00
Aikar c43dcbfcf0
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:51:50 -04:00
Aikar f63e3dd135
Allow teleporting through end gateways as a passenger/vehicle
Vanilla allows this now for same world teleports

Fixes #3735
2020-07-01 05:51:38 -04:00
Aikar b7d9e3d5dc
Convert legacy attributes in Item Meta
Fixes #3705
2020-07-01 04:50:46 -04:00
Aikar 4fd0d54ee7
Fix server not stopping when eula not agreed yet 2020-07-01 03:32:26 -04:00
Aikar 6f30ecdeb9
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:30:49 -04:00
Aikar d304722608
Fix supporting more places of the old UUID format
Fixes #3734
2020-07-01 03:30:49 -04:00
Aikar f5265d6688
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 7ce690f49e
[Auto] 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:
e16de3bb SPIGOT-5906: Huge Fungi tree generation

CraftBukkit Changes:
a13b8cfc7 SPIGOT-5907: Item Frame NBT data disappears
5a6c52983 SPIGOT-5906: Huge Fungi tree generation
2020-06-30 20:07:16 -04:00
Aikar bcab622e55
[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:
fdf6017fa Fix event for unlucky composts
b567cb433 SPIGOT-5910: loadAdvancement does not work
2020-06-30 19:42:14 -04:00
Aikar ab347c4c96
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
Aikar e2e09326d5
[Auto] 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:
3c844f35 #512: Expand Strider and Steerable entity API

CraftBukkit Changes:
32acc2621 #686: Expand Strider and Steerable entity API
2020-06-29 20:02:17 -04:00
Shane Freeder 25c14f76fc
Fix compile 2020-06-29 15:03:41 +01:00
Shane Freeder 8a4af269ba
fix EntityDismountEvent being fired on gen threads 2020-06-29 14:48:24 +01:00
Aikar 55ab552c03
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 9edbfe5fe8
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:38:56 -04:00
Aikar fb772923d5
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:27 -04:00
Aikar 8806d0a89a
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 35282e46fa
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 bcc619ae1e
revert chat changes for now until can get it properly working 2020-06-28 20:03:31 -04:00
Aikar 04d09e1dc6
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 3703b177e3
Fix texture profile properties getting duplicated - Fixes #3667 2020-06-28 19:37:53 -04:00
Aikar 4f45587232
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 f4b7b588d5
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 f339d6e162
Fix more null pointer issues around deleted worlds - Fixes #3660 2020-06-28 18:44:34 -04:00
Aikar 6c6318cb3a
Fix player skulls rendering - Fixes #3672 2020-06-28 18:04:04 -04:00
MiniDigger e928b165ce
[1.16] Fix MobGoals#getAllGoals not actually returning all goals (#3670) 2020-06-28 15:57:31 -04:00
Shane Freeder 943c923856
Fix NPE from an invalid spawn dimension (Fixes #3660) 2020-06-28 18:30:01 +01:00
Shane Freeder b27469dc9a
[CI-SKIP] Drop accidental import from last commit 2020-06-28 12:24:09 +01:00
Shane Freeder 4da9f70a50
Restore Player#refreshPlayer (Fixes #3650)
untested, don't @ me
2020-06-28 12:17:20 +01:00
Aikar 86ee6c968c
Log Minecraft Internal Scheduler logs correctly 2020-06-28 05:34:23 -04:00
Aikar e4d10c3cdf
Revert recent changes around player skulls using user cache 2020-06-28 05:13:46 -04:00
Shane Freeder bf4b541513
Fix missing hunk from ProfileWhitelistVerifyEvent (Fixes #3645) 2020-06-28 09:45:42 +01:00
Aikar b6925c36af
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 5e9cc3a228
Fix null pointer in portal search config 2020-06-28 04:21:40 -04:00
Aikar 3a77cce3c9
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 20e92f90d4
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:34:28 -04:00
Spottedleaf d871ae80fe
Fix missing chunks on client (View distance issue) 2020-06-28 00:58:25 -04:00
Aikar c0d07c1b67
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 78c5491f14
Fix Piglin issue 2020-06-27 20:32:49 -04:00
Aikar 986ebc68fc
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:
983305bb SPIGOT-5856: Soul Campfire BlockState cannot be cast to Campfire
2020-06-27 17:37:09 -04:00
Omer Uddin e94688ca39
Fix comment mistake 2020-06-27 16:00:08 -04:00
kickash32 527dd9f185 fixup 2020-06-27 15:02:40 -04:00
kickash32 2192ff1bf7 fix headers 2020-06-27 14:38:26 -04:00
kickash32 501c1c7800 port 4 patches 2020-06-27 14:35:52 -04:00
Spottedleaf 030f1c1375 Hide sync chunk writes behind flag 2020-06-26 22:37:38 -07:00
Spottedleaf c29c36e782 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 654f3e9d3e Re-Add per player mob spawning 2020-06-26 21:57:36 -07:00
Spottedleaf 8c0c587472 Merge branch 'ver/1.16' of https://github.com/stonar96/Paper into ver/1.16 2020-06-26 20:34:31 -07:00
Spottedleaf bf478c36c7 fix async chunk loading disregardling light data 2020-06-26 20:05:12 -07:00
stonar96 f6227a0fc9 Fix Anti-Xray 2020-06-27 04:27:03 +02:00
Spottedleaf 028bff252f fix recursion for leashing an abstract horse 2020-06-26 15:54:39 -07:00
Spottedleaf 4fd1bd8aee Fix the piston duplication option when it is on 2020-06-26 14:36:48 -07:00
Spottedleaf 368fc7c8c0 Pass predicate from default get hard colliding entities method 2020-06-26 14:33:49 -07:00
Spottedleaf 37df424eda Fix the entity knockback by entity patch 2020-06-26 14:31:38 -07:00
Spottedleaf 4c1712f868 Fix packed data reading in anti-xray 2020-06-26 14:11:08 -07:00
Nassim 387571da58
Some fixes (#3630)
* Fix block action sending

* Fix chest property check
2020-06-26 14:34:52 -05:00
MiniDigger c63757c131
[WIP|1.16] Misc fixes (#3627) 2020-06-26 12:20:03 -04:00
MiniDigger c3640b1dc0
[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 05:04:38 -07:00
Aikar 68636aee72
Latest progress - restored patches, some issues resolved 2020-06-26 05:03:23 -04:00
Aikar 014b7f115d
Current non compilable status of all patches - THIS IS NOT READY
THERE IS STILL NO ETA. GOBLINS WILL EAT YOU.
2020-06-26 02:01:05 -04:00
Spottedleaf 939690baea even even even even even even more work 2020-06-25 18:53:21 -07:00
Spottedleaf c300745c8b even even even even more work 2020-06-25 16:38:24 -07:00
MiniDigger 03a53a63b6 even even even more work 2020-06-25 20:41:40 +02:00
Spottedleaf 8ac3123f9f even even more work 2020-06-25 06:11:48 -07:00
Spottedleaf 2bf5db6cc9 even more work 2020-06-25 05:04:34 -07:00
Spottedleaf 8269101af0 more progress 2020-06-25 04:00:35 -07:00
Aikar 6800c77f75
Current progress - Leaf, tag your it 2020-06-25 05:27:25 -04:00
Aikar e27149bff4
Current progress 2020-06-25 00:02:26 -04:00
Aikar 6c87b85dd1
1.16.1 prep 2020-06-24 22:00:02 -04:00
Aikar a28f80090e
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:41:14 -04:00
Aikar ec9fa36908
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:28:43 -04:00
Jan Tuck 70df8f2716
Add PrepareGrindstoneEvent 2020-06-23 05:06:48 -04:00
Aikar 24b2f54b7b
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 ce270e1412
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:40:03 -04:00
Aikar c4ada0e199
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:40:02 -04:00
Spottedleaf 37b244b50b
Fix not running level updates for light if no pre/post task 2020-06-23 04:09:58 -04:00
Josh Roy e614299517
Add and implement PlayerRecipeBookClickEvent (#3351)
Co-authored-by: LordKorea <lk97798@posteo.net>
2020-06-22 23:33:08 -05:00
Mariell 9bb4e93090
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-22 19:00:00 -04:00
PatoTheBest e9c332ddb6
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 22:59:34 -04:00
Nesaak b6a25a5356
Expose getItemStack in Arrows 2020-06-20 16:34:06 -04:00
kickash32 246af15ddc
Track Ender Dragon at current (no tick) view distance 2020-06-20 16:20:00 -04:00
Mariell Hoversholm 29a96bc1c5
Add clear reputation API 2020-06-20 16:02:28 -04:00
ㄗㄠˋ ㄑㄧˊ b2afcf1194
Add history file for terminal 2020-06-20 15:46:25 -04:00
Max Lee c7e4c45f26
Add Inventory getHolder methods without creating new block snapshots (#3535) 2020-06-20 15:34:56 -04:00
Techcable 87e3c18093
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-20 15:26:38 -04:00
HeartPattern 7d256d659f
Remove useless warn logging while disconnecting
Remove useless "handleDisconnection() called twice" logging.
This warning log every time player kicked by server.
2020-06-20 15:23:02 -04:00
Spottedleaf 0d8594ae94
Fix enderdragon exp dupe
Properly track death stage when unloading/loading in the dragon
2020-06-20 15:04:50 -04:00
Spottedleaf 1cf1ebdc5d
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 8f28f22ccf
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 96feb68ad9
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 3e75d90810
Fix more cases of Bedrock breaking
This is still covered under the setting to re-enable this.
2020-06-20 14:54:17 -04:00
Mariell 01ce3cb0a5
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 14:46:57 -04:00
Aikar b68ae39f9a
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:37:25 -04:00
Aikar 1f181040dd
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 14:25:11 -04:00
Aikar 2a3cb3753f
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 14:25:11 -04:00
Aikar 3dc5ad343f
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:38:59 -04:00
Aikar a70618cd5c
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 22:07:19 -04:00
Aikar 92d1247ee3
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 9ffaa44ae1
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 f860969175
Add unsupported-settings section to config (piston tnt dupe config option) (#3565) 2020-06-15 12:29:39 -04:00
Shane Freeder 83e832b44c
[CI-SKIP] Rebuild patches 2020-06-14 20:46:12 +01:00
Spottedleaf 91459fe514
Fix piston physics inconsistency (fix tnt dupers) (#3544)
Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>
2020-06-12 03:30:30 -04:00
David Slovikosky 8c41ac1c98
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 03:30:18 -04:00
avaruus1 cffe4c075e
Scheduling an async task timer creates a non-repeating task (#3543) 2020-06-11 19:32:48 -04:00
Aikar e224f0bdab
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 c7112d0661
Ensure chunk gen tasks return to main thread before completing futures 2020-06-10 23:40:23 -04:00
Aikar a72d4bb2ab
Improve chunk loading speed and prioritization further - Fixes #3530 2020-06-10 09:24:17 -04:00
Aikar 64666dc8b6
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-10 01:20:57 -04:00
Aikar 146b99080c
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:05:43 -04:00
Aikar c5c909c9af
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:15:36 -04:00
stonar96 de6dfedfef
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 04:12:20 -04:00
Aikar 531c4b3fd1
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 b2d81e21c5
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 24a2e80431
Improve Login to use Urgent priority - improves login chunk load times 2020-06-08 21:47:39 -04:00
Aikar 9dfe1321d5
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.
2020-06-08 18:17:11 -04:00
Aikar f0409edcd7
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 700070c5e6
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 34e5942bf0
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 5e3bacbced
Ensure ThreadDeath propagates fully - Fixes #3521 2020-06-08 11:54:12 -04:00
Aikar 9fa6ba267c
Optimize Light Engine
Massive update to light to improve performance and chunk loading/generation.

1) Massive bit packing/unpacking optimizations and inlining.
  A lot of performance has to do with constant packing and unpacking of bits.
  We now inline a most bit operations, and re-use base x/y/z bits in many places.
  This helps with cpu level processing to just do all the math at once instead
  of having to jump in and out of function calls.

  This much logic also is likely over the JVM Inline limit for JIT too.
2) Applied a few of JellySquid's Phosphor mod optimizations such as
  - ensuring we don't notify neighbor chunks when neighbor chunk doesn't need to be notified
  - reduce hasLight checks in initializing light, and prob some more, they are tagged JellySquid where phosphor influence was used.
3) Optimize hot path accesses to getting updating chunk to have less branching
4) Optimize getBlock accesses to have less branching, and less unpacking
5) Have a separate urgent bucket for chunk light tasks. These tasks will always cut in line over non blocking light tasks.
6) Retain chunk priority while light tasks are enqueued. So if a task comes in at high priority but the queue is full
   of tasks already at a lower priority, before the task was simply added to the end. Now it can cut in line to the front.
   this applies for both urgent and non urgent tasks.
7) Buffer non urgent tasks even if queueUpdate is called multiple times to improve efficiency.
8) Fix NPE risk that crashes server in getting nibble data

Fixes #3489
Fixes #3363
2020-06-07 20:31:29 -04:00
Aikar dfd3848ee6
Use seed based lookup for Treasure Maps - Fixes lag from carto/sunken maps 2020-06-07 19:28:58 -04:00
Aikar 74dcb3c923
Revert "Fix enchantment costs (#3519)"
This reverts commit 6d72ea1659.
2020-06-07 19:13:41 -04:00
Alexander 6d72ea1659
Fix enchantment costs (#3519) 2020-06-07 17:53:49 -04:00
Max Lee 68cc8d79b2
Maps shouldn't load chunks (#3518)
Previously maps would load all chunks in a certain radius depending on
 their scale when trying to update their content. This would result in
 main thread chunk loads when they weren't really necessary, especially
 on low view distances or "slow" async chunk loads after teleports or
 other prioritisation.

 This changes it to only try to render already loaded chunks based on
 the assumption that the chunks around the player will get loaded
 eventually anyways.
2020-06-07 16:57:52 -04:00