Commit graph

1662 commits

Author SHA1 Message Date
Automated
8407547d57 [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:
fc10dec5 Don't throw error on invalid data in CraftMetaItem.
2018-09-23 05:06:41 -04:00
BillyGalbreath
116a24f8b0 Fix NPE race condition in ServerListPingEvent
Fixes GH-1473

If a ping is responded to prior to the server sample being populated
(pre-tick as an example) it can result in an NPE.
2018-09-22 23:55:30 -04:00
Mark Vainomaa
d326b41a91 Create API for CanPlaceOn and CanDestroy NBT tags (#1015) 2018-09-23 06:30:54 +03:00
BillyGalbreath
6d7372445c Expose attack cooldown methods for Player (#1412) 2018-09-22 22:03:53 -05:00
BillyGalbreath
35d16a01a9 Add creative-arrow-despawn-rate (#1411)
* Add creative-arrow-despawn-rate
2018-09-22 21:48:30 -05:00
BillyGalbreath
c71f4578ab Add obfuscation helper (aikar's request) (#1468) 2018-09-22 21:28:16 -05:00
Zach Brown
241aecab11 Return null if we get a ParseException in IChatBaseComponent
Fixes GH-1471, GH-1474

As a result, data that no longer parses correctly will not crash the server
instead just logging the exception and continuing (and in most cases should
fix the data)

Player data is fixed pretty much immediately but some block data (like
Shulkers) may need to be modified in-game in order for it to re-save
properly

No more crashing though.
2018-09-22 15:58:13 -04:00
Senmori
4b2c696467 Apply Spigot PR 493 - Fixes #1469 2018-09-22 12:57:10 -04:00
Aikar
d7c0d502eb Fix bug in last commit 2018-09-22 12:28:38 -04:00
Aikar
d12c81860a Improve Light Queue and force enable it for all
There is no reason for the light queue to even be an option. This
enables the light queue for everyone.

This also improves the "can we still tick" time logic to always
check before running a light operation.

previously, we always executed at least 10 on the first world
(but not other worlds...), but we are seeing light take up some
heavy time, so improving that for now.

I've now also improved recheck gaps logic to happen at the end of all single block updates

This also prevents multiple gap checks, as previously if a tick skipped
the gaps check, the next tick would end up re-adding the entry again,
resulting in multiple gap checks.

This now just sets a marker "We need to recheck gaps" and will only occur
once.

This also should reduce chunk loads, as previously, we checked if
the neighbor chunks were loaded for the gap check, however those
neighbor chunks might of unloaded before the light queue operation
actually ran. Now, the neighbor chunk is done when the gap check
is being done, so it should avoid loading chunks.

Fixes #1466
Fixes #1431
2018-09-22 11:46:31 -04:00
Aikar
655668c630 Revert "All generated chunks should be loadable" - Fixes #1470
This reverts commit 6483b1a44f.
2018-09-22 11:32:38 -04:00
Automated
6fe45a6b09 [Auto] 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:
4db9e3dc Add API to locate structures

CraftBukkit Changes:
65bb2d0f Increase expiration time to 10 days
88a5346f Add API to locate structures.

Spigot Changes:
68acb93f Rebuild patches
2018-09-22 03:16:43 -04:00
Aikar
6fa6b67f02 Improve synchronization on ExpiringMap 2018-09-21 21:43:50 -04:00
Aikar
6483b1a44f All generated chunks should be loadable
Some chunks that need conversion may fail the loadChunks pass, and
end up entering the world gen code to finish processing.

We solved this on the API level before, but this needs to apply to
all chunk loads when gen=false
2018-09-21 16:59:20 -04:00
Aikar
4ce0958029 Rework Async Chunks API in prep for merge, add utility
This adds a new Future based, Consumer<Chunk> based, and ability
to control whether or not to generate to the Async Chunk API.

Until Async Chunks merges, these API's are still synchronous, but
this commit will allow plugins to start using the API's in use
with the Async Chunks beta.
2018-09-21 16:56:08 -04:00
Aikar
f2055183fc Sync Player Position to Vehicles
Player Positions could become desynced with their vehicle resulting
in chunk conflicts about which chunk the entity should really be in.
2018-09-21 11:37:38 -04:00
Aikar
497e66d1e6 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:
cbb4fc16 SPIGOT-1916: Attribute modifiers for ItemStacks

CraftBukkit Changes:
8164f4b2 SPIGOT-1916: Attribute modifiers for ItemStacks

Spigot Changes:
38536abd Rebuild patches
2018-09-21 11:29:17 -04:00
Aikar
61c0a1197f MC-134115: Fix Double Chest Chunk Conversion Error
A bug with double chest conversion would lead to data
loss from chunks if they crossed chunk boundries.

This fixes the issue.

It should now be safe to upgrade worlds to 1.13.1
2018-09-20 19:13:29 -04:00
Aikar
ec6b72db98 Fix concurrency issues with ExpiringMap 2018-09-20 11:43:32 -04:00
Automated
8e847f5300 [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:
26c89277 SPIGOT-4385: Clearer error for invalid generator-settings
2018-09-19 04:36:38 -04:00
Max Lee
06cbabf778 Add a separate PreSpawnerSpawnEvent (#1455)
This event extends the PreCreatureSpawnEvent and includes the position
of the spawner that spawned the entitiy. (similarly to how the
SpawnerSpawnEvent contains the spawner's BlockState).

This one doesn't include the state though as getting the block and
generating that snapshot is a bit wasteful.
2018-09-19 01:34:11 +02:00
Aikar
94dc83b4cf Make a copy for worldloadevent to avoid como's - fixes #1453
If you try to load a world inresponse to another world loading,
a concurrent modification exception will throw.

This avoids that by making a defensive copy of the list for the server init stage.

you might  want to do this if you want to guarantee your world loads
immediately after the vanilla worlds before another plugin has a chance
to load worlds during POST_WORLD plugin stage.
2018-09-18 19:30:49 -04:00
Aikar
3dfc0ef816 Optimize Server World Map
Minecraft moved worlds to a hashmap in 1.13.1.
This creates inconsistent order for iteration of the map.

This patch restores World management to be back as an Array.

.values() will allow us to iterate as it was pre 1.13.1 by
ArrayList, giving consistent ordering and effecient iteration performance.

KeySet and EntrySet iteration is proxied to the List iterator,
and should retain manipulation behavior but nothing should be doing that.

Getting a World by dimension ID is now back a constant time operation.

Hopefully no other plugins try to mess with this map, as we are only handling
known NMS used methods, but we can add more if naughty plugins are found later.

Multiverse was tested with this and no breakage.
2018-09-18 01:33:40 -04:00
Aikar
e3c82e72c0 Support Overriding World Seeds - Closes #350
Allows you to add to paper.yml

seed-overrides:
  world_name: some seed value

This will ignore every where a seed is set/created/loaded and force
a world to use the specified seed.

This seed will end up being saved to the world data file, so it is
a permanent change in that it won't go back if you remove it from paper.yml
2018-09-17 23:38:17 -04:00
Aikar
bf7742bf96 Use BigDecimal to improve accracy of TPS results - long live 20 TPS!
It's always been commonly said to 'ignore' that TPS was '19.X', that
it was fine.

I suspect that the inaccuracy of floating point math resulted in us
losing precision over time, making it difficult to actually get back to 20,
as you know the fun 0.1 + 0.1 ... 9 more times != 1 problem.

BigDecimal supports working with doubles with higher precision.

This change makes it so our RollingAverage class maintains all of the data
using BigDecimal and using BigDecimal arithematic operations.

This ensures we have extremely high precision, enabling us to
actually be able print '20 TPS' when TPS is perfect.
2018-09-17 22:32:37 -04:00
Brokkonaut
af737481c2 The disconnect on packet spam must be called sync (#1452)
And it was called twice, probably forgotten in the patch.
2018-09-18 04:04:47 +02:00
Aikar
fda3e873f6 Ensure mobs don't spawn out of world border
this is originally what I thought #1333 was, but wasn't, but this is still valid fix
2018-09-17 21:50:02 -04:00
Tassu
97fc12e095 Implement furnace cook speed multiplier API. (#1437)
Adds methods `Furnace#getCookSpeedMultiplier()` and
`Furnace#setCookSpeedMultiplier(double)`.

This PR is basically 3516ae34ef for 1.13.

A test plugin may be found [here](https://gist.github.com/supertassu/fade0cce946261732c6299e1ec89290e).
2018-09-18 01:53:27 +03:00
Automated
7198dc21b8 [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:
4b9a93ec Add BatToggleSleepEvent

CraftBukkit Changes:
a222e4a2 Implement BatToggleSleepEvent
2018-09-17 03:06:34 -04:00
Automated
8eb8e1853c [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:
79ada744 SPIGOT-4382: Fix damage_absorbed statistic
2018-09-17 02:46:39 -04:00
Aikar
7011002f6a I dedicate this to Billy, the one and true dolphin rider
Fixes a data fixer bug
2018-09-17 00:41:20 -04:00
Aikar
bd4927d174 more improvements to expiring map stuff 2018-09-16 03:21:52 -04:00
Aikar
a6792af72a prevent crashes on expiring map desync, dont spam logs 2018-09-16 02:57:22 -04:00
Aikar
c041a06904 Override some more methods in ExpiringMap to ensure fix
Seen some warnings of leak still being detected.

I'm not sure what's missing, so I'm adding nearly everything.
2018-09-16 01:04:40 -04:00
Aikar
ac9a6783a3 fix bug in last bug fix, recursion! 2018-09-16 00:26:32 -04:00
Aikar
e5986b1576 Fix major memory leaks in ExpiringMap
computeIfAbsent would leak as the entry
was never registered into the ttl map

This fixes that ,as well as redesigns cleaning to
not run on every manipulation, and instead to run clean
once per tick per expiring map.
2018-09-16 00:01:48 -04:00
Aikar
067d7e4f86 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:
94b8708a SPIGOT-4373: Item display colours are white by default
61668436 SPIGOT-4378: Fix mistakenly included code
2018-09-15 19:13:40 -04:00
Aikar
fe975151cb Fix loop risk in mob spawning around unloaded chunks
When a mob was about to load a chunk to try to spawn in, we did not
increment the attempt counter, resulting in it being stuck in the mob
spawn loop for a long time and hanging servers.
2018-09-15 13:46:01 -04:00
Aikar
69b80568e9 Concurrency and Performance Improvements to DataFixers
Found some more unsafe operations in DataFixers.

Also replaced quite a few bad uses of Map.containsKey

containsKey is a common newbie mistake that "reads" cleaner, but
results in double the performance cost of all map operations as
containsKey in MOST cases where null values are not used is identical to get() == null

Considering how deep datafixers go in call stacks, with tons of map lookups,
this micro optimization could provide some gains.

Additionally, many of the containsKey/get/put style operations were
also a concurrency risk, resulting in multiple computation/insertions.
2018-09-15 13:22:14 -04:00
Aikar
47ff1783bc 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:
47b9cf30 SPIGOT-4372: LightningStrikeEvent cause API
a9ceda75 Include the plugin channel name in the exception message

CraftBukkit Changes:
a4bdecff SPIGOT-4372: LightningStrikeEvent cause API
34caaf6d SPIGOT-4371: Trident damaged when event cancelled
97315374 SPIGOT-4369: Handle cancelled trident event
bf1c8273 SPIGOT-4370: Remove vehicle if its passenger spawn event was cancelled

Spigot Changes:
6b015b4b SPIGOT-4370: Remove vehicle if its passenger spawn event was cancelled
2018-09-15 12:10:26 -04:00
Aikar
79562c8f7a MC-136886: Don't load chunks looking for features - Fixes #1438
I'm sure a few servers have crashed due to this.
2018-09-13 22:36:38 -04:00
Aikar
1729151c19 Missed a case where fish could load chunks 2018-09-12 21:58:38 -04:00
Aikar
f8f640518e Optimize Biome Mob Lookups for Mob Spawning
Uses an EnumMap as well as a Set paired List for O(1) contains calls
2018-09-12 21:50:34 -04:00
Aikar
eef452ee12 Prevent fish from loading/generating chunks 2018-09-12 21:25:02 -04:00
Aikar
75ad3eecdc Prevent mob spawning from loading chunks 2018-09-12 21:18:31 -04:00
Aikar
e0374d0ada Fix pathfinding NPE - Fixes #1435 2018-09-12 21:17:59 -04:00
Aikar
0b5eace455 ensure world is set for pathfinders 2018-09-11 19:10:14 -04:00
Zach Brown
f9d11c8af7 Merge branch 'master' into pre/1.13 2018-09-11 17:48:17 -04:00
Zach Brown
463e6dac06 Ensure entity is always dying before Death Event
Prior to this it was possible for plugins to put the server into a never
ending recursive loop until it eventually killed itself.

Fixes GH-1432
2018-09-11 17:38:57 -04:00
Aikar
36848f4949 Prevent pathfinding and zombie AI from loading chunks 2018-09-11 00:07:19 -04:00
Aikar
0631cf3192 Prevent fluids from loading chunks - major performance boost 2018-09-10 23:38:16 -04:00
Aikar
6711724fae 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:
7033f180 Hoist out synchronisation from ChunkRegionLoader

Spigot Changes:
500ff5d4 Rebuild patches

Additional Paper changes:
Fixed Versioned World Folders to not synchronize on ChunkRegionLoader
Optimized Save Queue even more to use a Long2ObjectOpenHashmap for save map
Add World#getXIfLoaded to IWorldReader to expose it to more places
2018-09-10 22:38:42 -04:00
Aikar
b86056bae2 Mob Pathfinding API
Adds an API to allow plugins to instruct a Mob to Pathfind to a Location or Entity

This does not do anything to stop other AI rules from changing the location, so
it is still up to the plugin to control that or override after another goal changed
the location.
2018-09-09 21:50:12 -04:00
Aikar
14d6ee0495 Rename some methods per discussion in channel 2018-09-09 21:45:54 -04:00
Zach Brown
366d300450 Stop using transaction id in tab completions
Fixes GH-1417, GH-1424 (probably).

There are other issues in this area, including just how much a mess it
is but we will get to those when we get to those.
2018-09-09 17:51:25 -04:00
Aikar
d039f43117 Forgot to rebuild patches after I fixed things in upstream update 2018-09-09 15:29:22 -04:00
Aikar
2041815962 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:
3e2858f6 SPIGOT-4352: MoistureChangeEvent
5466e281 Add BlockDispenseArmorEvent

CraftBukkit Changes:
3123a069 SPIGOT-4352: MoistureChangeEvent
226db0ea Add BlockDispenseArmorEvent
cd367fa4 Fix bad thread safety in ChunkRegionLoader
3f5ca5f2 SPIGOT-4355: Improve cancelling VehicleEnterEvent

Spigot Changes:
145a37ae Rebuild patches
3f2423cc Rebuild patches
2018-09-09 15:26:56 -04:00
Rick
e730505bf0 Fix view distance API (#1419) 2018-09-09 20:38:27 +02:00
Aikar
75d51d6f9f getextPointIndex was not needing to be boxed/nullable 2018-09-09 14:36:51 -04:00
Aikar
0ae2903d8a Mob Pathfinding API
Adds an API to allow plugins to instruct a Mob to Pathfind to a Location or Entity

This does not do anything to stop other AI rules from changing the location, so
it is still up to the plugin to control that or override after another goal changed
the location.
2018-09-09 12:58:47 -04:00
BillyGalbreath
d28aadb2bd Allow chests to be placed with NBT (#1425)
This restores vanilla behavior of allowing placed chests to retain any Block Entity Tag data.

Upstream added filtering to chests, breaking vanilla behavior, and preventing use of loot table chests as a reward mechanism.

Upon review, we can find no security risk in allowing players to place a chest with NBT data, as Spawn Eggs, Minecarts, command blocks etc all have their own checks.

Additionally, survival mode players, non op players can not create these items anyways. If a player has Creative or Op, they already have high levels of access.

Plus, Chests aren't the only inventory that could have free form items, so this filter was insufficient anyways.
2018-09-09 11:53:23 -05:00
Aikar
68b25624d8 Remove deadlock risk in firing async events
The PluginManager incorrectly used synchronization on firing any event
that was marked as synchronous.

This synchronized did not even protect any concurrency risk as
handlers were already thread safe in terms of mutations during event
dispatch.

The way it was used, has commonly led to deadlocks on the server,
which results in a hard crash.

This change removes the synchronize and adds some protection around enable/disable
2018-09-09 01:04:29 -04:00
Zach Brown
09ca94cb13 Merge branch 'master' into pre/1.13 2018-09-08 19:12:58 -04:00
Automated
97de438dd2 [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:
310dc809 Add ServerLoadEvent

CraftBukkit Changes:
19d654bd Add ServerLoadEvent
2018-09-07 23:49:37 -04:00
Max Lee
4ff931a021 Improve death events (#1362)
* Improve death events

This adds the ability to cancel the events and to specify the sound.
2018-09-08 02:14:48 +02:00
Automated
21bbd524c5 [CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2018-09-07 20:06:35 -04:00
BillyGalbreath
3d3333ff23 Fix #1420 (#1421) 2018-09-07 19:03:38 -05:00
Aikar
5ae4306581 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:
632449b6 SPIGOT-4349: End portal has wrong TeleportCause
3eb8af23 SPIGOT-4348: Use online player for setting skull owner if possible
2018-09-06 22:08:35 -04:00
Zach Brown
3d0c4bd860 MC-2025 - Save entity AABB to prevent fp wobble
This work is largely a result of the analysis done on the Mojang issue
tracker. See patch header for additional information.
2018-09-04 19:18:06 -04:00
Aikar
a1590d9769 Fix yet another issue with concurrency with datafixers 2018-09-04 01:50:14 -04:00
Aikar
e24d823e5f Fix another case of concurrency issue in data fixers 2018-09-04 00:02:38 -04:00
Aikar
0753080fe7 Fix concurrency issues in DataFixers
We are seeing issues with DataFixers being not thread safe in async chunks
and even in some spigot packet sending code.

There are a few more global objects that are mutated that need to
be synchronized to be safe for use over multiple threads.

There may be more cases, but these are extremely obvious ones.
2018-09-03 22:36:41 -04:00
BillyGalbreath
1ee368448e Add ray tracing methods to LivingEntity (#1410)
This method will return the Block a player is looking at while taking into consideration the AABB of each block in the path.

For example, you can look through the 1/4 space of air in a Stair block and get the block behind it instead of the Stair block you are looking past.
2018-09-03 18:59:54 -05:00
Aikar
62c2210d6c Check that phantom spawned uuid is set for save/load
Fixes #1408

Spawn eggs wont have a player set
2018-09-03 15:22:41 -04:00
Automated
f100b5d921 [CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2018-09-03 12:31:32 -04:00
Aikar
f5e95be322 Remove Pass World Tile Entities patch
Some things break from this, while this was trying to fix other things
since the thing this patch tried to fix still had problems and required
yet another fix, just going to remove this patch.
2018-09-03 12:23:25 -04:00
Aikar
d76de615d5 fix typo in patch file 2018-09-03 10:38:28 -04:00
Aikar
06787e40db Merge remote-tracking branch 'origin/master' into pre/1.13 2018-09-03 10:32:30 -04:00
Automated
a0e356e9ae [CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2018-09-03 10:11:35 -04:00
willies952002
18aaaa150c Add Force-Loaded Chunk API (#1387) 2018-09-03 10:05:55 -04:00
Gergely Sarkozi
4e4a4dbf5e Cached, local-class-supporting task names (#1409)
Fixes issue #1177 

`MapMaker#weakKeys()` makes the `Map` use identity comparison for the keys, while also enabling the automatical removal of dropped classes from the cache.

The changes are the same as in #1399, except now the original patch is modified instead of a new one being created.
2018-09-03 16:04:50 +02:00
Automated
86798d2ec5 [Auto] 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:
8ab814cd Add getFacing method to get the current cardinal direction an entity is facing.

CraftBukkit Changes:
ee5efeb0 Add getFacing method to get the current cardinal direction an entity is facing.

Spigot Changes:
0ede7d0e Rebuild patches
2018-09-03 04:14:40 -04:00
Spottedleaf
2375f1fef2 Make CraftWorld#loadChunk(int, int, false) load unconverted chunks (#1407) 2018-09-02 20:40:14 -07:00
Automated
b9e235e5d2 [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:
3037eb3e BlockSpreadEvent for Kelp
6cf60193 SPIGOT-4340: Improve client bug workaround
2018-09-02 21:44:27 -04:00
Shane Freeder
84993e3fca fix newlines in spigot tab list API
Spigots implementation around the header/footer strips newlines from the
header/footer, this patch allows the tab list header/footer to retain newlines.
2018-09-01 11:33:50 +01:00
Shane Freeder
1294a18cf9 fix paper tab list API 2018-09-01 11:09:13 +01:00
Aikar
e45e15cfb0 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:
dc69d2b3 Fix unbound shaped recipe ingredients
2018-09-01 00:30:04 -04:00
Aikar
e82ef9ec05 Switch to using ForgeFlower for Paper Only mc-dev imports
ForgeFlower is better than Spigots FernFlower at decompiling the source.

However, in order to maintain the CraftBukkit patches, we must keep
using spigots for the primary.

However, for any file that we import on top of Spigots imported files
there is nothing stopping us from using better decompiled files.

So these changes will use ForgeFlower to maintain a better set of
decomped files, so anything we add on top of Paper can start off
in a better spot.
2018-08-31 18:56:57 -04:00
Aikar
c832bed57d Pull the last upstream updates 2018-08-31 11:51:41 -04:00
Aikar
f942c53fd8 Don't double add golems to world - Fixes #1385
spawnCreature adds to world now
2018-08-30 20:57:22 -04:00
Zach Brown
8eef3b43f3 Ensure Creeper fuseTicks are still incremented
Fixes GH-1389

Because we are no longer enabling creepers to rapidly change status
every tick, in order to prevent event spam, their datawatcher value
ends up negative.

This datawatcher value is used to increment the fuseTicks within the
creeper tick. Because the value is negative, it is constantly zero'd
and therefore never incremented, instead acting the same as creepers
that aren't ignited.

We can just as easily increment this ourselves when the creeper is
ignited, so that's what we'll do.
2018-08-29 22:55:21 -04:00
Aikar
137a05af75 Optimize getChunkIfLoaded type calls
Uses optimized check to avoid major locks and large method.

Will improve inlining across many hot methods.

Improve getBrightness to not do double chunk map lookups.
2018-08-29 22:12:17 -04:00
Zach Brown
34033480d7 Add Inventory#removeItemAnySlot
Closes GH-1360

This behaves identically to Inventory#removeItem, except it
searches all slots rather than just the storage contents.
2018-08-29 21:41:39 -04:00
Shane Freeder
b39ff2b12d Update CB 2018-08-29 17:26:24 +01:00
Automated
fe8c056c26 [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:
9ca2772d API to prevent PlayerBedLeaveEvent from changing a player's spawn location

CraftBukkit Changes:
1486c295 API to prevent PlayerBedLeaveEvent from changing a player's spawn location
2018-08-29 05:19:27 -04:00
Automated
07d004a3c9 [CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2018-08-28 23:16:31 -04:00
Shane Freeder
fb13965fbf Merge branch 'master' into pre/1.13 2018-08-29 04:07:50 +01:00
Aikar
7466082302 Optimize Chunk Height Maps
Use an EnumMap for fast key access
2018-08-28 22:12:27 -04:00
Aikar
e9937293f8 Optimize Chunk#getPos
get rid of object creation
2018-08-28 21:36:42 -04:00
Automated
8ac070c78d [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:
97368963 Update ChunkSnapshot docs about valid coordinates

CraftBukkit Changes:
3831ae62 SPIGOT-4325: Validate coordinate arguments in Chunk/ChunkSnapshot
2018-08-28 17:49:36 -04:00
Shane Freeder
db5a924b1c Fixup AsyncTabCompletionEvent handling 2018-08-28 19:45:14 +01:00
Automated
dc88835ee3 [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:
9636bb8d SPIGOT-4319: Conduit damage should be a block event
2018-08-28 07:09:44 -04:00
Daniel Bethel
9952257225 Add timings support to command functions (#1379) 2018-08-27 18:30:58 -04:00
BillyGalbreath
7bc21c03e9 Fix explosions not doing damage to entities (#1380) 2018-08-27 12:59:07 -05:00
Zach Brown
4cc2b3eea5 Update upstream CB 2018-08-27 11:07:22 -04:00
BillyGalbreath
f692535133 Add More Creeper API (#1372) 2018-08-27 02:01:09 -05:00
BillyGalbreath
f2e8288481 Add PhantomSpawnEvent (#1375) 2018-08-27 01:51:20 -05:00
Aikar
09d1dd17a0 Disable Vanilla last chunk access cache, use ours
Also fixes some bugs in ours

Ultimately they both are near the same, but ours is behind the synchronized gate.

Mojangs is mixed behind 2 different synchronization contexts (chunks can lock 2 different objects)

Mojang also blindly unsets the ref on any chunk unload, not just if its the one being pointed to.
2018-08-27 00:15:12 -04:00
Aikar
b3f8279528 MC-134668: Remove bad synchronized block from FileIOThread
This is causing the main thread to be blocked still.
2018-08-26 22:09:10 -04:00
Aikar
1fa9e325c1 Fix mob spawn limits 2018-08-26 21:21:28 -04:00
Aikar
05dfa62d32 Paper 1.13.1 Update
Updated Upstream (Bukkit/CraftBukkit/Spigot)

Bukkit Changes:
2dcc44dc SPIGOT-4307: Fix hacky API for banners on shields
e0fc6572 SPIGOT-4309: Add "forced" display of particles
efeeab2f Add index to README.md for easier navigation
f502bc6f Update to Minecraft 1.13.1

CraftBukkit Changes:
d0bb0a1d Fix some tests randomly failing
997d378d Fix client stall in specific teleportation scenarios
b3dc2366 SPIGOT-4307: Fix hacky API for banners on shields
2a271162 SPIGOT-4301: Fix more invalid enchants
5d0d83bb SPIGOT-4309: Add "forced" display of particles
a6772578 Add additional tests for CraftBlockData
ce1af0c3 Update to Minecraft 1.13.1

Spigot Changes:
2440e189 Rebuild patches
4ecffced Update to Minecraft 1.13.1
2018-08-26 14:11:49 -04:00
Automated
338c730c10 [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:
162bda93 Add note about 1.13.1
2018-08-26 00:04:29 -04:00
Colin Godsey
ae2508995d Re-add Configurable speed for water flowing over lava
Closes GH-1227
2018-08-25 22:57:30 -04:00
Zach Brown
00b551913b Rebuild and simplify map call 2018-08-25 22:48:24 -04:00
Automated
c57bfef1e9 [CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2018-08-25 22:41:32 -04:00
stonar96
eb26c054f7 1.13: Readd Anti-Xray (#1366)
* Decompile fixes for ProtoChunk and DataPaletteBlock

* Do changes

* final change

* more changes

* First Anti-Xray build

* Fixes and cleanups

* Cleanups and renamings

* Cleanups renamings and move OBFHELPERs to 0004-MC-Utils.patch

* Implement obfuscation for newly generated chunks

* Implement chunk edge mode

* Implement block updates

* Cleanups

* Rebuild patches
2018-08-26 04:37:58 +02:00
Aikar
6124bde288 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:
f41aae40 Remove reflection from CraftBlockData
2018-08-25 00:20:58 -04:00
Zach Brown
438e10fb48 Merge branch 'master' into pre/1.13 2018-08-24 11:57:11 -04:00
BillyGalbreath
67eef6701b 1.13: Slime Patherfinder Events (#1246)
Replaces PR #1161 for 1.13

Resolves #930 

Adds new slime pathfinder related events. All events can be cancelled.
- `SlimePathfindEvent` is the base event of all added events. Cancelling this event will cancel all pathfinders.
- `SlimeWanderEvent` is called when slimes wander around by either swimming or moving/jumping forward. Cancelling this event will prevent slimes from moving around and jumping, but they will still look around and target players.
- `SlimeSwimEvent`is called when slimes are swimming in water/lava. Cancelling will prevent the slimes from moving/jumping in water/lava.
- `SlimeChangeDirectionEvent` is called when a slime changes directions. It contains the new `yaw` position the slime wants to change to, and it can be set to another value. Cancelling this event will prevent slimes from changing directions (except for when targeting players).
- `SlimeTargetLivingEntityEvent` is called when a slime targets a player. NMS uses EntityLiving here so it is named this. Contains the LivingEntity the slime has targeted. Cancelling this event will prevent the slime from targeting the entity and will make it lose current focus.

Adds `Slime#canWander()` and `Slime#setWander(boolean)` for a more persistent control (does not persist server restarts) over all 4 pathfinder types without the spammy event having to be cancelled a bajillion times a second.

Video demonstration: https://youtu.be/8hcLqazmO28

Test plugin: https://pastebin.com/cFgcgdWV
2018-08-24 09:40:14 -05:00
cakoyo
067cd73889 Add source block to BlockPhysicsEvent (#1364)
Resolves #1275 

For plants, the source block is itself, because the `changed` type is itself.
2018-08-24 22:38:31 +08:00
MicleBrick
86d8218430 Cached IBlockData to CraftBlockData conversion (#1368)
Avoid using reflection to create CraftBlockData instances. 

Computes the class to use on IBlockData creation and clones it when needed.
2018-08-23 16:44:41 -04:00
Zach Brown
fdef57b439 Allow ProtoChunks to be loaded
Reverts 62d26bf1d2
Fixes GH-1348
2018-08-23 15:40:00 -04:00
BillyGalbreath
7d3b4f409c Fix MC-124320 (#1369) 2018-08-23 12:02:57 -05:00
Christopher White
314acb5d8f Add isChunkGenerated API (#1363)
Resolves #1329
2018-08-22 18:13:03 -07:00
Aikar
4312faeee5 Merge branch 'master' into pre/1.13
* master:
  Fix some false positive warnings printing that shouldnt be
2018-08-20 20:23:06 -04:00
Aikar
bcb9bb64f0 Fix some false positive warnings printing that shouldnt be
reduces some log spam
2018-08-20 20:20:40 -04:00
Aikar
7156bc2260 Merge branch 'master' into pre/1.13
* master:
  Fix false positive on Chunk Entity slice messages #1302
2018-08-20 00:58:08 -04:00
Aikar
0f2aaa4364 Fix false positive on Chunk Entity slice messages #1302
Update links too
2018-08-20 00:54:03 -04:00
Automated
937423506d [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:
82f4b3b1 SPIGOT-4292: Ignore itemstacks with invalid enchants
2018-08-19 22:54:42 -04:00
Aikar
d99223b6e6 Restore Optimized Hoppers patch
Mojang changed behavior of .cloneItemStack() so that if you clone while
count = 0, it clones as AIR instead of original Item type.

So we needed a flag to keep old behavior.
2018-08-18 18:15:17 -04:00
Aikar
9cfdc487e4 restore vanilla default mob-spawn-range 2018-08-18 12:43:44 -04:00
Aikar
7d5a5ed52f Fix some performance regression in last patch 2018-08-18 12:42:17 -04:00
Aikar
c0ea8846b6 Merge pull request #1315, Closes #1207
Cache Counts by Entity type to optimize mob spawning
2018-08-18 11:12:06 -04:00
Zach Brown
ce5d16d58d Merge branch 'master' into pre/1.13 2018-08-18 03:59:57 -05:00
Zach Brown
9920287a0f Don't iterate twice - Fixes GH-1346 2018-08-18 03:58:53 -05:00
Mystiflow
eb8312e4f9 Send nearby packets from world list instead of server list (#1196) 2018-08-17 23:05:00 +01:00
Automated
72d0717d5d [CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2018-08-17 18:01:37 -04:00
BillyGalbreath
66d52954dc 1.13: Player launch projectile event (#1249)
Replaces PR #1193 for 1.13

I'm pretty sure I got all player launched projectiles (except arrows). Let me know if I missed any.

This fixes a use-case specific issue that was discovered [here](https://www.spigotmc.org/threads/projectilehitevent-doesnt-work-in-survival-mode.327097/page-2#post-3059433). I have a use-case example a few posts down, [here](https://www.spigotmc.org/threads/projectilehitevent-doesnt-work-in-survival-mode.327097/page-2#post-3060204).
2018-08-17 16:55:40 -05:00
searchndstroy
93e3a60a2f Optimize BlockPosition helper methods (#1339)
Resolves #1338
2018-08-17 14:51:56 -07:00
Aikar
dea0ab1e71 Merge remote-tracking branch 'origin/master' into pre/1.13
* origin/master:
  Fix watchdog restarting on short timeout (#1344)
2018-08-17 12:14:56 -04:00
searchndstroy
093dd0a9b9 Fix watchdog restarting on short timeout (#1344) 2018-08-17 09:09:08 -07:00
Aikar
0f8bab7109 Merge branch 'master' into pre/1.13
* master:
  Fix bug in last patch
  Ensure chunks are always loaded on hard position sets
  Improve Watchdog Early Warning Feature - Closes #1319
  Allow disabling armour stand ticking
2018-08-16 18:11:35 -04:00
Aikar
609d6bba6a Fix bug in last patch 2018-08-16 17:52:24 -04:00
Aikar
0661cf198e Ensure chunks are always loaded on hard position sets
Player Movement, Entity Creation and Teleportation move
entities with a very "You are here, no debate" change, making
the server register them as there, regardless if that chunk was
loaded or not.

It appears possible that with hack clients and lag, a player
may be able to move fast enough to move into an unloaded
chunk and get into a buggy state.

To prevent this, we will ensure a chunk is always loaded,
guaranteeing that the entity will be properly registered
into its new home comfortably.

Closes #1316
2018-08-16 17:46:38 -04:00
Colin Godsey
67fb7e9f66 pr changes, flat array 2018-08-15 15:07:30 -06:00
Aikar
48bc16aa4e Fix NPE Potential in CraftBanner - Fixes #1337, #1336 2018-08-15 08:47:34 -04:00
Aikar
061a290937 Fix NPE in CraftBanner due to null world, potentially other things fixed
Banners only load color if the world is set. I don't know why...

For some reason, the world was not set on these, so it was changing behavior.

So if we want an accurate clone, world needs to be set.
2018-08-15 01:21:10 -04:00
Aikar
c235889d4a Ability to get Tile Entities from chunks without snapshots
Also make Timings use said new feature and not create snapshots on it reading data
2018-08-15 01:20:40 -04:00
Automated
e3da794053 [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:
dde07e23 Update docs for Enderman carrying methods

CraftBukkit Changes:
452a1738 SPIGOT-4271: Fix API error when enderman are not carrying a block
2018-08-14 18:59:40 -04:00
Shane Freeder
b1f15b91ad Merge branch 'master' into pre/1.13 2018-08-14 16:26:01 +01:00
chickeneer
f439f7f20e Add a force option to the ParticleBuilder API (#1322)
Particle packets contain a boolean which marks the particle to either force or show normal to the receiver.
Spigot has been sending all particles with the force boolean which overrides client particle settings.

Related changes in this commit;
- Add a force option to the ParticleBuilder API, which defaults to true to keep spigot consistent with existing api.
- Add a new spawnParticle method to support this mode as a parameter. Of course kept existing api methods the same so as to not break them.

Let me know if changes are needed.
2018-08-14 00:42:31 -05:00
Aikar
9173d9008f Fix NPE in AnvilDamageEvent - Closes #1331 2018-08-13 22:39:50 -04:00
Automated
e6d1d69275 [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:
4a241086 SPIGOT-4261: Missing turtle / phantom spawn egg meta
2018-08-13 04:29:35 -04:00
Aikar
29da1d351d Improve Watchdog Early Warning Feature - Closes #1319
1) Don't kick in until server has started (the full crash will still kick in before full start)
2) Delay reporting until 10 seconds, then print every 5
3) Make the intervals configurable
4) Make it able to be disabled by setting every interval to <= 0
2018-08-12 13:27:23 -04:00
Riley Park
2053af2fa3 Allow disabling armour stand ticking 2018-08-15 01:26:51 -07:00
Aikar
a892816f2e Improve Watchdog Early Warning Feature - Closes #1319
1) Don't kick in until server has started (the full crash will still kick in before full start)
2) Delay reporting until 10 seconds, then print every 5
3) Make the intervals configurable
4) Make it able to be disabled by setting every interval to <= 0
2018-08-12 13:27:23 -04:00
Aikar
c3b33ee567 Updated Upstream (Bukkit/CraftBukkit) for LootTable API
I have tested that the Replenishing Feature still works as expected.
Lootable API's that now have Bukkit equivalents are now deprecated.

Bukkit Changes:
f0f33981 SPIGOT-1936: LootTable API

CraftBukkit Changes:
c0df4b82 SPIGOT-1936: LootTable API
2018-08-12 13:11:08 -04:00
Aikar
1d6e65ff65 Fix queue patch 2018-08-12 02:36:46 -04:00
Aikar
fb0f1b48ae Merge branch 'master' into pre/1.13
* master:
  Use a Queue for Queueing Commands
2018-08-12 02:34:54 -04:00
Aikar
b15abb2838 Use a Queue for Queueing Commands
Lists are bad as Queues mmmkay.
2018-08-12 02:34:34 -04:00
Aikar
15ef27b665 Restore portal fix 2018-08-12 02:14:31 -04:00
Aikar
47f090a436 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:
c23d391f Update documentation of BlockPhysicsEvent
14fcd896 SPIGOT-4258: Add Player.updateCommands method

CraftBukkit Changes:
15da7067 SPIGOT-4258: Add Player.updateCommands method

Spigot Changes:
2b0e71c7 Rebuild patches
2018-08-12 02:08:09 -04:00
prplz
c5d5c910df Fix PortalCreateEvent again (#1324) 2018-08-12 09:18:30 +10:00
Aikar
f117b03073 [CI-SKIP] Fix duplicate getServer() method in DedicatedPlayerList
This causes CraftServer to show as an error state and other files too..

It's driving me nuts.
2018-08-11 13:48:31 -04:00
prplz
50d88c817f Fix custom permissions reloading (#1325) 2018-08-11 09:39:04 -04:00
Aikar
40edcfed15 Merge remote-tracking branch 'origin/master' into pre/1.13
* origin/master:
  Use ConcurrentHashMap in JsonList & Optimize (#471) (#1309)
2018-08-11 09:31:18 -04:00
egg82
d1f6595317 Use ConcurrentHashMap in JsonList & Optimize (#471) (#1309)
* [CI-SKIP] add .editorconfig for base code style settings

* * Created patch 0349 (fixes #471)

* * Made requested modifications

* * Made requested modifications (x2)

* * Made recommended changes (x3)

* * Moved ConcurrentMap return values to Map as no functions specific to ConcurrentMap were used (backing map is still ConcurrentMap)
* Removed ConcurrentMap import
2018-08-11 06:46:46 -06:00
prplz
a7b0bc2b1b Fix custom permissions reloading (#1325) 2018-08-11 22:45:38 +10:00
Aikar
5a0e553fdd Detect and repair corrupt Region Files - Closes #1317
If the file has partial data written but not the full 8192 bytes,
then the server will be unable to load that region file...

I don't know why mojang only checks for 4096, when anything less than 8192 is a crash.

But to be safe, it will attempt to back up the file.
2018-08-11 00:55:42 -04:00
Aikar
62d26bf1d2 don't try to load protochunks, we don't save them
no reason to try to load them when we don't save them!
2018-08-11 00:12:25 -04:00
Aikar
7c619bbae0 Updated Upstream (Bukkit/CraftBukkit), deprecate SentientNPC API
Upstream has added the equivalent of our SentientNPC API, with exception to the EnderDragon.

We've added Mob to the EnderDragon, and our SentientNPC API should behave the same.

Vex#getOwner has been deprecated and a replacement Vex#getSummoner has been added using Mob.

However, since 1.13 is not production ready, SentientNPC API is subject for removal in 1.13.1 since
1.13 API is not compatible with 1.12.

Please move to the Mob interface ASAP.

This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
c5ab54d8 Expand GameRule API
ab9a606c Improve entity hierarchy by adding Mob interface.

CraftBukkit Changes:
29e75648 Expand GameRule API
50e6858b Improve entity hierarchy by adding Mob interface.
0e1d79b4 Correct error in previous patch
2018-08-10 22:13:00 -04:00
Shane Freeder
3eaefbe3fc Don't reset current tick based on system time 2018-08-10 15:25:45 +01:00
Aikar
4801a0135c Fix JDK compiler issue, apparently eclipse compiles this ambiguityo 2018-08-09 22:50:05 -04:00
Shane Freeder
84c52bd9b1 re: Fixup improve tick loop patch 2018-08-09 14:14:17 +01:00
Shane Freeder
cde57e0819 Fixup improve tick loop patch 2018-08-09 14:02:05 +01:00
Colin Godsey
0cb2135823 clean up, pr fixes 2018-08-09 06:35:13 -06:00
Colin Godsey
bf52fa14d4 reduced down to EnumCreatureType 2018-08-08 20:49:02 -06:00
Colin Godsey
5257373564 pr fixes 2018-08-08 18:07:03 -06:00
Colin Godsey
b473051336 Configurable water over lava #1227 2018-08-08 15:23:54 -06:00
Colin Godsey
ede8ec7387 add entity count cache #1207 2018-08-08 15:22:58 -06:00
Zach Brown
9369909fba Merge branch 'master' into pre/1.13 2018-08-08 16:03:09 -05:00
miclebrick
d1ceb803d3 Add 5 second short dumps to watchdog (#1314) 2018-08-08 15:31:29 -04:00
Automated
0cc81de2d3 [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:
53d3ac0a SPIGOT-4238: Sometimes buckets are leaky client side when empty event is cancelled
2018-08-07 10:56:06 -04:00
Automated
19b215f3b2 [CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2018-08-07 10:51:42 -04:00
BillyGalbreath
6dd8604bfd [1.13] Hand for bucket events (#1300)
This adds the `getHand()` method to the `PlayerBucketEvent`s
2018-08-07 09:44:44 -05:00
Automated
6d1e70864a [Auto] Updated Upstream (CraftBukkit)
upcommit

CraftBukkit Changes:
200b2398 SPIGOT-4233: Fix some missing handled NBT tags
2018-08-06 06:19:26 -04:00
Brokkonaut
e9cbd7b668 [1.13] Skull block profile api (#1308)
Adds #1307
2018-08-06 07:24:55 +02:00
Automated
6249addbaa [Auto] Update Upstream
Upstream has released updates that appear to apply compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing.

Bukkit Changes:
d2834556 SPIGOT-4219: Event for PigZombies angering.

CraftBukkit Changes:
a9c796f1 SPIGOT-4184: Fix furnaces not matching Vanilla smelt or animations
195f071e SPIGOT-4219: Event for PigZombies angering.
5e3082c7 SPIGOT-4230: Improve legacy block types
2018-08-05 19:46:43 -04:00
Automated
cfa9570036 [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2018-08-05 18:55:03 -04:00
BillyGalbreath
720f7d920e SkeletonHorse Additions (#1283) 2018-08-04 20:12:41 -05:00
Aikar
c44f8e3b57 Fix client rendering skulls from same user
See: https://github.com/PaperMC/Paper/issues/1304

Changes the UUID sent to client to be based on either
the texture payload, or random.

This allows the client to render multiple skull textures from the same user,
for when different skins were used when skull was made.

Closes #1304
2018-08-04 20:42:27 -04:00
Aikar
e9eef0114e [CI-SKIP] Re-add getBukkitEntity methods to child classes
Helps with development to not need to cast as much...

No clue why upstream makes some of the decisions they do....
2018-08-04 17:03:53 -04:00
Aikar
375120437f Merge branch 'master' into pre/1.13
* master:
  Undo a mistaken chunk registration change - Closes #1302
2018-08-04 13:00:26 -04:00
Aikar
dad4f590f0 Undo a mistaken chunk registration change - Closes #1302
I misinterpreted some code as a risk of entity loss, but now
after deeper study, I see how that code was used more and why
it was adding entities to chunks that they shouldn't have been
in during a world transfer process.
2018-08-04 12:53:38 -04:00
Aikar
d8c877daad Merge branch 'master' into pre/1.13
* master:
  Fix ItemStack.removeEnchantment returning wrong value
2018-08-04 01:22:57 -04:00
Aikar
154a6bba21 Fix ItemStack.removeEnchantment returning wrong value 2018-08-04 01:13:10 -04:00
Aikar
fc99b0dc70 Merge branch 'master' into pre/1.13
* master:
  make dupe uuid saferegen delete range configurable
  Entity add to world fixes - #1223
2018-08-04 00:33:21 -04:00
Aikar
7fe1caf23d make dupe uuid saferegen delete range configurable
also ensure we never process already valid entities. this shouldnt be possible as of recent
commits as we made the entity slice array safer, but doesn't hurt for this logic to be safe too
incase that patch got dropped in a future version by accident/necessarily
2018-08-04 00:23:00 -04:00
Aikar
d59b727a40 Entity add to world fixes - #1223
1) Chunk Registration might kill an entity, don't add it to the world if it did!

2) By default, entities are added to the world per slice iteration.
This opens risk of the slices being manipulated during chunk add if an
EntityAddToWorldEvent spawns an entity into this chunk.
Fix this by differing entity add to world for all entities at the same time

3) If a duplicate entity is attempted to add to the world of an entity, and
the original entity is dead, overwrite it as the logic does for unloaod queued entities.

Should hopefully finish up issues with #1223
2018-08-03 23:02:44 -04:00
Aikar
f09645d934 Merge branch 'master' into pre/1.13
* master:
  Fix logic bug in negative XP bug fix - Closes #1169
2018-08-03 21:20:57 -04:00