From 48a3ed900f14cf406829ff211ad200a1618470ed Mon Sep 17 00:00:00 2001 From: xGinko Date: Mon, 2 Oct 2023 23:36:57 +0200 Subject: [PATCH] improve non folia version --- .../modules/RenameOptimized.java | 6 ---- .../modules/VillagerChunkLimit.java | 34 ++++++++++--------- .../modules/VillagerOptimizerModule.java | 7 ++-- .../extras/MakeVillagersSpawnAdult.java | 6 ---- .../extras/PreventUnoptimizedTrading.java | 8 +---- .../modules/extras/PreventVillagerDamage.java | 6 ---- .../extras/PreventVillagerTargetting.java | 8 +---- .../modules/mechanics/LevelVillagers.java | 10 ++---- .../modules/mechanics/RestockTrades.java | 10 ++---- .../optimizations/OptimizeByBlock.java | 6 ---- .../optimizations/OptimizeByNametag.java | 6 ---- .../optimizations/OptimizeByWorkstation.java | 6 ---- .../modules/VillagerChunkLimit.java | 6 ++-- 13 files changed, 33 insertions(+), 86 deletions(-) diff --git a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/RenameOptimized.java b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/RenameOptimized.java index e390e43..5def26f 100644 --- a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/RenameOptimized.java +++ b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/RenameOptimized.java @@ -10,7 +10,6 @@ import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; public class RenameOptimized implements VillagerOptimizerModule, Listener { @@ -37,11 +36,6 @@ public class RenameOptimized implements VillagerOptimizerModule, Listener { plugin.getServer().getPluginManager().registerEvents(this, plugin); } - @Override - public void disable() { - HandlerList.unregisterAll(this); - } - @Override public boolean shouldEnable() { return VillagerOptimizer.getConfiguration().getBoolean("general.rename-villagers.enable", true); diff --git a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java index 079b5b8..9e07aee 100644 --- a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java +++ b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java @@ -5,12 +5,13 @@ import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.utils.LogUtil; import org.bukkit.Chunk; +import org.bukkit.Server; +import org.bukkit.World; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.player.PlayerInteractEntityEvent; @@ -20,9 +21,9 @@ import java.util.Comparator; import java.util.List; import java.util.logging.Level; -public class VillagerChunkLimit implements VillagerOptimizerModule, Listener { +public class VillagerChunkLimit implements VillagerOptimizerModule, Listener, Runnable { - private final VillagerOptimizer plugin; + private final Server server; private final VillagerCache villagerCache; private final List removalPriority = new ArrayList<>(16); private final long check_period; @@ -31,7 +32,7 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener { protected VillagerChunkLimit() { shouldEnable(); - this.plugin = VillagerOptimizer.getInstance(); + this.server = VillagerOptimizer.getInstance().getServer(); this.villagerCache = VillagerOptimizer.getCache(); Config config = VillagerOptimizer.getConfiguration(); config.addComment("villager-chunk-limit.enable", """ @@ -42,8 +43,10 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener { "The maximum amount of unoptimized villagers per chunk."); this.max_optimized_per_chunk = config.getInt("villager-chunk-limit.max-optimized-per-chunk", 20, "The maximum amount of optimized villagers per chunk."); - this.check_period = config.getInt("villager-chunk-limit.check-period-in-ticks", 600, - "Check all loaded chunks every X ticks. 1 second = 20 ticks"); + this.check_period = config.getInt("villager-chunk-limit.check-period-in-ticks", 600, """ + Check all loaded chunks every X ticks. 1 second = 20 ticks\s + A shorter delay in between checks is more efficient but is also more resource intense.\s + A larger delay is less resource intense but could become inefficient."""); this.logIsEnabled = config.getBoolean("villager-chunk-limit.log-removals", false); config.getList("villager-chunk-limit.removal-priority", List.of( "NONE", "NITWIT", "SHEPHERD", "FISHERMAN", "BUTCHER", "CARTOGRAPHER", "LEATHERWORKER", @@ -64,14 +67,9 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener { @Override public void enable() { - plugin.getServer().getPluginManager().registerEvents(this, plugin); - plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, () -> { - plugin.getServer().getWorlds().forEach(world -> { - for (Chunk chunk : world.getLoadedChunks()) { - this.checkVillagersInChunk(chunk); - } - }); - }, check_period, check_period); + VillagerOptimizer plugin = VillagerOptimizer.getInstance(); + server.getPluginManager().registerEvents(this, plugin); + server.getScheduler().scheduleSyncRepeatingTask(plugin, this, check_period, check_period); } @Override @@ -80,8 +78,12 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener { } @Override - public void disable() { - HandlerList.unregisterAll(this); + public void run() { + for (World world : server.getWorlds()) { + for (Chunk chunk : world.getLoadedChunks()) { + this.checkVillagersInChunk(chunk); + } + } } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) diff --git a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/VillagerOptimizerModule.java b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/VillagerOptimizerModule.java index 8deb7e7..5b580ed 100644 --- a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/VillagerOptimizerModule.java +++ b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/VillagerOptimizerModule.java @@ -1,5 +1,6 @@ package me.xginko.villageroptimizer.modules; +import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.modules.extras.PreventUnoptimizedTrading; import me.xginko.villageroptimizer.modules.extras.PreventVillagerDamage; import me.xginko.villageroptimizer.modules.extras.PreventVillagerTargetting; @@ -9,19 +10,21 @@ import me.xginko.villageroptimizer.modules.mechanics.RestockTrades; import me.xginko.villageroptimizer.modules.optimizations.OptimizeByBlock; import me.xginko.villageroptimizer.modules.optimizations.OptimizeByNametag; import me.xginko.villageroptimizer.modules.optimizations.OptimizeByWorkstation; +import org.bukkit.event.HandlerList; import java.util.HashSet; public interface VillagerOptimizerModule { void enable(); - void disable(); boolean shouldEnable(); HashSet modules = new HashSet<>(); static void reloadModules() { - modules.forEach(VillagerOptimizerModule::disable); + VillagerOptimizer plugin = VillagerOptimizer.getInstance(); + HandlerList.unregisterAll(plugin); + plugin.getServer().getScheduler().cancelTasks(plugin); modules.clear(); modules.add(new OptimizeByNametag()); diff --git a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/MakeVillagersSpawnAdult.java b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/MakeVillagersSpawnAdult.java index a536642..d098949 100644 --- a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/MakeVillagersSpawnAdult.java +++ b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/MakeVillagersSpawnAdult.java @@ -6,7 +6,6 @@ import org.bukkit.entity.EntityType; import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.entity.CreatureSpawnEvent; @@ -20,11 +19,6 @@ public class MakeVillagersSpawnAdult implements VillagerOptimizerModule, Listene plugin.getServer().getPluginManager().registerEvents(this, plugin); } - @Override - public void disable() { - HandlerList.unregisterAll(this); - } - @Override public boolean shouldEnable() { return VillagerOptimizer.getConfiguration().getBoolean("gameplay.villagers-spawn-as-adults.enable", false, """ diff --git a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/PreventUnoptimizedTrading.java b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/PreventUnoptimizedTrading.java index 54fb7ac..9007091 100644 --- a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/PreventUnoptimizedTrading.java +++ b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/PreventUnoptimizedTrading.java @@ -1,7 +1,7 @@ package me.xginko.villageroptimizer.modules.extras; -import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.VillagerCache; +import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.enums.Permissions; import me.xginko.villageroptimizer.modules.VillagerOptimizerModule; @@ -9,7 +9,6 @@ import org.bukkit.entity.Player; import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryType; @@ -38,11 +37,6 @@ public class PreventUnoptimizedTrading implements VillagerOptimizerModule, Liste plugin.getServer().getPluginManager().registerEvents(this, plugin); } - @Override - public void disable() { - HandlerList.unregisterAll(this); - } - @Override public boolean shouldEnable() { return VillagerOptimizer.getConfiguration().getBoolean("gameplay.prevent-trading-with-unoptimized.enable", false); diff --git a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/PreventVillagerDamage.java b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/PreventVillagerDamage.java index 19b67bb..9961f2f 100644 --- a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/PreventVillagerDamage.java +++ b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/PreventVillagerDamage.java @@ -10,7 +10,6 @@ import org.bukkit.entity.Mob; import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByBlockEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; @@ -42,11 +41,6 @@ public class PreventVillagerDamage implements VillagerOptimizerModule, Listener plugin.getServer().getPluginManager().registerEvents(this, plugin); } - @Override - public void disable() { - HandlerList.unregisterAll(this); - } - @Override public boolean shouldEnable() { return VillagerOptimizer.getConfiguration().getBoolean("gameplay.prevent-damage.enable", true); diff --git a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/PreventVillagerTargetting.java b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/PreventVillagerTargetting.java index dc4e0f2..f604163 100644 --- a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/PreventVillagerTargetting.java +++ b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/extras/PreventVillagerTargetting.java @@ -1,8 +1,8 @@ package me.xginko.villageroptimizer.modules.extras; import com.destroystokyo.paper.event.entity.EntityPathfindEvent; -import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.VillagerCache; +import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.modules.VillagerOptimizerModule; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; @@ -10,7 +10,6 @@ import org.bukkit.entity.Mob; import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityTargetLivingEntityEvent; @@ -29,11 +28,6 @@ public class PreventVillagerTargetting implements VillagerOptimizerModule, Liste plugin.getServer().getPluginManager().registerEvents(this, plugin); } - @Override - public void disable() { - HandlerList.unregisterAll(this); - } - @Override public boolean shouldEnable() { return VillagerOptimizer.getConfiguration().getBoolean("gameplay.prevent-targeting.enable", true, diff --git a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/mechanics/LevelVillagers.java b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/mechanics/LevelVillagers.java index 37a5d62..8128ea1 100644 --- a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/mechanics/LevelVillagers.java +++ b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/mechanics/LevelVillagers.java @@ -1,9 +1,9 @@ package me.xginko.villageroptimizer.modules.mechanics; -import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.VillagerCache; -import me.xginko.villageroptimizer.config.Config; +import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.WrappedVillager; +import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.modules.VillagerOptimizerModule; import me.xginko.villageroptimizer.utils.CommonUtil; import net.kyori.adventure.text.TextReplacementConfig; @@ -11,7 +11,6 @@ import org.bukkit.entity.Player; import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryType; @@ -46,11 +45,6 @@ public class LevelVillagers implements VillagerOptimizerModule, Listener { plugin.getServer().getPluginManager().registerEvents(this, plugin); } - @Override - public void disable() { - HandlerList.unregisterAll(this); - } - @Override public boolean shouldEnable() { return VillagerOptimizer.getConfiguration().getBoolean("gameplay.villager-leveling.enable", true); diff --git a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/mechanics/RestockTrades.java b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/mechanics/RestockTrades.java index 594db8f..ad5e764 100644 --- a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/mechanics/RestockTrades.java +++ b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/mechanics/RestockTrades.java @@ -1,10 +1,10 @@ package me.xginko.villageroptimizer.modules.mechanics; -import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.VillagerCache; +import me.xginko.villageroptimizer.VillagerOptimizer; +import me.xginko.villageroptimizer.WrappedVillager; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.enums.Permissions; -import me.xginko.villageroptimizer.WrappedVillager; import me.xginko.villageroptimizer.modules.VillagerOptimizerModule; import me.xginko.villageroptimizer.utils.CommonUtil; import net.kyori.adventure.text.TextReplacementConfig; @@ -13,7 +13,6 @@ import org.bukkit.entity.Player; import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractEntityEvent; @@ -43,11 +42,6 @@ public class RestockTrades implements VillagerOptimizerModule, Listener { plugin.getServer().getPluginManager().registerEvents(this, plugin); } - @Override - public void disable() { - HandlerList.unregisterAll(this); - } - @Override public boolean shouldEnable() { return VillagerOptimizer.getConfiguration().getBoolean("gameplay.trade-restocking.enable", true); diff --git a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByBlock.java b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByBlock.java index ee0d34c..f6875c4 100644 --- a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByBlock.java +++ b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByBlock.java @@ -21,7 +21,6 @@ import org.bukkit.entity.Player; import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; @@ -74,11 +73,6 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener { plugin.getServer().getPluginManager().registerEvents(this, plugin); } - @Override - public void disable() { - HandlerList.unregisterAll(this); - } - @Override public boolean shouldEnable() { return VillagerOptimizer.getConfiguration().getBoolean("optimization-methods.block-optimization.enable", false); diff --git a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByNametag.java b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByNametag.java index 19ecd98..75b1673 100644 --- a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByNametag.java +++ b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByNametag.java @@ -19,7 +19,6 @@ import org.bukkit.entity.Player; import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.inventory.ItemStack; @@ -60,11 +59,6 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener { plugin.getServer().getPluginManager().registerEvents(this, plugin); } - @Override - public void disable() { - HandlerList.unregisterAll(this); - } - @Override public boolean shouldEnable() { return VillagerOptimizer.getConfiguration().getBoolean("optimization-methods.nametag-optimization.enable", true); diff --git a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByWorkstation.java b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByWorkstation.java index 671ea47..57a00d8 100644 --- a/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByWorkstation.java +++ b/VillagerOptimizer-1.16.5/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByWorkstation.java @@ -20,7 +20,6 @@ import org.bukkit.entity.Player; import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; @@ -58,11 +57,6 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener plugin.getServer().getPluginManager().registerEvents(this, plugin); } - @Override - public void disable() { - HandlerList.unregisterAll(this); - } - @Override public boolean shouldEnable() { return VillagerOptimizer.getConfiguration().getBoolean("optimization-methods.workstation-optimization.enable", false); diff --git a/VillagerOptimizer-1.20.2/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java b/VillagerOptimizer-1.20.2/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java index e7e3edc..b3e55cb 100644 --- a/VillagerOptimizer-1.20.2/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java +++ b/VillagerOptimizer-1.20.2/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java @@ -44,8 +44,10 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener { "The maximum amount of unoptimized villagers per chunk."); this.max_optimized_per_chunk = config.getInt("villager-chunk-limit.max-optimized-per-chunk", 20, "The maximum amount of optimized villagers per chunk."); - this.check_period = config.getInt("villager-chunk-limit.check-period-in-ticks", 600, - "Check all loaded chunks every X ticks. 1 second = 20 ticks"); + this.check_period = config.getInt("villager-chunk-limit.check-period-in-ticks", 600, """ + Check all loaded chunks every X ticks. 1 second = 20 ticks\s + A shorter delay in between checks is more efficient but is also more resource intense.\s + A larger delay is less resource intense but could become inefficient."""); this.logIsEnabled = config.getBoolean("villager-chunk-limit.log-removals", false); config.getList("villager-chunk-limit.removal-priority", List.of( "NONE", "NITWIT", "SHEPHERD", "FISHERMAN", "BUTCHER", "CARTOGRAPHER", "LEATHERWORKER",