Commit Graph

792 Commits

Author SHA1 Message Date
Zach Brown 32ecc21162
Revert "Add debug property to disable the watchdog"
This reverts commit d1c470756f962801e7d3bc19bee9440f33a4706e.
2016-05-05 20:10:32 -05:00
Zach Brown 4f73ddb766
Add debug property to disable the watchdog
Use at your own risk, we will not waste our time with support
if your server times out and you cant put 2+2 together to
figure out that its because you killed the watchdoge
2016-05-05 20:04:28 -05:00
Aikar 9dffc43aec Fix hopper suck in patch bug
was checking for ItemStack's instead of EntityItem
2016-05-05 20:22:01 -04:00
Aikar f4a62ba294 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 53abbfdc4c 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 3f0e24eaf3 Do not load chunks for pathfinding 2016-05-04 19:53:33 -04:00
Aikar 211cba970b 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-04 19:46:28 -04:00
Aikar 368a822c47 Rename a Timings class and split up Tracker timings 2016-04-29 21:23:40 -04:00
Aikar 5aa3237a21 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
Aikar 242ddc939b comment out the other update call instead
otherwise might break stuff
2016-04-27 22:22:35 -04:00
Aikar 28bf70ee16 Improve Minecraft Hopper Performance
Removes unnecessary extra calls to .update() that are very expensive
Also reset cooldown each hopper tick that a hopper is full.
2016-04-27 22:15:57 -04:00
willies952002 02494f5be7
Reimplement PlayerEditBookEvent 2016-04-26 23:04:20 -04:00
kashike db8f9e663c
Add ability to disable, and to set min/max next tick delay, of frosted_ice. Resolves #172 2016-04-25 13:36:21 -07:00
kashike 0cfd3c0dc6 Merge pull request #230 from kashike/feature/arrow-pickup
Arrow pickup rule API
2016-04-25 13:27:51 -07:00
Zach Brown ef64712c6c
SPIGOT-1401: Fix dispenser/dropper/furnace placement being different from SP 2016-04-24 19:56:04 -05:00
Aikar 9381554475 update upstream 2016-04-23 22:41:46 -04:00
Aikar 2cbd400e17 Fix Player View Distance API corrupting Chunk Sending - Fixes #207
The Player View Distance patch has been screwing with the configured world view distance.

The world a player was created in would set the players view distance, which would be locked to that distance.

Then switching worlds would not give you an updated view distance.

This then caused issues with what view distance the player should have in the chunk map and did not send chunks to the client correctly during movement.

This patch has now been changed to use a -1 default for "default" and will not override view distance until someone has actually used the API to change it.
2016-04-23 21:39:22 -04:00
Aikar 422f32484b remove potentially bad check 2016-04-23 13:10:55 -04:00
Aikar 55afa33cbc Fix a vanilla bug thats likely causing the mob spawn issues 2016-04-23 12:27:46 -04:00
Aikar 485ad4238b improve the jackass test 2016-04-23 11:57:39 -04:00
Zach Brown 3591fb7ed9
Update upstream Spigot and rebuild 2016-04-22 22:21:10 -05:00
kashike 784ba17340
Fix wrong variable being checked. Fixes #233 2016-04-22 19:02:57 -07:00
Zach Brown a1e3c0b12b
Check entity count adds and mark entities removed as needed 2016-04-22 20:35:24 -05:00
Zach Brown e9ffa94994
More involved workaround for vehicle event cancellation 2016-04-22 18:43:22 -05:00
Zach Brown 4f7b7bb31a
Fix EntityDismountEvent and VehicleExitEvent cancellation
Perhaps "workaround" would be the better term
2016-04-22 15:45:22 -05:00
kashike 7ac2b8139e Arrow pickup rule API 2016-04-22 00:07:58 -07:00
Zach Brown a6536804fd
EntityHealthRegain isFastRegen API 2016-04-22 01:48:49 -05:00
Zach b3a6b5d2a1 Merge pull request #212 from willies952002/feature/permReload
Also Reload Plugin-Defined Permissions
2016-04-22 00:58:32 -05:00
Zach Brown 9abe6f6882
Update upstream CB and rebuild 2016-04-20 11:58:49 -05:00
willies952002 a313078d97 Also Reload Plugin Defined Permissions
Closes https://github.com/PaperMC/Paper/issues/210
2016-04-19 17:29:33 -04:00
Zach Brown c08f771081
Re-add PlayerLocaleChangeEvent implementation
Apparently this was missed at some point, likely during the 1.9 update"
2016-04-19 14:25:05 -05:00
Zach Brown 1bce5c2438
Here have a rebuild while we're at it 2016-04-18 09:43:19 -05:00
Zach Brown 68cdc4fa90
Remove non-zero BlockIterator block and Loading chunks earlier in player TP patches
Allowing only non-zero BlockIterators breaks an API contract explicitly allowing them
(*eyeroll*)

