Commit Graph

19406 Commits

Author SHA1 Message Date
Aikar
3ef000597a Improve chunk loading speed and prioritization further - Fixes #3530 2020-06-10 08:06:34 -04:00
Aikar
2a50b14734 Improve Chunk Priority, Frustum Priority and Load Speed Algorithms
Fix bug where mojang has a -90 modifier in yaw resulting in us calculating
chunks to the players left rather than in front of them.

Drastically improve Frustum Prioritization function to reduce lag from its
calculations (Found it was being spammed really heavy on world add/teleport)

Also improved the logic behind choosing chunks to prioritize.

Add Priority tickets to a radius of 3 on any login, world chnge or teleport

This should help improve world load / chunk sending upon a player changing
locations by loading those chunks faster.

Improved the Player Ticket Delayer to be a little bit smarter about delays to
let closer chunks load a bit faster and only delay the farther out ones more.

This update will provide significant improvements to priority of chunks and
reduce the cpu cost of doing these calculations.

Fixes #3530
2020-06-09 23:06:34 -04:00
Aikar
bfe5d554d3 Improve ChunkMapDistance.b crash fix to clean up properly
There is some vanilla level bug where this tracking state appears
to get messed up and player doesn't exists in chunk its trying to untrack.

We returned early to prevent crashing, but I suspect if there was a level being
tracked for the chunk, it got leaked due to the early return.

So going to ensure we clean up the level tracker when this state occurs.

This may help with any leaked chunk issues.
2020-06-09 23:01:47 -04:00
Aikar
3028a91f26 Show Plugins Event Listeners under Combined Total in Timings 2020-06-09 21:48:35 -04:00
Aikar
edc73f0d2b Improve Plugin Ticket Management
Now supports async chunk access even though doing that is bad
and shouldn't be done anyways since we force you back to main, itll
now just delay the ticket add to main the same way.

Now only add the ticket if the plugin CAUSED the chunk load, so no longer
adds ticket if the chunk was already loaded.

Additionally, cap chunk ticket limits to 1 second (Effectively ignoring chunk-gc config
unless the config is lower than 20 ticks)

