Lycanites Mobs (as of 18.104.22.168+ for Minecraft 1.12+) uses JSON entries to define spawners. These are fully customizable and your own spawners can be added as well.
Mob Spawn entries can be added to each spawner individually and the Spawners that mobs use can be set via the Spawn Types in the mob configs as well, simply use the name of the JSON Spawner.
As of 22.214.171.124 Mob Events are also defined entirely by json and can be found in the mobevents folder along with spawners for each mob event.
When testing you can also use the command "/lm spawners reload" to reload all JSON Spawners when in game and "/lm spawners creative" to have spawners react to creative mode players. This will also reload spawners from the mobevents folder.
As with all json configs used by Lycanites Mobs, make sure you set "loadDefault" to false, as when this is true it will cause the json file to be reset to default values. Invalid json will also cause a default json file to reset.
You can create as many custom spawners as you like, though if you add a lot of spawners with very high block search ranges and rapid ticks you could slow the game down, however you can use conditions to filter down when spawners should activate a lot and save on a good amount of performance. You could have 100 custom spawners but if their conditions means only 3 of them are actually running at the same time then the performacne should be great.
To create a new spawner, simply add your Spawner JSON file to the "config/lycanitesmobs/spawners" folder. You can use the command "/lm spawners reload" when in game to reload all spawners allowing you to test on the fly! There is also a "JSONSpawners" debug option in the lycanitesmobs-general.cfg file which will enable a lot of logging to the console if you need it, though errors should always show up in the log and shouldn't crash the game, instead the broken spawner is ignored.
Spawners are made up of 5 sections, the base Spawner properties, Spawn Conditions, Spawn Triggers, Spawn Locations and Mob Spawns.
You can always copy a default spawner and repurpose it instead of writing a new one from scratch too, just be sure to change the name or only one of the spawners will load!
You can also edit default mob events as well as add your own in "config/lycanitesmobs/mobevents". See the Mob Events section for more info.
Each property uses a specific data type, please look up how JSON works if you don't know:
Short for integer, this must be a whole number, can be negative if applicable.
This can be a whole number or a decimal value such as 0.5, and can also be negative if applicable.
Short for boolean, this can be true or false (no quotation marks).
This is text and must be in "quotation marks".
This is a nested JSON object with properties of its own.
This means you can have multiple entries of the data type inside the [brackets].