diff --git a/src/main/java/ca/recrown/islandsurvivalcraft/caching/Cache.java b/src/main/java/ca/recrown/islandsurvivalcraft/caching/Cache.java index 13586ea..1129d42 100644 --- a/src/main/java/ca/recrown/islandsurvivalcraft/caching/Cache.java +++ b/src/main/java/ca/recrown/islandsurvivalcraft/caching/Cache.java @@ -31,6 +31,7 @@ public class Cache { } else { lock.lock(); try { + if (data.containsKey(key)) return; CacheValue val = new CacheValue<>(); val.key = key; val.value = value; diff --git a/src/main/java/ca/recrown/islandsurvivalcraft/caching/CacheUsageStack.java b/src/main/java/ca/recrown/islandsurvivalcraft/caching/CacheUsageStack.java index 03e4466..85cdd62 100644 --- a/src/main/java/ca/recrown/islandsurvivalcraft/caching/CacheUsageStack.java +++ b/src/main/java/ca/recrown/islandsurvivalcraft/caching/CacheUsageStack.java @@ -8,6 +8,7 @@ class CacheUsageStack { private final ReentrantLock lock = new ReentrantLock(); private void addValueToStackTop(CacheValue value) { + if (value == first) return; if (first != null) { first.front = value; value.back = first; @@ -91,6 +92,7 @@ class CacheUsageStack { } finally { lock.unlock(); } + size = 0; } public int size() {