improve cache even more

This commit is contained in:
xGinko 2023-09-05 13:56:08 +02:00
parent a0ad960b17
commit bff40048fa
3 changed files with 8 additions and 10 deletions

View File

@ -3,6 +3,7 @@ package me.xginko.villageroptimizer;
import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.Caffeine;
import me.xginko.villageroptimizer.models.WrappedVillager; import me.xginko.villageroptimizer.models.WrappedVillager;
import org.bukkit.Bukkit;
import org.bukkit.entity.Villager; import org.bukkit.entity.Villager;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -22,14 +23,13 @@ public class VillagerCache {
} }
public @Nullable WrappedVillager get(@NotNull UUID uuid) { public @Nullable WrappedVillager get(@NotNull UUID uuid) {
return villagerCache.getIfPresent(uuid); WrappedVillager wrappedVillager = villagerCache.getIfPresent(uuid);
return wrappedVillager == null && Bukkit.getEntity(uuid) instanceof Villager villager ? add(villager) : wrappedVillager;
} }
public @NotNull WrappedVillager getOrAddIfAbsent(@NotNull Villager villager) { public @NotNull WrappedVillager get(@NotNull Villager villager) {
WrappedVillager wrappedVillager = villagerCache.getIfPresent(villager.getUniqueId()); WrappedVillager wrappedVillager = villagerCache.getIfPresent(villager.getUniqueId());
if (wrappedVillager == null) wrappedVillager = new WrappedVillager(villager); return wrappedVillager == null ? add(new WrappedVillager(villager)) : add(wrappedVillager);
this.villagerCache.put(villager.getUniqueId(), wrappedVillager); // refresh cache
return wrappedVillager;
} }
public @NotNull WrappedVillager add(@NotNull WrappedVillager villager) { public @NotNull WrappedVillager add(@NotNull WrappedVillager villager) {
@ -38,9 +38,7 @@ public class VillagerCache {
} }
public @NotNull WrappedVillager add(@NotNull Villager villager) { public @NotNull WrappedVillager add(@NotNull Villager villager) {
WrappedVillager wrapped = new WrappedVillager(villager); return add(new WrappedVillager(villager));
villagerCache.put(villager.getUniqueId(), wrapped);
return wrapped;
} }
public boolean contains(@NotNull WrappedVillager villager) { public boolean contains(@NotNull WrappedVillager villager) {

View File

@ -101,7 +101,7 @@ public final class VillagerOptimizer extends JavaPlugin {
return OptimizationType.WORKSTATION; return OptimizationType.WORKSTATION;
} }
} }
return villagerCache.getOrAddIfAbsent(villager).getOptimizationType(); return villagerCache.get(villager).getOptimizationType();
} }
public void reloadPlugin() { public void reloadPlugin() {

View File

@ -10,7 +10,7 @@ import org.bukkit.persistence.PersistentDataType;
public record WrappedVillager(Villager villager) { public record WrappedVillager(Villager villager) {
public static WrappedVillager fromVillager(Villager villager) { public static WrappedVillager fromVillager(Villager villager) {
return VillagerOptimizer.getVillagerCache().getOrAddIfAbsent(villager); return VillagerOptimizer.getVillagerCache().get(villager);
} }
public boolean isOptimized() { public boolean isOptimized() {