diff --git a/src/main/java/me/xginko/villageroptimizer/cache/VillagerManager.java b/src/main/java/me/xginko/villageroptimizer/CachedVillagers.java similarity index 88% rename from src/main/java/me/xginko/villageroptimizer/cache/VillagerManager.java rename to src/main/java/me/xginko/villageroptimizer/CachedVillagers.java index 47e6c2e..47c70bf 100644 --- a/src/main/java/me/xginko/villageroptimizer/cache/VillagerManager.java +++ b/src/main/java/me/xginko/villageroptimizer/CachedVillagers.java @@ -1,8 +1,7 @@ -package me.xginko.villageroptimizer.cache; +package me.xginko.villageroptimizer; import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; -import me.xginko.villageroptimizer.models.WrappedVillager; import org.bukkit.Bukkit; import org.bukkit.entity.Villager; import org.jetbrains.annotations.NotNull; @@ -12,11 +11,11 @@ import java.time.Duration; import java.util.UUID; import java.util.concurrent.ConcurrentMap; -public class VillagerManager { +public final class CachedVillagers { - private final Cache villagerCache; + private final @NotNull Cache villagerCache; - public VillagerManager(long expireAfterWriteSeconds) { + CachedVillagers(long expireAfterWriteSeconds) { this.villagerCache = Caffeine.newBuilder().expireAfterWrite(Duration.ofSeconds(expireAfterWriteSeconds)).build(); } diff --git a/src/main/java/me/xginko/villageroptimizer/VillagerOptimizer.java b/src/main/java/me/xginko/villageroptimizer/VillagerOptimizer.java index ec3cf54..598ca77 100644 --- a/src/main/java/me/xginko/villageroptimizer/VillagerOptimizer.java +++ b/src/main/java/me/xginko/villageroptimizer/VillagerOptimizer.java @@ -1,6 +1,5 @@ package me.xginko.villageroptimizer; -import me.xginko.villageroptimizer.cache.VillagerManager; import me.xginko.villageroptimizer.commands.VillagerOptimizerCommand; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.config.LanguageCache; @@ -32,7 +31,7 @@ public final class VillagerOptimizer extends JavaPlugin { private static VillagerOptimizer instance; private static HashMap languageCacheMap; - private static VillagerManager villagerManager; + private static CachedVillagers cachedVillagers; private static Config config; private static Logger logger; @@ -75,8 +74,8 @@ public final class VillagerOptimizer extends JavaPlugin { public static VillagerOptimizer getInstance() { return instance; } - public static VillagerManager getVillagerManager() { - return villagerManager; + public static CachedVillagers getCachedVillagers() { + return cachedVillagers; } public static Config getConfiguration() { return config; @@ -97,7 +96,7 @@ public final class VillagerOptimizer extends JavaPlugin { private void reloadConfiguration() { try { config = new Config(); - villagerManager = new VillagerManager(config.cache_keep_time_seconds); + cachedVillagers = new CachedVillagers(config.cache_keep_time_seconds); VillagerOptimizerModule.reloadModules(); config.saveConfig(); } catch (Exception e) { diff --git a/src/main/java/me/xginko/villageroptimizer/models/WrappedVillager.java b/src/main/java/me/xginko/villageroptimizer/WrappedVillager.java similarity index 97% rename from src/main/java/me/xginko/villageroptimizer/models/WrappedVillager.java rename to src/main/java/me/xginko/villageroptimizer/WrappedVillager.java index 7a0a704..a642270 100644 --- a/src/main/java/me/xginko/villageroptimizer/models/WrappedVillager.java +++ b/src/main/java/me/xginko/villageroptimizer/WrappedVillager.java @@ -1,6 +1,5 @@ -package me.xginko.villageroptimizer.models; +package me.xginko.villageroptimizer; -import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.enums.Keys; import me.xginko.villageroptimizer.enums.OptimizationType; import org.bukkit.entity.Villager; @@ -13,7 +12,7 @@ public final class WrappedVillager { private final @NotNull Villager villager; private final @NotNull PersistentDataContainer dataContainer; - public WrappedVillager(@NotNull Villager villager) { + WrappedVillager(@NotNull Villager villager) { this.villager = villager; this.dataContainer = this.villager.getPersistentDataContainer(); } diff --git a/src/main/java/me/xginko/villageroptimizer/commands/optimizevillagers/OptVillagersRadius.java b/src/main/java/me/xginko/villageroptimizer/commands/optimizevillagers/OptVillagersRadius.java index a080317..082183a 100644 --- a/src/main/java/me/xginko/villageroptimizer/commands/optimizevillagers/OptVillagersRadius.java +++ b/src/main/java/me/xginko/villageroptimizer/commands/optimizevillagers/OptVillagersRadius.java @@ -1,11 +1,11 @@ package me.xginko.villageroptimizer.commands.optimizevillagers; import me.xginko.villageroptimizer.VillagerOptimizer; -import me.xginko.villageroptimizer.cache.VillagerManager; +import me.xginko.villageroptimizer.CachedVillagers; import me.xginko.villageroptimizer.commands.VillagerOptimizerCommand; import me.xginko.villageroptimizer.enums.OptimizationType; import me.xginko.villageroptimizer.enums.Permissions; -import me.xginko.villageroptimizer.models.WrappedVillager; +import me.xginko.villageroptimizer.WrappedVillager; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextReplacementConfig; import net.kyori.adventure.text.format.NamedTextColor; @@ -56,7 +56,7 @@ public class OptVillagersRadius implements VillagerOptimizerCommand, TabComplete try { int specifiedRadius = Integer.parseInt(args[0]) / 2; - VillagerManager villagerManager = VillagerOptimizer.getVillagerManager(); + CachedVillagers cachedVillagers = VillagerOptimizer.getCachedVillagers(); int successCount = 0; int failCount = 0; @@ -66,7 +66,7 @@ public class OptVillagersRadius implements VillagerOptimizerCommand, TabComplete Villager.Profession profession = villager.getProfession(); if (profession.equals(Villager.Profession.NITWIT) || profession.equals(Villager.Profession.NONE)) continue; - WrappedVillager wVillager = villagerManager.getOrAdd(villager); + WrappedVillager wVillager = cachedVillagers.getOrAdd(villager); if (!wVillager.isOptimized()) { wVillager.setOptimization(OptimizationType.COMMAND); diff --git a/src/main/java/me/xginko/villageroptimizer/commands/unoptimizevillagers/UnOptVillagersRadius.java b/src/main/java/me/xginko/villageroptimizer/commands/unoptimizevillagers/UnOptVillagersRadius.java index 6dae70d..818a823 100644 --- a/src/main/java/me/xginko/villageroptimizer/commands/unoptimizevillagers/UnOptVillagersRadius.java +++ b/src/main/java/me/xginko/villageroptimizer/commands/unoptimizevillagers/UnOptVillagersRadius.java @@ -1,11 +1,11 @@ package me.xginko.villageroptimizer.commands.unoptimizevillagers; import me.xginko.villageroptimizer.VillagerOptimizer; -import me.xginko.villageroptimizer.cache.VillagerManager; +import me.xginko.villageroptimizer.CachedVillagers; import me.xginko.villageroptimizer.commands.VillagerOptimizerCommand; import me.xginko.villageroptimizer.enums.OptimizationType; import me.xginko.villageroptimizer.enums.Permissions; -import me.xginko.villageroptimizer.models.WrappedVillager; +import me.xginko.villageroptimizer.WrappedVillager; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextReplacementConfig; import net.kyori.adventure.text.format.NamedTextColor; @@ -47,7 +47,7 @@ public class UnOptVillagersRadius implements VillagerOptimizerCommand { try { int specifiedRadius = Integer.parseInt(args[0]) / 2; - VillagerManager villagerManager = VillagerOptimizer.getVillagerManager(); + CachedVillagers cachedVillagers = VillagerOptimizer.getCachedVillagers(); int successCount = 0; for (Entity entity : player.getNearbyEntities(specifiedRadius, specifiedRadius, specifiedRadius)) { @@ -56,7 +56,7 @@ public class UnOptVillagersRadius implements VillagerOptimizerCommand { Villager.Profession profession = villager.getProfession(); if (profession.equals(Villager.Profession.NITWIT) || profession.equals(Villager.Profession.NONE)) continue; - WrappedVillager wVillager = villagerManager.getOrAdd(villager); + WrappedVillager wVillager = cachedVillagers.getOrAdd(villager); if (wVillager.isOptimized()) { wVillager.setOptimization(OptimizationType.OFF); diff --git a/src/main/java/me/xginko/villageroptimizer/modules/BlockOptimization.java b/src/main/java/me/xginko/villageroptimizer/modules/BlockOptimization.java index 3461d0a..a023ac9 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/BlockOptimization.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/BlockOptimization.java @@ -3,9 +3,9 @@ package me.xginko.villageroptimizer.modules; import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.enums.OptimizationType; -import me.xginko.villageroptimizer.cache.VillagerManager; +import me.xginko.villageroptimizer.CachedVillagers; import me.xginko.villageroptimizer.enums.Permissions; -import me.xginko.villageroptimizer.models.WrappedVillager; +import me.xginko.villageroptimizer.WrappedVillager; import me.xginko.villageroptimizer.utils.CommonUtils; import me.xginko.villageroptimizer.utils.LogUtils; import net.kyori.adventure.text.TextReplacementConfig; @@ -34,7 +34,7 @@ public class BlockOptimization implements VillagerOptimizerModule, Listener { * TODO: Think of better logic than just checking under the villagers feet for block * */ - private final VillagerManager villagerManager; + private final CachedVillagers cachedVillagers; private final HashSet blocks_that_disable = new HashSet<>(4); private final boolean shouldLog, shouldNotifyPlayer; private final int maxVillagers; @@ -42,7 +42,7 @@ public class BlockOptimization implements VillagerOptimizerModule, Listener { protected BlockOptimization() { shouldEnable(); - this.villagerManager = VillagerOptimizer.getVillagerManager(); + this.cachedVillagers = VillagerOptimizer.getCachedVillagers(); Config config = VillagerOptimizer.getConfiguration(); config.addComment("optimization-methods.block-optimization.enable", """ When enabled, villagers standing on the configured specific blocks will become optimized once a\s @@ -97,7 +97,7 @@ public class BlockOptimization implements VillagerOptimizerModule, Listener { if (counter >= maxVillagers) return; if (!entity.getType().equals(EntityType.VILLAGER)) continue; - WrappedVillager wVillager = villagerManager.getOrAdd((Villager) entity); + WrappedVillager wVillager = cachedVillagers.getOrAdd((Villager) entity); final OptimizationType type = wVillager.getOptimizationType(); if (!type.equals(OptimizationType.OFF) && !type.equals(OptimizationType.COMMAND)) continue; @@ -137,7 +137,7 @@ public class BlockOptimization implements VillagerOptimizerModule, Listener { for (Entity entity : broken.getRelative(BlockFace.UP).getLocation().getNearbyEntities(0.5,1,0.5)) { if (!entity.getType().equals(EntityType.VILLAGER)) continue; - WrappedVillager wVillager = villagerManager.getOrAdd((Villager) entity); + WrappedVillager wVillager = cachedVillagers.getOrAdd((Villager) entity); if (wVillager.getOptimizationType().equals(OptimizationType.BLOCK)) { if (counter >= maxVillagers) return; @@ -165,7 +165,7 @@ public class BlockOptimization implements VillagerOptimizerModule, Listener { Player player = event.getPlayer(); if (!player.hasPermission(Permissions.Optimize.BLOCK.get())) return; - WrappedVillager wVillager = villagerManager.getOrAdd((Villager) interacted); + WrappedVillager wVillager = cachedVillagers.getOrAdd((Villager) interacted); final Location entityLegs = interacted.getLocation(); if ( diff --git a/src/main/java/me/xginko/villageroptimizer/modules/LevelVillagers.java b/src/main/java/me/xginko/villageroptimizer/modules/LevelVillagers.java index d4ee2be..3b44327 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/LevelVillagers.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/LevelVillagers.java @@ -1,9 +1,9 @@ package me.xginko.villageroptimizer.modules; import me.xginko.villageroptimizer.VillagerOptimizer; -import me.xginko.villageroptimizer.cache.VillagerManager; +import me.xginko.villageroptimizer.CachedVillagers; import me.xginko.villageroptimizer.config.Config; -import me.xginko.villageroptimizer.models.WrappedVillager; +import me.xginko.villageroptimizer.WrappedVillager; import me.xginko.villageroptimizer.utils.CommonUtils; import net.kyori.adventure.text.TextReplacementConfig; import org.bukkit.entity.Player; @@ -20,14 +20,14 @@ import org.bukkit.potion.PotionEffectType; public class LevelVillagers implements VillagerOptimizerModule, Listener { private final VillagerOptimizer plugin; - private final VillagerManager villagerManager; + private final CachedVillagers cachedVillagers; private final boolean shouldNotify; private final long cooldown; public LevelVillagers() { shouldEnable(); this.plugin = VillagerOptimizer.getInstance(); - this.villagerManager = VillagerOptimizer.getVillagerManager(); + this.cachedVillagers = VillagerOptimizer.getCachedVillagers(); Config config = VillagerOptimizer.getConfiguration(); config.addComment("gameplay.villager-leveling.enable", """ This is needed to allow optimized villagers to level up.\s @@ -61,13 +61,15 @@ public class LevelVillagers implements VillagerOptimizerModule, Listener { event.getInventory().getType().equals(InventoryType.MERCHANT) && event.getInventory().getHolder() instanceof Villager villager ) { - WrappedVillager wVillager = villagerManager.getOrAdd(villager); + WrappedVillager wVillager = cachedVillagers.getOrAdd(villager); if (!wVillager.isOptimized()) return; if (wVillager.canLevelUp(cooldown)) { if (wVillager.calculateLevel() > villager.getVillagerLevel()) { - villager.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, (int) (20 + (cooldown / 50L)), 120, false, false)); - villager.getScheduler().run(plugin, enableAI -> villager.setAware(true), null); + villager.getScheduler().run(plugin, enableAI -> { + villager.setAware(true); + villager.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, (int) (20 + (cooldown / 50L)), 120, false, false)); + }, null); villager.getScheduler().runDelayed(plugin, disableAI -> { villager.setAware(false); wVillager.saveLastLevelUp(); diff --git a/src/main/java/me/xginko/villageroptimizer/modules/NametagOptimization.java b/src/main/java/me/xginko/villageroptimizer/modules/NametagOptimization.java index 26785f2..003ceb6 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/NametagOptimization.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/NametagOptimization.java @@ -2,11 +2,11 @@ package me.xginko.villageroptimizer.modules; import io.papermc.paper.event.player.PlayerNameEntityEvent; import me.xginko.villageroptimizer.VillagerOptimizer; -import me.xginko.villageroptimizer.cache.VillagerManager; +import me.xginko.villageroptimizer.CachedVillagers; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.enums.OptimizationType; import me.xginko.villageroptimizer.enums.Permissions; -import me.xginko.villageroptimizer.models.WrappedVillager; +import me.xginko.villageroptimizer.WrappedVillager; import me.xginko.villageroptimizer.utils.CommonUtils; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextReplacementConfig; @@ -26,14 +26,14 @@ import java.util.List; public class NametagOptimization implements VillagerOptimizerModule, Listener { - private final VillagerManager villagerManager; + private final CachedVillagers cachedVillagers; private final HashSet nametags = new HashSet<>(4); private final boolean shouldLog, shouldNotifyPlayer, consumeNametag; private final long cooldown; protected NametagOptimization() { shouldEnable(); - this.villagerManager = VillagerOptimizer.getVillagerManager(); + this.cachedVillagers = VillagerOptimizer.getCachedVillagers(); Config config = VillagerOptimizer.getConfiguration(); config.addComment("optimization-methods.nametag-optimization.enable", """ Enable optimization by naming villagers to one of the names configured below.\s @@ -75,7 +75,7 @@ public class NametagOptimization implements VillagerOptimizerModule, Listener { if (name == null) return; final String nameTag = PlainTextComponentSerializer.plainText().serialize(name); - WrappedVillager wVillager = villagerManager.getOrAdd((Villager) event.getEntity()); + WrappedVillager wVillager = cachedVillagers.getOrAdd((Villager) event.getEntity()); if (nametags.contains(nameTag.toLowerCase())) { if (wVillager.isOptimized()) return; diff --git a/src/main/java/me/xginko/villageroptimizer/modules/PreventUnoptimizedTrading.java b/src/main/java/me/xginko/villageroptimizer/modules/PreventUnoptimizedTrading.java index 54b5f79..1390f6e 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/PreventUnoptimizedTrading.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/PreventUnoptimizedTrading.java @@ -1,7 +1,7 @@ package me.xginko.villageroptimizer.modules; import me.xginko.villageroptimizer.VillagerOptimizer; -import me.xginko.villageroptimizer.cache.VillagerManager; +import me.xginko.villageroptimizer.CachedVillagers; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.enums.Permissions; import org.bukkit.entity.Player; @@ -16,12 +16,12 @@ import org.bukkit.event.inventory.TradeSelectEvent; public class PreventUnoptimizedTrading implements VillagerOptimizerModule, Listener { - private final VillagerManager villagerManager; + private final CachedVillagers cachedVillagers; private final boolean notifyPlayer; protected PreventUnoptimizedTrading() { shouldEnable(); - this.villagerManager = VillagerOptimizer.getVillagerManager(); + this.cachedVillagers = VillagerOptimizer.getCachedVillagers(); Config config = VillagerOptimizer.getConfiguration(); config.addComment("gameplay.prevent-trading-with-unoptimized.enable", """ Will prevent players from selecting and using trades of unoptimized villagers.\s @@ -54,7 +54,7 @@ public class PreventUnoptimizedTrading implements VillagerOptimizerModule, Liste if ( event.getInventory().getType().equals(InventoryType.MERCHANT) && event.getInventory().getHolder() instanceof Villager villager - && !villagerManager.getOrAdd(villager).isOptimized() + && !cachedVillagers.getOrAdd(villager).isOptimized() ) { event.setCancelled(true); if (notifyPlayer) @@ -69,7 +69,7 @@ public class PreventUnoptimizedTrading implements VillagerOptimizerModule, Liste if ( event.getInventory().getType().equals(InventoryType.MERCHANT) && event.getInventory().getHolder() instanceof Villager villager - && !villagerManager.getOrAdd(villager).isOptimized() + && !cachedVillagers.getOrAdd(villager).isOptimized() ) { event.setCancelled(true); if (notifyPlayer) diff --git a/src/main/java/me/xginko/villageroptimizer/modules/PreventVillagerDamage.java b/src/main/java/me/xginko/villageroptimizer/modules/PreventVillagerDamage.java index cd8650f..aaac9bc 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/PreventVillagerDamage.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/PreventVillagerDamage.java @@ -2,7 +2,7 @@ package me.xginko.villageroptimizer.modules; import io.papermc.paper.event.entity.EntityPushedByEntityAttackEvent; import me.xginko.villageroptimizer.VillagerOptimizer; -import me.xginko.villageroptimizer.cache.VillagerManager; +import me.xginko.villageroptimizer.CachedVillagers; import me.xginko.villageroptimizer.config.Config; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; @@ -17,12 +17,12 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent; public class PreventVillagerDamage implements VillagerOptimizerModule, Listener { - private final VillagerManager villagerManager; + private final CachedVillagers cachedVillagers; private final boolean block, player, mob, other, push; protected PreventVillagerDamage() { shouldEnable(); - this.villagerManager = VillagerOptimizer.getVillagerManager(); + this.cachedVillagers = VillagerOptimizer.getCachedVillagers(); Config config = VillagerOptimizer.getConfiguration(); config.addComment("gameplay.prevent-damage.enable", "Configure what kind of damage you want to cancel for optimized villagers here."); @@ -58,7 +58,7 @@ public class PreventVillagerDamage implements VillagerOptimizerModule, Listener private void onDamageReceive(EntityDamageByEntityEvent event) { if ( event.getEntityType().equals(EntityType.VILLAGER) - && villagerManager.getOrAdd((Villager) event.getEntity()).isOptimized() + && cachedVillagers.getOrAdd((Villager) event.getEntity()).isOptimized() ) { Entity damager = event.getDamager(); if (damager.getType().equals(EntityType.PLAYER)) { @@ -82,7 +82,7 @@ public class PreventVillagerDamage implements VillagerOptimizerModule, Listener if ( block && event.getEntityType().equals(EntityType.VILLAGER) - && villagerManager.getOrAdd((Villager) event.getEntity()).isOptimized() + && cachedVillagers.getOrAdd((Villager) event.getEntity()).isOptimized() ) { event.setCancelled(true); } @@ -93,7 +93,7 @@ public class PreventVillagerDamage implements VillagerOptimizerModule, Listener if ( push && event.getEntityType().equals(EntityType.VILLAGER) - && villagerManager.getOrAdd((Villager) event.getEntity()).isOptimized() + && cachedVillagers.getOrAdd((Villager) event.getEntity()).isOptimized() ) { event.setCancelled(true); } diff --git a/src/main/java/me/xginko/villageroptimizer/modules/PreventVillagerTargetting.java b/src/main/java/me/xginko/villageroptimizer/modules/PreventVillagerTargetting.java index 20ad94c..679db15 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/PreventVillagerTargetting.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/PreventVillagerTargetting.java @@ -2,7 +2,7 @@ package me.xginko.villageroptimizer.modules; import com.destroystokyo.paper.event.entity.EntityPathfindEvent; import me.xginko.villageroptimizer.VillagerOptimizer; -import me.xginko.villageroptimizer.cache.VillagerManager; +import me.xginko.villageroptimizer.CachedVillagers; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Mob; @@ -16,10 +16,10 @@ import org.bukkit.event.entity.EntityTargetLivingEntityEvent; public class PreventVillagerTargetting implements VillagerOptimizerModule, Listener { - private final VillagerManager villagerManager; + private final CachedVillagers cachedVillagers; protected PreventVillagerTargetting() { - this.villagerManager = VillagerOptimizer.getVillagerManager(); + this.cachedVillagers = VillagerOptimizer.getCachedVillagers(); } @Override @@ -46,7 +46,7 @@ public class PreventVillagerTargetting implements VillagerOptimizerModule, Liste if ( target != null && target.getType().equals(EntityType.VILLAGER) - && villagerManager.getOrAdd((Villager) target).isOptimized() + && cachedVillagers.getOrAdd((Villager) target).isOptimized() ) { event.setCancelled(true); } @@ -58,7 +58,7 @@ public class PreventVillagerTargetting implements VillagerOptimizerModule, Liste if ( target != null && target.getType().equals(EntityType.VILLAGER) - && villagerManager.getOrAdd((Villager) target).isOptimized() + && cachedVillagers.getOrAdd((Villager) target).isOptimized() ) { event.setCancelled(true); } @@ -69,7 +69,7 @@ public class PreventVillagerTargetting implements VillagerOptimizerModule, Liste if ( event.getEntityType().equals(EntityType.VILLAGER) && event.getDamager() instanceof Mob attacker - && villagerManager.getOrAdd((Villager) event.getEntity()).isOptimized() + && cachedVillagers.getOrAdd((Villager) event.getEntity()).isOptimized() ) { attacker.setTarget(null); } diff --git a/src/main/java/me/xginko/villageroptimizer/modules/RestockTrades.java b/src/main/java/me/xginko/villageroptimizer/modules/RestockTrades.java index ab07e86..2c85af0 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/RestockTrades.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/RestockTrades.java @@ -1,10 +1,10 @@ package me.xginko.villageroptimizer.modules; import me.xginko.villageroptimizer.VillagerOptimizer; -import me.xginko.villageroptimizer.cache.VillagerManager; +import me.xginko.villageroptimizer.CachedVillagers; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.enums.Permissions; -import me.xginko.villageroptimizer.models.WrappedVillager; +import me.xginko.villageroptimizer.WrappedVillager; import me.xginko.villageroptimizer.utils.CommonUtils; import net.kyori.adventure.text.TextReplacementConfig; import org.bukkit.entity.EntityType; @@ -22,13 +22,13 @@ public class RestockTrades implements VillagerOptimizerModule, Listener { * TODO: Disable notify message for cooldown bypassers * */ - private final VillagerManager villagerManager; + private final CachedVillagers cachedVillagers; private final long restock_delay_millis; private final boolean shouldLog, notifyPlayer; protected RestockTrades() { shouldEnable(); - this.villagerManager = VillagerOptimizer.getVillagerManager(); + this.cachedVillagers = VillagerOptimizer.getCachedVillagers(); Config config = VillagerOptimizer.getConfiguration(); config.addComment("gameplay.trade-restocking.enable", """ This is for automatic restocking of trades for optimized villagers. Optimized Villagers\s @@ -60,7 +60,7 @@ public class RestockTrades implements VillagerOptimizerModule, Listener { private void onInteract(PlayerInteractEntityEvent event) { if (!event.getRightClicked().getType().equals(EntityType.VILLAGER)) return; - WrappedVillager wVillager = villagerManager.getOrAdd((Villager) event.getRightClicked()); + WrappedVillager wVillager = cachedVillagers.getOrAdd((Villager) event.getRightClicked()); if (!wVillager.isOptimized()) return; Player player = event.getPlayer(); diff --git a/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java b/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java index 6718355..e034643 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java @@ -2,7 +2,7 @@ package me.xginko.villageroptimizer.modules; import io.papermc.paper.threadedregions.scheduler.ScheduledTask; import me.xginko.villageroptimizer.VillagerOptimizer; -import me.xginko.villageroptimizer.cache.VillagerManager; +import me.xginko.villageroptimizer.CachedVillagers; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.utils.LogUtils; import org.bukkit.Chunk; @@ -28,7 +28,7 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener { * */ private final VillagerOptimizer plugin; - private final VillagerManager villagerManager; + private final CachedVillagers cachedVillagers; private ScheduledTask scheduledTask; private final List removalPriority = new ArrayList<>(16); private final int global_max_villagers_per_chunk, max_unoptimized_per_chunk, max_optimized_per_chunk; @@ -38,7 +38,7 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener { protected VillagerChunkLimit() { shouldEnable(); this.plugin = VillagerOptimizer.getInstance(); - this.villagerManager = VillagerOptimizer.getVillagerManager(); + this.cachedVillagers = VillagerOptimizer.getCachedVillagers(); Config config = VillagerOptimizer.getConfiguration(); config.addComment("villager-chunk-limit.enable", """ Checks chunks for too many villagers and removes excess villagers based on priority.\s @@ -138,6 +138,6 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener { private int getProfessionPriority(Villager villager) { final Villager.Profession profession = villager.getProfession(); - return removalPriority.contains(profession) && !villagerManager.getOrAdd(villager).isOptimized() ? removalPriority.indexOf(profession) : Integer.MAX_VALUE; + return removalPriority.contains(profession) && !cachedVillagers.getOrAdd(villager).isOptimized() ? removalPriority.indexOf(profession) : Integer.MAX_VALUE; } } diff --git a/src/main/java/me/xginko/villageroptimizer/modules/WorkstationOptimization.java b/src/main/java/me/xginko/villageroptimizer/modules/WorkstationOptimization.java index 0d820a1..3b26e78 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/WorkstationOptimization.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/WorkstationOptimization.java @@ -1,11 +1,11 @@ package me.xginko.villageroptimizer.modules; import me.xginko.villageroptimizer.VillagerOptimizer; -import me.xginko.villageroptimizer.cache.VillagerManager; +import me.xginko.villageroptimizer.CachedVillagers; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.enums.OptimizationType; import me.xginko.villageroptimizer.enums.Permissions; -import me.xginko.villageroptimizer.models.WrappedVillager; +import me.xginko.villageroptimizer.WrappedVillager; import me.xginko.villageroptimizer.utils.CommonUtils; import me.xginko.villageroptimizer.utils.LogUtils; import net.kyori.adventure.text.TextReplacementConfig; @@ -31,7 +31,7 @@ public class WorkstationOptimization implements VillagerOptimizerModule, Listene * TODO: Make placed workstation villager profession related. * */ - private final VillagerManager villagerManager; + private final CachedVillagers cachedVillagers; private final HashSet workstations_that_disable = new HashSet<>(14); private final boolean shouldLog, shouldNotifyPlayer; private final long cooldown; @@ -39,7 +39,7 @@ public class WorkstationOptimization implements VillagerOptimizerModule, Listene protected WorkstationOptimization() { shouldEnable(); - this.villagerManager = VillagerOptimizer.getVillagerManager(); + this.cachedVillagers = VillagerOptimizer.getCachedVillagers(); Config config = VillagerOptimizer.getConfiguration(); config.addComment("optimization-methods.workstation-optimization.enable", """ When enabled, villagers near a configured radius to a workstation specific to your config\s @@ -100,7 +100,7 @@ public class WorkstationOptimization implements VillagerOptimizerModule, Listene final Villager.Profession profession = villager.getProfession(); if (profession.equals(Villager.Profession.NONE) || profession.equals(Villager.Profession.NITWIT)) continue; - WrappedVillager wVillager = villagerManager.getOrAdd(villager); + WrappedVillager wVillager = cachedVillagers.getOrAdd(villager); final double distance = entity.getLocation().distance(workstationLoc); if (distance < closestDistance) { @@ -153,7 +153,7 @@ public class WorkstationOptimization implements VillagerOptimizerModule, Listene if (!entity.getType().equals(EntityType.VILLAGER)) continue; Villager villager = (Villager) entity; - WrappedVillager wVillager = villagerManager.getOrAdd(villager); + WrappedVillager wVillager = cachedVillagers.getOrAdd(villager); final double distance = entity.getLocation().distance(workstationLoc); if (distance < closestDistance) {