Commit Graph

1720 Commits

Author SHA1 Message Date
BillyGalbreath 56569f7812 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 10:40:14 -04:00
cakoyo a1e9cd39d2 Add source block to BlockPhysicsEvent (#1364)
Resolves #1275 

For plants, the source block is itself, because the `changed` type is itself.
2018-08-24 10:38:31 -04:00
Aikar ae2cf4828a
[CI-SKIP] [Auto] Rebuild Patches
A recent commit has been made that caused patches to be out of order, rebuilding
2018-08-23 16:46:33 -04:00
MicleBrick fe10e42094 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 a420df2fd4 Allow ProtoChunks to be loaded
Reverts 6666adc92c
Fixes GH-1348
2018-08-23 15:40:00 -04:00
BillyGalbreath ac5ba5bcc8 Fix MC-124320 (#1369) 2018-08-23 13:02:57 -04:00
Christopher White 6c32ee4a5c Add isChunkGenerated API (#1363)
Resolves #1329
2018-08-22 21:13:03 -04:00
Aikar 22614dd064
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 1218b4aae6
Fix some false positive warnings printing that shouldnt be
reduces some log spam
2018-08-20 20:20:40 -04:00
Aikar 2155cb7a61
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 c775246c69
Fix false positive on Chunk Entity slice messages #1302
Update links too
2018-08-20 00:54:03 -04:00
Aikar 3a4b892146
[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 0e3549023c
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:21:35 -04:00
Aikar 7b466d5f83
restore vanilla default mob-spawn-range 2018-08-18 12:43:44 -04:00
Aikar ecf97ddca0
Fix some performance regression in last patch 2018-08-18 12:42:17 -04:00
Aikar e5d57793d2
Merge pull request #1315, Closes #1207
Cache Counts by Entity type to optimize mob spawning
2018-08-18 12:23:11 -04:00
Zach Brown 3cc691efd8
Merge branch 'master' into pre/1.13 2018-08-18 04:12:45 -05:00
Zach Brown ce750d7618
Don't iterate twice - Fixes GH-1346 2018-08-18 03:58:53 -05:00
Mystiflow 51e29fb2a1 Send nearby packets from world list instead of server list (#1196) 2018-08-17 18:05:00 -04:00
Aikar fa254d2142
[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 04f6110896 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 17:55:40 -04:00
searchndstroy 9c4490bda4 Optimize BlockPosition helper methods (#1339)
Resolves #1338
2018-08-17 17:51:56 -04:00
Aikar 0ac59814c0
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 3f883badab Fix watchdog restarting on short timeout (#1344) 2018-08-17 12:09:08 -04:00
Aikar 5302850894
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:25:44 -04:00
Aikar 6e2711d666
Fix bug in last patch 2018-08-16 17:52:24 -04:00
Aikar 0645364ee5
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
Aikar dc428860cf
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-16 17:30:26 -04:00
Colin Godsey 6656d07bd2 pr changes, flat array 2018-08-15 15:07:30 -06:00
Aikar 0e7932315b
Fix NPE Potential in CraftBanner - Fixes #1337, #1336 2018-08-15 08:47:34 -04:00
kashike edb9d18aed Allow disabling armour stand ticking 2018-08-15 01:29:41 -07:00
Aikar 3bc40e491f
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 36e6c991af
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
Aikar 1d2b2da49e
[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 466e43b16d
Merge branch 'master' into pre/1.13 2018-08-14 16:26:01 +01:00
chickeneer bd1d0bf426 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 01:42:31 -04:00
Aikar 49aa3c4e2d
Fix NPE in AnvilDamageEvent - Closes #1331 2018-08-13 22:39:50 -04:00
Aikar d285e05dd8
[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 716ca620b1
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 3a70bed5f4
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:13 -04:00
Aikar f8ecb526e7
Fix queue patch 2018-08-12 02:36:46 -04:00
Aikar 3830baeb96
Merge branch 'master' into pre/1.13
* master:
  Use a Queue for Queueing Commands
2018-08-12 02:34:54 -04:00
Aikar 2900e7fa79
Use a Queue for Queueing Commands
Lists are bad as Queues mmmkay.
2018-08-12 02:34:34 -04:00
Aikar 646ddfd6f9
Restore portal fix 2018-08-12 02:14:31 -04:00
Aikar 4bb44d2fcb
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 8ad4c1e475 Fix PortalCreateEvent again (#1324) 2018-08-11 19:18:30 -04:00
Aikar e665cd9936
[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 895a4dcafc
Fix custom permissions reloading (#1325) 2018-08-11 09:39:53 -04:00
Aikar 5d42c9c99d
Merge remote-tracking branch 'origin/master' into pre/1.13
* origin/master:
  Use ConcurrentHashMap in JsonList & Optimize (#471) (#1309)
2018-08-11 09:35:11 -04:00
egg82 6ef9abeec2 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 08:46:46 -04:00
prplz 57798530bf Fix custom permissions reloading (#1325) 2018-08-11 08:45:38 -04:00
Aikar c93d1f53be 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 6666adc92c 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 f835a91d15
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:20:59 -04:00
Shane Freeder c2c18b2b7f
Don't reset current tick based on system time 2018-08-10 15:27:42 +01:00
Aikar aca003c22a
Fix JDK compiler issue, apparently eclipse compiles this ambiguityo 2018-08-09 22:50:05 -04:00
Shane Freeder 3ac743124e
re: Fixup improve tick loop patch 2018-08-09 14:14:17 +01:00
Shane Freeder 71490b2325
Fixup improve tick loop patch 2018-08-09 14:02:10 +01:00
Colin Godsey 65a71d18c4 clean up, pr fixes 2018-08-09 06:35:13 -06:00
Colin Godsey 40e32744dd reduced down to EnumCreatureType 2018-08-08 20:49:02 -06:00
Colin Godsey 0753b9271f pr fixes 2018-08-08 18:07:03 -06:00
Colin Godsey c09191b7f9 Configurable water over lava #1227 2018-08-08 15:23:54 -06:00
Colin Godsey a12c0881a0 add entity count cache #1207 2018-08-08 15:22:58 -06:00
Zach Brown 1ed5531ace
Rebuild merged patch file 2018-08-08 16:06:18 -05:00
Zach Brown 6d1c301a42
Merge branch 'master' into pre/1.13 2018-08-08 16:03:09 -05:00
miclebrick b369e70970
Add 5 second short dumps to watchdog (#1314) 2018-08-08 15:58:02 -05:00
Aikar 4bff819890
[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
Aikar 85bfc4508a
[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 dd17f98e61 [1.13] Hand for bucket events (#1300)
This adds the `getHand()` method to the `PlayerBucketEvent`s
2018-08-07 10:44:44 -04:00
Aikar 72083fd891
[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 d5eb80049c [1.13] Skull block profile api (#1308)
Adds #1307
2018-08-06 01:24:55 -04:00
Aikar 05466e3b47
[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
Aikar a4e7bdb306
[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 adcd0c1505 SkeletonHorse Additions (#1283) 2018-08-04 21:12:41 -04:00
Aikar 7abf02b17c
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 716db7fb5e
[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 e2bc726301
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 28caff2299
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 3cc52119fa
Merge branch 'master' into pre/1.13
* master:
  Fix ItemStack.removeEnchantment returning wrong value
2018-08-04 01:22:57 -04:00
Aikar b78002eeba
Fix ItemStack.removeEnchantment returning wrong value 2018-08-04 01:13:10 -04:00
Aikar 9078464e74
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 aea67db7a0
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:26:56 -04:00
Aikar 444ce86194
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 177ec197a7
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
Aikar b3eb265ab5
Fix logic bug in negative XP bug fix - Closes #1169 2018-08-03 20:59:35 -04:00
Aikar dbc4c29d6c
Merge branch 'master' into pre/1.13
* master:
  Fix "MC-135506: Experience should save as Integers" still saving as short" (#1301)
2018-08-03 09:27:01 -04:00
Mark Vainomaa 22b2bf6270 Fix "MC-135506: Experience should save as Integers" still saving as short" (#1301) 2018-08-03 09:25:21 -04:00
Aikar 3c61083c72
fix missing | on dupe uuid patch 2018-08-03 08:51:29 -04:00
Aikar dc3dc77245
fix missing | on dupe uuid patch 2018-08-03 08:51:04 -04:00
Zach Brown 03028e52a3
Use correct update flag and blockdata for portals
Fixes GH-1286
2018-08-03 03:26:10 -05:00
Aikar 751317f21b
Merge branch 'master' into pre/1.13
* master:
  fix missed break statement and enum check on dupe uuid resolve
2018-08-03 01:33:34 -04:00
Aikar f4f8a3be2d
fix missed break statement and enum check on dupe uuid resolve 2018-08-03 01:32:00 -04:00
Aikar 0f479b740d
Merge branch 'master' into pre/1.13
* master:
  MC-135506: Experience should save as Integers
  Fix EXP orb merging causing values to go negative - Closes #1169
  Add "Safe Regen" Duplicate UUID resolver and make default
2018-08-03 01:29:20 -04:00
Aikar 6b00d856be
Upstream update 2018-08-03 01:04:28 -04:00
Aikar 38af7610e3
MC-135506: Experience should save as Integers
A large orb will lose its EXP value if it went over 32k due to short truncation.
2018-08-03 00:07:02 -04:00
Aikar 56b92ff216
Fix EXP orb merging causing values to go negative - Closes #1169 2018-08-03 00:06:20 -04:00
Aikar 17dca0a0fe
Add "Safe Regen" Duplicate UUID resolver and make default
After witnessing behavior of the regeneration logs, its clear that Vanilla
has had bugs with saving duplicate entities for a while....

Some entities are saved in multiple chunks, and now we are bringing those duplicates
out that use to never surface.

This mode will analyze if the entity appears to be a duplicate (near the other dupe uuid)
and delete the entity instead.

This should reduce regenerations to entities that are nowhere near each other, and
therefore more likely to be subject to real UUID collisions due to our
previous bug, and therefor should survive the chunk load.
2018-08-02 23:25:37 -04:00
Zach Brown dbde9e6332
Update upstream B/CB 2018-08-02 18:29:34 -05:00
Aikar 1abd4d51c1
Update upstream 2018-08-01 22:49:47 -04:00
Zach Brown 6a48a4529b
Make portal teleportation adjustment math more accurate
Fixes GH-1295

Non-standard sized portals exacerbate a flaw in the vanilla
portal teleportation adjustment logic.
As a result, an entity can end up slightly inside of the surrounding
portal blocks. In vanilla, this issue is minor and you are adjusted out
as if it never happened. In CraftBukkit and derivatives, the
anti-suffocation behavior activates and players end up teleported on top
of their portals.

This improves the offset so as to keep the issue from ever occurring in
the first place.

Special thanks to CarpetMod who appears to have had this fixed for some
time, and has licensed their code such that we can use it as needed.
2018-07-31 20:13:40 -05:00
Zach Brown 9939390df7
Add decompile fix for ChunkSection 2018-07-31 16:55:57 -05:00
Zach Brown db81205dd7
Merge branch 'master' into pre/1.13 2018-07-31 16:44:46 -05:00
Zach Brown 2a5c62f3fc
[CI-SKIP] Add paper comment to last patch edit 2018-07-31 16:41:33 -05:00
Zach Brown ef1242fc36
Ensure players are not marked to be removed after re-add 2018-07-31 16:39:15 -05:00
Zach Brown e8eb4bfee5
Re-add GH-1286 fix for portals
Accidentally removed in 5311679c74

Also added to End Portals
2018-07-31 15:16:12 -05:00
Shane Freeder 6ea611dc68
Fixup keepalive logic (closes #1274) 2018-07-31 16:39:08 +01:00
Shane Freeder 806cafd070
Fix misapplied line in keepalive changes 2018-07-31 15:19:18 +01:00
Shane Freeder 5311679c74
Cleanup PortalCreateEvent patch 2018-07-31 15:14:54 +01:00
Shane Freeder 810a2f24bf
Merge branch 'fix-portal-create-event' of https://github.com/prplz/Paper into pre/1.13 2018-07-31 15:07:41 +01:00
Shane Freeder c63396fe6b
Merge branch 'master' into pre/1.13 2018-07-31 14:50:40 +01:00
Michael Himing acf5b98565 Fix nether portals (#1286) 2018-07-31 23:33:30 +10:00
Shane Freeder 81806abef6
Break up and make tab spam limits configurable
Due to the changes in 1.13, clients will send a tab completion request
for all bukkit commands in order to factor in the lack of support for
brigadier and provide backwards support in the API.

Craftbukkit, however; has moved the chat spam limiter to also interact
with the tab completion request, which while good for avoiding abuse,
causes 1.13 clients to easilly be kicked from a server in bukkit due
to this. Removing the spam limit could cause issues for servers, however,
there is no way for servers to manipulate this without blindly cancelling
kick events, which only causes additional complications. This also causes
issues in that the tab spam limit and chat share the same field but different
limits, meaning that a player having typed a long command may be kicked from
the server.

Splitting the field up and making it configurable allows for server owners
to take the burden of this into their own hand without having to rely on
plugins doing unsafe things.

This patch has been applied to 1.12.2 in order to allow people using
plugins which allow clients of newer versions to connect, this is
not a common practice, however is being done as a level of nicety
given the current status of 1.13
2018-07-31 13:53:49 +01:00
Aikar 4be4037e3d
Merge pull request #1214
b854308c Add TNTPrimeEvent (Mark Vainomaa)

* pull/1214/head:
  Add TNTPrimeEvent
2018-07-31 02:01:27 -04:00
Aikar 42730c41bb
Merge branch 'master' into pre/1.13
* master:
  PlayerProfile.complete shouldn't throw NPE
2018-07-31 01:44:11 -04:00
Aikar a3db62f3c2
PlayerProfile.complete shouldn't throw NPE
We have a result boolean for this already, and this
method was meant to be "Try from cache, if that fails, look it up"

So NPE'ing there just wasn't correct.
2018-07-31 01:41:43 -04:00
willies952002 30caec4d94 World EntityHuman Lookup Optimizations (#1291)
Fixes #1290
2018-07-31 00:27:45 -04:00
Zach Brown 96ce4bd9fd
Update upstream B/CB 2018-07-30 20:19:41 -05:00
Zach Brown 12f9b10e44
Fix i18n String API
In 1.13 the method previously used now returns translatable keys.
`block.minecraft.cobblestone` instead of `Cobblestone`

We just need to make sure we're translating those keys.
2018-07-30 16:12:47 -05:00
Aikar 76e1e4d79f
Update Upstream
Removed my ChunkLoadEvent patch as upstream fixed it
2018-07-30 01:08:59 -04:00
Aikar 75d71a2f14
Merge branch 'master' into pre/1.13
* master:
  clear current chunk and entity slice on chunk unload
2018-07-30 01:06:39 -04:00
Aikar e7a59cde75
clear current chunk and entity slice on chunk unload
ideally this should of never mattered, as it will only
be hit if you teleport out of an unloaded chunk...

But apparently some people are triggering this.

See #1223
2018-07-30 00:51:58 -04:00
Aikar c7dcc8ce89
Merge pull request #1244
3e19de0c Rebuild Patches (BillyGalbreath)
8e5db995 AnvilDamageEvent (BillyGalbreath)

* pull/1244/head:
  Rebuild Patches
  AnvilDamageEvent
2018-07-30 00:12:03 -04:00
Anthony MacAllister 4fa289b8ba EntityTransformedEvent (#1281) 2018-07-29 23:54:13 -04:00
willies952002 4fb5e0fe14 Expand ArmorStand API (#1277)
Add the following:
- Add proper methods for getting and setting items in both hands. Deprecates old methods
- Enable/Disable slot interactions
2018-07-29 23:53:59 -04:00
Aikar e356cd3989
Fix last patch for 1.13, pulled the push button too quickly... 2018-07-29 23:05:35 -04:00
Aikar bf92104a70
Merge branch 'master' into pre/1.13
* master:
  MC-111480: Start Entity ID's at 1 - Closes #1287
2018-07-29 23:00:41 -04:00
Aikar fb19b8c1c1
MC-111480: Start Entity ID's at 1 - Closes #1287
DataWatchers that store Entity ID's treat 0 as special,
and can break things such as Elytra Fireworks.
2018-07-29 23:00:00 -04:00
Aikar b9b32ba7dc
Update upstream 2018-07-29 22:16:15 -04:00
Aikar 87aa6e6626
Fix bug with entities not being added from loaded chunks
No entities were lost in this bug, just we were triggering the add entities
before they were loaded due to an inconsistent order of putting chunk into chunkmap.

Any entity that appeared to be gone on the last build will now be back.
2018-07-29 21:53:02 -04:00
Aikar 9e4f11cc46
[EXPERIMENTAL] Provide option to use a versioned world folder for testing
This should not ever be used in production!!

This setting is intended for testing so you can try out converting your world
without actually modifying the world files.

This will add some additional overhead to your world, but you're
just testing anyways so that's not a big deal :)

Will store in a folder named after the current version.

PlayerData and Data folders are copied on server start, so there
may be some delay there, but region files are only copied on demand.

This is highly experiemental so backup your world before relying on this to not modify it
2018-07-29 17:21:02 -04:00
Aikar 9e1a6c5a1f
Process Chunk.addEntities before chunkLoadEvent
1.13 undesirably changed behavior here that chunk load event fired
before the entities were added to the world.

This means any plugin that spawns entities in chunk load event
causes the entities to be registered to the chunk, and then
added to the world twice.

Moves Entity Add to World to be done anytime a chunk is
registered to the Chunk Map, and ignore other calls.

Fixes #1288
2018-07-29 17:05:24 -04:00
Aikar fc1e70df07
Merge branch 'master' into pre/1.13
* master:
  Always process chunk registration after moving
  Always move Entity to its new Chunk even if unloaded
  If Entity is added to chunk, look up the chunk if current isnt set
  Ignore Dead Entities in entityList iteration
  Always process chunk removal in removeEntity
2018-07-29 13:12:39 -04:00
Aikar 566740114e
update upstream 2018-07-29 12:42:07 -04:00
Hugo Manrique 6d166798e6 Optimize hasItemMeta (remove getItemMeta call) (#1279)
Spigot 1.13 checks if any field (which are manually copied from the ItemStack's "tag" NBT tag) on the ItemMeta class of an ItemStack is set.

We could just check if the "tag" NBT tag is empty, albeit that would break some plugins. The only general tag added on 1.13 is "Damage", and we can just check if the "tag" NBT tag contains any other tag that's not "Damage" (https://minecraft.gamepedia.com/Player.dat_format#Item_structure) making the `hasItemStack` method behave as before.

Check the `ItemMetaTest#testTaggedButNotMeta` method to see how this method behaves. (I also added some extra tests).

`hasItemMeta()` will return true if `ItemStack.getDamage() != 0` or it has the `Damage` tag or any other tag is set.

Closes #1222
2018-07-29 12:30:01 -04:00
Aikar f35324dbed
Always process chunk registration after moving
This will help guarantee that entities are always in the
chunk that they are currently located at.

Should hopefully also fix Citizens triggering the "Saved to wrong chunk" message
2018-07-29 12:10:20 -04:00
Aikar c6d6773678
Always move Entity to its new Chunk even if unloaded
Vanilla logic here would allow us to remvoe an entity from
its current chunk, and if it was going to move into an unloaded
chunk, that entity would not be added to the unloaded chunk.

This is bad because this will result in the entity being lost!

In almost all cases, the chunk will be loaded, but in the event
it wasn't, instead of losing the entity, load the chunk to add
the entity to it.
2018-07-29 12:06:35 -04:00
Aikar e674d3a00f
If Entity is added to chunk, look up the chunk if current isnt set
Hopefully will (f)ix #1280...

I'm suspicious that Citizens isn't calling things in the same order and causes the current
chunk to not be set, which then bugs removals. Though this doesn't make any sense to me,
so this likely won't fix it...

But if the isAddedToChunk is true, we really should be returning a chunk anyways if its loaded.
2018-07-29 12:06:20 -04:00
BillyGalbreath 3e19de0cf5 Rebuild Patches 2018-07-28 22:15:52 -05:00
BillyGalbreath b3b0b9f24a Merge branch 'pre/1.13' of https://github.com/PaperMC/Paper into AnvilDamageEvent 2018-07-28 22:02:56 -05:00
Aikar d98f6afef0
Ignore Dead Entities in entityList iteration
A spigot change delays removal of entities from the entity list.
This causes a change in behavior from Vanilla where getEntities type
methods will return dead entities that they shouldn't otherwise be doing.

This will ensure that dead entities are skipped from iteration since
they shouldn't of been in the list in the first place.
2018-07-28 12:26:36 -04:00
Aikar 9e250168e8
Always process chunk removal in removeEntity
Spigot might skip chunk registration changes in removeEntity
which can keep them in the chunk when they shouldnt be if done
during entity ticking.

Should fix some cases where "Entity is still in another chunk section"
Related to #1223
2018-07-28 12:13:52 -04:00
BillyGalbreath 8e5db99552 AnvilDamageEvent 2018-07-28 01:33:36 -05:00
BillyGalbreath fa9224721e 1.13: EnderDragon Events (#1247)
Replaces PR #1185 for 1.13

Add some new cancellable enderdragon events dealing with its fireball shooting and the areaeffectcloud it spawns. Based on [talking with someone with a specific use-case](https://www.spigotmc.org/threads/cancel-projectilehitevent.326466/) this was [confirmed to work](http://i.imgur.com/ezlfpKC.png) for them in PM.
2018-07-28 02:03:10 -04:00
Aikar 1b53a468de
Merge branch 'master' into pre/1.13
* master:
  Fix Dupe UUID logic triggering when the duplicate is pending unload
2018-07-28 01:59:20 -04:00
Aikar 2c6773c85f
Fix Dupe UUID logic triggering when the duplicate is pending unload
Vanilla logic checks unload queue and overwrites if its in it.
we're triggering this if a chunk unloads, and reloads immediately in same tick.

Added check for unload queue to not treat as duplicate

Also fixed the config setting not even loading
2018-07-28 01:20:06 -04:00
Shane Freeder f7d02b2518
Update CB/S 2018-07-28 03:38:13 +01:00
Aikar 857ed67709
Merge branch 'master' into pre/1.13
* master:
  Relookup Entity Save ID if was null during precache
2018-07-27 00:44:53 -04:00
Aikar 8175ec916f
Relookup Entity Save ID if was null during precache
Should fix #1280

Citizens hijacks entity map, and im guessing under the right conditions
the result might actually be null during entity creation

Pre the cache patch, the id is looked up on save, so it was fine.

Now, if its null and the save ID is requested, we will try to look
it up again and cache it if found.
2018-07-26 23:57:31 -04:00
Shane Freeder fa99bd7049
Fix EntityDismountEvent changes
While upstream has now made this event cancellable, their changes
result in the vechicle being removed before the event is called,
thus leading cancellation to not behave as expected.
2018-07-26 18:41:03 +01:00
Shane Freeder 8808629550
Update B/CB/S 2018-07-26 16:20:37 +01:00
Aikar 7c5cc1ece7
Merge branch 'master' into pre/1.13
* master:
  Prevent Saving Bad entities to chunks
2018-07-26 00:57:16 -04:00
Aikar 42f6bebcc3
Prevent Saving Bad entities to chunks
See https://github.com/PaperMC/Paper/issues/1223

Should fix Vanilla bugs

Minecraft is saving invalid entities to the chunk files.

Avoid saving bad data, and also make improvements to handle
loading these chunks. Any invalid entity will be instant killed,
so lets avoid adding it to the world...

This lets us be safer about the dupe UUID resolver too, as now
we can ignore instant killed entities and avoid risk of duplicating
an invalid entity.

This should reduce log occurrences of dupe uuid messages.

Also reduce the logging spam overall.
2018-07-26 00:51:20 -04:00
Zach Brown e64513b585
Remove deprecated AuthLib API from Paper-API
Use the PlayerProfile API as a replacement
2018-07-25 21:49:43 -05:00
Aikar 230b8d4258
Merge pull request #1256
bfbd24c5 Fix decompile error (Hugo Manrique)
1f5d23d9 Re-add Vanished players don't have rights patch (Hugo Manrique)

* pull/1256/head:
  Fix decompile error
  Re-add Vanished players don't have rights patch
2018-07-25 19:41:35 -04:00
Aikar 04aba0fca7
Merge branch 'master' into pre/1.13
* master:
  Apply spawner delay for cancelled pre spawn events (#1276)
2018-07-25 19:07:56 -04:00
Aikar 48d75228ed
Update upstream 2018-07-25 19:05:07 -04:00
Max Lee ef0dfd0628 Apply spawner delay for cancelled pre spawn events (#1276)
Setting the flag updates the spawner's delay which stops the spawner from trying to find a new spawn position each tick efter the event was cancelled/aborted which makes it usable for mob stackers/mergers and other plugins that don't actually want any mob to spawn in the spawner cycle but keep the overall behaviour close to vanilla.

This might slightly effect existing plugins that use this event but I doubt anyone really relied on this behaviour, the only possible use case that I can think of is cancelling the event until you find a suitable position in your plugin... and this should be handled by the plugin itself by cancelling and spawning at the position manually.
2018-07-25 18:19:51 -04:00
Shane Freeder 23ed74032c
Explictly reset chat format in vanilla scoreboard display (fixes #1263)
Vanilla now uses chat components for scoreboards, thus no longer
returns a string which also resets the chat the chat format, add
this back ourselves.
2018-07-25 09:58:03 +01:00
Aikar 1ae30bb6b2
Fix RCON Ip Defaulting to wrong value - Closes #1267 2018-07-25 01:24:28 -04:00
Aikar c280d84172
Update upstream and remove hopper patch for #1270 2018-07-25 01:11:08 -04:00
Brokkonaut af561492ab Fix broken block iteration (#1269)
Fixes https://github.com/PaperMC/Paper/issues/1259 and generation of the end pillars
2018-07-24 21:39:30 -04:00
Hugo Manrique bfbd24c5be
Fix decompile error 2018-07-24 20:16:10 +02:00
Hugo Manrique 1f5d23d96d
Re-add Vanished players don't have rights patch 2018-07-24 20:15:57 +02:00
Aikar 480011c529
restore uuid to Entity.toString 2018-07-24 00:48:07 -04:00
Aikar 84d229cd29
Optimize Region File Cache
CraftBukkit added synchronization to read and write methods. This adds
much more contention on this object for accessing region files, as
the entire read and write of NBT data is now a blocking operation.

This causes issues when something then simply needs to check if a chunk exists
on the main thread, causing a block...

However, this synchronization was unnecessary, because there is already
enough synchronization done to keep things safe

1) Obtaining a Region File: Those methods are still static synchronized.
   Meaning we can safely obtain a Region File concurrently.

2) RegionFile data access: Methods reading and manipulating data from
   a region file are also marked synchronized, ensuring that no 2 processes
   are reading or writing data at the same time.

3) Checking a region file for chunkExists: getOffset is also synchronized
   ensuring that even if a chunk is currently being written, it will be safe.

By removing these synchronizations, we reduce the locking to only
when data is being write or read.

GZIP compression and NBT Buffer creation will no longer be part of the
synchronized context, reducing lock times.

Ultimately: This brings us back to Vanilla, which has had no indication of region file loss.

Closes #1260
2018-07-23 23:50:09 -04:00
Aikar f51ad46686
Merge branch 'master' into pre/1.13
* master:
  Add some debug for entity slices
  Mark chunk dirty on entity changes
  Reduce and improve dupe uuid resolve message
  Add more entity debug info
  Bring some 1.13 authors to master
  Fixed more stuff
  Remove unsed method
  Extend player profile API to support skin changes
  Extend player profile API to support skin changes
2018-07-23 23:20:41 -04:00
Aikar 166eb8b489
Update upstream 2018-07-23 23:00:57 -04:00
Aikar d155366b54
Add some debug for entity slices
If we find any entity in an unexpected state, log it so we can discover
what potentially put it in that state to relate to issue #1223
2018-07-23 22:55:27 -04:00
Aikar ba80c7e580
Mark chunk dirty on entity changes
This is to hopefully help avoid any chunk saving entity issues.
Marks the chunk that it NEEDS to be saved, ensuring the latest state gets saved.
2018-07-23 22:54:52 -04:00
Aikar 9ec7ffa358
Reduce and improve dupe uuid resolve message 2018-07-23 22:54:43 -04:00
Aikar 5c4367f9d3
Add more entity debug info 2018-07-23 22:50:47 -04:00
Aikar 5f175ef9c3
Merge pull request #1250
Cleaned up some implementation notes to use existing Vanilla method for some things.
merged into parent patch

7dd5837d Fixed more stuff (NickAcPT)
09f01353 Remove unsed method (NickAcPT)
e5ea4656 Extend player profile API to support skin changes (NickAcPT)
e67d55d0 Extend player profile API to support skin changes (NickAcPT)

* pull/1250/head:
  Fixed more stuff
  Remove unsed method
  Extend player profile API to support skin changes
  Extend player profile API to support skin changes
2018-07-23 20:42:04 -04:00
Aikar 4f7a858bd6
Merge pull request #1248
c2d29a73 PlayerElytraBoostEvent (BillyGalbreath)

* pull/1248/head:
  PlayerElytraBoostEvent

Also merged paper config into parent
2018-07-23 20:29:55 -04:00
Aikar 3ad50727b9
Merge pull request #1254
0fbf3e77 Re-add Option to prevent armor stands from doing entity lookups (Hugo Manrique)

* pull/1254/head:
  Re-add Option to prevent armor stands from doing entity lookups
2018-07-23 20:22:51 -04:00
Aikar 56d4a0e1fe
rebuild patch and delete unused 2018-07-23 20:16:48 -04:00
Aikar 1b3658b2c4
Merge pull request #1257
0069113b Put the decompile fixes into MC Dev Fixes patch (Andrew Steinborn)
608b5e52 Optimize RegistryID.c() (Andrew Steinborn)

* pull/1257/head:
  Put the decompile fixes into MC Dev Fixes patch
  Optimize RegistryID.c()
2018-07-23 20:15:56 -04:00
Aikar 2c2b45ddb9
Fix a concurrency issue with chunk scheduler
It's possible we won't hit this on the servers current state since nothing is async,
but we are working towards that.

I experienced a crash due to this code during my work.
2018-07-23 19:41:41 -04:00
Aikar 433c56c2d3
Fix memory leak in proto chunk change 2018-07-23 19:41:29 -04:00
Aikar 9a17bddf12
Update upstream 2018-07-23 19:41:14 -04:00
Shane Freeder 4608731dca
Update S
Also drop a few patches which are no longer needed/already merged in.
2018-07-23 18:21:07 +01:00
Andrew Steinborn 0069113b2e Put the decompile fixes into MC Dev Fixes patch 2018-07-23 13:10:06 -04:00
Andrew Steinborn 608b5e5235 Optimize RegistryID.c()
Fixes #1253
2018-07-23 12:58:48 -04:00
Hugo Manrique 0fbf3e775d
Re-add Option to prevent armor stands from doing entity lookups
Remove old patch
2018-07-23 16:04:03 +02:00
Shane Freeder 12b0bf7983
Avoid ArithmeticException should server be stopped before worlds are loaded
Our changes for the spawn radius have the potential to throw an ArithmeticException
should the server be stopped before we've loaded worlds, we check if the server is
running earlier to check if we should even consider attempting to load chunks, which
would cause us to, 1) not load chunks anyways, as we're disabled; 2) throw an
ArithmeticException due to us expecting that we're going to be loading more than 0 chunks.
2018-07-23 10:25:03 +01:00
Shane Freeder aad194a32e
Update B/CB/S 2018-07-23 09:44:57 +01:00
Aikar 6e3ef06255
Remove debug that got left in proto chunk change last build 2018-07-22 22:33:43 -04:00
Aikar dda43c2566
Don't save Proto Chunks
These chunks are unfinished, and waste cpu time saving these unfinished chunks.
the loadChunk method refuses to acknoledge they exists, and will restart
a new chunk generation process to begin with, so saving them serves no benefit.
2018-07-22 21:25:48 -04:00
Aikar 643187e289
Fix spawn loading percentages 2018-07-22 19:53:01 -04:00
Aikar b801b4baa8
Fix Chest open/close animations 2018-07-22 19:39:56 -04:00
Aikar 9a279b3947
Re-add Optimize Hoppers patch 2018-07-22 19:03:54 -04:00
Aikar 4dd6ddb86b
Re-add block inlining - Closes #1229
Also reordered MC Utils to be higher up
2018-07-22 18:46:13 -04:00
Aikar 4b66f1978d
Update upstream 2018-07-22 13:10:15 -04:00
Aikar e2c75e81f7
Update Paper to 1.13 proper - THIS IS STILL HIGHLY UNSTABLE
DO NOT RUN ON PRODUCTION SERVERS!!! Use Backups!!
2018-07-22 01:27:46 -04:00
Aikar 6219932b89
Add mc util methods 2018-07-22 00:45:49 -04:00
Aikar bf2c56e8ae
Readd configurable max chunk gens per tick 2018-07-21 17:24:18 -04:00
Aikar 34404e60c9
Restore Configurable Allowance of Perm Chunk Loaders 2018-07-21 17:03:26 -04:00
Aikar 39ea0d21dc
Restore World.loadChunkAsync API - but load chunks sync
We are still missing Async Chunk Loading, but plugins may be
depending on this API, so it missing blocks upgrading.
2018-07-21 16:55:43 -04:00
Aikar 1d28f62522
Rebuild patches for upstream merge 2018-07-21 16:43:00 -04:00
Aikar 6b63a88df0
Merge branch 'master' into pre/1.13
* master:
  Duplicate UUID Resolve Option
  Add more information to Entity.toString
  change LAST_EDIT to PAPER_LAST_EDIT for edit commands
  Add more information to Entity.toString()
  Add Debug Entities option to debug dupe uuid issues
  Guard the Entity.SHARED_RANDOM from seed changes
  Create a symlink on not-windows to current minecraft decompile dir
2018-07-21 16:25:36 -04:00
Aikar dc8f516424
Update Upstream 2018-07-21 16:03:10 -04:00
Aikar d0cd5b3b23
Duplicate UUID Resolve Option
Due to a bug in 2e29af3df0
which was added all the way back in March of 2016, it was unknown (potentially not at the time)
that an entity might actually change the seed of the random object.

At some point, EntitySquid did start setting the seed. Due to this shared random, this caused
every entity to use a Random object with a predictable seed.

This has caused entities to potentially generate with the same UUID....

Over the years, servers have had entities disappear, but no sign of trouble
because CraftBukkit removed the log lines indicating that something was wrong.

We have fixed the root issue causing duplicate UUID's, however we now have chunk
files full of entities that have the same UUID as another entity!

When these chunks load, the 2nd entity will not be added to the world correctly.

If that chunk loads in a different order in the future, then it will reverse and the
missing one is now the one added to the world and not the other. This results in very
inconsistent entity behavior.

This change allows you to recover any duplicate entity by generating a new UUID for it.
This also lets you delete them instead if you don't want to risk having new entities added to
the world that you previously did not see.

But for those who are ok with leaving this inconsistent behavior, you may use WARN or NOTHING options.

It is recommended you regenerate the entities, as these were legit entities, and deserve your love.
2018-07-21 14:47:05 -04:00
Aikar 7279362307
Add more information to Entity.toString 2018-07-21 14:46:56 -04:00
NickAcPT 7dd5837dd0 Fixed more stuff 2018-07-21 18:17:54 +01:00
NickAcPT 09f013532a Remove unsed method 2018-07-21 16:54:52 +01:00
NickAcPT e5ea4656b2 Extend player profile API to support skin changes
Added code that refreshes the player's skin by sending packets with a special order, telling the client to respawn the player and re-apply the game profile
2018-07-21 16:22:10 +01:00
Aikar 4a4d299641
Add more information to Entity.toString() 2018-07-21 10:29:37 -04:00
Aikar c1c9d850f1
Add Debug Entities option to debug dupe uuid issues
Add -Ddebug.entities=true to your JVM flags to enable more logging
2018-07-21 10:29:14 -04:00
Aikar 82bcd1408a
Guard the Entity.SHARED_RANDOM from seed changes
I don't clearly see any, but as a protection for future changes.
2018-07-21 10:28:45 -04:00
NickAcPT e67d55d00d Extend player profile API to support skin changes
Added code that refreshes the player's skin by sending packets with a special order, telling the client to respawn the player and re-apply the game profile
2018-07-21 15:17:59 +01:00
Brokkonaut ff4ae7b05e 1.13: Resend bed on cancelled interaction (#1245)
Minecraft 1.13 requires resending the block for both parts of the bed
2018-07-21 08:47:22 -04:00
BillyGalbreath c2d29a73ac PlayerElytraBoostEvent 2018-07-21 02:00:31 -05:00
Shane Freeder 1fe8472503
update B/CB/S 2018-07-20 20:57:43 +01:00
Zach Brown dd66bcb809
Merge branch 'master' into pre/1.13 2018-07-20 14:15:12 -05:00
Minecrell a081172687
Rebuild patch numbers 2018-07-20 14:07:54 -05:00
Minecrell 30ea96ab27 Update to TerminalConsoleAppender 1.1.1 (#1240)
See https://github.com/Minecrell/TerminalConsoleAppender/releases/tag/1.1.1
2018-07-20 14:04:11 -05:00
Zach Brown 0030708509
Move decomp fix from last up to fixes patch 2018-07-19 16:55:27 -05:00
Zach Brown 18ae09c90a
Fix crash in RegionLimitedWorldAccess 2018-07-19 16:51:32 -05:00
Shane Freeder 493df9ea5c
Merge branch 'master' into pre/1.13 2018-07-19 20:23:18 +01:00
Minecrell 8a5f46a0db Avoid adding NetworkManager twice
The removal of `ServerConnection.this.h.add(networkmanager);` got
lost in the 1.13 update, causing network managers to be registered
twice.

Fixes "handleDisconnection() called twice" warning spam in console.
2018-07-19 20:14:27 +02:00
Minecrell ac58987add Fix decompile/deobfuscation error in BlockPosition iterator
Some of the fields in the anonymous class are named the same as the
surrounding method's parameters, which caused the fields to be
initialized incorrectly.

That way it keeps returning the same block position, resulting
in an infinite loop during chunk generation.
2018-07-19 19:50:34 +02:00
Hugo Manrique ab5c87e570 Avoid item merge if stack size above max stack size (#1217) 2018-07-19 10:51:55 -05:00
Minecrell bf21060ad9 Use asynchronous Log4j 2 loggers 2018-07-19 10:48:52 -05:00
Minecrell 0915495113 Update TerminalConsoleAppender to 1.1.0
Fixes a race condition when using TerminalConsoleAppender that may
result in IllegalStateExceptions or duplicate input prompts.
2018-07-19 10:48:52 -05:00
Aikar ef099d2812
Update master patches just merged to 1.13 2018-07-19 01:51:01 -04:00
Aikar dc1b407c7d
Merge branch 'master' into pre/1.13
* master:
  Don't process despawn if entity is in a chunk scheduled for unload
  Fix Squids corrupting the entire servers entity randomness....
  Fix placement of chunk tracking - Fixes #1199
2018-07-19 01:46:11 -04:00
Aikar 9aec6a9fe9
Don't process despawn if entity is in a chunk scheduled for unload
This won't happen anyways if the user has
"skip ticking for entities in chunks scheduled for unload" turned on,
but if they don't, protect from this instant killing the entity to
keep it vanilla in behavior

a player may teleport away, and trigger instant despawn
2018-07-19 01:25:18 -04:00
Aikar 5f8fac8acd
Fix Squids corrupting the entire servers entity randomness....
Really hope this solves #1223

Also re-add vanilla debug messages back and add uuid to toString
2018-07-19 01:13:53 -04:00
Shane Freeder 84c98c2ba8
NOT FINISHED! She compiles, and she... suffers the wrath of chunkgen... 2018-07-19 05:42:43 +01:00
Shane Freeder 3bcba64d28
NF! 1.13 - more fixes 2018-07-19 00:31:45 +01:00
Shane Freeder c99e4a22aa
NOT FINISHED! 1.13 pre-7
I need more creative commit messages.
2018-07-19 00:16:19 +01:00
Shane Freeder f3b00978d9
NOT FINISHED! 1.13 pre-7 - Holy moley, more patches!
Really, don't touch! may harm your cat!
2018-07-18 19:55:52 +01:00
Aikar dd390c99fd
fix a patch catboy asked me to 2018-07-18 01:08:17 -04:00
Aikar 3d8746445e
NOT FINISHED: Current progress, updated upstream 2018-07-18 00:52:45 -04:00
Shane Freeder f7a676930a
NOT FINISHED! restore dropped patches, fix one more! 2018-07-18 01:37:38 +01:00
Shane Freeder 130b9a0a36
NOT FINISHED! 1.13-pre7 - even more patches!
Patches, patches everywhere!
2018-07-18 01:08:13 +01:00
Shane Freeder 885edbdaf5
NOT WORKING! Even even more patches! 2018-07-17 21:32:26 +01:00
Shane Freeder 4ec5e6e37f
NOT FINISHED! Fixed a few decomp issues 2018-07-17 16:14:23 +01:00
Shane Freeder 8bf65f2872
NOT FINISHED! even more 1.13-pre patches! 2018-07-17 01:32:54 +01:00
Shane Freeder 63214cb795
NOT FINISHED!!! More progress on 1.13-pre7
This work is unfinished, keep your paws off this branch!
2018-07-16 16:43:38 +01:00
Mark Vainomaa b854308c88
Add TNTPrimeEvent 2018-07-16 14:32:13 +03:00
Aikar 878e963fc6
Delete some dupe patches (should be fixed going forward) 2018-07-16 00:32:35 -04:00
Aikar 5b6dfb3463
NOT FINISHED!!! Current Progress on 1.13-pre7 update
This work is 100% unfinished. I am pushing it up so that we as a team
can work on this update.

Do not try to use this branch. You will fail.
2018-07-16 00:13:29 -04:00
Aikar 5d8b3d4969
Fix placement of chunk tracking - Fixes #1199
Spigot had code that returned early in chunk add/remove methods.

This was causing our code added to set current chunks and counts to
be skipped over if the entity was default not persistent but made persistent.

This was the source of many issues

Fixes #1208
2018-07-15 02:44:37 -04:00
Aikar 230bf934b5
Fix issue with entity activation range check - #1199 2018-07-14 00:12:42 -04:00
Minecrell 801e2ee3b1 Refresh player inventory when cancelling PlayerInteractEntityEvent (#1205)
When interacting with entities with an item, the client will assume
the interaction is successful, and update the held item on the
client. However, if the interaction is cancelled on the server side,
the client will still mistakenly remove/replace the item in hand.

Examples for this are milking cows with a bucket or dyeing sheep.
The bucket is replaced with milk and the dye removed from inventory.

Refresh the player inventory when PlayerInteractEntityEvent is
cancelled to avoid this problem.
2018-07-13 16:52:34 -04:00
Minecrell 778d4b24f3 Avoid visual issues for adjacent blocks when cancelling PIE (#1198)
The adjacent blocks of doors, double plants, pistons and beds need
to be updated manually from the server when cancelling a block break
from a player, as it otherwise causes the other parts to disappear
on the client.

This is already done for doors but only for the BlockBreakEvent,
not for PlayerInteractEvent. Move the code to a common method
and also handle the other blocks in similar ways.
2018-07-13 02:48:51 -05:00
Minecrell 81688d28d2 Avoid Netty buffer leak in LegacyPingHandler. Fixes #1200 (#1201)
The extra buffer used to decode the strings sent by the client
in the legacy ping protocol was never released. However, creating
an extra copy of the buffer just to decode it to a string isn't
actually necessary: We can just call toString() directly on the
original buffer.

Additionally, free the buffer in handlerRemoved() to handle cases
where the client never sends enough bytes to form a valid legacy
ping request.
2018-07-13 02:43:56 -05:00
Zach Brown 5b02e5736a
Update upstream B/CB 2018-07-13 02:39:44 -05:00
Aikar db4ecc9d9d
Multitude of changes to attempt to fix #1199 2018-07-12 16:50:17 -04:00
Shane Freeder 73b214a515
Don't send digged block updates for unloaded chunks 2018-07-12 15:19:33 +01:00
Aikar 7bb3f45ce1
don't use a stream for entity counts (performance) 2018-07-10 01:06:09 -04:00
Shane Freeder aa3751e974
hopefully fix entity issues - #1199
@Aikar
2018-07-09 19:48:49 +01:00
Aikar 6745297b05
Only use stored chunk ref if it matches current chunk registration
Closes #1197

While this really undoes a lot of the desired performance gains avoiding chunk lookups,
we sadly have to accept this because we are seeing lots of bugs with entities.
2018-07-08 22:39:46 -04:00
Aikar 18c1127fcd
Improve bed search pattern to go inwards out for bed search radius 2018-07-08 03:30:40 -04:00
Aikar 17525cd54b
Fix weird bugs with entities - Fixes #1195 2018-07-05 18:39:43 -04:00
Aikar 0ae8b2f893
Missed a case where to remove a chunk lookup on TE removal (performance, not bug fix) 2018-07-04 17:29:10 -04:00
Aikar e4b436a05d
[CI-SKIP] Remove paper tags - Fixes #1192 2018-07-04 17:26:54 -04:00
Aikar 5da42b1fb2
Fix Tile Entities - #1192 Fixed 2018-07-04 17:22:38 -04:00
Aikar 3d1f804a22
Vex#getOwner API
Get's the NPC that summoned this Vex
2018-07-04 15:32:30 -04:00
Aikar 467d4d463e
Configurable Bed Search Radius
Allows you to increase how far to check for a safe place to respawn
a player near their bed, allowing a better chance to respawn the
player at their bed should it of became obstructed.

Defaults to vanilla 1.
2018-07-04 15:23:15 -04:00
Aikar fcdc18e556
support plugins calling OBC directly for inventory close event 2018-07-04 12:33:38 -04:00
Aikar bbfb696f30
Avoid Chunk Lookups for Entity/TileEntity Current Chunk
In many places where we simply want the current chunk the entity
is in, instead of doing a hashmap lookup for it, we now have access
to the object directly on the Entity/TileEntity object we can directly grab.

Use that local value instead to reduce lookups in many hot places.
2018-07-04 03:58:56 -04:00
Aikar 18c3716c49
Current Chunk for Entity and Block Entities, counts by entity type
This enables us a fast reference to the entities current chunk instead
of having to look it up by hashmap lookups.

We also store counts by type to further enable other performance optimizations in later patches.
2018-07-04 03:58:56 -04:00
Aikar f534210885
InventoryCloseEvent Reason API
Allows you to determine why an inventory was closed, enabling plugin developers
to "confirm" things based on if it was player triggered close or not.
2018-07-03 21:57:33 -04:00
Brokkonaut e19ed02025
Add World.getEntity(UUID) API
This is the best way to get an entity when the world and its UUID are known.
It is faster than Server.getEntity(UUID) because it does not have to iterate all worlds
2018-07-03 14:53:28 -05:00
BillyGalbreath 8f1e26286f
Add config to disable ender dragon legacy check (#1167) 2018-07-03 14:48:54 -05:00
Brokkonaut 2ed792d699
Improve ProjectileHitEvent to include the BlockFace where the projectile has hit (#1182) 2018-07-03 14:34:42 -05:00
Shane Freeder aedf167268
Cleanup allocated favicon ByteBuf (fixes #1191)
Cleanups a bytebuffer which was allocated during the encoding of the
favicon to be sent to the client.
2018-07-03 19:19:47 +01:00
Shane Freeder a48b6064a8
Extend Player Interact cancellation to handle FlowerPots 2018-07-03 04:45:52 +01:00
Aikar 2adb879802
Add Critical missing Bukkit API - setTarget/getTarget moved down to SentientNPC
This fixes a CRITICAL missing part of the Bukkit API due to mistakes on upstream
refusing to implement the Sentient NPC baseclass of all NPC's.

Until now, the Bukkit API has not provided a way for accessing and setting
a non creature entities target.

Although Flying, Slime, Ambient, and Water mobs all supported targets internally,
you were unable to get/set it.

Now with the SentientNPC API and these API's moved down, every sentient NPC has
access to target data.
2018-07-01 22:10:21 -04:00
Aikar b922ff9886
Fix issues with getBlockState(false) not loading Tile Entity data
This only impacted people who used our useSnapshots new API in a plugin,
which obviously was no one as the data result was completely broken.

Merged the NPE check patch into mine since it has to handle it too.
2018-06-30 01:40:52 -04:00
Aikar 98555e9b90
LivingEntity Hand Raised/Item Use API
How long an entity has raised hands to charge an attack or use an item

Also aliased isHandsRaised for isChargingAttack in RangedEntity
2018-06-29 00:55:29 -04:00
Aikar 7abf2eeeac
RangedEntity API
Allows you to determine if an entity is capable of ranged attacks,
and to perform an attack.
2018-06-26 22:08:01 -04:00
Minecrell eb7341f821 Disable JLine event expansion. Fixes #1171 2018-06-25 17:40:35 +02:00
Aikar f0cb089a24
Fix another case where villages load chunks 2018-06-21 22:58:09 -04:00
Aikar 9b1e9b43ff
Update Upstream 2018-06-20 23:29:33 -04:00
Aikar 980d53d156
Expand Explosions API
Add Entity as a Source capability, and add more API choices, and on Location.
2018-06-20 23:19:46 -04:00
Brokkonaut a5285de480 Add EntityKnockbackByEntityEvent (#1162)
This event is called when an entity receives knockback by another entity. The knockback can be modified in the event. If the event is cancelled the entity is not knocked back.
2018-06-20 21:59:11 -04:00
Aikar d5817e9910
Fire EntityShootBowEvent for Illusioner 2018-06-18 22:19:59 -04:00
Zach Brown 384059607e
Tie PlayerList#moveToWorld safety to existing config
Also renames patch file to better express what it's doing.

It is presumed that those using this config option intend for
suffocation checks to be disabled in all instances. In doing so, they
inherently assume the advantages and issues associated with removing
said safety check.

If the community expresses a desire for more specific options regarding
the handling of this safety feature, we can investigate providing them.

Fixes GH-1149
2018-06-18 16:27:33 -05:00
Aikar c92fa14d36
PlayerReadyArrowEvent
Called when a player is firing a bow and the server is choosing an arrow to use.
Plugins can skip selection of certain arrows and control which is used.
2018-06-18 01:13:16 -04:00
Aikar 76d60b167f
EntityShootBowEvent consumeArrow and getArrowItem API
Adds ability to get what arrow was shot, and control if it should be consumed.
2018-06-18 00:39:04 -04:00
Aikar 9fee3b6963
accidently set the wrong collection on last commit
copy pasting...
2018-06-16 16:32:26 -04:00
Aikar 708d52ca03
Ignore Missing Recipes in RecipeBook to avoid data errors
This code was causing NPE's in saving player data, potentially related to reloads.
2018-06-16 16:30:29 -04:00
BillyGalbreath 1ae07ecf52 Make shield blocking delay configurable (#1154)
Resolves #1153
2018-06-16 15:54:35 -04:00
Aikar 4f29a0ce0a
Print Error details when failing to save player data 2018-06-15 20:40:39 -04:00
Aikar 50a23d5ea3
Configurable Alternative LootPool Luck Formula
Rewrites the Vanilla luck application formula so that luck can be
applied to items that do not have any quality defined.

See: https://luckformula.emc.gs for data and details
-----------

The rough summary is:
My goal was that in a pool, when luck was applied, the pool
rebalances so the percentages for bigger items is
lowered and smaller items is boosted.

Do this by boosting and then reducing the weight value,
so that larger numbers are penalized more than smaller numbers.
resulting in a larger reduction of entries for more common
items than the reduction on small weights,
giving smaller weights more of a chance

-----------

This work kind of obsoletes quality, but quality would be useful
for 2 items with same weight that you want luck to impact
in varying directions.

Fishing still falls into that as the weights are closer, so luck
will invalidate junk more.

This change will result in some major changes to fishing formulas.

-----------

I would love to see this change in Vanilla, so Mojang please pull :)
2018-06-15 00:32:35 -04:00
Aikar 1127a49ced
If we remove a corrupt TE, ensure we save the chunk 2018-06-15 00:11:39 -04:00
Black Hole ea8801ce28 Actually call EntityTeleportEndGatewayEvent (#1147) 2018-06-13 16:29:49 -05:00
Brokkonaut 8b371226fb Avoid int overflow in lootable refill time calculations (#1146)
Fixes https://github.com/PaperMC/Paper/issues/1141
2018-06-13 14:15:31 -04:00
Shane Freeder 179439e48e
[CI-SKIP] Fix comment on unlit chunk sending patch 2018-06-12 15:46:08 +01:00
Aikar 84d350c24c
Fix CraftEntity hashCode
hashCodes are not allowed to change, however bukkit used a value
that does change, the entityId.

When an entity is teleported dimensions, the entity reference is
replaced with a new one with a new entity ID.

For hashCode, we can simply use the UUID's hashCode to keep
the hashCode from changing.

equals() is ok to use getEntityId() because equals() should only
be true if both the left and right are the same reference.

Since entity ids can not duplicate during runtime, this
check is essentially the same as this.getHandle() == other.getHandle()

However, replaced it too to make it clearer of intent.
2018-06-10 20:29:15 -04:00
Aikar ca0ec24d64
Properly remove entities on dimension teleport
To teleport an entity between dimensions, the server makes a copy
and puts the copy in the new location, and marks the old one dead.

If this method got called for the same world in the same tick,
the entity would not have been removed from the UUID map, and the
world readd would fail.

This can be triggered even with a plugin if the entity is teleported
twice in the same tick, from world A to B, then back from B to A.

The re-add to A will fail to add the entity to the world. It will
actually be there, but it will not be visible on the client until
the server is restarted to re-try the add to world process again.

This bug was unlikely to be seen by many due to the double teleport
requirement, but plugins (such as my own) use this method to
trigger a "reload" of the entity on the client.
2018-06-10 20:09:56 -04:00
Shane Freeder 939ca17007
Fix missed change inside of CraftSkullMeta 2018-06-10 12:45:04 +01:00
Aikar 4fbed1adab
Unset Ignited flag on cancel of Explosion Event
Otherwise the creeper infinite explodes
2018-06-10 01:29:20 -04:00
Shane Freeder 5913a2cc1a
Add EntityTeleportEndGatewayEvent for entities (closes #1124) 2018-06-09 14:21:40 +01:00
Shane Freeder ecc9347238
Allow plugins to replace texture if already set on skulls 2018-06-09 12:09:21 +01:00
Aikar 2e423c8954
ItemStack#getMaxItemUseDuration
Allows you to determine how long it takes to use a usable/consumable item
2018-06-05 23:01:16 -04:00
Aikar b97e5124e4
WitchReadyPotionEvent
Control what potion the witch readies to use
2018-06-05 22:48:48 -04:00
Aikar 1e3de9e936
Don't load chunks for villager door checks
This avoids villages spam loading chunks sync
2018-06-05 00:33:24 -04:00