From e5226b39018fe1a3f510194069d52fea25c392b7 Mon Sep 17 00:00:00 2001 From: Ardakaz Date: Sat, 7 Feb 2026 20:40:45 +0000 Subject: [PATCH] Initial code #2 --- .../SimpleMobSpawningOptimizer.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/main/java/net/ardakaz/simpleMobSpawningOptimizer/SimpleMobSpawningOptimizer.java diff --git a/src/main/java/net/ardakaz/simpleMobSpawningOptimizer/SimpleMobSpawningOptimizer.java b/src/main/java/net/ardakaz/simpleMobSpawningOptimizer/SimpleMobSpawningOptimizer.java new file mode 100644 index 0000000..d052164 --- /dev/null +++ b/src/main/java/net/ardakaz/simpleMobSpawningOptimizer/SimpleMobSpawningOptimizer.java @@ -0,0 +1,46 @@ +package net.ardakaz.simpleMobSpawningOptimizer; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.CreatureSpawnEvent; +import org.bukkit.plugin.java.JavaPlugin; + +import java.util.Random; +import java.lang.Math; + +import static org.bukkit.Bukkit.getSimulationDistance; + +public class SimpleMobSpawningOptimizer extends JavaPlugin implements Listener { + + Random random = new Random(); + int mobsSpawned = 0; + int mobsNotSpawned = 0; + + @Override + public void onEnable() { + // Plugin startup logic + getServer().getPluginManager().registerEvents(this, this); + } + + @Override + public void onDisable() { + // Plugin shutdown logic + getLogger().info(mobsSpawned + " mobs have been spawned, " + mobsNotSpawned + " mob spawns have been cancelled."); + } + + @EventHandler + public void onCreatureSpawn(CreatureSpawnEvent event) { + + int currentSimulationDistance = getSimulationDistance(); + int normalSimulationDistance = 10; + double mobPercentage = (Math.PI * Math.pow(currentSimulationDistance, 2)) / (Math.PI * Math.pow(normalSimulationDistance, 2)); + + if (random.nextDouble() > mobPercentage) { + event.setCancelled(true); + mobsNotSpawned += 1; + } + else { + mobsSpawned += 1; + } + + } +}