Commit Graph
100 Commits
Author SHA1 Message Date
Aikar 6a3e97e28a Respect AsyncCatcher for Async Command Detection - Fixes #555 2016-12-27 11:00:15 -05:00
Aikar da3827e1c5 Upstream, Fixes #533 2016-12-23 00:55:03 -05:00
Aikar bded01f0f5 continue instead of break for treasure map bounding
per: https://github.com/PaperMC/Paper/commit/a5f9077242fdaba3ae77170383c6cd12a2d82c10#commitcomment-20268968

The break may of been skipping attempts at valid chunks. I thought break was the right abort, but maybe it is not.
2016-12-21 21:28:01 -05:00
Aikar 06e82119e2 IllegalPacketEvent - Resolves #419
Fire an event when an illegal packet is received to let plugins handle it

Lets plugins change the kick message and if it should kick or not.
2016-12-21 21:22:02 -05:00
Aikar daab7ed781 Optimize isEmpty() to remove Map lookup
Every call to .isEmpty() made a horribly wasteful map lookup just to get the
reference to the Air Item for checking.

We will now cache a copy of that item
2016-12-21 04:21:42 -05:00
Aikar c6ffa97c7a Revert "Optimize ItemStack.isEmpty()"
This reverts commit c2b8a4be32.

See a bug
2016-12-21 03:51:48 -05:00
Aikar c2b8a4be32 Optimize ItemStack.isEmpty()
Remove hashMap lookup every check, simplify code to remove ternary
2016-12-21 03:50:43 -05:00
Aikar e0f5d3e1bd Update upstream 2016-12-21 01:40:41 -05:00
Aikar f7f9ba8639 Actually set the ChatPosition 2016-12-20 16:02:05 -05:00
Aikar 252c3ff471 Add String based Action Bar API 2016-12-20 15:56:41 -05:00
Aikar bc72d63bfc Configurable Cartographer Treasure Maps
Allow configuring for cartographers to return the same map location

Also allow turning off treasure maps all together as they can eat up Map ID's
which are limited in quantity.
2016-12-20 15:28:32 -05:00
Aikar a5f9077242 Bound Treasure Maps to World Border
Make it so a Treasure Map does not target a structure outside of the
World Border, where players are not even able to reach.

This also would help the case where a players close to the border, and one
that is outside happens to be closer, but unreachable, yet another reachable
one is in border that would of been missed.
2016-12-20 15:17:18 -05:00
Aikar 4506924566 Ignore invalid Marker Icon ID's in maps - Fixes #497
Replace with the red marker. Should of only happened by creative abuse.
2016-12-19 23:39:52 -05:00
Aikar fff0dc6598 Prevent Pathfinding out of World Border - Fixes #547
This prevents Entities from trying to run outside of the World Border
2016-12-19 23:08:31 -05:00
Aikar 310105c9c0 Update upstream 2016-12-19 22:58:12 -05:00
Aikar e82cdab244 Fix worldborder bug
typo in variable name
2016-12-19 01:23:59 -05:00
Aikar beb2b5b6c1 Update Upstream 2016-12-19 01:23:54 -05:00
Aikar 61526b1029 Optimize World.isLoaded(BlockPosition)Z
Reduce method invocations for World.isLoaded(BlockPosition)Z
2016-12-02 00:20:34 -05:00
Aikar e5b4e80232 Ignore "Unable to resolve BlockEntity" debug messages - Fixes #489 2016-12-02 00:02:18 -05:00
Aikar b1aa7e2ca9 Merge branch 'vemacs-cachedthreadpool-login'
* vemacs-cachedthreadpool-login:
  Cache user authenticator threads Idea from @AlfieC
2016-11-23 11:53:35 -05:00
Aikar 09a8e2f02f Update upstream 2016-11-21 18:00:40 -05:00
Aikar 84a72db135 Upstream update again 2016-11-19 00:16:42 -05:00
Aikar 7d73fa7ae0 Update Upstream 2016-11-18 23:58:56 -05:00
Aikar 8f3325047c Re-add dependency reduced pom
Learned the correct way to handle that file
2016-11-18 21:09:03 -05:00
Aikar 0ba0ac4910 update my repo url 2016-11-12 00:01:34 -05:00
Aikar 1d9fc7dfc2 Chunk Save Stats Debug Option
Adds a command line flag to enable stats on how chunk saves are processing.

