Anyone who has been active on the main forums in the last few days must surely have already heard the news.
I'm not going to comment on why and how, but the short version is that Bukkit is almost certainly not getting passed this.
Consequently, the future of BukkitDev is very uncertain. Even if the legal matters were resolved tomorrow there isn't really anybody left to deal with file submissions anyway. There's no indication about how long the site will stay up and what will happen to the files.
Anyway, while I will continue updating and developing my plugins you will need to look for updates somewhere else, namely the wiki. I will be updating this wiki in the next few days to facilitate better communication (forums, email, etc.) and adding any documentation that's missing.
I will also, of course, be looking into porting the plugins over to whichever API emerges from the ashes!
Introduction
Mobs gives you the ability to control almost every aspect of the mobs on your server, and a few other things on top.
The concept is simple - as your server is running, things are constantly happening. Players are mining, mobs are spawning, the sun is going down, it's starting to rain, etc.
Behind the scenes, CraftBukkit is sending messages to all interested plugins about these events. Player John broke a block of stone in world at location 55, 23, 137; A sheep died in world at location 209, 77, 22, etc. There are dozens of events, and thousands of these messages are sent every minute.
Most plugins listen for a few of these messages and act upon them. Mob-blocking plugins, for example, listen for new mobs spawning somwehere, and then look at the config to decide whether to allow or block the mob from spawning. Chat filtering plugins listen for the player is chatting messages and block/edit them according to the config.
Mobs listens for most (eventually all) of the mob-related messages, and a few extra ones, and gives you the option to block, allow, or alter the effect of the event.
However, it goes beyond that in that it allows you to use the event to perform one or more actions. So, while you may not want to interfere with creepers spawning, you can use this event to change the weather, set the time, drop an item somewhere, give someone some experience points, or as many of the dozens of possible actions that you want.
Additionally, it's possible to use conditions to filter the events you act upon. Want to give creepers a 1 in 1000 chance of taking out half your house when it explodes? Not a problem (except for the house).
Config.yml
checkfornewerversion - set to yes to allow the plugin to contact this site and see if there is a newer version available. Note that it onlys checks, and doesn't download anything.
generatetemplates - set to yes to have the plugin create empty config files for every possible event. Alternatively, simply look up the names on the
tutorial and create only the files you want.
worldstoignore - a list of worlds in which the plugin will be effectively disabled, ignoring all events in those worlds.
allow_debug - set to yes to enable other plugins to access the event API (for logging, debugging, etc.)
Commands
There is one only command in the plugin, which is
/reload_mobs, or
/rm. The reloads the config without reloading the plugin itself.
Users need the mobs.can
reloadconfig permission, or to be an op.
Update checking
If you like, you can set the plugin to check for any newer versions that get released. To do this use the check
fornewer_version option in the config file. This only works for release builds so you won't be bothered by any beta or dev builds.
Note that no update will be downloaded even with this set.
Tutorial
Start the tutorial
here to read up on how the plugin works
The tutorial for the old config can be downloaded from
here for offline viewing.
Updates
Updates for all my plugins will be announced via Twitter, which you can find
here.
Dependencies
Mobs has another plugin as a dependency called Extra Events. Read more about it
here.
Make sure you install Extra Events as well otherwise you will get errors on startup!
Donate
Mobs takes a lot of time to maintain, so if your server is enriched by it and you have some spare donations please consider sharing!
If you're penniless or like
Mobs but not that much I'm also partial to TF2 items. Send any you don't want my way! STEAM id: coldntired
If you don't know what TF2 is, then start playing! It's
free and fun!
I'm having a severe error occur.
012-01-02 13:13:48 [SEVERE] Could not pass event CREATURE_SPAWN to Mobs java.lang.NullPointerException at me.coldandtired.mobs.Listener.onCreatureSpawn(Listener.java:408) at org.bukkit.plugin.java.JavaPluginLoader$72.execute(JavaPluginLoader.java:767) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:339) at org.bukkit.craftbukkit.event.CraftEventFactory.callCreatureSpawnEvent(CraftEventFactory.java:259) at net.minecraft.server.World.addEntity(World.java:883) at org.bukkit.craftbukkit.CraftWorld.spawn(CraftWorld.java:820) at org.bukkit.craftbukkit.CraftWorld.spawn(CraftWorld.java:655) at org.bukkit.craftbukkit.CraftWorld.spawnCreature(CraftWorld.java:323) at me.coldandtired.mobs.Mob_spawner.spawn_mobs(Mob_spawner.java:70) at me.coldandtired.mobs.Mob_spawner.run(Mob_spawner.java:80) at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:137) at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:493) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:425) at net.minecraft.server.ThreadServerApplication.run(SourceFile:457)
Any idea what the cause of this is? This is my spawns file
mobs: - name: enderman, zombie, skeleton, spider, pig, cow, sheep, chicken conditions: - spawn: yes world: names: - centari
Spawner file
spawns: - mobs: - name: ghast quantity: - {min: 10, max: 30} location: world: centari base: {x: 0, y: 120, z: 0} range: {x: 3000, y: 3, z: 3000} - name: blaze, creeper powered: yes quantity: - {min: 100, max: 150} location: world: centari base: {x: 0, y: 120, z: 0} range: {x: 3000, y: 3, z: 3000} - name: enderman, zombie, skeleton, spider, pig, cow, sheep, chicken powered: no quantity: - {min: 200, max: 350} location: world: centari base: {x: 0, y: 120, z: 0} range: {x: 3000, y: 3, z: 3000}
My config file is blank.
Any help is greatly appreciated.
@coldandtired
Hi :)
I did what you told me but now the pigs are "out of control", they are spawning even if there are other pigs around!
Here is the config:
Thanks!
@DrakeDouglas The first plugin I wrote used XML, and I was a little saddened how often I had to explain it to people.
For this one I had to spend a couple of days learning YAML because it's far less obvious when it comes to complicated structures :( I added a tutorial which I hope clears things up a bit, but I'm also working on a command for this plugin that will build template configs with the right formatting that admins can fill in.
Post or PM your config files. As I said before, they look fine but they wouldn't do anything as written so I'd like to see how they look now.
@red212255 Your spawns file should look like this
To gradually spawn them, you can adjust the spawn_interval in the main config, and the quantity in the spawner config.
For example, set the spawn_interval to 120 (two minutes) and the quantity to something like 5-10 and you will get 5-10 ghasts every two minutes. Adjust as you need.
Alternatively, you can add a time node to the spawner config to restrict spawns to certain real times of day, but that's a bit more complicated.
@Keudn Are you sure it's this plugin? I can't remember adding any notification that mobs spawn.
I really appreciate your help coldandtired. So I've tried it now with the "spawns:" script in spawner.yml, and the "mobs:" script in spawns.yml.... that seems wrong to me, but if I do it any other way it won't load them again. It does seem to recognize the scripts you wrote now. But when i turn mobs on in my server properties, they're just totally normal. No effect on spawning at all. Am I supposed to leave that off or something?
And I completely agree with you. I've been a web developer with XML and that was seconds easy. I've still yet to figure out YAML. I think part of the problem is that I hate how it's setup so much, that refuse to even comprehend it. I'm trying, but... wow. It's very counter-intuitive for me.
hmmm, im pretty sure i did my spawner.yml correctly but could you check over it? it seeems to work but its sorta like you are walking then all of a sudden tons of mobs appear. is there a way to make it gradually spawn them?
spawns:
- mobs:
- name: ghast
quantity:
- {min: 50, max: 75}
location:
limit: 0
world: PurePVP_Main
region: ghastdesert
- name: blaze, pigZombie
quantity:
- {min: 75, max: 100}
location:
limit: 0
world: PurePVP_Main
region: ghastdesert
and i get the "there is something wrong with the 'enderman, zombie, skeleton, spider, pig, cow, sheep, chicken' entry" with my spawns.yml
mobs:
- name: enderman, zombie, skeleton, spider, pig, cow, sheep, chicken
conditions:
- spawn: no
world: PurePVP_Main
region: ghastdesert
thanks in advance for any help
when i try spawning a mob it says it spawned it but nothing appears, even passive mobs dont work
@mike7468 Currently no, but I can change something and make it work that way. I'll have a look later.
I'm sorry if this has been asked before, but I just have a small question.
How would I set up the Spawn.yml file just so the enderdragon will re-spawns once everyone leaves 'The End'
Many thanks in advance (I am not great at YAML files xD)
@Djrowling Hmm. Try splitting blazes and creepers into separate entries to see if they are powered.
As for the blazes, one way to do it is to create many entries with a much smaller location.range and different location.base (instead of one big one).
Alternatively, you can make it so that blazes have a chance to spawn other blazes when they are killed, making them harder to defeat.
@coldandtired It works almost perfect now! However for some reason creepers don't spawn as electrified. Also, i've found blazes throughout the world but they only spawn as one and it pretty much renders them useless as there easy to kill. Is there anyway to spawn blazes in groups of 3? Thanks
@mantegudo That's what I thought :)
When you set limit to 5, it means that the pigs will only spawn if there are 5 or fewer other pigs in the region.
If there are 4 pigs in the region and topup: no (default), after the spawning there will be 9 pigs (as you're spawning 5 pigs).
If there are 4 pigs in the region and topup: yes, after the spawning there will be 5 pigs. So the limit now refers to the mob cap for the region.
If you have a limit of 0, it means that the pigs can only spawn if there are no other pigs in the region. But you can never topup to 0, so topup: yes will block the spawning.
@coldandtired
Here is my config:
@Djrowling So, the spawner.yml file should look like this
The numbers might seem high but remember you're talking about a 36,000 square block area. It really depends on your spawn_interval (in the main config) setting. By default it's every minute, meaning that between 20 and 30 ghasts and giants will spawn every minute, and between 100 and 150 creepers and blazes.
If that's too high, either increase the spawn_interval (so it activates every 10 minutes, for example), or decrease the numbers here.
As regards pigs and chickens, etc, that needs the spawns.yml file because the natural spawns need to be restricted. Or, if you think there aren't enough naturally spawning we can add them to the spawner.
@coldandtired
Whenever i paste the spawns.yml it always pastes as two lines. Anyway, i want Giants, Ghasts, Electrified Creepers, and Blazes. If it can be done i'd like the Giants & Ghasts to be rare while the blazes & electrified creepers to be more common. As my world is a wasteland i'd like all animals (pigs, sheep (sheared), cows, and chickens) to be pretty rare and spawn in low quantities. My worlds border is 3000x, 3000z by - 3000x, -3000z. My world is also called WASTELAND if you need that information. Man i can't thank you enough for the help. Thanks once again.
@Djrowling There are a couple of things wrong with that. One, it should be called spawns.yml. Two, if your YAML file looks like that (and it isn't just the formatting here) it won't work as the spaces are wrong. Third, that won't do anything as there aren't any conditions to check for :)
Tell me what it is you want to do in words (not configs) and I'll knock you up one. If it's like your config earlier, then that looked pretty good, except it should have been spawner.yml not spawns.yml.
@coldandtired
So should i just leave spawn.yml empty? I've tried that and it doesn't work and i tried using:
SPAWN.YML
mobs:
- name: creeper, ghast, blaze, pig_zombie, chicken, cow, pig, sheep
conditions:
- spawn: yes
world:
types:
- normal
Both result in the normal mobs spawning, i had it working at some point but it won't anymore. Any ideas? Sorry for being such an idiot at this :(
Hopefully that's a little clearer.
Think of it like sculpting - the spawner file creates big blocks of stone (creating mobs all over the location) and the spawns file chips away at the stone until the required shape is left (blocks some of the above mobs from spawning).
@DrakeDouglas Your config file is malformed so it could be that making the plugin think it's empty. It should theoretically look like this
See below for why it won't work though.
The hyphen is used in YAML to show the block is one entry in a list of similar blocks. In the above example, mobs has this because there can be potentially any amount of blocks, each containing shortcut, mobs, and time key. Note that it doesn't matter in which order these three keys are, as long as the first one has the hyphen.
name has a hyphen because it's the first key of the mob block, inside that block, there can be many mobs, each with their own keys.
In conditions:, world: doesn't have a hyphen because there can only be one world key in a block.
This is why I much prefer XML to YAML :)
I'll be adding a more visual explanation the the docs this weekend.
HOWEVER, this won't work as a spawner config because you haven't set a location, and the condition stuff should go in spawns.yml. It should look something like this
This will still not actually spawn anything because the world_limit is much too low.
The spawns file would look like this