Commit Graph

2117 Commits

Author SHA1 Message Date
Aikar
c51bf9d9f3 Optimize BlockStateList/BlockData
Mojang included some sanity checks on arguments passed to the BlockData.
This code results in the Hash look up occuring twice per call, one to test if it exists
and another to retrieve the result.

This code should ideally never be hit, unless mojang released a bad build. We can discover bugs with this as furthur code that never expects a null
would then NPE, so it would not result in hidden issues.

This is super hot code, so removing those checks should give decent gains.
2016-03-18 19:25:43 -04:00
Aikar
e546c55b6e Optimize Chunk Unload Queue
Removing chunks from the unload queue when performing chunk lookups is a costly activity.

It drastically slows down server performance as many methods call getChunkAt, resulting in a bandaid
to skip removing chunks from the unload queue.

This patch optimizes the unload queue to instead use a boolean on the Chunk object itself to mark
if the chunk is active, and then insert into a LinkedList queue.

The benefits here is that all chunk unload queue actions are now O(1) constant time.

A LinkedList will never need to resize, and can be removed from in constant time when
used in a queue like method.

We mark the chunk as active in many places that notify it is still being used, so that
when the chunk unload queue reaches that chunk, and sees the chunk became active again,
it will skip it and move to next.
2016-03-18 18:03:44 -04:00
Zach Brown
310448d4ce Move config change into config patch 2016-03-18 16:41:26 -05:00
Aikar
fec4578d74 Add comment to Navigation patch on why its done that way
to avoid accidently changing it in future and breaking things
2016-03-18 17:12:30 -04:00
Aikar
ef251a8f81 Remove checkIfActive timings
Unneeded and adds extra timings cost to every entity tick
2016-03-18 17:11:53 -04:00
Aikar
6c5117b21c Configurable Non Player Arrow Despawn Rate
Can set a much shorter despawn rate for arrows that players can not pick up.
2016-03-18 15:13:03 -04:00
Aikar
e9222c0be7 Handle Item Meta Inconsistencies
First, Enchantment order would blow away seeing 2 items as the same,
however the Client forces enchantment list in a certain order, as well
as does the /enchant command. Anvils can insert it into forced order,
causing 2 same items to be considered different.

This change makes unhandled NBT Tags and Enchantments use a sorted tree map,
so they will always be in a consistent order.

Additionally, the old enchantment API was never updated when ItemMeta
was added, resulting in 2 different ways to modify an items enchantments.

For consistency, the old API methods now forward to use the
ItemMeta API equivalents, and should deprecate the old API's.
2016-03-18 14:56:16 -04:00
Aikar
dc477811ed Fix Furnace cook time bug
If the server lags out and skips multiple ticks, Furnace cooking behavior would not
cook in the expected amount of time as the cook time was not decremented correctly.

This patch ensures that furnaces cook to the correct wall time expectation.
2016-03-18 14:27:53 -04:00
Aikar
8fea9b93ce Undead horse leashing
default false to match vanilla, but option to allow undead horse types to be leashed.
2016-03-18 14:20:11 -04:00
Aikar
b41bd5a1e2 Invalidate Metadata on reload
Metadata is not meant to persist reload as things break badly with non primitive types
This will invalidate metadata on reload so it does not crash everything if a plugin uses it.
2016-03-18 13:50:33 -04:00
Aikar
6e76be51bb reduce sleep rate if file io thread sleep is enabled
so we will still give it time to sleep to avoid the issue, but reduce the
known negative effects of that sleeping.
2016-03-18 13:41:18 -04:00
Aikar
460104c3fe Default loading permissions.yml before plugins
Under previous behavior, plugins were not able to check if a player had a permission
if it was defined in permissions.yml. there is no clean way for a plugin to fix that either.

This will change the order so that by default, permissions.yml loads BEFORE plugins instead of after.

This gives plugins expected permission checks.

It also helps improve the expected logic, as servers should set the initial defaults, and then let plugins
modify that. Under the previous logic, plugins were unable (cleanly) override permissions.yml.

A config option has been added for those who depend on the previous behavior, but I don't expect that.
2016-03-18 13:23:48 -04:00
Aikar
82db846be6 set default goals on all pom poms </cheer> 2016-03-18 02:13:51 -04:00
Aikar
d6b621b533 remove that comment... 2016-03-18 01:50:06 -04:00
Aikar
7e81240343 patch rebuild 2016-03-18 01:47:31 -04:00
Aikar
4619c60eac skip jar creation on build unless --jar specified 2016-03-18 01:46:32 -04:00
Aikar
98b86017fa Chunk Save Reattempt
Sometimes a chunk region file is closed prematurely, resulting in a "Stream Closed" error on chunk saving.
Ultimately there is a race condition that causes it, but re-trying the save will avoid the issue.