Stats on current queue, how many was processed and how many were queued.
2016-11-04 02:21:33 -04:00
Aikar 3732877c5c Rework that save cap patch and make it configurable 2016-11-04 01:55:36 -04:00
Aikar e9542e33fd Don't process auto save if the save queue is filled
This avoids ever growing pending NBT objects which eat up memory.
2016-11-04 01:33:08 -04:00
Aikar 5fe1de30c9 Prevent Hoppers from loading chunks by double chest 2016-11-04 01:32:53 -04:00
Aikar c15001e24d Fix faulty logic in Auto Save check - Fixes #443 2016-11-04 01:31:49 -04:00
Aikar 4708920d8d Updated Timings to better detail saves 2016-10-20 00:21:35 -04:00
Aikar 59eb1231b5 Revert "Option to hide plugins from the Query Protocol"
This already exists

This reverts commit d6a9c326c7.
2016-10-19 23:38:18 -04:00
Aikar d6a9c326c7 Option to hide plugins from the Query Protocol 2016-10-19 23:37:14 -04:00
Aikar c59127a587 Disable Vanilla Chunk GC in favor of Bukkits 2016-09-26 01:52:01 -04:00
Aikar e081f311cb don't save level every tick for auto save. whoops 2016-09-26 01:50:26 -04:00
Aikar 731f141042 Raise string limit for packet serialization
The default limit is possible to hit with 50 page books with color codes, causing clients to disconnect.

Bump the limit up a hair to above currently seen sizes.
2016-09-21 23:56:41 -04:00
Aikar 663fbf798e Auto fix bad Y levels on player login
Bring down to a saner Y level if super high, as this can cause the server to crash
2016-09-21 23:49:27 -04:00
Aikar 59b9ad36e6 Remove FishingHook reference on Craft Entity removal
This caused some bugs chickeneer reported to me, with fishing.
2016-09-21 23:45:05 -04:00
Aikar d330ae5050 Process NMS Data Conversion post ItemMeta on Copy
ItemMeta apply is a destructive process that expects to be the authority on
what the items NBT data is.

When CraftItemStack.asNMSCopy was called, the conversion ran, potentially setting
the converted data into the ItemStacks tag.

Then if that item had ItemMeta, it would completely undo that conversion by
erasing the NBT Tag.

On copy, run conversion post ItemMeta apply.
2016-09-21 23:42:13 -04:00
Aikar cc1f66ce0e add a chunk registration fix
World checks and the Chunk Add logic are inconsistent on how Y > 256, < 0, is treated

Keep them consistent
2016-09-21 22:56:19 -04:00
Aikar 77825c2a60 Log chunk save failures as ERROR level 2016-09-21 22:33:09 -04:00
Aikar 6c7ea0b67a Auto Save Improvements
Makes Auto Save Rate setting configurable per-world. If the auto save rate is left -1, the global bukkit.yml value will be used.

Process auto save every tick instead of once per auto tick interval, so that chunk saves will distribute over many ticks instead of all at once.

Re-introduce a cap per tick for auto save (Spigot disabled the vanilla cap) and make it configurable.
2016-09-21 22:12:56 -04:00
Aikar 7c6d0644a2 Don't save players every tick, oops 2016-09-19 23:39:21 -04:00
Aikar f18f712da2 Incremental Auto Saving
Process auto save every tick instead of once per auto tick interval, so that chunk saves will distribute over many ticks instead of all at once.
2016-09-19 23:31:42 -04:00
Aikar f919bc9732 fix order of mc dev imports 2016-08-30 18:54:03 -04:00
Aikar 086939fe19 Timings v2 updates for more chunk related timings (generations) 2016-08-20 00:07:26 -04:00
Aikar 6b24c4cfde Timings v2: confirm before reset. Add delays before report generation
Require user to confirm the timings reset, warning them that they should not be doing this.
Also require Timings to have ran for 3 minutes before allowing the report command.
Also require 1 minute intervals between reports to stop report spam.
2016-08-19 23:42:38 -04:00
Aikar 0c18db0e44 Upstream burritos, maybe tacos, and churros. 2016-07-08 00:17:25 -04:00
Aikar 122f47ac1c More Upstream tacos 2016-06-30 01:38:53 -04:00
Aikar 869b06ea1e Timings v2 cleanups - potential overflow fix and fix bad hostnames
if hostname is invalid on system, just use a static string

also cleans up visibility of a lot of code, hopefully will help jvm optimize more.
2016-06-30 01:31:00 -04:00
Aikar cb334f6321 Upstream tacos 2016-06-30 01:23:30 -04:00
Aikar 997285e344 Update Entity AddTo|RemoveFrom World events to be EntityEvents 2016-06-24 00:16:46 -04:00
Aikar ba61e44475 Fix Old Sign Conversion
1) Sign loading code was trying to parse the JSON before the check for oldSign.
       That code could then skip the old sign converting code if it triggers a JSON parse exception.
    2) New Mojang Schematic system has Tile Entities in the new converted format, but missing the Bukkit.isConverted flag
       This causes Igloos and such to render broken signs. We fix this by ignoring sign conversion for Defined Structures
