Skip to content

Commit c7d1bdb

Browse files
committed
Use nbt string for faster cache system
1 parent 5573d6a commit c7d1bdb

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

bukkit/src/main/java/io/github/rothes/protocolstringreplacer/replacer/ReplacerManager.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import io.github.rothes.protocolstringreplacer.replacer.containers.Container;
1414
import io.github.rothes.protocolstringreplacer.replacer.containers.Replaceable;
1515
import org.apache.commons.lang.Validate;
16-
import org.bukkit.inventory.ItemStack;
1716
import org.jetbrains.annotations.NotNull;
1817
import org.neosearch.stringsearcher.Emit;
1918

@@ -38,7 +37,7 @@ public class ReplacerManager {
3837
private char papiHead;
3938
private char papiTail;
4039
private final List<ReplacerConfig> replacerConfigList = new ArrayList<>();
41-
private final ConcurrentHashMap<ItemStack, HandledItemCache> cacheTable = new ConcurrentHashMap<>();
40+
private final ConcurrentHashMap<String, HandledItemCache> cacheTable = new ConcurrentHashMap<>();
4241
private PsrTask cleanTask;
4342

4443
public static class HandledItemCache {
@@ -121,15 +120,15 @@ public void registerTask() {
121120
long currentTime = System.currentTimeMillis();
122121
int purged = 0;
123122

124-
List<ItemStack> needToRemove = new ArrayList<>();
125-
for (Map.Entry<ItemStack, HandledItemCache> entry : cacheTable.entrySet()) {
123+
List<String> needToRemove = new ArrayList<>();
124+
for (Map.Entry<String, HandledItemCache> entry : cacheTable.entrySet()) {
126125
needToRemove.clear();
127126
if ((currentTime - entry.getValue().lastAccessTime) > cleanAccessInterval) {
128127
needToRemove.add(entry.getKey());
129128
}
130129
if (!needToRemove.isEmpty()) {
131-
for (ItemStack itemStack : needToRemove) {
132-
cacheTable.remove(itemStack);
130+
for (String cacheKey : needToRemove) {
131+
cacheTable.remove(cacheKey);
133132
purged++;
134133
}
135134
}
@@ -201,11 +200,11 @@ public void saveReplacerConfigs() {
201200
}
202201

203202
@Nullable
204-
public HandledItemCache getReplacedItemCache(ItemStack original) {
203+
public HandledItemCache getReplacedItemCache(String original) {
205204
return cacheTable.get(original);
206205
}
207206

208-
public HandledItemCache addReplacedItemCache(ItemStack original, @NotNull ReadWriteNBT nbtItem, boolean blocked, int[] papiIndexes) {
207+
public HandledItemCache addReplacedItemCache(String original, @NotNull ReadWriteNBT nbtItem, boolean blocked, int[] papiIndexes) {
209208
Validate.notNull(nbtItem, "Replaced NBTItem cannot be null");
210209

211210
HandledItemCache handledItemCache = new HandledItemCache(nbtItem, System.currentTimeMillis(), blocked, papiIndexes);

bukkit/src/main/kotlin/io/github/rothes/protocolstringreplacer/replacer/containers/ItemStackContainer.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,23 @@ class ItemStackContainer @JvmOverloads constructor(itemStack: ItemStack, useCach
2323
private val original: ItemMeta = content.itemMeta
2424

2525
init {
26+
nbt = NBT.itemStackToNBT(content)
2627
if (useCache) {
2728
val replacerManager = ProtocolStringReplacer.getInstance().replacerManager
2829

29-
val getCache = replacerManager.getReplacedItemCache(content)
30+
val nbtString = nbt.toString()
31+
val getCache = replacerManager.getReplacedItemCache(nbtString)
3032
if (getCache != null) {
31-
metaCache = getCache
3233
isFromCache = true
34+
metaCache = getCache
3335
nbt = metaCache.nbt
3436
} else {
3537
isFromCache = false
3638
nbt = NBT.itemStackToNBT(content)
37-
metaCache = replacerManager.addReplacedItemCache(content, nbt, false, IntArray(0))
39+
metaCache = replacerManager.addReplacedItemCache(nbtString, nbt, false, IntArray(0))
3840
}
3941
} else {
4042
isFromCache = false
41-
nbt = NBT.itemStackToNBT(content)
4243
}
4344
}
4445

0 commit comments

Comments
 (0)