Most things in life aren't black-and-white, sometimes you need a shade of gray in between. Now instead of entirely disabling mob-spawns, you can adjust the rates in certain areas. The "factor" parameter of DMZs will alter the vanilla spawn rates, with "0" being fully disabled and "1" being fully vanilla.
I've also cleaned up the config a bunch. This was one of (if not the first?) plugin I made, and the config file was a disaster--requiring every mob being present in the config.
This version does have a slightly new config format. Take note of your existing DMZs and then re-gen the config by deleting config.yml. One day I'll make updates more graceful, but today is not that day.
Paired with this is a significant cleanup of the code that should make this plugin even more lightweight than it was prior.
This update does some optimization under the hood to increase performance and reduce overhead. Not that it was a particularly heavy plugin before, it was just...inelegant code and I was feeling ~frisky~.
This update requires a new config file. Take note of your DMZs and delete the config.yml file before running the updated plugin.
-----------------------------
We've got a lot of new features to cover, so let's dive in:
Area-configurable mob-griefing toggle.
Want to prevent your nether hub from being blown up by ghasts, but let ghasts blow things up elsewhere? Got you covered. Includes Ender Dragon, Enderman, Creeper, Ghast, and Wither griefing. Can also be toggled globally.
DMZ configurations are now three-dimensional! Now you can have even more control with your DMZs. Perhaps you want to prevent spawns on the surface, but still keep the caves below exciting. Or even the opposite to cut down on lag, but keep some danger above ground.
DMZ configurations are no longer min/max based. No more having to get out a pen and paper just to make sure you format your coordinates correctly. It'll figure out the bounding box on its own so just pick whichever corners you wish. You also don't have to worry about those pesky .5's anymore. The DMZ will extend to the outside edge of every area you define.
I ❤️ Ziglins Sub-toggle to allow zombified piglin portal spawns when overall portal spawning is disabled. If you were having issues with mobs spawning in nether portals, you can now stop them safely without interrupting that normal portal spawns of ziglins. Nature is healing
Less confusing levels Each time the server starts up, an "available-levels.txt" file will generate with the list of currently available levels. No need to worry about "Oh should it be capitalized? Or just the first letter?". Now you can just check the list.
-----------------------------
Quick bug fix:
Level-matching logic was...un-lazied. Previous iterations just checked if the spawn level name
contained the name of the config-provided level. Not super helpful when the level names are "world", "world_nether", "world_the_end" and you set a DMZ for "world", which would then apply to every world since they all contain the word "world". It was a quick hack from day 1 of coding and now it's fixed.
-----------------------------
I still have a decent number of things I'd like to change/improve/add, so at some point there will be a version 3, but this definitely cleared a number of my to-do's.
I've added a global toggle for disabling mob spawning in nether portals. This will not affect portal-based Shulker farms (Shulker duplication is considered "breeding", not natural spawning).
If you have an existing config from v1.0, add "disable_portal_spawns: true" to a new line in the config.