2016-06-22 22:56:57 -04:00
Aikar faa5f1fb18 Fix Double World Add issues - Fixes #328
Vanilla will double add Spider Jockeys to the world, so ignore already added.

Also add debug if something else tries to, and abort before world gets bad state
2016-06-22 22:50:19 -04:00
Aikar 6463bc2fe2 Optimize isInvalidYLocation, getType and getBlockData
Some pretty micro optimizations, but this is the hottest method in the server....

This will drastically reduce number of operations to perform getType

the 2 previous patches was squashed into 1
2016-06-22 22:43:02 -04:00
Aikar 03553d232e Update upstream 2016-06-22 22:18:41 -04:00
Aikar 284e2f4856 Delay Chunk Unloads based on Player Movement
When players are moving in the world, doing things such as building or exploring,
they will commonly go back and forth in a small area. This causes a ton of chunk load
and unload activity on the edge chunks of their view distance.

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

This is very wasteful. This system introduces a delay of inactivity on a chunk
before it actually unloads, which is maintained separately from ChunkGC.

This allows servers with smaller worlds who do less long distance exploring to stop
wasting cpu cycles on saving/unloading/reloading chunks repeatedly.
2016-06-18 23:33:57 -04:00
Aikar 76ccb4c5f0 Remove the item from the correct hand when spawn egg depletes 2016-06-18 03:44:11 -04:00
Daniel Ennis 290af99931 Merge pull request #340 from phase/master
Fix infinite loop when saving chunks
2016-06-17 18:56:51 -04:00
Aikar c9bf3f3819 Fix issue with chests being erased - #322 Fixed 2016-06-07 03:03:51 -04:00
Aikar 85df861eda more chunk unload queue fixes, hopefully fix various odd bugs 2016-06-07 02:08:59 -04:00
Aikar 49c8b34653 Fix bug with lootable refresh not saving inventory if on 2016-06-06 19:56:51 -04:00
Aikar fbcd3ce763 Add sub timings to chunk map 2016-06-05 00:10:50 -04:00
Aikar e18cef3e72 remove part of my hopper patch, not sure its doing what I intended 2016-06-04 11:52:25 -04:00
Aikar ec95eb86f7 Update Upstream 2016-06-04 11:41:04 -04:00
Aikar ba0a4c75bd Only send Dragon/Wither Death sounds to same world
Also fix view distance lookup
2016-05-31 23:56:19 -04:00
Aikar a9ec7b3a75 Fix skeleton horse spawn chance ignoring difficulty modifier if custom set
Also reduce diff
2016-05-30 12:50:57 -04:00
Aikar d9971432c2 re-add timing that spigot missed 2016-05-27 22:29:09 -04:00
Aikar e9c7cca230 Ensure chunks never load async
Force operation to main thread if it occurs async
2016-05-27 22:28:23 -04:00
Aikar cac7bbc139 Remove unneeded mob spawn cap patch - Fixes #235
I misread the code and thought the code kept looping until the mob spawn cap was hit.

Upon furthur review, this is not true, so this patch doesn't do anything sane.
2016-05-27 21:35:28 -04:00
Aikar 45aa7db5c4 Update Upstream 2016-05-25 12:37:17 -04:00
Aikar 8bee892ded Avoid blocking on Network Manager creation
Fixes #294

Use a pending list to handle new connections so that the netty threads
do not block waiting for the main thread to finish ticking
2016-05-16 23:21:26 -04:00
Aikar c623104ffa MC-99914 - ensure EntityItem loads before EntityPotion 2016-05-16 22:54:48 -04:00
Aikar 4bead5b898 bump the default maxMobSpawns default to 250, and add support for unlimited
Use -1 to represent vanilla/unlimited.
Updated PaperWorldConfig to also update the individual worlds limit if it was set
to the new default value.

Should hopefully help #235
2016-05-16 22:07:12 -04:00
Aikar 478f246490 Optimize UserCache / Thread Safe
Because Techable keeps complaining about how this isn't thread safe,
easier to do this than replace the entire thing.

Additionally, move Saving of the User cache to be done async, incase
the user never changed the default setting for Spigot's save on stop only.
2016-05-16 21:14:28 -04:00
Aikar 1a5414bc4e Add Async Helper method to MCUtil 2016-05-16 20:50:09 -04:00
Aikar e4c179e827 Refactor Lighting Queue System
may help #284

