more refactor
This commit is contained in:
parent
2a9322d0a2
commit
e29bb8fcb1
@ -3,7 +3,7 @@ package me.xginko.villageroptimizer;
|
|||||||
import me.xginko.villageroptimizer.config.Config;
|
import me.xginko.villageroptimizer.config.Config;
|
||||||
import me.xginko.villageroptimizer.config.LanguageCache;
|
import me.xginko.villageroptimizer.config.LanguageCache;
|
||||||
import me.xginko.villageroptimizer.enums.OptimizationType;
|
import me.xginko.villageroptimizer.enums.OptimizationType;
|
||||||
import me.xginko.villageroptimizer.models.VillagerCache;
|
import me.xginko.villageroptimizer.cache.VillagerManager;
|
||||||
import me.xginko.villageroptimizer.models.WrappedVillager;
|
import me.xginko.villageroptimizer.models.WrappedVillager;
|
||||||
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
@ -33,10 +33,10 @@ import java.util.regex.Pattern;
|
|||||||
public final class VillagerOptimizer extends JavaPlugin {
|
public final class VillagerOptimizer extends JavaPlugin {
|
||||||
|
|
||||||
private static VillagerOptimizer instance;
|
private static VillagerOptimizer instance;
|
||||||
private static Logger logger;
|
|
||||||
private static Config config;
|
|
||||||
private static HashMap<String, LanguageCache> languageCacheMap;
|
private static HashMap<String, LanguageCache> languageCacheMap;
|
||||||
private static VillagerCache villagerCache;
|
private static VillagerManager villagerManager;
|
||||||
|
private static Config config;
|
||||||
|
private static Logger logger;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
@ -49,54 +49,20 @@ public final class VillagerOptimizer extends JavaPlugin {
|
|||||||
logger.info("Done.");
|
logger.info("Done.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static OptimizationType computeOptimization(@NotNull WrappedVillager wrapped) {
|
public static VillagerOptimizer getInstance() {
|
||||||
if (config.enable_nametag_optimization) {
|
return instance;
|
||||||
Component name = wrapped.villager().customName();
|
|
||||||
if (name != null && config.nametags.contains(PlainTextComponentSerializer.plainText().serialize(name).toLowerCase())) {
|
|
||||||
return OptimizationType.NAMETAG;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (config.enable_block_optimization) {
|
|
||||||
if (config.blocks_that_disable.contains(wrapped.villager().getLocation().getBlock().getRelative(BlockFace.DOWN).getType())) {
|
|
||||||
return OptimizationType.BLOCK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (config.enable_workstation_optimization) {
|
|
||||||
final Location jobSite = wrapped.villager().getMemory(MemoryKey.JOB_SITE);
|
|
||||||
if (
|
|
||||||
jobSite != null
|
|
||||||
&& config.workstations_that_disable.contains(jobSite.getBlock().getType())
|
|
||||||
&& wrapped.villager().getLocation().distance(jobSite) <= config.workstation_max_distance
|
|
||||||
) {
|
|
||||||
return OptimizationType.WORKSTATION;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return wrapped.getOptimizationType();
|
|
||||||
}
|
}
|
||||||
|
public static VillagerManager getVillagerManager() {
|
||||||
public static OptimizationType computeOptimization(@NotNull Villager villager) {
|
return villagerManager;
|
||||||
if (config.enable_nametag_optimization) {
|
}
|
||||||
Component name = villager.customName();
|
public static Config getConfiguration() {
|
||||||
if (name != null && config.nametags.contains(PlainTextComponentSerializer.plainText().serialize(name).toLowerCase())) {
|
return config;
|
||||||
return OptimizationType.NAMETAG;
|
}
|
||||||
}
|
public static NamespacedKey getKey(String key) {
|
||||||
}
|
return new NamespacedKey(instance, key);
|
||||||
if (config.enable_block_optimization) {
|
}
|
||||||
if (config.blocks_that_disable.contains(villager.getLocation().getBlock().getRelative(BlockFace.DOWN).getType())) {
|
public static Logger getLog() {
|
||||||
return OptimizationType.BLOCK;
|
return logger;
|
||||||
}
|
|
||||||
}
|
|
||||||
if (config.enable_workstation_optimization) {
|
|
||||||
final Location jobSite = villager.getMemory(MemoryKey.JOB_SITE);
|
|
||||||
if (
|
|
||||||
jobSite != null
|
|
||||||
&& config.workstations_that_disable.contains(jobSite.getBlock().getType())
|
|
||||||
&& villager.getLocation().distance(jobSite) <= config.workstation_max_distance
|
|
||||||
) {
|
|
||||||
return OptimizationType.WORKSTATION;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return villagerCache.getOrAdd(villager).getOptimizationType();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reloadPlugin() {
|
public void reloadPlugin() {
|
||||||
@ -107,11 +73,11 @@ public final class VillagerOptimizer extends JavaPlugin {
|
|||||||
private void reloadConfiguration() {
|
private void reloadConfiguration() {
|
||||||
try {
|
try {
|
||||||
config = new Config();
|
config = new Config();
|
||||||
villagerCache = new VillagerCache(config.cache_keep_time_seconds);
|
villagerManager = new VillagerManager(config.cache_keep_time_seconds);
|
||||||
VillagerOptimizerModule.reloadModules();
|
VillagerOptimizerModule.reloadModules();
|
||||||
config.saveConfig();
|
config.saveConfig();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.severe("Failed to load config! - " + e.getLocalizedMessage());
|
logger.severe("Error while loading config! - " + e.getLocalizedMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -181,23 +147,53 @@ public final class VillagerOptimizer extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static VillagerOptimizer getInstance() {
|
public static OptimizationType computeOptimization(@NotNull WrappedVillager wrapped) {
|
||||||
return instance;
|
if (config.enable_nametag_optimization) {
|
||||||
|
Component name = wrapped.villager().customName();
|
||||||
|
if (name != null && config.nametags.contains(PlainTextComponentSerializer.plainText().serialize(name).toLowerCase())) {
|
||||||
|
return OptimizationType.NAMETAG;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (config.enable_block_optimization) {
|
||||||
|
if (config.blocks_that_disable.contains(wrapped.villager().getLocation().getBlock().getRelative(BlockFace.DOWN).getType())) {
|
||||||
|
return OptimizationType.BLOCK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (config.enable_workstation_optimization) {
|
||||||
|
final Location jobSite = wrapped.villager().getMemory(MemoryKey.JOB_SITE);
|
||||||
|
if (
|
||||||
|
jobSite != null
|
||||||
|
&& config.workstations_that_disable.contains(jobSite.getBlock().getType())
|
||||||
|
&& wrapped.villager().getLocation().distance(jobSite) <= config.workstation_max_distance
|
||||||
|
) {
|
||||||
|
return OptimizationType.WORKSTATION;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return wrapped.getOptimizationType();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static NamespacedKey getKey(String key) {
|
public static OptimizationType computeOptimization(@NotNull Villager villager) {
|
||||||
return new NamespacedKey(instance, key);
|
if (config.enable_nametag_optimization) {
|
||||||
}
|
Component name = villager.customName();
|
||||||
|
if (name != null && config.nametags.contains(PlainTextComponentSerializer.plainText().serialize(name).toLowerCase())) {
|
||||||
public static Config getConfiguration() {
|
return OptimizationType.NAMETAG;
|
||||||
return config;
|
}
|
||||||
}
|
}
|
||||||
|
if (config.enable_block_optimization) {
|
||||||
public static Logger getLog() {
|
if (config.blocks_that_disable.contains(villager.getLocation().getBlock().getRelative(BlockFace.DOWN).getType())) {
|
||||||
return logger;
|
return OptimizationType.BLOCK;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
public static VillagerCache getVillagerCache() {
|
if (config.enable_workstation_optimization) {
|
||||||
return villagerCache;
|
final Location jobSite = villager.getMemory(MemoryKey.JOB_SITE);
|
||||||
|
if (
|
||||||
|
jobSite != null
|
||||||
|
&& config.workstations_that_disable.contains(jobSite.getBlock().getType())
|
||||||
|
&& villager.getLocation().distance(jobSite) <= config.workstation_max_distance
|
||||||
|
) {
|
||||||
|
return OptimizationType.WORKSTATION;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return villagerManager.getOrAdd(villager).getOptimizationType();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
package me.xginko.villageroptimizer.models;
|
package me.xginko.villageroptimizer.cache;
|
||||||
|
|
||||||
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 org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Villager;
|
import org.bukkit.entity.Villager;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -11,11 +12,11 @@ import java.time.Duration;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class VillagerCache {
|
public class VillagerManager {
|
||||||
|
|
||||||
private final Cache<UUID, WrappedVillager> villagerCache;
|
private final Cache<UUID, WrappedVillager> villagerCache;
|
||||||
|
|
||||||
public VillagerCache(long expireAfterWriteSeconds) {
|
public VillagerManager(long expireAfterWriteSeconds) {
|
||||||
this.villagerCache = Caffeine.newBuilder().expireAfterWrite(Duration.ofSeconds(expireAfterWriteSeconds)).build();
|
this.villagerCache = Caffeine.newBuilder().expireAfterWrite(Duration.ofSeconds(expireAfterWriteSeconds)).build();
|
||||||
}
|
}
|
||||||
|
|
@ -23,7 +23,7 @@ public final class WrappedVillager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static @NotNull WrappedVillager fromCache(Villager villager) {
|
public static @NotNull WrappedVillager fromCache(Villager villager) {
|
||||||
return VillagerOptimizer.getVillagerCache().getOrAdd(villager);
|
return VillagerOptimizer.getVillagerManager().getOrAdd(villager);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isOptimized() {
|
public boolean isOptimized() {
|
||||||
|
@ -3,7 +3,7 @@ package me.xginko.villageroptimizer.modules;
|
|||||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||||
import me.xginko.villageroptimizer.config.Config;
|
import me.xginko.villageroptimizer.config.Config;
|
||||||
import me.xginko.villageroptimizer.enums.OptimizationType;
|
import me.xginko.villageroptimizer.enums.OptimizationType;
|
||||||
import me.xginko.villageroptimizer.models.VillagerCache;
|
import me.xginko.villageroptimizer.cache.VillagerManager;
|
||||||
import me.xginko.villageroptimizer.models.WrappedVillager;
|
import me.xginko.villageroptimizer.models.WrappedVillager;
|
||||||
import me.xginko.villageroptimizer.utils.CommonUtils;
|
import me.xginko.villageroptimizer.utils.CommonUtils;
|
||||||
import net.kyori.adventure.text.TextReplacementConfig;
|
import net.kyori.adventure.text.TextReplacementConfig;
|
||||||
@ -24,12 +24,12 @@ import org.bukkit.event.player.PlayerInteractEntityEvent;
|
|||||||
|
|
||||||
public class BlockOptimization implements VillagerOptimizerModule, Listener {
|
public class BlockOptimization implements VillagerOptimizerModule, Listener {
|
||||||
|
|
||||||
private final VillagerCache cache;
|
private final VillagerManager villagerManager;
|
||||||
private final Config config;
|
private final Config config;
|
||||||
private final boolean shouldLog, shouldNotifyPlayer;
|
private final boolean shouldLog, shouldNotifyPlayer;
|
||||||
|
|
||||||
protected BlockOptimization() {
|
protected BlockOptimization() {
|
||||||
this.cache = VillagerOptimizer.getVillagerCache();
|
this.villagerManager = VillagerOptimizer.getVillagerManager();
|
||||||
this.config = VillagerOptimizer.getConfiguration();
|
this.config = VillagerOptimizer.getConfiguration();
|
||||||
this.config.addComment("optimization.methods.by-specific-block.enable", """
|
this.config.addComment("optimization.methods.by-specific-block.enable", """
|
||||||
When enabled, villagers standing on the configured specific blocks will become optimized once a\s
|
When enabled, villagers standing on the configured specific blocks will become optimized once a\s
|
||||||
@ -63,7 +63,7 @@ public class BlockOptimization implements VillagerOptimizerModule, Listener {
|
|||||||
|
|
||||||
placed.getRelative(BlockFace.UP).getLocation().getNearbyEntities(0.5,0.5,0.5).forEach(entity -> {
|
placed.getRelative(BlockFace.UP).getLocation().getNearbyEntities(0.5,0.5,0.5).forEach(entity -> {
|
||||||
if (entity.getType().equals(EntityType.VILLAGER)) {
|
if (entity.getType().equals(EntityType.VILLAGER)) {
|
||||||
WrappedVillager wVillager = cache.getOrAdd((Villager) entity);
|
WrappedVillager wVillager = villagerManager.getOrAdd((Villager) entity);
|
||||||
if (!wVillager.isOptimized()) {
|
if (!wVillager.isOptimized()) {
|
||||||
if (wVillager.setOptimization(OptimizationType.BLOCK)) {
|
if (wVillager.setOptimization(OptimizationType.BLOCK)) {
|
||||||
if (shouldNotifyPlayer) {
|
if (shouldNotifyPlayer) {
|
||||||
@ -91,7 +91,7 @@ public class BlockOptimization implements VillagerOptimizerModule, Listener {
|
|||||||
|
|
||||||
broken.getRelative(BlockFace.UP).getLocation().getNearbyEntities(0.5,0.5,0.5).forEach(entity -> {
|
broken.getRelative(BlockFace.UP).getLocation().getNearbyEntities(0.5,0.5,0.5).forEach(entity -> {
|
||||||
if (entity.getType().equals(EntityType.VILLAGER)) {
|
if (entity.getType().equals(EntityType.VILLAGER)) {
|
||||||
WrappedVillager wVillager = cache.getOrAdd((Villager) entity);
|
WrappedVillager wVillager = villagerManager.getOrAdd((Villager) entity);
|
||||||
if (wVillager.getOptimizationType().equals(OptimizationType.BLOCK)) {
|
if (wVillager.getOptimizationType().equals(OptimizationType.BLOCK)) {
|
||||||
wVillager.setOptimization(OptimizationType.OFF);
|
wVillager.setOptimization(OptimizationType.OFF);
|
||||||
if (shouldNotifyPlayer) {
|
if (shouldNotifyPlayer) {
|
||||||
@ -110,7 +110,7 @@ public class BlockOptimization implements VillagerOptimizerModule, Listener {
|
|||||||
Entity interacted = event.getRightClicked();
|
Entity interacted = event.getRightClicked();
|
||||||
if (!interacted.getType().equals(EntityType.VILLAGER)) return;
|
if (!interacted.getType().equals(EntityType.VILLAGER)) return;
|
||||||
|
|
||||||
WrappedVillager wVillager = cache.getOrAdd((Villager) interacted);
|
WrappedVillager wVillager = villagerManager.getOrAdd((Villager) interacted);
|
||||||
final Location entityLegs = interacted.getLocation();
|
final Location entityLegs = interacted.getLocation();
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
@ -4,7 +4,7 @@ import io.papermc.paper.event.player.PlayerNameEntityEvent;
|
|||||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||||
import me.xginko.villageroptimizer.config.Config;
|
import me.xginko.villageroptimizer.config.Config;
|
||||||
import me.xginko.villageroptimizer.enums.OptimizationType;
|
import me.xginko.villageroptimizer.enums.OptimizationType;
|
||||||
import me.xginko.villageroptimizer.models.VillagerCache;
|
import me.xginko.villageroptimizer.cache.VillagerManager;
|
||||||
import me.xginko.villageroptimizer.models.WrappedVillager;
|
import me.xginko.villageroptimizer.models.WrappedVillager;
|
||||||
import me.xginko.villageroptimizer.utils.CommonUtils;
|
import me.xginko.villageroptimizer.utils.CommonUtils;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
@ -20,12 +20,12 @@ import org.bukkit.event.Listener;
|
|||||||
|
|
||||||
public class NametagOptimization implements VillagerOptimizerModule, Listener {
|
public class NametagOptimization implements VillagerOptimizerModule, Listener {
|
||||||
|
|
||||||
private final VillagerCache cache;
|
private final VillagerManager villagerManager;
|
||||||
private final Config config;
|
private final Config config;
|
||||||
private final boolean shouldLog, shouldNotifyPlayer;
|
private final boolean shouldLog, shouldNotifyPlayer;
|
||||||
|
|
||||||
protected NametagOptimization() {
|
protected NametagOptimization() {
|
||||||
this.cache = VillagerOptimizer.getVillagerCache();
|
this.villagerManager = VillagerOptimizer.getVillagerManager();
|
||||||
this.config = VillagerOptimizer.getConfiguration();
|
this.config = VillagerOptimizer.getConfiguration();
|
||||||
this.config.addComment("optimization.methods.by-nametag.enable",
|
this.config.addComment("optimization.methods.by-nametag.enable",
|
||||||
"""
|
"""
|
||||||
@ -60,7 +60,7 @@ public class NametagOptimization implements VillagerOptimizerModule, Listener {
|
|||||||
if (name == null) return;
|
if (name == null) return;
|
||||||
|
|
||||||
final String nameTag = PlainTextComponentSerializer.plainText().serialize(name);
|
final String nameTag = PlainTextComponentSerializer.plainText().serialize(name);
|
||||||
WrappedVillager wVillager = cache.getOrAdd((Villager) event.getEntity());
|
WrappedVillager wVillager = villagerManager.getOrAdd((Villager) event.getEntity());
|
||||||
|
|
||||||
if (config.nametags.contains(nameTag.toLowerCase())) {
|
if (config.nametags.contains(nameTag.toLowerCase())) {
|
||||||
if (!wVillager.isOptimized()) {
|
if (!wVillager.isOptimized()) {
|
||||||
|
@ -2,7 +2,7 @@ package me.xginko.villageroptimizer.modules;
|
|||||||
|
|
||||||
import io.papermc.paper.event.entity.EntityPushedByEntityAttackEvent;
|
import io.papermc.paper.event.entity.EntityPushedByEntityAttackEvent;
|
||||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||||
import me.xginko.villageroptimizer.models.VillagerCache;
|
import me.xginko.villageroptimizer.cache.VillagerManager;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Villager;
|
import org.bukkit.entity.Villager;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
@ -13,10 +13,10 @@ import org.bukkit.event.entity.EntityDamageEvent;
|
|||||||
|
|
||||||
public class PreventVillagerDamage implements VillagerOptimizerModule, Listener {
|
public class PreventVillagerDamage implements VillagerOptimizerModule, Listener {
|
||||||
|
|
||||||
private final VillagerCache cache;
|
private final VillagerManager villagerManager;
|
||||||
|
|
||||||
protected PreventVillagerDamage() {
|
protected PreventVillagerDamage() {
|
||||||
this.cache = VillagerOptimizer.getVillagerCache();
|
this.villagerManager = VillagerOptimizer.getVillagerManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -38,7 +38,7 @@ public class PreventVillagerDamage implements VillagerOptimizerModule, Listener
|
|||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
private void onDamageReceive(EntityDamageEvent event) {
|
private void onDamageReceive(EntityDamageEvent event) {
|
||||||
if (!event.getEntityType().equals(EntityType.VILLAGER)) return;
|
if (!event.getEntityType().equals(EntityType.VILLAGER)) return;
|
||||||
if (cache.getOrAdd((Villager) event.getEntity()).isOptimized()) {
|
if (villagerManager.getOrAdd((Villager) event.getEntity()).isOptimized()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -46,7 +46,7 @@ public class PreventVillagerDamage implements VillagerOptimizerModule, Listener
|
|||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
private void onPushByEntityAttack(EntityPushedByEntityAttackEvent event) {
|
private void onPushByEntityAttack(EntityPushedByEntityAttackEvent event) {
|
||||||
if (!event.getEntityType().equals(EntityType.VILLAGER)) return;
|
if (!event.getEntityType().equals(EntityType.VILLAGER)) return;
|
||||||
if (cache.getOrAdd((Villager) event.getEntity()).isOptimized()) {
|
if (villagerManager.getOrAdd((Villager) event.getEntity()).isOptimized()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package me.xginko.villageroptimizer.modules;
|
|||||||
|
|
||||||
import com.destroystokyo.paper.event.entity.EntityPathfindEvent;
|
import com.destroystokyo.paper.event.entity.EntityPathfindEvent;
|
||||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||||
import me.xginko.villageroptimizer.models.VillagerCache;
|
import me.xginko.villageroptimizer.cache.VillagerManager;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Mob;
|
import org.bukkit.entity.Mob;
|
||||||
import org.bukkit.entity.Villager;
|
import org.bukkit.entity.Villager;
|
||||||
@ -15,10 +15,10 @@ import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
|
|||||||
|
|
||||||
public class PreventVillagerTargetting implements VillagerOptimizerModule, Listener {
|
public class PreventVillagerTargetting implements VillagerOptimizerModule, Listener {
|
||||||
|
|
||||||
private final VillagerCache cache;
|
private final VillagerManager villagerManager;
|
||||||
|
|
||||||
protected PreventVillagerTargetting() {
|
protected PreventVillagerTargetting() {
|
||||||
this.cache = VillagerOptimizer.getVillagerCache();
|
this.villagerManager = VillagerOptimizer.getVillagerManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -39,14 +39,14 @@ public class PreventVillagerTargetting implements VillagerOptimizerModule, Liste
|
|||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
private void onTarget(EntityTargetLivingEntityEvent event) {
|
private void onTarget(EntityTargetLivingEntityEvent event) {
|
||||||
if (event.getTarget() instanceof Villager villager && cache.getOrAdd(villager).isOptimized()) {
|
if (event.getTarget() instanceof Villager villager && villagerManager.getOrAdd(villager).isOptimized()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
private void onEntityTargetVillager(EntityPathfindEvent event) {
|
private void onEntityTargetVillager(EntityPathfindEvent event) {
|
||||||
if (event.getTargetEntity() instanceof Villager villager && cache.getOrAdd(villager).isOptimized()) {
|
if (event.getTargetEntity() instanceof Villager villager && villagerManager.getOrAdd(villager).isOptimized()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -56,7 +56,7 @@ public class PreventVillagerTargetting implements VillagerOptimizerModule, Liste
|
|||||||
if (
|
if (
|
||||||
event.getEntityType().equals(EntityType.VILLAGER)
|
event.getEntityType().equals(EntityType.VILLAGER)
|
||||||
&& event.getDamager() instanceof Mob attacker
|
&& event.getDamager() instanceof Mob attacker
|
||||||
&& cache.getOrAdd((Villager) event.getEntity()).isOptimized()
|
&& villagerManager.getOrAdd((Villager) event.getEntity()).isOptimized()
|
||||||
) {
|
) {
|
||||||
attacker.setTarget(null);
|
attacker.setTarget(null);
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package me.xginko.villageroptimizer.modules;
|
|||||||
|
|
||||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||||
import me.xginko.villageroptimizer.config.Config;
|
import me.xginko.villageroptimizer.config.Config;
|
||||||
import me.xginko.villageroptimizer.models.VillagerCache;
|
import me.xginko.villageroptimizer.cache.VillagerManager;
|
||||||
import me.xginko.villageroptimizer.models.WrappedVillager;
|
import me.xginko.villageroptimizer.models.WrappedVillager;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Villager;
|
import org.bukkit.entity.Villager;
|
||||||
@ -14,12 +14,12 @@ import org.bukkit.event.player.PlayerInteractEntityEvent;
|
|||||||
|
|
||||||
public class RestockTrades implements VillagerOptimizerModule, Listener {
|
public class RestockTrades implements VillagerOptimizerModule, Listener {
|
||||||
|
|
||||||
private final VillagerCache cache;
|
private final VillagerManager villagerManager;
|
||||||
private final long restock_delay;
|
private final long restock_delay;
|
||||||
private final boolean shouldLog;
|
private final boolean shouldLog;
|
||||||
|
|
||||||
protected RestockTrades() {
|
protected RestockTrades() {
|
||||||
this.cache = VillagerOptimizer.getVillagerCache();
|
this.villagerManager = VillagerOptimizer.getVillagerManager();
|
||||||
Config config = VillagerOptimizer.getConfiguration();
|
Config config = VillagerOptimizer.getConfiguration();
|
||||||
config.addComment("optimization.trade-restocking.enable", """
|
config.addComment("optimization.trade-restocking.enable", """
|
||||||
This is for automatic restocking of trades for optimized villagers. Optimized Villagers\s
|
This is for automatic restocking of trades for optimized villagers. Optimized Villagers\s
|
||||||
@ -48,7 +48,7 @@ public class RestockTrades implements VillagerOptimizerModule, Listener {
|
|||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
private void onInteract(PlayerInteractEntityEvent event) {
|
private void onInteract(PlayerInteractEntityEvent event) {
|
||||||
if (!event.getRightClicked().getType().equals(EntityType.VILLAGER)) return;
|
if (!event.getRightClicked().getType().equals(EntityType.VILLAGER)) return;
|
||||||
WrappedVillager wVillager = cache.getOrAdd((Villager) event.getRightClicked());
|
WrappedVillager wVillager = villagerManager.getOrAdd((Villager) event.getRightClicked());
|
||||||
if (!wVillager.isOptimized()) return;
|
if (!wVillager.isOptimized()) return;
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ package me.xginko.villageroptimizer.modules;
|
|||||||
import io.papermc.paper.event.entity.EntityMoveEvent;
|
import io.papermc.paper.event.entity.EntityMoveEvent;
|
||||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||||
import me.xginko.villageroptimizer.config.Config;
|
import me.xginko.villageroptimizer.config.Config;
|
||||||
import me.xginko.villageroptimizer.models.VillagerCache;
|
import me.xginko.villageroptimizer.cache.VillagerManager;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@ -12,12 +12,12 @@ import org.bukkit.event.Listener;
|
|||||||
|
|
||||||
public class WorkstationOptimization implements VillagerOptimizerModule, Listener {
|
public class WorkstationOptimization implements VillagerOptimizerModule, Listener {
|
||||||
|
|
||||||
private final VillagerCache cache;
|
private final VillagerManager villagerManager;
|
||||||
private final Config config;
|
private final Config config;
|
||||||
private final boolean shouldLog, shouldNotifyPlayer;
|
private final boolean shouldLog, shouldNotifyPlayer;
|
||||||
|
|
||||||
protected WorkstationOptimization() {
|
protected WorkstationOptimization() {
|
||||||
this.cache = VillagerOptimizer.getVillagerCache();
|
this.villagerManager = VillagerOptimizer.getVillagerManager();
|
||||||
this.config = VillagerOptimizer.getConfiguration();
|
this.config = VillagerOptimizer.getConfiguration();
|
||||||
this.config.addComment("optimization.methods.by-workstation.enable", """
|
this.config.addComment("optimization.methods.by-workstation.enable", """
|
||||||
When enabled, villagers near a configured radius to a workstation specific to their profession\s
|
When enabled, villagers near a configured radius to a workstation specific to their profession\s
|
||||||
|
Loading…
x
Reference in New Issue
Block a user