From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: violetc <58360096+s-yh-china@users.noreply.github.com> Date: Tue, 18 Jul 2023 14:59:26 +0800 Subject: [PATCH] Cache BlockStatePairKey hash This patch is Powered by Gale(https://github.com/GaleMC/Gale) diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java index 0c31c53b1512f0c47a525eff04c1b783cb782fd3..e09b35bfed9880ea6c8168ff6099f1a1a5fb6527 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java @@ -626,11 +626,18 @@ public class Block extends BlockBehaviour implements ItemLike { private final BlockState first; private final BlockState second; private final Direction direction; + private final int hash; // Leaves - cache BlockStatePairKey hash public BlockStatePairKey(BlockState self, BlockState other, Direction facing) { this.first = self; this.second = other; this.direction = facing; + // Leaves start - cache BlockStatePairKey hash + int hash = this.first.hashCode(); + hash = 31 * hash + this.second.hashCode(); + hash = 31 * hash + this.direction.hashCode(); + this.hash = hash; + // Leaves end - cache BlockStatePairKey hash } public boolean equals(Object object) { @@ -646,11 +653,17 @@ public class Block extends BlockBehaviour implements ItemLike { } public int hashCode() { - int i = this.first.hashCode(); + // Leaves start - cache BlockStatePairKey hash + if (!org.leavesmc.leaves.LeavesConfig.cacheBlockStatePairKeyHash) { + int i = this.first.hashCode(); - i = 31 * i + this.second.hashCode(); - i = 31 * i + this.direction.hashCode(); - return i; + i = 31 * i + this.second.hashCode(); + i = 31 * i + this.direction.hashCode(); + return i; + } else { + return this.hash; + } + // Leaves end - cache BlockStatePairKey hash } } }