And loading chunks earlier in the TP patch did not resolve the original issue, and now
that it is resolved, shouldn't actually provide any tangible benefits
2016-04-18 09:41:11 -05:00
Aikar ce9e19cfed Prevent Fire from loading chunks
This causes the nether to spam unload/reload chunks, plus overall
bad behavior.
2016-04-17 17:28:16 -04:00
Zach Brown 2e57c5774e
Don't check velocities on Projectiles
Closes GH-217
2016-04-17 13:32:19 -05:00
Aikar 8ba4b64739 Configurable RCON IP address to bind to 2016-04-16 00:46:01 -04:00
Aikar ba9266a37b Allow capping number of attempts at spawning mobs
By default, this logic would loop endlessly trying to fill the world
with entities until it hits the worlds spawn.

This patch will cap the # of attempts to so that the tick does not spend
extra long time on mob spawning
2016-04-15 22:35:03 -04:00
Aikar 845090e570 Ensure we actually removed entity from chunk before decrementing counts
If a plugin hacks into NMS and triggers entity removal, it could
result in an entity being attempted to remove from the chunk twice.

The 2nd pass will return false, as it did not find the entity in the list.

We should not touch entity counts if the entity was not removed, to avoid
going negative.
2016-04-15 21:31:12 -04:00
Zach Brown 8672653871
Check the block water mobs spawn in, not the block under 2016-04-15 15:49:39 -05:00
Aikar 77cdcc281b Fix Bugs with Spigot Mob Spawn Logic - Fixes #138
Spigot drastically altered vanilla mob spawn logic and caused a few issues.
1) Used only spawnable chunks vs entire world for entity counting, resulting in ignoring
other entities in the world, and causing the world to go over its intended limit.

Specially with servers using smaller mob spawn ranges than view distance, as well as affects spawning API

2) Spigot was using 16x16 division instead of vanilla 17x17 division.

Issues got worse in 1.9 due to more chunks being loaded due to 1.9 changes, that fall out
of the monster spawn radius.

This patch returns mob counting to use all loaded chunks, and 17x17 division.
2016-04-14 21:03:57 -04:00
Zach Brown 794a848857
Revert "Only check for async callers, do not remove potentially used variables"
This reverts commit da7320fc42.
2016-04-14 19:26:57 -05:00
Zach Brown 8ccd31ed38 Water mobs should only spawn in the water
Closes GH-199
2016-04-14 18:06:29 -05:00
Zach Brown da7320fc42 Only check for async callers, do not remove potentially used variables
Potentially resolves GH-138
2016-04-14 16:48:52 -05:00
Zach 2924ae631e Merge pull request #205 from kashike/feature/handshake
Add handshake event
2016-04-13 23:10:34 -05:00
kashike 66d3688b39
Add handshake event to allow plugins to handle client handshaking logic themselves 2016-04-13 21:12:57 -07:00
Zach Brown d07eac31bc
Update bungeecord chat API graduations 2016-04-13 22:21:42 -05:00
Zach Brown 0084b02703
Re-add Configurable Player Collision
Nothing to see here, move along
2016-04-13 16:12:44 -05:00
Jedediah Smith 7ab9a51731 Fix some players not being kicked on shutdown
Closes GH-8
2016-04-13 16:04:21 -05:00
Jedediah Smith 15cdfc7472 Update SB's affectsSpawning API to use filters
Closes GH-169
2016-04-13 16:03:49 -05:00
Aikar 4ee5d3eb31 Configurable Player Collision - Resolves #161 2016-04-13 02:11:40 -04:00
Aikar d98f9cc5ae Don't tick Skulls - unused code - Fixes #202 2016-04-13 00:32:05 -04:00
Aikar e177666bfb Remove unused World Tile Entity List
Massive hit to performance and it is completely unnecessary.
2016-04-13 00:27:38 -04:00
Aikar 3f68b7f930 Update PlayerConnection for all teleportation of players
Previous fix for SPIGOT-1903 only applied to world changes, but many other
cases of players been teleporting can cause that same bug. So call it any time
setPosition is called to ensure we never falsely trigger "moved too quickly"

And this commit may be considered evil to some people.
2016-04-12 23:26:42 -04:00
Zach Brown 189235906d
Update upstream 2016-04-12 11:31:54 -05:00
Zach Brown ef3f6a481a
Update upstreams 2016-04-11 10:30:12 -05:00
Aikar a0d38c0b55 update MCUtil.cmpFromMessage to use proper JSON 2016-04-11 01:06:28 -04:00
Aikar 8f89e0f84c SPIGOT-1903: Update PlayerConnection on world change - Fixes #120 2016-04-10 22:36:56 -04:00
Zach Brown a3358b1915
Ugly workaround for SPIGOT-1915 & GH-114
Closes GH-114
2016-04-10 03:24:54 -05:00
Zach Brown 6fc0a013a5
Apply the Ensure inv drag is in bounds patch properly
Closes GH-174
2016-04-09 21:33:29 -05:00
Zach Brown a97fe29d9d
Can't expect others to follow formatting if I don't 2016-04-09 13:54:47 -05:00
Zach Brown 4ed5672cd9
Backport a memory cleanup change from 16w14a 2016-04-09 13:50:56 -05:00
Zach Brown 38d2939ff1
Update upstreams and rebuild 2016-04-08 17:24:26 -05:00
Zach Brown 44a1d43781
Simplify vanilla scoreboard nickname coloring patch
Closes GH-195
2016-04-07 17:31:09 -05:00
Zach Brown 6b75dac6f4
Add basic support for using vanilla style, world-based, scoreboard name coloring
Closes GH-188
2016-04-06 01:10:26 -05:00
Aikar 11d1937145 Include Redstone Torches in the redstone physics event optimization 2016-04-05 23:20:46 -04:00
Aikar 539e1e024c Remove Debug checks from DataBits
These are super hot and causing noticeable hits

