Reduces number of instructions a chunk lookup does
when accessing the last chunk cache. This reduces amount of work and opcodes
and allows better inlining.
In lots of profiling comparisons, this optimization was able to reduce the
cost of repeated chunk lookups that hit the cache pretty significantly.
Previous commit 97b2eadf1 pulled upstream change that implements the exact same fix.
CB change: 7029c0a8f3
Co-authored-by: Professor Bloodstone <git@bloodstone.dev>
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing
CraftBukkit Changes:
7029c0a8f SPIGOT-6311: Don't calculate portal shapes for up/down directions
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing
CraftBukkit Changes:
ff2b9440f SPIGOT-6304: Removed the detection of legacy text based on color codes
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing
CraftBukkit Changes:
560b65c4 #707, SPIGOT-5063, SPIGOT-5304, SPIGOT-5656, SPIGOT-3206, SPIGOT-5350, SPIGOT-5980, SPIGOT-4672: Persist the exact internal text representation where possible.
Spigot Changes:
ff439d1e Rebuild patches
EntityLiving#applyInstantEffect() immediately kills the player and drops their inventory.
Before this patch, instant effects would be applied before the potion ItemStack is removed and replaced with a glass bottle. This caused the potion ItemStack to be dropped before it was supposed to be removed from the inventory. It also caused the glass bottle to be put into a dead player's inventory.
This patch makes it so that instant effects are applied after the potion ItemStack is removed, and the glass bottle is only put into the player's inventory if the player is not dead. Otherwise, the glass bottle is dropped on the ground.
Faster version for isSolid() that utilizes NMS's state for isSolid instead of the slower
process to do this in the Bukkit API
Material#isSolid uses a large switch statement which isn't as performant vs a simple boolean return
Adds API for buildable, replaceable, burnable too.
There was 2 unnecessary lines of code in a core method used for DataBits
that repeatedly calculated a static value.
We now just precalculate that in the constructor and reuse the value instead.
This is a micro optimization, but this is some of the hottest code in the server so
it should provide some minor gains as well as improve inlining.
Additionally, to further help inlining, mark the DataBits methods as final.
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing
Bukkit Changes:
f4a9ed36 SPIGOT-6273: Expose ItemFrame ItemDropChance through API
CraftBukkit Changes:
72c5e7477 SPIGOT-6273: Expose ItemFrame ItemDropChance through API