From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Martijn Muijsers Date: Wed, 30 Nov 2022 15:51:59 +0100 Subject: [PATCH] Cache BlockStatePairKey hash License: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html) Gale - https://galemc.org This patch is based on the following mixin: "me/jellysquid/mods/lithium/mixin/cached_hashcode/BlockNeighborGroupMixin.java" By: Angeline As part of: Lithium (https://github.com/CaffeineMC/lithium-fabric) Licensed under: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html) 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 ee13a217a72a41d103789b66eef70bf351d1e624..3bb3dd974a74c58dd115f6f1d69e48dc8f6d700c 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java @@ -615,11 +615,18 @@ public class Block extends BlockBehaviour implements ItemLike { private final BlockState first; private final BlockState second; private final Direction direction; + private final int hash; // Gale - Lithium - cache BlockStatePairKey hash public BlockStatePairKey(BlockState self, BlockState other, Direction facing) { this.first = self; this.second = other; this.direction = facing; + // Gale start - Lithium - cache BlockStatePairKey hash + int hash = this.first.hashCode(); + hash = 31 * hash + this.second.hashCode(); + hash = 31 * hash + this.direction.hashCode(); + this.hash = hash; + // Gale end - Lithium - cache BlockStatePairKey hash } public boolean equals(Object object) { @@ -635,11 +642,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public int hashCode() { - int i = this.first.hashCode(); - - i = 31 * i + this.second.hashCode(); - i = 31 * i + this.direction.hashCode(); - return i; + return this.hash; // Gale - Lithium - cache BlockStatePairKey hash } } }