Commit graph

339 commits

Author SHA1 Message Date
Aikar
6acff7d61d Disable Chunk Unload Queue Patch for now 2016-03-20 00:53:34 -04:00
Aikar
0b26bbd451 handle NaN health/absorb values and repair bad data
Undoes damage from Damage API bugs
2016-03-20 00:35:02 -04:00
Aikar
db0f31134f Improve chunk unload queue to maintain some previous expectations
While the previous logic was logically correct, some CB API's before
would request a chunk without removing it from the unload queue.

While this is logically wrong, some plugins seem to be causing unload issues.

This change will make anything using that one API that use to not remove from
queue, no longer remove from queue.

Hopefully other activities on the server will touch the chunk if it REALLY is in use.
2016-03-20 00:13:20 -04:00
Zach Brown
a424df3323 Update upstream and rebuild patches 2016-03-19 20:20:25 -05:00
Zach Brown
85451753d1 Remove patch pulled upstream and rebuild patches 2016-03-19 17:52:09 -05:00
Riley Park
0a9d183bd4 Set health before death event 2016-03-19 10:12:30 -07:00
Riley Park
6d01d7f9ea Custom replacement for eaten items 2016-03-19 09:57:19 -07:00
Aikar
d1c4507c9c Fixes #95 - Vanilla bug with Villages 2016-03-19 15:21:39 -04:00
Zach Brown
67a3d9cb57 Merge pull request #101 from DemonWav/master
Revert Spigot changes to blocking damage code
/me glances at imports
/me will fix later
2016-03-19 12:25:22 -05:00
DemonWav
4e7056af65 Revert Spigot changes to blocking code, fix issue where entities cannot die 2016-03-19 12:20:27 -05:00
Aikar
7efe31a331 Fix chunk unload issues - Resolves #97 2016-03-19 11:29:46 -04:00
Aikar
bb82a8a401 forgot to rebuild after last light change, another fix 2016-03-19 10:57:22 -04:00
Aikar
e59f9ab2e6 fix light level check on monsters 2016-03-19 10:45:28 -04:00
Aikar
d72abafa8f Optimized Light Level Comparisons
Use an optimized method to test if a block position meets a desired light level.

This method benefits from returning as soon as the desired light level matches.

Also Optimize Grass more
2016-03-18 23:55:31 -04:00
Zach Brown
eaccfc64b2 Re-add comment to navigation patch 2016-03-18 21:41:50 -05:00
Zach Brown
3727b119f2 Update upstream and rebuild patches 2016-03-18 21:37:58 -05:00
Zach Brown
659c43c6f3 Fix furnace cook time bug 2016-03-18 21:32:31 -05:00
Zach Brown
c7fec9299a Make spawner nerfed mobs float AI toggleable
closes GH-57
2016-03-18 21:10:20 -05:00
Zach Brown
29dccccac4 Force potion effect application in BeaconEffectEvent 2016-03-18 20:45:22 -05:00
Aikar
80dcb6c4a3 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
11a3044c3c 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
bccbc72945 Move config change into config patch 2016-03-18 16:41:26 -05:00
Aikar
57be47c2d1 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
af73f87c66 Remove checkIfActive timings
Unneeded and adds extra timings cost to every entity tick
2016-03-18 17:11:53 -04:00
Aikar
3ce3b26186 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
32a3169a1f 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
944a964300 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
91b4746fe0 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
63b6980015 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
9da9b3a9d0 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:40:46 -04:00
Aikar
4d317d0ebe 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
3ad0e63a21 set default goals on all pom poms </cheer> 2016-03-18 02:13:51 -04:00
Aikar
0316152120 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:35:26 -04:00
Zach Brown
14d5dba144 Upstream changes 2016-03-17 23:29:51 -05:00
Techcable
a8d725eb23 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:58:48 -07:00
Zach Brown
59ca434484 Someone questioned my professionality today 2016-03-16 02:57:49 -05:00
Zach Brown
2a6b5b76de 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:21:39 -05:00
Aikar
82452cd373 Re-add chunk save queue improvements 2016-03-12 14:23:17 -06:00
Zach Brown
d230ac7ef2 Re-add Spigot's hopper-check feature
Closes GH-77
2016-03-12 13:41:26 -06:00
Zach Brown
a9f44f2240 Rebuild some patches 2016-03-12 00:40:16 -06:00
Zach Brown
716993c750 Fix BeaconEffectEvent
It is no longer 5 am
2016-03-11 20:36:47 -06:00
Zach Brown
67ae849417 Merge pull request #73 from kashike/feature/you-are-very-resourceful-you-know-yes-you-are-very-resourceful-yes 2016-03-09 19:45:55 -06:00
Zach Brown
4fba7d5bdc Merge pull request #71 from kashike/feature/what-are-these-pokey-things-OH-MY-GOD-HELP-THEY-HURT 2016-03-09 19:44:18 -06:00
Riley Park
a80a692e2b Add more complete resource pack API 2016-03-08 22:23:59 -08:00
Zach Brown
74b4a248ab Merge pull request #70 from starlis/fixCollisionLag
Disable Scoreboards for non players by default
2016-03-08 22:58:36 -06:00
Aikar
a1403cb641 Disable Scoreboards for non players by default
Entities collision is checking for scoreboards setting.
This is very heavy to do map lookups for every collision to check
this setting.

So avoid looking up scoreboards and short circuit to the "not on a team"
logic which is most likely to be true.
2016-03-08 23:42:08 -05:00
Riley Park
0eb02b3760 Add methods for working with arrows stuck in living entities 2016-03-08 20:21:08 -08:00
Riley Park
875d85b3ec Don't nest if we don't need to when cerealising text components 2016-03-08 18:29:39 -08:00
Aikar
ed8ebbc98a Improve NavigationListener patches.
reduces diff and cleans up implementation of goals greatly.
2016-03-08 19:31:47 -05:00
Zach Brown
4ff94ab64e Forcibly disable async light updates for the time being 2016-03-08 16:23:28 -06:00