geforkt von Mirrors/Paper
89d51d5f29
Because this exploit has been widely known for years and has not been fixed by Mojang, we decided that it was worth allowing people to toggle it on/off due to how easy it is to make it configurable. It should be noted that this decision does not promise all future exploits will be configurable.
79 Zeilen
3.5 KiB
Diff
79 Zeilen
3.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
Date: Mon, 6 Jul 2020 20:46:50 -0700
|
|
Subject: [PATCH] Improve inlining for some hot BlockBehavior and FluidState
|
|
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 c7b6377aafd32f67eb8ba4dedd7cce5841b2d58d..e57e3a26b0fb856e1ab693df5783fe8b9bee9719 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
|
|
@@ -975,15 +975,15 @@ public abstract class BlockBehaviour implements FeatureElement {
|
|
return this.shapeExceedsCube; // Paper - moved into shape cache init
|
|
}
|
|
|
|
- public boolean useShapeForLightOcclusion() {
|
|
+ public final boolean useShapeForLightOcclusion() { // Paper - Perf: Final for inlining
|
|
return this.useShapeForLightOcclusion;
|
|
}
|
|
|
|
- public int getLightEmission() {
|
|
+ public final int getLightEmission() { // Paper - Perf: Final for inlining
|
|
return this.lightEmission;
|
|
}
|
|
|
|
- public boolean isAir() {
|
|
+ public final boolean isAir() { // Paper - Perf: Final for inlining
|
|
return this.isAir;
|
|
}
|
|
|
|
@@ -1067,7 +1067,7 @@ public abstract class BlockBehaviour implements FeatureElement {
|
|
}
|
|
}
|
|
|
|
- public boolean canOcclude() {
|
|
+ public final boolean canOcclude() { // Paper - Perf: Final for inlining
|
|
return this.canOcclude;
|
|
}
|
|
|
|
@@ -1275,11 +1275,11 @@ public abstract class BlockBehaviour implements FeatureElement {
|
|
return this.getBlock().builtInRegistryHolder().is(key);
|
|
}
|
|
|
|
- public FluidState getFluidState() {
|
|
+ public final FluidState getFluidState() { // Paper - Perf: Final for inlining
|
|
return this.fluidState;
|
|
}
|
|
|
|
- public boolean isRandomlyTicking() {
|
|
+ public final boolean isRandomlyTicking() { // Paper - Perf: Final for inlining
|
|
return this.isRandomlyTicking;
|
|
}
|
|
|
|
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 ea2a04e5298832177fac93568656ac45784d5eb6..c5d1e4e293d15831f9b550b9964dc190763956b6 100644
|
|
--- a/src/main/java/net/minecraft/world/level/material/FluidState.java
|
|
+++ b/src/main/java/net/minecraft/world/level/material/FluidState.java
|
|
@@ -25,9 +25,11 @@ public final class FluidState extends StateHolder<Fluid, FluidState> {
|
|
public static final Codec<FluidState> CODEC = codec(BuiltInRegistries.FLUID.byNameCodec(), Fluid::defaultFluidState).stable();
|
|
public static final int AMOUNT_MAX = 9;
|
|
public static final int AMOUNT_FULL = 8;
|
|
+ protected final boolean isEmpty; // Paper - Perf: moved from isEmpty()
|
|
|
|
public FluidState(Fluid fluid, ImmutableMap<Property<?>, Comparable<?>> propertiesMap, MapCodec<FluidState> codec) {
|
|
super(fluid, propertiesMap, codec);
|
|
+ this.isEmpty = fluid.isEmpty(); // Paper - Perf: moved from isEmpty()
|
|
}
|
|
|
|
public Fluid getType() {
|
|
@@ -43,7 +45,7 @@ public final class FluidState extends StateHolder<Fluid, FluidState> {
|
|
}
|
|
|
|
public boolean isEmpty() {
|
|
- return this.getType().isEmpty();
|
|
+ return this.isEmpty; // Paper - Perf: moved into constructor
|
|
}
|
|
|
|
public float getHeight(BlockGetter world, BlockPos pos) {
|