Fixes #3533
2020-06-09 21:13:51 -04:00
Luracasmus
a4b1b1f00e Update to HTTPS in README (#3460)
Update URLs to HTTPS in README.md.
2020-06-09 10:12:43 +02:00
stonar96
65154f7929 Make Anti-Xray multithreaded (#3520)
Obfuscate multiple chunks at a time over the server thread pool.

Will speed up chunk processing when anti xray is enabled.

Co-authored-by: Aikar <aikar@aikar.co>
2020-06-09 10:12:20 +02:00
Aikar
2dc5846adf Add PluginTickets to API Chunk Methods
Like previous versions, plugins loading chunks kept them loaded until
they garbage collected to avoid constant spamming of chunk loads

This adds tickets to a few more places so that they can be unloaded.

Additionally, this drops their ticket level to BORDER so they wont be ticking
so they will just sit inactive instead.

Using .loadChunk to keep a chunk ticking was a horrible idea for upstream
when we have TWO methods that are able to do that already in the API.

Not adding it to .getType() though to keep behavior consistent with vanilla.
2020-06-09 03:43:11 -04:00
Aikar
9eca5e3b19 Improve Chunk Prioritization and Internal Scheduler
In previous MC versions, we had a rather simple internal scheduler
for delayed tasks that would just keep pushing task back until desired
tick was reached.

The method it called to schedule the task changed behavior in 1.14, and now
this scheduler is not working nowhere near what it was supposed to be doing.

This was causing long delayed task to eat up CPU (In Oversleep for example)

Rewrite this to just use the CraftScheduler for scheduling delayed tasks.

Once this was fixed, it became quite clear the code that delayed ticket
additions for chunks based on distance was clearly not right, as it was
tested on the previous broken logic.

So the ticket delay process has been vastly revamped to be even smarter.
Chunks behind the player can load slower than the chunks in front of the player.
We also can delay ticket adding until one of its neighbors has loaded, as
this lets us get a smoother spiral out for the chunks (minus frustum intent).

Additionally on frustum previous commit inadvertently broke frustum trying to
fix an issue when the real fix lied elsewhere, so restore chunk priority so
it works again.
2020-06-09 03:17:25 -04:00
Aikar
d7e48a1126 Improve Login to use Urgent priority - improves login chunk load times 2020-06-08 21:44:52 -04:00
Mark Vainomaa
f14d6e62da Add an API for CanPlaceOn and CanDestroy NBT values 2018-09-12 18:53:35 +03:00
Tamion
5dc2ca5b62 Fix PickupStatus getting reset 2024-07-23 18:37:12 +02:00
powercas_gamer
e8e8c4f7c2 add Plugin#getDataPath 2024-07-15 02:07:49 +00:00
Tamion
7507d0f1ef Fix HelpCommand searching
Prevent index out of bounds exception when finding possible matches in
the help topics.
A general empty string is caught and directed to the defaultTopic by
getHelpTopic(). #findPossibleMatches hence should not concern itself
with possible empty strings anymore.
2024-07-13 18:00:37 +02:00
Jake Potrebic
cb339661cc Make a PDC view accessible directly from ItemStack 2024-06-12 10:29:30 -07:00
Jake Potrebic
9e5e007003 Proxy ItemStack to CraftItemStack 2024-05-14 11:57:51 -07:00
Bjarne Koll
fcc777a0a8 Introduce registry entry and builders
Co-authored-by: kokiriglade <git@kokirigla.de>
2024-06-13 22:35:05 +02:00
Jake Potrebic
146cd1a015 Registry Modification API 2022-03-02 13:36:21 -08:00
Jake Potrebic
ada45eba8a Deprecate InvAction#HOTBAR_MOVE_AND_READD 2024-05-25 09:51:07 -07:00
SoSeDiK
4491c7e2ac Add missing fishing event state 2024-05-01 07:44:50 +03:00
Jake Potrebic
f09feba0f4 General ItemMeta fixes 2024-05-28 19:59:01 -07:00
Jason Penilla
236fa2126f Allow Bukkit plugin to use Paper PluginLoader API 2024-05-21 13:18:00 -07:00
Jake Potrebic
962554a0de Fix equipment slot and group API
Adds the following:
- Add missing 'body' slot group
- Expose LivingEntity#canUseSlot

Co-authored-by: SoSeDiK <mrsosedik@gmail.com>
2024-05-22 10:00:19 -07:00
Jake Potrebic
953ba33fc1 Fix issues with recipe API
Improves the validation when creating recipes
and RecipeChoices to closer match what is
allowed by the Codecs and StreamCodecs internally.

Adds RecipeChoice#empty which is allowed in specific
recipes and ingredient slots.

Also fixes some issues regarding mutability of both ItemStack
and implementations of RecipeChoice.

Also adds some validation regarding Materials passed to RecipeChoice
being items.
2024-05-12 10:42:42 -07:00
Owen1212055
69edd6d91f Brigadier based command API
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
2022-08-01 22:50:29 -04:00
SoSeDiK
fd8df6aeed More Chest Block API 2024-05-01 08:22:13 +03:00
nostalfinals
daebdc24e7 Added API to get player ha proxy address 2024-04-08 23:24:38 +08:00
SoSeDiK
5e1dc7cf47 Expose #hasColor to leather armor 2024-05-01 10:58:50 +03:00
SoSeDiK
925c5a6760 Add GameMode#isInvulnerable 2024-05-01 06:56:21 +03:00
Jason Penilla
cbb0d28ebe Add hook to remap library jars 2024-04-28 13:51:08 -07:00
Jason Penilla
d9e51980e6 Allow modifying library loader jars bytecode 2024-04-28 11:11:26 -07:00
Jake Potrebic
b0a676ba62 Fix ItemFlags
Adds new flag in HIDE_STORED_ENCHANTS which was split
from HIDE_ADDITIONAL_INFO. Adds a migration to account for
this, adding the new flag if the itemstack is old and had the
old flag.
2024-04-27 13:28:17 -07:00
Jake Potrebic
6fedaecd54 Fix SpawnerEntry$Equipment API 2024-04-26 17:00:00 -07:00
Jake Potrebic
6f0bb7dc5f More Raid API 2022-03-04 09:46:40 -08:00
Janet Blackquill
92b812ddc0 Add CartographyItemEvent
Similar to SmithItemEvent, but for cartography tables.
2024-04-07 16:51:04 -04:00
Flo0
c6e1625d87 API for checking sent chunks 2024-04-08 16:22:07 +02:00
Owen1212055
53c5e5da09 Item Mutation Fixes 2024-03-20 20:42:31 -04:00
Owen1212055
4092b60fa0 Deprecate ItemStack#setType 2024-02-29 17:54:26 -05:00
Badbird5907
1c53b54fd9 Add BlockBreakProgressUpdateEvent 2024-03-04 22:18:33 -05:00
Jake Potrebic
96f6033450 Clone mutables to prevent unexpected issues
There are lots of locations in the API where mutable
types are not cloned, either on return or when passed
as a parameter and assigned to a field, which can cause
unexpected behaviors. Let this be a lesson to use
immutable types for simple things Location, Vector, and
others.
2024-03-16 11:10:48 -07:00
vicisacat
d19f69b3eb Expanded Hopper API 2024-03-15 17:35:18 +01:00
Jake Potrebic
e18f6c6b55 Fix DamageSource API 2024-03-16 11:21:14 -07:00
Owen1212055
1725de0232 Suspicious Effect Entry API
Exposes a new suspicious effect entry type that properly represents
storable effects in the context of suspicious effects as they only
define the potion effect type and duration.

This differentiates them from the existing PotionEffect API found in
bukkit and hence clarifies that storable values in the parts of the API
in which it replaces PotionEffect.

Co-authored-by: Yannick Lamprecht <yannicklamprecht@live.de>
2024-03-03 19:45:52 +01:00
Yannick Lamprecht
3073742fd7 improve BanList types 2024-02-10 20:49:47 +01:00
David Mayr
3ebc5bb92c add number format api
Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
2023-12-16 10:40:29 +01:00
vicisacat
8363e77ad2 Add FluidState API 2023-11-17 20:21:47 +01:00
Warrior
b9e525c8ec Add getChunkSnapshot includeLightData parameter 2024-02-10 10:05:59 +01:00
Yannick Lamprecht
de70580ea9 ItemStack Tooltip API 2024-01-22 13:27:18 +01:00
Jake Potrebic
eb68d0e1b5 Add Lifecycle Event system
This event system is separate from Bukkit's event system and is
meant for managing resources across reloads and from points in the
PluginBootstrap.
2023-07-18 14:47:02 -07:00
Luis
cf77104dbc Add api for spawn egg texture colors 2024-01-11 19:58:17 +01:00