Before: http://i.imgur.com/nQsMzAE.png
After: http://i.imgur.com/nJ46crB.png
2016-04-05 21:55:07 -04:00
Aikar cdd926c1e9 Re-add fastutil map to Chunk map. Amaranth confirmed its faster by 3x 2016-04-05 20:43:11 -04:00
Aikar 8e68f444f1 Fix Nether/End world unloading spawn chunks - Fixes #92 2016-04-05 19:53:30 -04:00
Zach Brown bce92696c6 Update upstream and rebuild 2016-04-04 09:53:03 -05:00
Aikar 94fd16aa4a fix keep spawn loaded config 2016-04-03 23:08:13 -04:00
Aikar 62071aad36 Fix errorneous call of EntityDismountEvent 2016-04-03 19:11:25 -04:00
Aikar d46dec88b4 Fix Cancelling BlockPlaceEvent triggering physics 2016-04-03 17:49:31 -04:00
Aikar e11a8f0bd5 Configurable Keep Spawn Loaded range per world
This lets you disable it for some worlds and lower it for others.
2016-04-03 17:34:38 -04:00
Aikar 47221671ba Configurable Grass Spread Tick Rate
Raise this value to make grass spread slower. Set to 0 to turn off grass spreading all together.
2016-04-03 16:29:39 -04:00
kashike 73fc582824 Fix reducedDebugInfo not initialized on client 2016-04-03 05:09:42 -05:00
Zach Brown f6782d5738 Rebuild 2016-04-03 05:06:48 -05:00
Zach Brown d463cc6139 Merge branch 'feature/unknown-use' of https://github.com/kashike/Paper into kashike-feature/unknown-use 2016-04-03 04:52:36 -05:00
Zach Brown 2f79610112 Mark chunk as active if ChunkUnloadEvent is cancelled
Potentially related to GH-169
2016-04-03 02:02:06 -05:00
Zach Brown bb265b967d We don't need to go fast anymore 2016-04-03 02:00:35 -05:00
kashike 871920f2f5 Add PlayerUseUnknownEntityEvent 2016-04-02 18:10:41 -07:00
Aikar cd3d8fb27e Update upstream 2016-04-01 22:08:40 -04:00
DemonWav 2b99b1095e <~Z750> sex it up for me 2016-04-01 01:59:59 -05:00
Zach Brown d8c6c41507 gottagofast 2016-04-01 01:33:12 -05:00
Aikar 081420d738 improve implementation of chunk access patch 2016-04-01 00:35:44 -04:00
Aikar c0e1410682 Fix pom to be compile instead of provided for fastutil 2016-04-01 00:35:21 -04:00
Aikar c92ce02363 Move fastutil from a patch file to a library, and improve EAR 2016-04-01 00:18:18 -04:00
Aikar 78202f87b7 Remove Long2ObjectHashMap for Chunks
Speaking with Amaranth, his point of his implementation was that most
of the lookups are on loaded chunks, so that code is optimized for that case.

While Long2Object should be faster as a general purpose map,
for MC uses, Amaranth's version should be faster. Will try to benchmark
the 2 at some future.
2016-03-31 22:17:33 -04:00
Aikar d03da137f2 Fix isEdgeOfChunk check for MCUtils 2016-03-31 22:17:33 -04:00
Aikar 578af64827 Update upstream for memory leak patch 2016-03-31 21:47:17 -04:00
Aikar dea2d41b86 Do not load chunks for light checks
Should only happen for blocks on the edge that uses neighbors light level
(certain blocks). In that case, there will be 3-4 other neighbors to get a light level from.
2016-03-31 19:29:06 -04:00
Aikar 0ba94906ad Fix Massive Memory Leak
Pathfinder objects are storing references to ChunkCache's, and never cleaning up.

These ChunkCache's then leak other entity objects. Those entity objects then have leaks to their
own chunk cache. A recursive problem....

Clean up the ChunkCache reference after it is done being used.
2016-03-31 19:08:27 -04:00
Zach Brown fb52abdf7e Upstream merge CB, rebuild patch 2016-03-31 12:58:20 -05:00
Zach Brown 582ad801b5 Missed diff, unused config entry, general cleanup
cc GH-170
2016-03-30 22:56:30 -05:00
Aikar 3b2d6fd59e add null check to getEntity API 2016-03-30 21:56:07 -04:00
Aikar fb74f6dbfd Use paperclip.properties so CI can work 2016-03-30 21:27:13 -04:00
Aikar 38df6e505c Paper 1.9.2 Update 2016-03-30 20:50:23 -04:00
Aikar f051ea2ab3 Use FastUtil Long/Int HashMap's
For DataWatcher, swap out plain Integer key HashMap for a Int2ObjectOpenHashMap
For ChunkProviderServer, swap out CB's custom LongHashMap with Long2ObjectOpenHashMap

