geforkt von Mirrors/Paper
4104545b11
"It was from a different time before books were as jank as they are now. As time has gone on they've only proven to be worse and worse."
102 Zeilen
4.1 KiB
Diff
102 Zeilen
4.1 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 597bb3b9b638c59c6ddc21095e4fe4503ef36cb1..933448659367b5f0b323bd91992fc9b59314b8a1 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
|
|
@@ -653,7 +653,14 @@ public abstract class BlockBehaviour {
|
|
}
|
|
// 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());
|
|
}
|
|
@@ -692,19 +699,19 @@ public abstract class BlockBehaviour {
|
|
return this.getBlock().getOcclusionShape(this.asState(), world, pos);
|
|
}
|
|
|
|
- public boolean hasLargeCollisionShape() {
|
|
+ public final boolean hasLargeCollisionShape() { // Paper
|
|
return this.cache == null || this.cache.largeCollisionShape;
|
|
}
|
|
|
|
- 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;
|
|
}
|
|
|
|
@@ -778,7 +785,7 @@ public abstract class BlockBehaviour {
|
|
}
|
|
}
|
|
|
|
- public boolean canOcclude() {
|
|
+ public final boolean canOcclude() { // Paper
|
|
return this.canOcclude;
|
|
}
|
|
|
|
@@ -971,12 +978,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 65911334082f9d53fc930d7c6b0313e8acef0c5e..0ae876f0bbfac74a9d5f06fb73f9cfcf5991b02e 100644
|
|
--- a/src/main/java/net/minecraft/world/level/material/FluidState.java
|
|
+++ b/src/main/java/net/minecraft/world/level/material/FluidState.java
|
|
@@ -23,8 +23,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() {
|
|
@@ -40,7 +44,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) {
|