improve non folia version
This commit is contained in:
parent
290cede611
commit
48a3ed900f
@ -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);
|
||||
|
@ -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<Villager.Profession> 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)
|
||||
|
@ -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<VillagerOptimizerModule> 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());
|
||||
|
@ -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, """
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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",
|
||||
|
Loading…
x
Reference in New Issue
Block a user