These collections are super fast as seen
http://java-performance.info/hashmap-overview-jdk-fastutil-goldman-sachs-hppc-koloboke-trove-january-2015/
2016-03-30 09:43:11 -05:00
Zach Brown a785a9460e Skip dead entities in getEntity(UUID) API 2016-03-30 09:41:12 -05:00
DemonWav 4bf9c3c177 Add getEntity by UUID API 2016-03-30 01:20:36 -05:00
Zach Brown d46c56abf0 Put this patch in the patches folder, so it's actually used 2016-03-29 13:56:19 -05:00
Antony Riley af65eaaa3b Sanitise RegionFileCache and make cache size configurable. 2016-03-29 19:09:43 +03:00
Fabse d71444f966 Add a workaround for bugged Minecart drop names 2016-03-28 22:41:27 -05:00
Aikar 48dff29f31 Remove, not invalidate, Metadata on reload
Objects loaded over different class loaders are not the same. Nasty dragons lie here.

Also clean up the previous patch to no longer butcher imports.
2016-03-28 22:43:05 -04:00
Aikar c09424fd33 Prevent Waterflow BlockFromToEvent from loading chunks
Many protection plugins would unintentionally trigger chunk loads
by calling .getToBlock() on an unloaded chunk, killing performance.

Simply skip the event call. as CraftBukkit blocks changing the block
of unloaded chunks anyways.

This keeps behavior consistent, vs inconsistent flowing based on plugin triggered loads.
2016-03-28 22:05:22 -04:00
Aikar b99e8381ab EntityPathfindEvent
Fires when an Entity decides to start moving to a location.

This is not the same as a move event. This only fires when an entity chooses
to start moving to a location, and allows cancelling that pathfind.

Additionally, only get is supported for now. Unsure if changing target location
is safe to do.
2016-03-28 21:24:45 -04:00
Aikar 9ff01b16ab Add MCUtils helper
This will be used by my next commit. But trying to get the build going
since CI blew up
2016-03-28 21:01:42 -04:00
Aikar fb3834f805 And AddTo is a different event than RemoveFrom 2016-03-28 20:58:42 -04:00
Aikar 53309e9172 Actually fire those events 2016-03-28 20:57:15 -04:00
Aikar 89c912061b Configurable Chunk Inhabited Timer
Vanilla stores how long a chunk has been active on a server, and dynamically scales some
aspects of vanilla gameplay to this factor.

For people who want all chunks to be treated equally, you can disable the timer.
2016-03-28 20:47:46 -04:00
Aikar 22b248d631 Entity AddTo/RemoveFrom World Events
These events will give plugins a reliable way to track every entity that is added
or removed from a world, so that one may always ensure they are in a desired state.
2016-03-28 20:33:10 -04:00
Aikar 030de0f42a Update upstream 2016-03-28 20:27:56 -04:00
Aikar d52a49cfa1 Option to disable BlockPhysicsEvent for Redstone
Not sure of any reason a plugin would need to act on a Physics event
for redstone. There is a BlockRedstoneEvent that plugins can also use
for accessing redstone activity.

