Commit Graph

4156 Commits

Author SHA1 Message Date
Aikar
4d3f9e2033
Fix issue in last build with null task timings 2019-03-26 01:31:59 -04:00
Aikar
e055103d3d
Improve Timings stack protection more
Ensures in more places that exceptions will not corrupt the Timings stack.

Timings will now better report stack corruption and auto repair itself too.
2019-03-26 00:58:23 -04:00
Aikar
f5e7717214
Optimize Bukkit <-> NMS Mapping tables and legacy conversion
Use O(1) patterns for mapping conversions to improve plugin performance.
Optimize collections used by legacy plugin conversion

This should improve plugin performance across the board
on Paper for both Modern and Legacy Plugins.

Also log how long building those tables takes...
2019-03-26 00:07:20 -04:00
Shane Freeder
364a53e37a Ensure that TimedEventExecutor timings are closed (Fixes #1918)
pre this, any event handler firing an exception would leave the timings
open, causing the timings stack to be corrupted
2019-03-26 00:56:16 +00:00
Aikar
e8bbfbfddf
[CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2019-03-24 23:51:44 -04:00
Shane Freeder
8e9ec4b058 Don't update entity trackers for worlds without players
PlayerList#moveToWorld already untracks the player from the player list,
meaning that we do not need to worry about this untracking players
who've left the world, The server also untracks a player during
disconnect, handing yet another case.

If we don't need to untrack players who've left the world, it should be
reasonably save to do this, as we're not going to be performing any
server->client updates here, which is what this code is intended to do,
and all players should be untracked.
2019-03-24 23:55:05 +00:00
Aikar
d4f193e15f
Improve nullability changes from last commit about getWorld 2019-03-24 19:33:26 -04:00
Aikar
4ae1989c4f
Restore some SANITY around nullability annotations
Some of these were wrong (scoreboard manager), others are counter to
everything everyone expects (Locations world being null, which wasnt ever safe EVER)
others are just too noisy.

Replace some with Contract to get rid of the nullability constraint and go back to
the old days of IDE not considering it strictly one way or the other.

Also, stop requiring annotations on package-private.

Introduces the next Developer Perk for Paper-API: Your plugin isn't yellow anymore.

Also fixed random dupe code in ensureServerConversions that got mistakenly set in the update.
2019-03-24 19:13:07 -04:00
Aikar
b1777724a5
Add the unnecessary annotation
cmon, that wasn't even API.

i've updated my IDE to now not skip tests :(
2019-03-24 18:32:08 -04:00
Aikar
95941afd59
missed a spot for pickupDelay fix 2019-03-24 18:15:39 -04:00
Aikar
76fab035d3
don't go below 0 for pickupDelay, breaks picking up items
vanilla checks for == 0

Fixes #1911
2019-03-24 18:12:56 -04:00
Aikar
424b05051b
update metadata refresh approach
same fix, less work needed to do it
2019-03-24 17:48:22 -04:00
Aikar
4c807f929e
Timings Improvements
use a better stack for managing timing tree relationships
remove unnecessary synchronization (i forgot HANDLERS is only touched on main)

this should hopefully resolve any data integrity concerns
2019-03-24 17:47:23 -04:00
Aikar
5fc918bbf1
include chunk gen mobs in natural counting, fix some spawn reasons 2019-03-24 14:11:06 -04:00
Joel Paulien
830137acbe Add PlayerPostRespawnEvent (#1622) 2019-03-24 13:50:42 -04:00
Mark Vainomaa
556259dd97 Add GS4 query event (#1906) 2019-03-24 13:01:31 -04:00
Johnny Cao
0f82626d76 Fixes issues with player interaction preventing metadata from being updated for other players (#1896) 2019-03-24 13:00:42 -04:00
Aikar
76d2a4cb8f
Add a config for mob spawn change, really shouldn't use it
turning this to true allows 1 player to deny other players the ability
to have mobs spawn. It really is a bad idea and reverts back to iffy
mob spawn limits where mob farms in the world stops natural spawns
from occuring.

Really recommend resorting to different solutions than ever using this config.
2019-03-24 12:59:28 -04:00
Aikar
458aa79f63
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:
451bd74e Use gson for decoding version command

CraftBukkit Changes:
51100db8 SPIGOT-4678: Fix placing signs in certain circumstances
2019-03-24 12:33:39 -04:00
Zach Brown
c5ef31cb0d
Restore lost player cooldown APIs
Accidentally removed in 0976d52bbd
2019-03-24 13:16:59 -04:00
Aikar
5368451566
Only count Natural Spawned mobs towards natural spawn mob limit
This resolves the super common complaint about mobs not spawning.

This was ultimately a flaw in the vanilla count algorithim that allows
spawners and other misc mobs to count against the mob limit, which are
not bounded, and can prevent the entire world from spawning new.

I believe Bukkits changes around persistence may of actually made it
worse than vanilla.

This should fully solve all of the issues around it so that only natural
influences natural spawns.
2019-03-24 01:05:20 -04:00
Aikar
e58c65bb37
Entity#getEntitySpawnReason
Allows you to return the SpawnReason for why an Entity Spawned

Pre existing entities will return NATURAL if it was a non
persistenting Living Entity, SPAWNER for spawners,
or DEFAULT since data was not stored.
2019-03-24 01:05:20 -04:00
Aikar
81ff6e67f5
Fix a case where mob spawning could load/gen chunks 2019-03-24 01:05:20 -04:00
Aikar
b587621ad9
[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:
d65a2576 SPIGOT-4674: Allow spawning hanging on top/bottom of block
2019-03-22 05:36:44 -04:00
Aikar
e50b4f608d
[Auto] Updated Upstream (Bukkit)
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:
0eaf10f1 Add getObject methods to ConfigurationSection
2019-03-21 06:21:43 -04:00
kashike
2e4520d902 Use proper max length when serialising BungeeCord text component 2019-03-20 21:20:56 -07:00
Shane Freeder
ea855e2b46 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

Developers!: You will need to clean up your work/Minecraft/1.13.2 folder
for this

Also, restore a patch that was dropped in the last upstream

Bukkit Changes:
279eeab3 Fix command description not being set
96e2bb18 Remove debug print from SyntheticEventTest

CraftBukkit Changes:
d3ed1516 Fix dangerously threaded beacons
217a293d Don't relocate joptsimple to allow --help to work.
1be05a21 Prepare for imminent Java 12 release
a49270b2 Mappings Update
5259d80c SPIGOT-4669: Fix PlayerTeleportEvent coordinates for relative teleports

Spigot Changes:
e6eb36f2 Rebuild patches
2019-03-20 01:55:16 +00:00
Shane Freeder
0976d52bbd 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

Please note that this build includes changes to meet upstreams
requirements for nullability annotations. While we aim for a level of
accuracy, these might not be 100% correct, if there are any issues,
please speak to us on discord, or open an issue on the tracker to
discuss.

Bukkit Changes:
9a6a1de3 Remove nullability annotations from enum constructors
3f0591ea SPIGOT-2540: Add nullability annotations to entire Bukkit API

CraftBukkit Changes:
8d8475fc SPIGOT-4666: Force parameter in HumanEntity#sleep
8b1588e2 Fix ExplosionPrimeEvent#setFire not working with EnderCrystals
39a287b7 Don't ignore newlines in PlayerListHeader/Footer

Spigot Changes:
cf694d87 Add nullability annotations
2019-03-20 00:31:18 +00:00
Zach Brown
c3c889523f
Stop loading entity bounding boxes from NBT
This may be creating more issues than it's solving
cc GH-1806
2019-03-15 23:25:32 -04:00
Mark Vainomaa
bf2be652f0 Add WhitelistToggleEvent (#1899) 2019-03-13 16:51:42 -04:00
Aikar
988887d2b0
[Auto] Updated Upstream (Bukkit)
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:
f802d0a5 Use TestPlugin for ConversationTest
2019-03-08 23:16:44 -05:00
Aikar
7d843554e9
[Auto] Updated Upstream (Bukkit)
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:
77cbdc61 SPIGOT-4651: MerchantRecipe.setIngredients() allows more than 2 ingredients
2019-03-07 12:36:43 -05:00
Shane Freeder
2828dd1c67 Revert "Don't update snapshot blockstates" (Fixes #1882)
CraftBukkit already checks that we're not trying to copy data
back to the same snapshot, reverting this fixes the ability to
properly update non-snapshot blockstates
2019-03-07 17:21:02 +00:00
Zach Brown
825d17c326
Update upstream B/CB
--- work/Bukkit
Submodule work/Bukkit 96e09e50..0b95b68f:
  > SPIGOT-4650: Charging API for Vex

--- work/CraftBukkit
Submodule work/CraftBukkit f102d882..77ca7ca0:
  > Rebuild patches
  > Improve damage handling of dead entities
  > SPIGOT-4646: Test + fix InventoryWrapper.getContents
  > SPIGOT-4650: Charging API for Vex
2019-03-06 00:46:21 -05:00
Zach Brown
9fdcbf5c9b
[dev] Make init script use different author names
Lets us differentiate whats Vanilla and whats from CB at a glance in IJ.
2019-03-06 00:14:07 -05:00
Phoenix616
2c9924816f
Improve damage handling of dead entities
Manually applied because of upstream patch file issues.
Upstream 73597ed865
2019-03-06 00:00:34 -05:00
Aikar
9f8a17af2a
[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:
f102d882 SPIGOT-4647: Properly cancel VehicleDamageEvent
ec17d07d Use getBukkitEntity for ExplosionPrimeEvent instead of creating new one
2019-03-05 00:46:37 -05:00
Zach Brown
ffd51cbe2d
Set Zombie lastTick at start of drowned conversion
Fixes GH-1887

Prior to this change, the lastTick value for zombies would be set to
their initial spawn tick. This caused the drowned conversion process to
immediately occur rather than observing the vanilla delay.

Easy fix, just make sure its set again when the process actually starts.

And no, this change has absolutely nothing to do with the other thing.
That's been fixed and remains fixed.
2019-03-04 02:27:27 -05:00
Zach Brown
814356359a
Fire PlayerArmorChangeEvent for more cases 2019-03-03 15:22:30 -05:00
Aikar
f0d45d4eab
Fix crops not popping when no plugin listens to physics 2019-03-03 12:22:24 -05:00
Spottedleaf
e5f0d0f5dc
Fix World#getChunkAtAsync(Location) variants incorectly calculating chunk x
The blockX needs to be floored before converted to int, as float -> integer
operations are truncation. (i.e -0.5 -> 0, we want -0.5 -> -1)
2019-03-02 18:54:20 -05:00
Aikar
21ee8800f8
Remove left over debug from entity slices 2019-03-02 18:52:16 -05:00
Aikar
7e3169e3de
MC-145260: Fix Whitelist On/Off inconsistency - Fixes #1880
Mojang stored whitelist state in 2 places (Whitelist Object, PlayerList)

some things checked PlayerList, some checked object. This moves
everything to the Whitelist object.
2019-03-02 16:23:06 -05:00
Aikar
40e666b44a
Add config to disable light recalculation optimizations
I really don't know how this could break things with light, but wanted to
let it be an option so we can try turning it off to fix some light bug reports
2019-03-02 16:22:01 -05:00
Aikar
a684cde66b
Handle Excessive Signs in Chunks creating too large of packets
Also adds a limit to stop sending Sign data to client after 500
signs per chunk to limit client lag.

Use -DPaper.excessiveSignsLimit=500 to configure that limit, or -1
to disable the limit and let your players be abused.

fixes #1878
2019-03-02 15:30:00 -05:00
Aikar
420ce3aaed
don't check convert signs boolean every sign save
that lookup isn't "cheap", and synchronizes so cache it to a boolean instead
2019-03-02 15:29:09 -05:00
Aikar
58398da145
Remove outbound string length limits on signs, improve codepoint logic
now 80 chars counts multi sized code points the same so 80 chinese
characters would be allowed too.

Removed outbound limit as it doesn't solve the chunk oversize problem.

proper fix for chunk sending in another patch next.
2019-03-02 15:28:04 -05:00
Zach Brown
40f5a94b8f
Remove unnecessary set init I missed in last 2019-02-28 20:04:14 -05:00
Zach Brown
24fed5a3a5
Fix CanDestroy CanPlaceOn on untagged items 2019-02-28 19:52:12 -05:00
Shane Freeder
025a590fbd Apply sign limits to signs text content 2019-02-28 18:07:14 +00:00