From 96fd77d10fe52782b354e25f5fbcb0b4b66d494a Mon Sep 17 00:00:00 2001 From: P3pp3rF1y Date: Sat, 2 Dec 2023 10:56:12 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20Fix=20tool=20swapper=20up?= =?UTF-8?q?grade=20to=20work=20correctly=20with=20tools=20that=20share=20t?= =?UTF-8?q?he=20same=20base=20item=20with=20something=20that's=20not=20a?= =?UTF-8?q?=20tool=20(Tetra=20hammer)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../ToolSwapperUpgradeWrapper.java | 29 ++++++++++--------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8402f22d..bc8f0b9e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ org.gradle.daemon=false minecraft_version=1.19.2 forge_version=43.2.13 -mod_version=3.19.1 +mod_version=3.19.2 jei_mc_version=1.19.2-forge jei_version=11.6.0.+ curios_version=1.19.2-5.1.1.+ diff --git a/src/main/java/net/p3pp3rf1y/sophisticatedbackpacks/upgrades/toolswapper/ToolSwapperUpgradeWrapper.java b/src/main/java/net/p3pp3rf1y/sophisticatedbackpacks/upgrades/toolswapper/ToolSwapperUpgradeWrapper.java index 9cabb837..ed0b340e 100644 --- a/src/main/java/net/p3pp3rf1y/sophisticatedbackpacks/upgrades/toolswapper/ToolSwapperUpgradeWrapper.java +++ b/src/main/java/net/p3pp3rf1y/sophisticatedbackpacks/upgrades/toolswapper/ToolSwapperUpgradeWrapper.java @@ -1,5 +1,8 @@ package net.p3pp3rf1y.sophisticatedbackpacks.upgrades.toolswapper; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; import com.google.common.collect.Multimap; import com.google.common.util.concurrent.AtomicDouble; import net.minecraft.core.BlockPos; @@ -50,6 +53,7 @@ import java.util.LinkedList; import java.util.Queue; import java.util.Set; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; @@ -60,7 +64,14 @@ public class ToolSwapperUpgradeWrapper extends UpgradeWrapperBase implements IBlockClickResponseUpgrade, IAttackEntityResponseUpgrade, IBlockToolSwapUpgrade, IEntityToolSwapUpgrade { - private static final Set notTools = new HashSet<>(); + private static final LoadingCache isToolCache = CacheBuilder.newBuilder().expireAfterAccess(1, TimeUnit.MINUTES).build( + new CacheLoader<>() { + @Override + public Boolean load(ItemStack key) { + return canPerformToolAction(key); + } + } + ); private final FilterLogic filterLogic; @Nullable @@ -163,26 +174,16 @@ public boolean onAttackEntity(Player player) { } private boolean isNotTool(ItemStack stack) { - if (notTools.contains(stack.getItem())) { - return true; - } - - if (canPerformToolAction(stack)) { - return false; - } - - notTools.add(stack.getItem()); - - return true; + return !isToolCache.getUnchecked(stack); } - private boolean canPerformToolAction(ItemStack stack) { + private static boolean canPerformToolAction(ItemStack stack) { return canPerformAnyAction(stack, ToolActions.DEFAULT_AXE_ACTIONS) || canPerformAnyAction(stack, ToolActions.DEFAULT_HOE_ACTIONS) || canPerformAnyAction(stack, ToolActions.DEFAULT_PICKAXE_ACTIONS) || canPerformAnyAction(stack, ToolActions.DEFAULT_SHOVEL_ACTIONS) || canPerformAnyAction(stack, ToolActions.DEFAULT_SHEARS_ACTIONS); } - private boolean canPerformAnyAction(ItemStack stack, Set toolActions) { + private static boolean canPerformAnyAction(ItemStack stack, Set toolActions) { for (ToolAction toolAction : toolActions) { if (stack.canPerformAction(toolAction)) { return true;