Defaulting this to false will provide substantial performance improvement
by saving millions of event calls on redstone heavy servers.
2016-03-28 19:57:13 -04:00
Zach Brown 0363644455 Don't set spawn world in PlayerInitialSpawnEvent
Fixes GH-85 and GH-157
2016-03-28 13:00:47 -05:00
Zach Brown 249e52e7a8 Fix player tab list API 2016-03-28 10:41:04 -05:00
Zach Brown b210aa7dfe Update upstream B/CB/Spigot and rebuild 2016-03-27 20:48:50 -05:00
Zach Brown bf877b9a72 Check async spawn chunk check, remove unused variables, GH-159 2016-03-27 20:31:23 -05:00
DemonWav 34973fe898 Add same infi-loop fix to other identical block of code I missed earlier 2016-03-27 05:42:02 -05:00
Zach 5108183346 Merge pull request #153 from kashike/feature/slot
Access items by EquipmentSlot
2016-03-27 02:24:12 -05:00
Zach Brown 85ee80938b Update upstream and rebuild 2016-03-27 01:40:17 -05:00
kashike eeb64630cd Access items by EquipmentSlot 2016-03-26 22:23:42 -07:00
DemonWav ef3d40bf2a Prevent possible infinite loop in BlockPosition iterator 2016-03-26 22:06:33 -05:00
Gabscap f356b447b7 Load chunk before player teleport - Fixes #147 2016-03-26 19:05:31 +01:00
Zach Brown 79c54e4434 Pull in ArrowPickupItemEvent and legacy dataconverter fix from SportBukkit 2016-03-26 03:38:02 -05:00
Zach Brown 47b71ea411 Update upstream CB/Spigot
cc GH-146
2016-03-26 01:38:02 -05:00
Zach Brown 451ede36cf Merge upstream changes and rebuild patches 2016-03-25 18:21:38 -05:00
Byteflux 8b76c66f4b Entity#getOrigin() should return a cloned Location 2016-03-25 09:39:58 -07:00
Byteflux 5bd7a9ab62 Always try to load entity origin location from new NBT tag 2016-03-25 09:32:20 -07:00
Byteflux ced183982a Add Entity Origin API
This replaces the TNT and Falling Block Source Location API with a more
general purpose API that works with all entities.
2016-03-25 02:24:27 -07:00
Zach Brown a6a5b12b9e Re-add TileEntity removal list, fix build 2016-03-25 02:50:56 -05:00
Zach Brown dab9d40bfd Update upstream CB 2016-03-25 02:30:39 -05:00
Byteflux 074838e0f3 Fix timings config being removed by another patch 2016-03-24 23:46:53 -07:00
Byteflux 3fd3544a36 Add Lighting Queue
The lighting queue spreads out the processing of light updates across
multiple ticks based on how much free time the server has left at the end
of the tick.
2016-03-24 23:38:38 -07:00
Byteflux 1d88720b2c Relocate Timings v2 patch 2016-03-24 22:04:44 -07:00
Byteflux 2f0866fef0 Fix decompile errors in mc-dev imports patch 2016-03-24 19:57:01 -07:00
Gabscap a897a66edf rebuild 2016-03-25 02:23:23 +01:00
Aikar f5eb0e04bc rebuild 2016-03-24 20:29:40 -04:00
Zach Brown 7d084c8b67 Update upstream B/CB
Remove patch 0099: Pulled into upstream CraftBukkit
2016-03-24 01:39:29 -05:00
Aikar 4b35a6d530 remove blockstate cache patch 2016-03-23 21:19:45 -04:00
Zach Brown 6c16a295b5 Clean up title and tab list patch
Remember kids, the Ballmer peak is hard to hit https://xkcd.com/323/
Finally fixes #126 and #94 (I tested, it does, please, really, promise)
2016-03-23 01:05:09 -05:00
Aikar f794ca4eca Optimize isValidLocation for inlining - Resolves #123 2016-03-22 23:44:46 -04:00
Aikar 30748518b4 Setting the cache is important to access a cache 2016-03-22 23:44:35 -04:00
Zach Brown 222a306fb9 How does typing work?
Closes GH-125
2016-03-22 14:55:42 -05:00
Zach Brown 3f3fc8b6dc Configurable spawn chances for skeleton horses
Closes feature request GH-111
2016-03-22 12:07:34 -05:00
Aikar 06e453017f rebuild patches 2016-03-22 01:49:52 -04:00
Aikar e11c563e9f Optimize Chunk Access
getting a loaded chunk is one of the most hottest pieces of code in the game.
Often, getChunkAt is called for the same chunk multiple times in a row, often
from getType();

Optimize this look up by using a Last Access cache.
2016-03-22 01:48:05 -04:00
Aikar 15dd8f0692 Don't teleport dead entities
Had some issue with this in past, and this is the vanilla logic.
Potentially an old CB change that's no longer needed.
2016-03-22 01:48:05 -04:00
Aikar 2e29af3df0 Use a Shared Random for Entities
Reduces memory usage and provides ensures more randomness, Especially since a lot of garbage entity objects get created.
2016-03-22 01:48:05 -04:00
Gabscap 6b4b7d300c Add "Waving banner workaround" 2016-03-22 00:37:00 -05:00
Aikar 17a08203ed Make Chunk IO Thread Base count configurable 2016-03-21 23:53:04 -04:00
Aikar 816fccea08 Fix skull cache case bug
missing cache hits on players with uppercase letters in name
2016-03-21 23:38:24 -04:00
Aikar 9a2f82feca Cache BlockState for Blocks
Improve performance for many plugins that call .getState() multiple
times for things like signs that have to "build" sign data.
2016-03-21 23:38:19 -04:00
Aikar 8d0fbc5c1d Another attempt at unload queue, including EAR improvements.
should be fully working now as I pretty much fell back to existing
methods so anything touching the unloadQueue set should behave correctly.

And maintained NMS Reflection safe change too
2016-03-21 23:04:38 -04:00
Aikar 646b62a220 Make /reload require typing confirm to actually reload 2016-03-21 21:40:29 -04:00
willies952002 62580304f4 Add Bukkit#reloadPermissions()
Fix issues with Paper build #544
2016-03-21 21:29:41 -04:00
Aikar def021fb9b fix rebuild patches and rebuild current patches 2016-03-21 20:46:54 -04:00
Daniel Ennis 8616dc012c Merge pull request #91 from willies952002/feature/permReload
Allow Reloading of Custom Permissions - resolves #49
2016-03-21 20:24:27 -04:00
William 869ab5202e Allow Reloading of Custom Permissions
Add the ability to reload the custom permissions file by doing "/reload permissions"

