From 953959415caeb1dda64472f3d2627475b0bfab96 Mon Sep 17 00:00:00 2001 From: colesium123 Date: Sun, 22 Dec 2024 19:46:45 +0300 Subject: [PATCH] Fixed Cache --- .../org/zeroBzeroT/antiillegals/Events.java | 2 +- .../antiillegals/helpers/RevertHelper.java | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/zeroBzeroT/antiillegals/Events.java b/src/main/java/org/zeroBzeroT/antiillegals/Events.java index 9c858fc..19cf2c7 100644 --- a/src/main/java/org/zeroBzeroT/antiillegals/Events.java +++ b/src/main/java/org/zeroBzeroT/antiillegals/Events.java @@ -78,7 +78,7 @@ public void onPlayerItemDrop(@NotNull final PlayerDropItemEvent event) { final Item itemDrop = event.getItemDrop(); final ItemStack itemStack = itemDrop.getItemStack(); - RevertHelper.checkItemStack(itemStack, itemDrop.getLocation(), true); + RevertHelper.checkItemStack(itemStack, itemDrop.getLocation(), true, true); // Using cache } @EventHandler(ignoreCancelled = true) diff --git a/src/main/java/org/zeroBzeroT/antiillegals/helpers/RevertHelper.java b/src/main/java/org/zeroBzeroT/antiillegals/helpers/RevertHelper.java index 19a5b19..40f5ac8 100644 --- a/src/main/java/org/zeroBzeroT/antiillegals/helpers/RevertHelper.java +++ b/src/main/java/org/zeroBzeroT/antiillegals/helpers/RevertHelper.java @@ -53,7 +53,7 @@ private RevertHelper() { */ public static boolean revert(@Nullable final ItemStack itemStack, @Nullable final Location location, final boolean checkRecursive, @NotNull final Predicate predicate) { - return predicate.test(checkItemStack(itemStack, location, checkRecursive)); + return predicate.test(checkItemStack(itemStack, location, checkRecursive, true)); // Using cache } /** @@ -195,7 +195,7 @@ public static RevertionResult checkInventory(@NotNull final Inventory inventory, boolean wasFixed = false; for (final ItemStack itemStack : inventory.getContents()) { - switch (checkItemStack(itemStack, location, checkRecursive)) { + switch (checkItemStack(itemStack, location, checkRecursive, false)) { case ILLEGAL -> removeItemStacks.add(itemStack); case WAS_FIXED -> wasFixed = true; case IS_BOOK -> bookItemStacks.add(itemStack); @@ -287,22 +287,28 @@ public static void checkArmorContents(@NotNull final PlayerInventory playerInven * @param itemStack the item to revert * @param location the location where books / book shulkers should drop (if any) * @param checkRecursive whether containers in item form should be checked for their content recursively + * @param useCache whether to use the cache for item state checks * @return the state of the item that was checked */ @NotNull public static ItemState checkItemStack(@Nullable final ItemStack itemStack, @Nullable final Location location, - final boolean checkRecursive) { + final boolean checkRecursive, final boolean useCache) { + if (itemStack == null || itemStack.getType() == Material.AIR || itemStack.getAmount() == 0) return ItemState.EMPTY; final int metaHash = CachedState.itemStackHashCode(itemStack); - final CachedState cachedRevertedItem = REVERTED_ITEM_CACHE.getIfPresent(metaHash); + + CachedState cachedRevertedItem = useCache ? REVERTED_ITEM_CACHE.getIfPresent(metaHash) : null; + if (cachedRevertedItem == null) { final ItemState revertedState = checkItemStackUncached(itemStack, location, checkRecursive); - if (revertedState.wasModified()) - REVERTED_ITEM_CACHE.put(metaHash, new CachedState(itemStack.clone(), revertedState)); + if (revertedState.wasModified() && useCache) { + + REVERTED_ITEM_CACHE.put(metaHash, new CachedState(itemStack.clone(), revertedState)); + } return revertedState; } cachedRevertedItem.applyRevertedState(itemStack);