PaperMC/patches/server/0509-Improve-inlinig-for-some-hot-IBlockData-methods.patch
Nassim Jahnke ef0e5a642d
Updated Upstream (Bukkit/CraftBukkit/Spigot)
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:
9ae3f10f SPIGOT-3842: Add Player#fireworkBoost() and expand Firework API
48c0c547 PR-786: Add methods to get sounds from entities

CraftBukkit Changes:
5cc9c022a SPIGOT-7152: Handle hand item changing during air interact event
4ffa1acf6 SPIGOT-7154: Players get kicked when interacting with a conversation
4daa21123 SPIGOT-3842: Add Player#fireworkBoost() and expand Firework API
e5d6a9bbf PR-1100: Add methods to get sounds from entities
b7e9f1c8b SPIGOT-7146: Reduce use of Material switch in ItemMeta

Spigot Changes:
4c157bb4 Rebuild patches
2022-09-12 13:31:45 +02:00

96 lines
4 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Spottedleaf <spottedleaf@spottedleaf.dev>
Date: Mon, 6 Jul 2020 20:46:50 -0700
Subject: [PATCH] Improve inlinig for some hot IBlockData methods
diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
index 7117dd220c393163fd5be77e332e56a34c667670..178d9ad7525b6743038ed45c6f85686a860ffd26 100644
--- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
+++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
@@ -717,8 +717,14 @@ public abstract class BlockBehaviour {
return this.shapeExceedsCube;
}
// Paper end
+ // Paper start
+ protected boolean isTicking;
+ protected FluidState fluid;
+ // Paper end
public void initCache() {
+ this.fluid = this.getBlock().getFluidState(this.asState()); // Paper - moved from getFluid()
+ this.isTicking = this.getBlock().isRandomlyTicking(this.asState()); // Paper - moved from isTicking()
if (!this.getBlock().hasDynamicShape()) {
this.cache = new BlockBehaviour.BlockStateBase.Cache(this.asState());
}
@@ -768,15 +774,15 @@ public abstract class BlockBehaviour {
return this.shapeExceedsCube; // Paper - moved into shape cache init
}
- public boolean useShapeForLightOcclusion() {
+ public final boolean useShapeForLightOcclusion() { // Paper
return this.useShapeForLightOcclusion;
}
- public int getLightEmission() {
+ public final int getLightEmission() { // Paper
return this.lightEmission;
}
- public boolean isAir() {
+ public final boolean isAir() { // Paper
return this.isAir;
}
@@ -850,7 +856,7 @@ public abstract class BlockBehaviour {
}
}
- public boolean canOcclude() {
+ public final boolean canOcclude() { // Paper
return this.canOcclude;
}
@@ -1048,12 +1054,12 @@ public abstract class BlockBehaviour {
return this.getBlock() == block;
}
- public FluidState getFluidState() {
- return this.getBlock().getFluidState(this.asState());
+ public final FluidState getFluidState() { // Paper
+ return this.fluid; // Paper - moved into init
}
- public boolean isRandomlyTicking() {
- return this.getBlock().isRandomlyTicking(this.asState());
+ public final boolean isRandomlyTicking() { // Paper
+ return this.isTicking; // Paper - moved into init
}
public long getSeed(BlockPos pos) {
diff --git a/src/main/java/net/minecraft/world/level/material/FluidState.java b/src/main/java/net/minecraft/world/level/material/FluidState.java
index d035eaccc09dfeaedf25579b850ccdaecba3f974..66f712657ae0c4166ecd198f41081d96843296c4 100644
--- a/src/main/java/net/minecraft/world/level/material/FluidState.java
+++ b/src/main/java/net/minecraft/world/level/material/FluidState.java
@@ -26,8 +26,12 @@ public final class FluidState extends StateHolder<Fluid, FluidState> {
public static final int AMOUNT_MAX = 9;
public static final int AMOUNT_FULL = 8;
+ // Paper start
+ protected final boolean isEmpty;
+ // Paper end
public FluidState(Fluid fluid, ImmutableMap<Property<?>, Comparable<?>> propertiesMap, MapCodec<FluidState> codec) {
super(fluid, propertiesMap, codec);
+ this.isEmpty = fluid.isEmpty(); // Paper - moved from isEmpty()
}
public Fluid getType() {
@@ -43,7 +47,7 @@ public final class FluidState extends StateHolder<Fluid, FluidState> {
}
public boolean isEmpty() {
- return this.getType().isEmpty();
+ return this.isEmpty; // Paper - moved into constructor
}
public float getHeight(BlockGetter world, BlockPos pos) {