Implements Feature Request: https://github.com/PaperMC/Paper/issues/49
2016-03-21 19:28:52 -04:00
Zach Brown ca7c627ded Use singleton in Village class to work around null issue that evades 2016-03-21 10:28:45 -05:00
Zach Brown 836ec9dc1a Upstream merge Bukkit, update Paperclip 2016-03-21 09:04:19 -05:00
Zach Brown e2bbf2228d Support offline mode from the whitelist command
Closes GH-79
2016-03-21 00:53:32 -05:00
Zach Brown ef3a9f1286 Also handle original end case that spawned the issue
Final commit for GH-96 if there's any justine in the world
2016-03-20 23:15:37 -05:00
Zach 082e07406f Merge pull request #118 from Techcable/fix/spigot-title-compatibility
Fix backwards compatibility with spigot title api
2016-03-20 22:53:57 -05:00
Techcable a96fcc9206 Fix backwards compatibility with spigot title api
I shouldn't have assumed their api was anything other but a thin (and incomplete) wrapper over the packets.

Fixes #94
2016-03-20 20:46:31 -07:00
Zach Brown 84b54438c1 Only mark player as invulnerable if they're actually changing worlds
Fixes GH-96
2016-03-20 22:39:00 -05:00
Zach Brown 537c4994db Only mark player as invulnerable if they're going to the end
cc GH-96
2016-03-20 19:44:49 -05:00
Zach Brown f01982bf4c Upstream merge 2016-03-20 16:05:42 -05:00
Daniel Ennis aa054b6838 Catch Async PlayerChunkMap operations - Fixes #113 2016-03-20 15:25:30 -04:00
Aikar a1651ffd8e Disable Chunk Unload Queue Patch for now 2016-03-20 00:54:23 -04:00
Aikar 532e229c28 handle NaN health/absorb values and repair bad data
Undoes damage from Damage API bugs
2016-03-20 00:35:02 -04:00
Aikar 480a87933a 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 6760f394ef Update upstream and rebuild patches 2016-03-19 20:20:25 -05:00
Zach Brown 924ce8be30 Remove patch pulled upstream and rebuild patches 2016-03-19 17:52:09 -05:00
Zach Brown 9d4a2cf8b3 Patch rebuild 2016-03-19 17:36:53 -05:00
kashike 918e177370 Set health before death event 2016-03-19 17:31:55 -05:00
kashike 3b15da52db Custom replacement for eaten items 2016-03-19 17:31:06 -05:00
Aikar ea051e14d1 Fixes #95 - Vanilla bug with Villages 2016-03-19 15:21:39 -04:00
Zach 57aa8b7451 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 ba0da2d2dd Revert Spigot changes to blocking code, fix issue where entities cannot die 2016-03-19 12:20:27 -05:00
Aikar c331e8978a Fix chunk unload issues - Resolves #97 2016-03-19 11:29:46 -04:00
Aikar 027eb66188 forgot to rebuild after last light change, another fix 2016-03-19 10:57:22 -04:00
Aikar afd40e5d12 fix light level check on monsters 2016-03-19 10:45:28 -04:00
Aikar 7c7f8b83ab 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 148f3809ca Re-add comment to navigation patch 2016-03-18 21:41:50 -05:00
Zach Brown c19e52a63f Update upstream and rebuild patches 2016-03-18 21:37:58 -05:00
Zach Brown c909c3b884 Fix furnace cook time bug 2016-03-18 21:32:31 -05:00
Zach Brown fa8f621d56 Make spawner nerfed mobs float AI toggleable
closes GH-57
2016-03-18 21:10:20 -05:00
Zach Brown 52f462d52d Force potion effect application in BeaconEffectEvent 2016-03-18 20:45:22 -05:00
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 7e81240343 patch rebuild 2016-03-18 01:47:31 -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
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
Aikar 06def38a47 Re-add chunk save queue improvements 2016-03-12 14:23:17 -06:00
Zach Brown bdb9292082 Re-add Spigot's hopper-check feature
Closes GH-77
2016-03-12 13:41:26 -06:00
Techcable 752452373d Handle static methods 2016-03-12 09:43:39 -07:00
Zach Brown 244196f8cb Rebuild some patches 2016-03-12 00:40:16 -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
Zach Brown fdf80f055f Update upstream and rebuild patches 2016-03-11 15:24:37 -06:00
Zach Brown e208ee6102 Update patch numbers for PR merges 2016-03-09 19:48:14 -06:00
Zach Brown b4e8b79728 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 962d24acb2 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
kashike 9216a46316 Add more complete resource pack API 2016-03-08 22:24:16 -08:00
kashike a8ecaee65f Add methods for working with arrows stuck in living entities 2016-03-08 21:11:46 -08:00
Zach Brown 7603bda87f Fix a patch number after a few PRs 2016-03-08 23:09:32 -06:00
Zach 3a5c806a3e Merge pull request #70 from starlis/fixCollisionLag
Disable Scoreboards for non players by default
2016-03-08 22:58:36 -06:00
Aikar cecc8e3eba 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:51:52 -05:00
kashike dcb7708f0c Don't nest if we don't need to when cerealising text components 2016-03-08 18:29:39 -08:00
Aikar 354ed8ed65 Improve NavigationListener patches.
reduces diff and cleans up implementation of goals greatly.
2016-03-08 21:01:33 -05:00
Zach Brown b5a7d7fd29 Forcibly disable async light updates for the time being 2016-03-08 16:23:28 -06:00
kashike 9a9033c6c1 Add BaseComponent sendMessage methods to CommandSender 2016-03-08 13:16:54 -08:00
Aikar 017c6f73be Optimize NavigationListener Iteration
I don't know what the person who wrote that code was smoking, but I
don't think it was good.

