From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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/BlockBase.java b/src/main/java/net/minecraft/world/level/block/state/BlockBase.java index ffb5dc4fabb9249dfc1c8521025eaad0d6205329..6f429103ce21dc9c8eab25973809907df73691c9 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBase.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBase.java @@ -389,7 +389,14 @@ public abstract class BlockBase { } // Paper end + // Paper start + protected boolean isTicking; + protected Fluid fluid; + // Paper end + public void a() { + this.fluid = this.getBlock().d(this.p()); // Paper - moved from getFluid() + this.isTicking = this.getBlock().isTicking(this.p()); // Paper - moved from isTicking() if (!this.getBlock().o()) { this.a = new BlockBase.BlockData.Cache(this.p()); } @@ -428,19 +435,19 @@ public abstract class BlockBase { return this.getBlock().d(this.p(), iblockaccess, blockposition); } - public boolean d() { + public final boolean d() { // Paper return this.a == null || this.a.c; } - public boolean e() { + public final boolean e() { // Paper return this.e; } - public int f() { + public final int f() { // Paper return this.b; } - public boolean isAir() { + public final boolean isAir() { // Paper return this.f; } @@ -506,7 +513,7 @@ public abstract class BlockBase { } } - public boolean l() { + public final boolean l() { // Paper return this.k; } @@ -678,12 +685,12 @@ public abstract class BlockBase { return this.getBlock().a(block); } - public Fluid getFluid() { - return this.getBlock().d(this.p()); + public final Fluid getFluid() { // Paper + return this.fluid; // Paper - moved into init } - public boolean isTicking() { - return this.getBlock().isTicking(this.p()); + public final boolean isTicking() { // Paper + return this.isTicking; // Paper - moved into init } public SoundEffectType getStepSound() { diff --git a/src/main/java/net/minecraft/world/level/material/Fluid.java b/src/main/java/net/minecraft/world/level/material/Fluid.java index 9a93b204973eef4c02a52f33fd9578a43603ed98..147e628bd562da4cf6f07218724a9d6c79d26e38 100644 --- a/src/main/java/net/minecraft/world/level/material/Fluid.java +++ b/src/main/java/net/minecraft/world/level/material/Fluid.java @@ -20,8 +20,12 @@ public final class Fluid extends IBlockDataHolder { public static final Codec a = a((Codec) IRegistry.FLUID, FluidType::h).stable(); + // Paper start + protected final boolean isEmpty; + // Paper end public Fluid(FluidType fluidtype, ImmutableMap, Comparable> immutablemap, MapCodec mapcodec) { super(fluidtype, immutablemap, mapcodec); + this.isEmpty = fluidtype.b(); // Paper - moved from isEmpty() } public FluidType getType() { @@ -33,7 +37,7 @@ public final class Fluid extends IBlockDataHolder { } public boolean isEmpty() { - return this.getType().b(); + return this.isEmpty; // Paper - moved into constructor } public float getHeight(IBlockAccess iblockaccess, BlockPosition blockposition) {