Cleans up the lighting queue system, reducing diff and improving implementation.

We no longer stop chunk unloads due to lighting updates, and instead simply flush the lighting queue.
The cost of forcing the chunk (and its neighbors!) to stay loaded waiting for its
lighting work to finish is much greater than simply taking the hit and doing the work.

This change also helps reduce the diff and avoid bugs with missed diffs by removing
duplicated logic.

Also switches to a more effecient data structure (ArrayDeque instead of LinkedList) for the queue itself.
2016-05-15 18:48:39 -04:00
Aikar 8e62fb709b Timings v2: Start methods return self for use in try-with-resources
try (Timing ignored = timing) {
  // Code to time
}
// auto stops timing, even if you return in 42 other places in the block
2016-05-15 17:34:26 -04:00
Aikar 0c78971552 More cases of avoiding marking active for chunks, to stop potential leaks 2016-05-13 22:27:20 -04:00
Aikar 016dca3390 Bring back an EAR optimization from 1.9.2 2016-05-13 01:39:03 -04:00
Aikar b6d0dd32c6 Fix chunk leak issue with queued light updates 2016-05-13 01:34:37 -04:00
Aikar 6025355569 clean up spigot working files out of our Paper folder 2016-05-12 22:11:11 -04:00
Aikar 5d952ffa7e Use a more reliable fixed width sequence for rebuild patches 2016-05-12 21:37:14 -04:00
Aikar 9bba4a53e5 Be more targetted with patch deletion 2016-05-12 21:24:19 -04:00
Aikar 4e3d8a41ee Fix T/TE removal list bug
Thanks @Cat6363
2016-05-12 08:55:35 -04:00
Aikar 1850ae22cf unmark chunk as unloading when unload is cancelled
no obviousy bugs caused by this at the moment, but we may need to clean up process to be like
how I use to have it before vanilla did it, and we shouldn't leave this boolean in an invalid state.
2016-05-12 02:07:39 -04:00
Aikar a1916005e1 Fix chunk unload leak issues due to neighbor updates 2016-05-12 01:55:53 -04:00
Aikar 34fcd8ccc2 Paper 1.9.4 Update 2016-05-11 22:07:46 -04:00
Aikar 68f8205a32 Don't save empty scoreboard teams to scoreboard.dat - Fixes #244
While I can't think of any reason to do this except some REALLY weird workflow, I still added a config
to let you save them incase someone runs into issues.
2016-05-07 23:39:22 -04:00
Aikar e7be15b884 fix bug with lootable API
was returning the NMS instance of objects instead of the Bukkit API objects
2016-05-07 21:16:38 -04:00
Aikar 5c5c2b0a22 Fix hopper suck in patch bug
was checking for ItemStack's instead of EntityItem
2016-05-05 20:22:01 -04:00
Aikar 2570184ba1 Implement getNMSWorld on EntityMinecartContainer
Was missed because the class is abstract and nothing implementing the class was imported in Paper
2016-05-04 20:33:16 -04:00
Aikar 22d5cbee82 Update Upstream 2016-05-04 20:10:27 -04:00
Aikar 37eafdba1b Entity Tracking Improvements
If any part of a Vehicle/Passenger relationship is visible to a player,
send all passenger/vehicles to the player in the chain.
2016-05-04 20:10:22 -04:00
Aikar 7947dd83ae Do not load chunks for pathfinding 2016-05-04 19:53:33 -04:00
Aikar 3da6be053f LootTable API & Replenishable Lootables Feature
Provides an API to control the loot table for an object.
Also provides a feature that any Lootable Inventory (Chests in Structures)
can automatically replenish after a given time.

This feature is good for long term worlds so that newer players
do not suffer with "Every chest has been looted"

API and Event added to control the Auto Replenish feature for players.
2016-05-01 23:54:08 -04:00
Aikar 4e7355aa95 update upstream 2016-05-01 15:58:10 -04:00
Aikar 3b3f85f88f Try to determine plugin name on bad plugin command registration 2016-04-30 12:53:20 -04:00
Aikar 496b49861c Rename a Timings class and split up Tracker timings 2016-04-29 21:23:40 -04:00
Aikar b1e4588ae7 Improve Maps (in item frames) performance and bug fixes
Maps used a modified version of rendering to support plugin controlled
imaging on maps. The Craft Map Renderer is much slower than Vanilla,
causing maps in item frames to cause a noticeable hit on server performance.

This updates the map system to not use the Craft system if we detect that no
custom renderers are in use, defaulting to the much simpler Vanilla system.

Additionally, numerous issues to player position tracking on maps has been fixed.
2016-04-29 20:04:12 -04:00