Gets rid of the WeakHashMap that mojang was abusing purely to be lazy
on clean up, and handles registering and deregistering navigation
upon world add/remove operations.
2016-03-08 00:42:48 -05:00
Aikar e2906382a1 Optimize NavigationListener 2016-03-07 20:45:17 -06:00
Techcable abc4f8df61 Re-add BlocksPos inlining patch 2016-03-07 16:01:34 -06:00
Zach Brown a05bf5ab9f Rebuild patches 2016-03-07 15:54:14 -06:00
Zach Brown 46d8cd6ca7 Rebuild patches 2016-03-07 00:57:19 -06:00
Zach Brown f429e9e043 Update and rebuild patches 2016-03-06 14:59:17 -06:00
Zach Brown a34a886ff7 Revert "Update to latest and rebuild ALL patches"
This reverts commit 141ef5a6dc.
2016-03-06 14:49:47 -06:00
Zach Brown 141ef5a6dc Update to latest and rebuild ALL patches 2016-03-06 14:37:28 -06:00
Zach Brown 35f085a017 Remove our own changes to the chunk save queue 2016-03-05 16:10:11 -06:00
Aikar 417017308c Chunk save queue improvements 2016-03-04 20:24:42 -06:00
Zach Brown 43091edd3a Fix chest sound playing at the wrong locaton
Closes GH-48
2016-03-04 17:49:32 -06:00
Zach Brown 4076ee569b Update against latest 2016-03-04 15:59:51 -06:00
Zach Brown 142defbe03 Rebuild patches 2016-03-04 15:20:13 -06:00
Zach Brown 7e7db629ed Update against latest upstream versions 2016-03-03 23:50:05 -06:00
Zach Brown a54fb8d270 Silence BeaconEffectEvent, swallow exception in version checking 2016-03-03 04:48:46 -06:00
Zach Brown 6287e97b6b Update for upstream changes 2016-03-03 04:07:25 -06:00
Zach Brown 99fec76702 Paper 1.9 2016-03-03 03:46:49 -06:00
Joseph Hirschfeld 010c651473 Add exception reporting events 2016-03-03 03:46:48 -06:00
Sudzzy 18b55ae547 Fix inter-world teleportation glitches
People are able to abuse the way Bukkit handles teleportation across worlds since it provides a built in teleportation safety check.

To abuse the safety check, players are required to get into a location deemed unsafe by Bukkit e.g. be within a chest or door block. While they are in this block, they accept a teleport request from a player within a different world. Once the player teleports, Minecraft will recursively search upwards for a safe location, this could eventually land within a player's skybase.

