3
0
Mirror von https://github.com/PaperMC/Paper.git synchronisiert 2024-11-15 20:40:07 +01:00
Commit graph

455 Commits

Autor SHA1 Nachricht Datum
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
Aikar
19619f8450 Remove an unused list of TileEntities slowing down removal 2015-10-06 23:36:43 -05:00
Zach Brown
9365b36050 Rebuild patches for upstream changes 2015-10-02 22:58:02 -05:00
Zach Brown
7aa4900879 Remove our own (outdated) TE handling, for one that's closer to vanilla 2015-09-19 09:34:17 -05:00
Zach Brown
ea565eff61 Rebuild patches 2015-09-18 20:44:37 -05:00
vemacs
502ffa0833 Re-add entity/tile entity tick limiters 2015-09-14 20:37:51 -05:00
Zach Brown
f243a4024d Remove several broken or unnecessary patches.
Removes PlayerMicroMoveEvent API, the ability to disable the AsyncCatcher, and the TeleportPassengerVehicleWithPlayer patch
2015-09-12 19:57:39 -05:00
Zach Brown
1f41387610 Rebuild patches 2015-09-01 20:14:41 -05:00
Zach Brown
477b22d36c Use spigot.yml's view distance setting 2015-08-29 03:12:41 -05:00
Techcable
25a137f3a3 Lookup game profiles for users that aren't onine 2015-08-15 14:05:29 -05:00
Byteflux
a16e54d332 Re-add Spigot's hopper-check feature 2015-08-13 10:36:58 -07:00
Techcable
6d0a86a9b6 Use the server usercache for player heads 2015-08-11 01:27:37 -05:00
Zach Brown
e786f4635b [23:29:51] <Byteflux> no tacoz 4 clippeh 2015-08-08 23:33:19 -05:00
Byteflux
4021394904 Fix NPE in recheckGaps when using async lighting 2015-08-06 21:44:03 -07:00
Byteflux
4eadccd3e2 Add beds and enderchests to list of collidable blocks 2015-08-05 02:31:55 -07:00
Iceee
e12f1faed1 Fix lava/water some times creating air instead of cobblestone 2015-08-04 18:24:39 -07:00
Byteflux
bde7f6bbbd Temporarily use getDouble() internally for calls to getFloat() in Paper configs
getFloat() seems to have an issue with reading modified values and always
returns the default value instead. This needs further investigating, but
for now making it use getDouble() internally appears to resolve the issue.
2015-08-04 17:57:17 -07:00
Byteflux
80e87de54f Configurable TNT explosion volume 2015-08-04 17:47:57 -07:00
Byteflux
8ba82c550a Add chests and soul sand to list of types falling blocks can collide with 2015-08-04 17:25:16 -07:00
Byteflux
c38e8ec349 Make the recheckGaps method async like other lighting updates 2015-08-04 15:44:54 -07:00
Byteflux
eaaf2c2cf3 Optimize getCubes() 2015-08-04 15:25:37 -07:00
Zach Brown
0febdc8b44 Rebuild patches 2015-08-02 01:56:08 -05:00
Zach Brown
f6fba00cbc Temporarily remove PlayerMicroMoveEvent implementation
Breaks the existing PlayerMoveEvent, to be re-worked soon
2015-07-30 22:47:22 -05:00
Zach Brown
0daad69443 Update for upstream NMS mapping changes 2015-07-30 22:41:53 -05:00
Zach Brown
881dfe09c2 Update PaperSpigot to 1.8.8 2015-07-27 17:26:21 -05:00
Zach Brown
fe4c7c88ac Re-add recentTps array for plugins that make bad choices 2015-07-26 15:58:37 -05:00
Zach Brown
56afbe3f71 Rebuild 2015-07-25 18:00:37 -05:00
Sudzzy
f9e5f65987 Configurable container update tick rate 2015-07-23 22:06:57 -07:00
Byteflux
633137c1a8 Rebuild patches 2015-07-23 13:37:52 -07:00
Byteflux
7d9632e328 Add BeaconEffectEvent 2015-07-23 12:57:12 -07:00
Byteflux
16ab69f11b Fix package naming of PaperSpigot events to be consistent with Bukkit/Spigot
Right now this only affects the recently added PlayerMicroMoveEvent. I
figured this should be done to keep the events organized in the same way
Bukkit and Spigot do. This should lead to a less cluttered event package
when we do add more events.
2015-07-23 09:56:24 -07:00
Techcable
23f4ae7bbd Add PlayerMicroMoveEvent 2015-07-23 04:30:13 -07:00
Iceee
e139db70f1 Optimize Spigot's Anti X-Ray 2015-07-23 04:24:24 -07:00
Jedediah Smith
579868e0c1 Send absolute position the first time an entity is seen 2015-07-23 04:13:26 -07:00
Zach Brown
58a75fef88 Rebuild patches 2015-07-20 20:14:39 -05:00
Byteflux
4d70f421f6 Unload client chunks + only cache whole chunk maps 2015-07-16 14:06:33 -07:00
Byteflux
e3e7539232 Configurable chunk map caching 2015-07-15 16:16:27 -07:00
Byteflux
b5666dd9e8 Improvements to ChunkMap caching 2015-07-15 13:31:34 -07:00