Retry the save 5 times to try our best to avoid rollbacks due to chunk save failures.
2016-03-18 01:37:16 -04:00
Zach Brown
ca2ddce0ac Upstream changes 2016-03-17 23:31:20 -05:00
md_5
409596021c SPIGOT-1953: Don't copy NavigationListener Map on Iteration. 2016-03-17 23:31:20 -05:00
Aikar
1bd454082e Add sender name to commands.yml replacement
This allows you to use $sender in commands.yml definitions to make
commands that auto target self.
2016-03-18 00:29:35 -04:00
Aikar
b4d1aa418a Add event call helper
This simplifies new event calling by reducing the diff to actually fire the event and check for cancelled state.
2016-03-18 00:29:11 -04:00
Zach
36f0b8144d Merge pull request #84 from Techcable/fix/null-titles
Don't pass null title to constructor
2016-03-16 21:13:59 -05:00
Techcable
c2c40a2562 Don't pass null title to constructor
Fixes #83
Fix resetTitle()
@Zbob750 shouldn't be doing these updates in the middle of the night
2016-03-16 18:59:34 -07:00
Zach Brown
4209e6184c Someone questioned my professionality today 2016-03-16 03:16:12 -05:00
Zach Brown
30f02fe6e5 Fix the end credits toggle
I think its pretty clear that no one uses this given that it didn't work at all before
2016-03-16 02:41:38 -05:00
Zach Brown
f26cff016e Update upstream B/CB 2016-03-15 22:37:52 -05:00
md_5
f6fe337ed2 Rebuild patches. 2016-03-15 22:37:17 -05:00
Zach
a4c39eb681 Merge pull request #82 from willies952002/patch-1
Fix Errors in Contributing.md
2016-03-15 15:42:44 -05:00
William Surgeon
4f1e81516a Fix Errors in Contributing.md
- Replace all remaining instances of `PaperSpigot` in `Contributing.md` with `Paper`
- Fix List under "Apply Patches" Section
2016-03-15 16:21:57 -04:00
Zach Brown
86a8f39fea Update Contributing.md for 1.9 name/repo changes 2016-03-15 12:51:03 -05:00
Zach Brown
f8539b5e7b Upstream
*glances around*
2016-03-14 23:16:29 -05:00
Zach Brown
9e768a219f Hey look more updates upstream 2016-03-14 00:59:05 -05:00
md_5
7b28ee7d2b Patch rebuild 2016-03-14 00:58:34 -05:00
Zach Brown
99277e609a Update CB 2016-03-14 00:26:11 -05:00
Zach Brown
396b01b327 Update B/CB 2016-03-12 17:08:03 -06:00
Aikar
06def38a47 Re-add chunk save queue improvements 2016-03-12 14:23:17 -06:00
md_5
bbac895bc9 Fix patch conflicts 2016-03-12 13:54:10 -06:00
Zach Brown
80b1308735 Update and rebuild patches 2016-03-12 13:52:49 -06:00
Zach Brown
bdb9292082 Re-add Spigot's hopper-check feature
Closes GH-77
2016-03-12 13:41:26 -06:00
Zach
c231a1b9e9 Merge pull request #78 from Techcable/feature/asm-executors
Handle static event methods
2016-03-12 12:20:35 -06:00
Techcable
752452373d Handle static methods 2016-03-12 09:43:39 -07:00
Zach Brown
eb7993789f Update upstream
hi @mibby
2016-03-12 00:59:34 -06:00
Zach Brown
244196f8cb Rebuild some patches 2016-03-12 00:40:16 -06:00
Techcable
386693ee50 Use ASM for event execution
Reflection (although highly optimized), has noticable overhead.
It also creates noticable GC overhead by allocating arrays with arguments, as @Aikar has said.

Based on WaterfallMC/Waterfall@1692934370

Merge pull request #45 from Techcable/feature/asm-executors
2016-03-12 00:26:02 -06:00
Techcable
b4bf59de2e Improve Paper's version checking system
Will now check commit hashes from this repo as a fallback when it is unable to find a build from our CI server. Because not everyone uses it directly
2016-03-11 22:30:43 -06:00
Zach Brown
3fc67691fc Fix BeaconEffectEvent
It is no longer 5 am
2016-03-11 20:36:47 -06:00
Zach Brown
5dcb658e3e Update upstream and rebuild patches 2016-03-11 20:13:31 -06:00
md_5
a638cf7e03 Patch rebuild. 2016-03-11 20:12:50 -06:00
md_5
b1e5adbd8a Fix patch conflicts. 2016-03-11 20:12:41 -06:00
Zach Brown
fdf80f055f Update upstream and rebuild patches 2016-03-11 15:24:37 -06:00