Example setup to perform the glitch: http://puu.sh/ng3PC/cf072dcbdb.png
The wanted destination was on top of the emerald block however the player ended on top of the diamond block. This only is the case if the player is teleporting between worlds.
2016-03-03 03:46:48 -06:00
Aikar 9dbab1fcf8 More timings for scheduler 2016-03-03 03:46:48 -06:00
Techcable dcad4c6ea7 Improve title API
Uses title objects instead of individual update methods
2016-03-03 03:46:48 -06:00
Joseph Hirschfeld c04cff4f82 Add velocity warnings
Issues #12 & #18
2016-02-22 21:31:56 -06:00
Joseph Hirschfeld 7ad220f6e6 Add configurable portal search radius 2016-02-21 14:50:05 -05:00
Joseph Hirschfeld a861cc6d8c Change implementation of tile entity removal list 2016-02-20 21:34:45 -06:00
Joseph Hirschfeld 1d78a73b5d Ensure inv drag is in bounds - Fixes #30 2016-02-20 20:07:15 -06:00
Jedediah Smith ee63dbebdc Player Tab List and Title APIs 2016-02-16 20:01:30 -06:00
Zach Brown 52398f034c Move bungeecord chat APIs out of spigot subclasses 2016-02-16 19:55:05 -06:00
kashike e8118c4a31 Be a bit more informative in maxHealth exception 2016-02-16 14:37:28 -08:00
Thinkofdeath 3ebeccc109 Fix Furnace Minecarts losing all of their velocity on corners 2016-02-15 23:19:43 -06:00
Zach 7bea05be51 Merge pull request #27 from kashike/feature/commandmap
Expose server CommandMap
2016-02-15 12:07:29 -06:00
kashike edc2cd686e Expose server CommandMap 2016-02-15 07:13:16 -08:00
Zach Brown 29616a64bb Some people just have bad days 2016-02-15 08:24:39 -06:00
Zach Brown bf58a0d278 Downgrade versioning plugin, fix build 2016-02-15 08:22:37 -06:00
Zach Brown 2cf460f29e Update version handling for our new build system
CC GH-19
2016-02-15 06:02:47 -06:00
Zach Brown 7022e9325f Missed a comment 2016-02-13 20:11:49 -06:00
CullanP 258dd89aa6 Avoid hopper searches if there are no items
Closes PR #23
2016-02-13 19:55:53 -06:00
Aikar 17e043b0fe Optimize getBlockData 2016-02-13 19:41:55 -06:00
Aikar e1db75896c Optimize Pathfinding 2016-02-13 19:41:55 -06:00
Zach Brown 505386c5cb Add BlockBrewingStand and BlockEnchantmentTable to flying entity collisions patch 2016-02-13 19:41:55 -06:00
Zach Brown 2052670adf Make timings verbose by default
More useful data by default for server administrators
2016-02-13 19:41:55 -06:00
Zach Brown b1492af86b Update CraftBukkit 2016-02-05 04:12:16 -06:00
Nik Gil b9d98ad6e8 Make EntityDismountEvent Cancellable 2016-02-01 23:57:27 -07:00
Zach Brown 43876bb104 Squash these tab complete patches 2016-01-31 17:00:30 -06:00
DemonWav 00f91edaec Fix infinite recursion with plugin tab completers
Make block location tab completion be a per-world configurable value
2016-01-31 01:21:47 -06:00
DemonWav 7a0c30a707 Add Location support to tab-completes
This is a feature in vanilla Minecraft that has somehow been missing from CraftBukkit for years
2016-01-30 19:20:18 -06:00
Techcable 4715d9c9d2 Fix mutable block position construction
Should fix #3
2016-01-29 13:49:01 -07:00
Aikar 33f207e3c2 Remove completely invalid Redstone event for Netherrack 2016-01-29 03:40:25 -06:00
Techcable bb17101d59 Speedup BlockPos by fixing inlining 2016-01-29 03:26:50 -06:00
Zach Brown 972d71a30b Squash Java 8 patches into pom changes patches 2016-01-29 02:51:53 -06:00
vemacs c0920b08dc Option to make all chunks capable of spawning slimes 2016-01-29 02:39:21 -06:00
Zach Brown a26fef50ef Re-introduce an option to limit the height of a flying tnt entity 2016-01-18 16:24:29 -06:00
Zach Brown 56c14f8f07 Force commands to be dispatched synchronously
[22:29:12] <Aikar> just add that
[22:29:17] <Aikar> that forces it fixed
[22:29:31] <Aikar> and then when his users spam him hell fix it :P
2016-01-12 23:02:36 -06:00
Zach Brown 314212b236 Add an option to disable chest's detection of Ocelots/Cats 2016-01-10 20:47:21 -06:00
Zach Brown 85dd26898d Migrate timings classes to new package 2016-01-10 01:33:27 -06:00
Zach Brown 9172103531 Migrate PaperSpigot to Timings version 2 2016-01-09 00:32:38 -06:00
Zach Brown e9c23b0c38 Require Java 8 - Tell your shitty hosts to update 2016-01-09 00:13:58 -06:00
chickeneer 06ada7cc6d Resolve bed issues on unloaded chunks 2016-01-04 00:24:44 -06:00
Aikar d02fb4e971 Entity teleport fix 2016-01-04 00:23:20 -06:00
Zach Brown a55011eb68 Make the duplicate entity UUID warning toggleable 2015-12-28 20:15:28 -06:00
Steve Anton 5063a0613d Add PlayerInitialSpawnEvent 2015-12-22 22:06:43 -06:00
Jedediah Smith 0265f4eaef Fix player leak from entity tracker and item frames
3005a20c5c
2015-12-22 21:55:24 -06:00
Aikar ff621fcb04 EAR: Fix bug with teleporting entities 2015-12-22 18:23:08 -06:00
Zach Brown d709888852 [17:15:29] * Z750 kicks jetbrains right in the scrotum 2015-12-06 17:16:51 -06:00
Zach Brown a7600285a6 Restore a constructor that was removed in EntityFallingBlock 2015-12-06 17:14:41 -06:00
ItsHarry 60136e77fe Also apply the "vanished players don't have rights" patch to Fishing Hook entities. 2015-11-26 19:51:30 -06:00
Aikar 0d986bbce5 Don't create a chunk just to unload it 2015-11-15 19:46:37 -06:00
Aikar a4e0b24594 Don't create region files when checking if a chunk exists 2015-11-15 19:44:34 -06:00
Aikar 61aa4a801b Bump thread count for chunk loading 2015-11-15 19:41:14 -06:00
Aikar fa810f3d47 Don't damage ArmorStands that are already dead 2015-11-15 19:40:53 -06:00
Zach Brown 4a647dc40b Remove TE/E Removal Optimizations
Causes pistons to eat blocks in certain circumstances, double piston extenders most notably
2015-10-24 02:20:30 -05:00
Aikar 04daf845d4 Update tick limiter removal and TE/E removal optimizations 2015-10-24 02:13:27 -05:00
Aikar c725b9cb96 Implement EMC's optimized entity and tileentity removal 2015-10-16 22:23:28 -05:00
Zach Brown 43c3a7b169 Don't point users at spigotmc when watchdog kills the server 2015-10-16 21:50:04 -05:00
Zach Brown 7d86a674eb Disable spigot tick limiters 2015-10-16 21:43:03 -05:00
Zach Brown 978982edfd Rebuild patch for upstream changes 2015-10-07 21:32:01 -05:00