From f76b0d45bda3d57c3f15cf38f5c82fbae284a752 Mon Sep 17 00:00:00 2001 From: Intelli Date: Fri, 22 Sep 2023 15:51:38 -0600 Subject: [PATCH] Clear entityBlockMapper cache after 5 seconds --- .../coreprotect/listener/entity/CreatureSpawnListener.java | 4 ++-- .../coreprotect/listener/player/PlayerInteractListener.java | 2 +- .../listener/player/ProjectileLaunchListener.java | 4 ++-- src/main/java/net/coreprotect/thread/CacheHandler.java | 6 +++++- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/coreprotect/listener/entity/CreatureSpawnListener.java b/src/main/java/net/coreprotect/listener/entity/CreatureSpawnListener.java index 40184bf..ce9f6c2 100644 --- a/src/main/java/net/coreprotect/listener/entity/CreatureSpawnListener.java +++ b/src/main/java/net/coreprotect/listener/entity/CreatureSpawnListener.java @@ -40,9 +40,9 @@ public final class CreatureSpawnListener extends Queue implements Listener { Map.Entry pair = it.next(); String name = pair.getKey(); Object[] data = pair.getValue(); - if ((data[0].equals(key) || data[1].equals(key)) && Util.getEntityMaterial(event.getEntityType()) == ((ItemStack) data[2]).getType()) { + if ((data[1].equals(key) || data[2].equals(key)) && Util.getEntityMaterial(event.getEntityType()) == ((ItemStack) data[3]).getType()) { Block gravityLocation = BlockUtil.gravityScan(location, Material.ARMOR_STAND, name); - Queue.queueBlockPlace(name, gravityLocation.getState(), location.getBlock().getType(), location.getBlock().getState(), ((ItemStack) data[2]).getType(), (int) event.getEntity().getLocation().getYaw(), 1, null); + Queue.queueBlockPlace(name, gravityLocation.getState(), location.getBlock().getType(), location.getBlock().getState(), ((ItemStack) data[3]).getType(), (int) event.getEntity().getLocation().getYaw(), 1, null); it.remove(); } } diff --git a/src/main/java/net/coreprotect/listener/player/PlayerInteractListener.java b/src/main/java/net/coreprotect/listener/player/PlayerInteractListener.java index 3c40820..806dc23 100755 --- a/src/main/java/net/coreprotect/listener/player/PlayerInteractListener.java +++ b/src/main/java/net/coreprotect/listener/player/PlayerInteractListener.java @@ -904,7 +904,7 @@ public final class PlayerInteractListener extends Queue implements Listener { String relativeBlockKey = world.getName() + "-" + relativeBlockLocation.getBlockX() + "-" + relativeBlockLocation.getBlockY() + "-" + relativeBlockLocation.getBlockZ(); String blockKey = world.getName() + "-" + blockLocation.getBlockX() + "-" + blockLocation.getBlockY() + "-" + blockLocation.getBlockZ(); - Object[] keys = new Object[] { relativeBlockKey, blockKey, handItem }; + Object[] keys = new Object[] { System.currentTimeMillis(), relativeBlockKey, blockKey, handItem }; ConfigHandler.entityBlockMapper.put(player.getName(), keys); } } diff --git a/src/main/java/net/coreprotect/listener/player/ProjectileLaunchListener.java b/src/main/java/net/coreprotect/listener/player/ProjectileLaunchListener.java index 58974d1..781c226 100644 --- a/src/main/java/net/coreprotect/listener/player/ProjectileLaunchListener.java +++ b/src/main/java/net/coreprotect/listener/player/ProjectileLaunchListener.java @@ -68,10 +68,10 @@ public final class ProjectileLaunchListener extends Queue implements Listener { Map.Entry pair = it.next(); String name = pair.getKey(); Object[] data = pair.getValue(); - ItemStack itemStack = (ItemStack) data[2]; + ItemStack itemStack = (ItemStack) data[3]; Material entityMaterial = Util.getEntityMaterial(event.getEntityType()); boolean isBow = BOWS.contains(itemStack.getType()); - if ((data[0].equals(key) || data[1].equals(key)) && (entityMaterial == itemStack.getType() || (itemStack.getType() == Material.LINGERING_POTION && entityMaterial == Material.SPLASH_POTION) || isBow)) { + if ((data[1].equals(key) || data[2].equals(key)) && (entityMaterial == itemStack.getType() || (itemStack.getType() == Material.LINGERING_POTION && entityMaterial == Material.SPLASH_POTION) || isBow)) { boolean thrownItem = (itemStack.getType() != Material.FIREWORK_ROCKET && !isBow); if (isBow) { if (itemStack.getType() == Material.CROSSBOW) { diff --git a/src/main/java/net/coreprotect/thread/CacheHandler.java b/src/main/java/net/coreprotect/thread/CacheHandler.java index 51c81da..32b5055 100755 --- a/src/main/java/net/coreprotect/thread/CacheHandler.java +++ b/src/main/java/net/coreprotect/thread/CacheHandler.java @@ -26,7 +26,7 @@ public class CacheHandler implements Runnable { public void run() { while (ConfigHandler.serverRunning) { try { - for (int id = 0; id < 7; id++) { + for (int id = 0; id < 8; id++) { Thread.sleep(1000); int scanTime = 30; Map cache = CacheHandler.lookupCache; @@ -55,6 +55,10 @@ public class CacheHandler implements Runnable { cache = CacheHandler.entityCache; scanTime = 3600; // 60 minutes break; + case 7: + cache = ConfigHandler.entityBlockMapper; + scanTime = 5; + break; } int timestamp = (int) (System.currentTimeMillis() / 1000L) - scanTime;