EntitySuppressor
EntitySuppressor is a plugin designed to prevent unnecessary amounts of Mobs from spawning on your server, thus reducing server lag. It does this by supplying an efficient multi-step process to limiting monsters.
Code is written almost entirely by myself. Also see bergerkiller's NoLagg for further Lag-Fixes. Credit to NoLagg & LexManos's PerformanceTweaks for some original concepts.
Features!
Quote:
- Multiworld compatibility!
- Limits Monsters, Squid, Animals, Bats, and Villagers to configureable amounts in rather efficient way.
- Can limit how far and/or how many layers away monsters spawn.
- Reduces the frequency of mob-spawn ticks.
- Only limits naturally spawned and spawner-spawned Mobs.
- When a world has reached it's maximum, spawner mobs are queued until there is room.
- Ability to remove far away unnecessary monsters.
- Does not remove mobs that have picked up player items.
- Commands to count the number of living entities.
- Commands to remove living entities.
- Reloadable config.
- Configurable debug mode that prints extra information.
- CraftBukkitUpToDate compatibility.
- Anonymous statistic reporting to mcstats.org!
Commands & Permissions
- /es count - Returns a count of all Living Entities in the current world.
- /es remove <all / monsters / animals> - Removes all of the specified entity group from the current world.
- esuppressor.remove - Required to use /es remove.
- If "all" is added to the end of either of the above commands, it will do it in all worlds.
- If <world> is added to the end of either of the above commands, it will only do it in the specified world.
- /es reload - Reloads the config.
- esuppressor.reload - Required to use /es reload.
I set this up using these settings: http://pastebin.com/Szn76XhF
But when I reload my settings, this is the console output:
Why are the numbers the console outputs (Monsters(72)) different than what I have in the config file?
@rebel24
2.1.2 is R5 compatible. Alrighty?
(That is, to the current R5 dev build.)
@Fishrock123
You could mention that it should be R5 compatible in your post?
@rebel24
Can you please please please check the newest version already please? I can't label it as R5 yet because R5 isn't out... but built against R3 / R4 ≈ R5 compat...
(2.1.2 is using R3, but nothing it uses has changed yet, so it's essentially R4 / R5 compatible.)
Hey Can you please update for R5 please!
@HighlifeTTU
Really? 2.1.2 was too hard? Hmmm.
Every 100 ticks (by default, you can set ScanInterval higher or lower) it checks for spawn flags and distance.
UseSpawnFlags: false turns off the spawn flags part. Then the limiter is more like NoLagg.
UseMonsterDistanceRemoval: false Turns off distance monster removal and cancelation. This should be alot easier on the server as of 2.1.2 because now I'm using distanceSquared instead of Squareroot...
But try those two config nodes.
Yes. But not anymore, it was too hard on the server.
I should note I've got 75 players on...
@HighlifeTTU
Are you using 2.1.2? If no; use 2.1.2. I'll explain more if / when you are.
I tried using this over nolagg's mob limiter, but for some reason it causes a huge surge of lag at each "tick" that it checks the mods. Anythign I'm doing wrong here?
@Fishrock123
Ah ha, I got it figured out! Derpy me forgot that the Monster Apocalypse plugin is set to allow hostile wolves as bonus monsters, so it was indeed clearing the animals, but MA would bonus spawn in a few wolves, thus counting them as animals. Its why I kept seeing 8 or 9 animal spawns after clearing. My fault!
If anyone else has the MA plugin and has wolves set to bonus, it will show these animals as spawned when the bonus allows them after clearing animals.
@ezbik
Because it is currently limited by Bukkit's methods for removing entities. It only allows you to remove entities that are loaded. I will attempt to fix this in the future, somehow.
Animals are persistant and don't despawn, and ES does not automatically remove them. If there are more animals than the maximum, it will simply keep more from spawning.
Do I have to fly around my entire map in order to get this to remove animals? I run the command, and it only seems to remove animals in the chunks I'm in or near. I ended up having to fly around the whole map to clear animals, and I'm not sure why...
Also, I ask it to count the mobs, it tells me the Maximum animals in the world (Correct world name) is 0, but the ES count comes back with 9 animals?
@RealityIntern
I found the bug. It's an old bit of code that somehow wasn't updated in v2.0 .... Critical bugfix before tonight!!
@RealityIntern
Hmm, so it was the spawn flags that were messing with you aswell? That's weird.
Every time I try this, it just stops almost all spawns. I can even go up to a mob spawner and nothing spawns. I use pretty much defaults but with appropriate worlds added in. [edit] It's probably because it keeps setting the bukkit setting for monsters false in the world. I assumed UseSpawnFlags: false fixes this? But reloading this plugin doesn't seem to work for this. But if I manually reset monsters to true after I turn this on, it works as expected. I combined this with a slower spawn rate in the new bukkit.yml setting, so hopefully this is a good balance.
Thank you. I knew my math was way off earlier. Thanks for the info. My problem I was only thinking there's a couple chunks loaded. I don't know why I was thinking that way. Since there's number of chunks surrounding the player. I always have those DOH moments after work.
@BearFather
The code looks like this:
(world.getpChunkMonsterMaximum() * world.getLoadedChunks()) / 256
The average spawn point on a one player server is some 600 loaded chunks. (600 * 26) / 256 = 61 (And indeed, /es count shows 667 loaded chunks when only I am on your server.)
/es count will display how many chunks are loaded. Your probably thinking there are way less than there actually are.
Also, common misconception.chunk-calculated does not mean per-chunk. It gives a variable limit for the entire world. Calculating Per-Chunk is something I need to test, although it would likely cause some lag.
The dynamic chunk-calculated maximums are calculated using this formula: ( ( Number of loaded chunks ) times ( config value ) ) divided by ( 256 ) (loaded_chunks * X) / 256
This I'm trying to figure out. I suck at math but if the defaults are 26, that be 0.26953125 spawned mobs for 3 loaded chunks? I'm trying to figure this out. I really want to limit exp grinders causing lag.
@BearFather
Are you using v2.1? It reports statistics to http://metrics.griefcraft.com/plugin/EntitySuppressor in a hopeful bid to figure out where I should improve stuff. (And it's just neat.) :D