Mob Stats
MobStats makes the strength of mobs change! The further from the closest origin the mob is, the stronger it is. Mobs at an origin are too weak to survive, but get far enough away and they become so strong that they could kill a player in one shot.
To set up the plugin, download the .jar and place it in your plugins folder. Start your server to create the config file. Open up the config and configure it. Reload your server. Insure that you have Vault in your plugin folder if you want to use the economy features. Run the command replaceall to make sure all mobs are proper and run it again if you encounter vanilla mobs that shouldn't be vanilla.
Features
- Tells players what level zone they are in.
- Commands to tell you where you are.
- Will tell players what zone they are in even after teleporting and respawning.
- Multi World support.
- Configure the message for when a player enters a zone.
- Configure messages sent when a player kills a mob.
- Players can stop themselves from receiving messages for someone killing a mob.
- Configure death messages.
- Choose the origins.
- Worlds can have more than one origin.
- Equations to customize the zone size, mob damage, mob health, experience drops, and money.
- Configure different item drops for different mobs in different zones.
- Configure a maximum and minimum values.
- Change the arrows that skeletons shoot.
- Change the equipment that mobs have based on level and a weighted random.
Commands
zone - Tells the player what zone they are in. ms <on or off> - Turns the messages for when someone kills a mob on and off. replaceall - (for ops and the console only) Checks every entity in the game and replaces them if they aren't the right type to have a level.
Config
NOTE: The level cap has been changed to being integrated with equations.
message
This is the message that gets sent to a player when the player changes zones. When ever you type "+level" it will be replaced with the level of the zone. Type "false" or leave the area blank to turn off that message. This goes for all messages. Kill Message, and Death Message can also have -mob for the type of mob and -player for the name or the player and Kill Messages can also have -exp for the experience earned and -money for the money earned.
origins
Type the name of each world to have origins for under the origins section then place a list of origins for each world by listing them with hyphens before each location. Type the location in the form of x,y,z or type spawn to be the world's spawn point.
equations
There are 5 types of equations, zones which are the change in levels based on distance, damage which is the change in damage based on levels, health which is the change in health based on levels, experience or XP which is the change in experience drops based on levels, and Money is to set the amount of money to provide Players with for killing a mob of a certain level. Type what equation is to be set, then type the type of equation (Quadratic, QWD, QMD, Exponential, EWD, EMD). Make a max area for a maximum value and a min area for a minimum value in each equation, excluding these will set the value to positive and negative infinity respectively.
Types
- Quadratic: Values are a, b, c to be filled in the equation ax^2 + bx + c. Setting a to 0 makes a linear equation, c is the value when x is 0.
- QWD: A Quadratic but the values for a, b, and c can have a d put next to them to multiply that value by the default value of what is being calculated.
- QMD: A Quadratic that gets multiplied by the default value of what is being calculated after it has been calculated. Setup the same as a regular quadratic.
- Exponential: Values ar a, b, c, d, f which are to be filled into a(b^(c(x - d))) + f.
- EWD: The same as a QWD but using an exponential equation instead.
- EMD: The same as a QMD but using an exponential equation instead.
If equations make values too high then it can kill a player but instead of respawning, they go to limbo. They can't be damaged or damage other things.
drops
Type a name for the drop that can be anything in the list under drops. Put a section in with the name of the drop which has a section for Mobs which is a list of mobs, a Start Zone section for the zone where it starts, an End Zone for the zone where it ends, the Odds which is a fraction to place the Odds for if the item is dropped, and Items which is a list of ItemStacks in the form of (item id(#)),(amount). No mobs will set it for all mobs, no Start Zone defaults to 0, no End Zone defaults to endless, and no odds, no denominator for odds or the numerator is larger than the denominator will default to the drop always being dropped. No items will ignore the drop.
equipment
Equipment is the same as Drops except their names are listed under equipment. Also, when putting in items, a third number may be placed to say what equipment slot it is supposed to be in. With out a number, it i just placed based on its the order in which it is listed. If ArrowPro is used, the abbreviation of an arrow can be used to set it to a skeleton.
affected mobs
Type a list of all the mobs that are to be affected by listing them one on top of the other with a hyphen before each mob. Leaving it blank will affect all mobs. By default there is a list of all mobs to be used for a reference. Erasing all these values will have no effect on which mobs are affected.
Source: source
I recently bought borderlands 2, and am now obsessed with it. Consequentially, I'm wandering whether it would be possible to define a zone (much like in world edit/world guard) and then assign a level to the area which alters the mobs stats as the plugin currently does. It'd be great if you could put this into the plugin!
@WayGroovy
This is something I was looking at a bit and thought was gone. When I was testing the plugin it seemed to be working fine then I changed some features and then the server lagged. I removed the new features and it still lagged. Then it eventually stopped lagging but I don't know how and then I put the new features in again and it worked. I will have to look into it a bit too.
I love this plugin, but it seems to have memory issues with me. I'll dig deeper when I have a chance.
(ChatManager, CityWorld, ColoredTablist, CraftIRC, Fe, MCMA_compat, MobHealth, Modifyworld, NameTags, Nethrar, OtherDrops, PermissionsEx, PlayerDisperse, PluginReloader, RandomSpawn, SpamGuard, TagAPI, Vault, WorldEdit, WorldGenerationControl, WorldGuard, dhmcDeath, dynmap)
On load everything seems fine, but ram steadily ramps up as players explore, until the server grinds to a halt.
Yep I have vault, its a cornerstone for so many of my plugins...
I've tried off and on all day today to get Monster Apocalypse and MobStats to play nice but like you said they step on each other..
I guess I will have to give up scaling mob health and damage for now, but I will watch here as I feel that Monster Apocolypse is heavy and I'd prefer a leaner solution like yours.
Just FYI these are the versions of stuff I'm using that produces the economy message: server 1.3.2 CraftBukkit version git-Bukkit-1.3.2-R0.1-4 MobStats] Loading MobStats v5.2 Vault] Loading Vault v1.2.18-b229 [BOSEconomy] Loading BOSEconomy v0.7.3.1 MobStats] Enabling MobStats v5.2 [INFO] [MobStats] No economy found! Ignoring economy. Vault[Economy] BOSEconomy7 found: Waiting
@viziel2
These two plugins will not work together. They both work through replacing the default mobs with custom mobs. What ends up happening is that MonsterApocalypse starts after MobStats so it makes all the mobs of its type and then you can undo it by running the replaceall command to change them all to a MobStats type but that overrides the Monster Apocalypse mobs and thus the Monster Apocalypse features. When I asked about making the config larger, I would be including stuff where you can set sections of zones where mobs ignore the sun, equations for speed, equations for view distance, and even more so I could implement these features into MobStats.
BOSEconomy is supported by MobStats I believe. It requires vault to work though so you must install vault and also check vault for whether or not BOSEconomy is supported.
Bummer, using the latest ver of Monster Apocolypse (which I need in order to keep zombies and skeletons from catching on fire during the day), and MobStats, I get passive conflicts.
When I enable MobStats, I get messages saying 'you are entering a level 14 zone.' in a freshly started server, I find a mob ( a spider in this case) and it only has 20 health. I believe Monster Apocolypse is overriding MobStats, since thats the health defined there...
When the mob is killed, I get a message saying I got 0 exp and 0 money for the level 14 mob.
BTW, I use BOSEconomy, which MobStats dosn't seem to recognize...
I use monster apocolypse for:
Unfortunately the way monster apocolypse is setup in the config.yml, I cannot choose to ONLY turn on the sunlight block without also changing the health and damage of the mob (they are either all enabled or all disabled). I think this is conflicting with MobStats...
Ill keep trying! I really want to get MobStats working so I can have more challenging mobs than the wimpy standard ones.
@viziel2
This plugin doesn't make zombies ignore sunlight, it only makes it possible for them to be strong enough to endure it.
v.5.2 is much more stable than v.5.1, I almost completely overhauled the source to make it better but the lack of new features made it v.5.2 instead of v.6.0.
For the math, the equations work as either quadratic equations or exponential equations. A quadratic equation is an equation that looks like this, ax^2 + bx + c, where x is the distance from the nearest origin and a, b, and c is what you put in the config. To solve for what it will be at a given distance take the distance and multiply by itself then by the value at a then take the distance and multiply it by the value at b and add that to what you had before then add the value at c. This will tell you the level. This equation is good because zones get larger as they reach higher levels. If a is set to 0 then it is a linear equation and the zones will increase at constant rates. Exponential equations are more difficult because of how many values there are. QWD, QMD, EWD, EMD can only be used with damage, health, and experience. QWD and EWD are a quadratic and exponential respectively with the difference being that for each value entered, you have the option to multiply that by the default value by putting a 'd' next to the number when entering it. QMD and EMD are a quadratic and exponential respectively but after the equation is calculated, the result is multiplied by the default value. These allow you to make different mobs have different strengths based on what their vanilla strengths are.
If you still don't quite understand these equations I would recommended looking them up.
This plugin does work, I have put it through a lot of testing. If you have anymore questions, don't hesitate to ask.
Good stuff!
For me, I am playing with a 1.3.2 server using craftbukkit and various RPG related MMO-like plugins (heroes, campaign, catacombs, gods, citizens, etc). I wanted to create an active world and a dynamic one if possible.
I saw MobStats and really liked the idea of the mobs getting harder farther from spawn, that meant that I didnt have to define spawn points, which would only lead to dead spots etc. This was an automated way to adjust mob stats.
Granted, there is no CON system yet for minecraft so you can't target a mob and know if its over your head for your herocrafted dude.. But minecraft's game mechanics are pretty forgiving.
The problem I ran into is that I found it simply didnt work. I haven't installed this latest version but with 1.3.2 and v5.1 the zombies were not ignoring sunlight and they were not gaining stats.
I also found the mathematical way of defining the zones to be very confusing and had no clue on how to simply increase the size of the zone bands. The default settings are way too tight.
I removed mobstats and used Monster Apocolypse which works great, for all the above BUT HAS no scaling feature!! ..cant seem to get the best of both worlds sadly..
Could this work with monster Apocalypse? Which seems to be the only viable solution for a plugin to control zombies from catching on fire in sunlight lol..
BTW, monster apocolypse also handles loot tables, but they too ..dont scale...perhaps a useful function for future Mobstats?
In response to your post, no I dont want more compliation..I dont understand how to get it to work as it currently is! Simplicity dosnt mean you have to forgo functionality though!
As I was making the latest update I thought of several ways that I could make this plugin better but I also came up with a major concern that came with it all and that is configuration.
I can easily expanding configuration to having equations that are not only world specific but entity specific. Then I can also expand on this to allow entities to gain experience and increase in level getting to levels higher than their current zone just by killing Players. Also I could allow levels to increase stuff other than damage and health. I can make it so can increase the speed of the mobs, there view distance, and probably other things too. But the problem I came up with here is that though I could make this super configurable, will the config get to complicated for people to deal with.
So that is my question, can people deal with large and complicated configs and do they want to if it means a much more powerful plugin?
Please post your opinions in the comments. I also have this up on the Bukkit Forums page for this plugin.
@viziel2
In the equations section find the Zone equation section or make it if it doesn't exist. Then the default should show it as a quadratic. If you use a quadratic, QWD, or QMD, change lowering the a, or the b will decrease the rate at which zones change. If you set a or b to a negative number then the zones will decrease as you get farther. If you use an exponential, EWD, or EMD, decrease a, b, c, or d to decrease the rate at which zones change.
How do you modify the config.yml to increase the size of a given zone? Feels like going from zone 1,2,3 is too fast and I'd like to widen the bands...
also getting this:
18:45:35 [SEVERE] Could not pass event EntityDamageByEntityEvent to MobStats java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Bool ean at mobstats.MobStats.isInvincible(MobStats.java:301) at mobstats.listeners.Entities.onEntityDamageByEntity(Entities.java:52) at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja va:302) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav a:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j ava:484) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j ava:469) at net.minecraft.server.EntityEnderDragon.b(EntityEnderDragon.java:402) at net.minecraft.server.EntityEnderDragon.e(EntityEnderDragon.java:288) at net.minecraft.server.EntityLiving.F_(EntityLiving.java:456) at net.minecraft.server.World.tickEntity(World.java:1420) at net.minecraft.server.World.entityJoinedWorld(World.java:1360) at net.minecraft.server.WorldServer.entityJoinedWorld(WorldServer.java:1 11) at net.minecraft.server.World.playerJoinedWorld(World.java:1352) at net.minecraft.server.World.tickEntities(World.java:1210) at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:641) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:525) at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
it just started spamming the console.
is it compatible with heroes?
i do have another simple suggestion....
could you possibly have text displayed on the screen when someone picks up xp or gets money from a mob? Also, have a command /ms notifications on/off that will allow users to toggle this info?
2012-08-13 23:00:37 [SEVERE] Could not pass event CreatureSpawnEvent to MobStats
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:304)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:482)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:467)
at org.bukkit.craftbukkit.event.CraftEventFactory.callCreatureSpawnEvent(CraftEventFactory.java:226)
at net.minecraft.server.World.addEntity(World.java:900)
at net.minecraft.server.SpawnerCreature.spawnEntities(SpawnerCreature.java:187)
at net.minecraft.server.World.doTick(World.java:1756)
at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:555)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:457)
at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
Caused by: java.lang.NullPointerException
at mobstats.MobStats.closestOriginDistance(MobStats.java:291)
at mobstats.MobStats.setLevel(MobStats.java:197)
at mobstats.listeners.Entities.onCreatureSpawnEvent(Entities.java:76)
at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302)
... 10 more
2012-08-13 23:00:37 [SEVERE] Could not pass event CreatureSpawnEvent to MobStats
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:304)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:482)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:467)
at org.bukkit.craftbukkit.event.CraftEventFactory.callCreatureSpawnEvent(CraftEventFactory.java:226)
at net.minecraft.server.World.addEntity(World.java:900)
at uk.co.jacekk.bukkit.bloodmoon.EntityReplaceListener.onCreatureSpawn(EntityReplaceListener.java:43)
at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:482)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:467)
at org.bukkit.craftbukkit.event.CraftEventFactory.callCreatureSpawnEvent(CraftEventFactory.java:226)
at net.minecraft.server.World.addEntity(World.java:900)
at net.minecraft.server.SpawnerCreature.spawnEntities(SpawnerCreature.java:187)
at net.minecraft.server.World.doTick(World.java:1756)
at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:555)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:457)
at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
Caused by: java.lang.NullPointerException
at mobstats.MobStats.closestOriginDistance(MobStats.java:291)
at mobstats.MobStats.setLevel(MobStats.java:197)
at mobstats.listeners.Entities.onCreatureSpawnEvent(Entities.java:76)
at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302)
... 20 more
I always get many things like these if a player is in a world except for 'world'.
is there anything in this plugin that is based on player xp/levels?
*edit*
To clarify... i meant "is there any way to make this plugin be based on player xp/levels?"
No updates since May.... is this plugin dead?
@oopomopoo The problem is exactly that, I need to put the invincibility back in. The reason it is gone is because bukkit has max health put in that I am not abel to change. I instead handle the health myself and just call damage animations since the animation doesn't get called when cancelling the event or setting the damage to zero. Also I could try to put the mob health features in MobStats.
I've got a problem. When I use this mod, I'm attacking woth a wooden sword with enchant sharpness 1. The normal damage it does is 5-6, but with this mod I'm 1-2 shotting the mobs and Mobhealth (which isn't compatible so far) is saying I did 20 damage. The mobs just dissappear, not even a death animation.
- I've come to the conclusion that it happens when I attack the mob too fast. I've disabled all other plugins and it still occurs.
edit - I'd really love to use this mod because it's exactly what I'm looking for, but I can't do it with this bug of them just going away. If you've ever played Dead Frontier, it's got the same theory behind it. There are 5 color level zones, and the further you go, the better items drop and the more difficult zombies get. It's really awesome, and I would LOVE to use this mod to give that kind of feel to minecraft.
Edit - For clarification, the mods I'm testing it with are: Vault, BOSEconomy and Mobstats. Mobstats requires economy to give the money and the money requires vault. There are no other changes. Basically I attack them and they die in one hit (when the creeper should take 5-6 with my sword)
. No animation, no nothing. They just simply "poof" without drops or exp.
edit - ohai again. I took off BOSEconomy and it works better but the enemy will still just disappear. I think I've found the cause and it's what another person mentioned earlier. If you attack the enemy, they turn red temporarily. When I waited til they went back to their normal texture to attack again, there was no problem. Drops, exp and animation all occured. When I attacked them while they were still red, they simply disappeared. No drops, exp nor animation. I believe the reason the enemies died was my fault. I guess in the settings it doesn't add onto max health, but instead just gives them that much health. I also tested against a creeper and a zombie. When attacking with my fist, the zombie did not dissappear when attacked. However, when using a diamond sword (didn't test the rest. Assume it's the same due to wooden sword as well) they dissappeared half the time on the killing blow.
I suggest the first fix attempt (unless you know what it is from reading the descrip) would be to restore the immunity time between attacks to the minecraft default. Hopefully that works.
Also if there's any way to get this compatible with Mobhealth that would be awesome. I enjoy Mobhealth telling me how much health the enemies have left and how much damage I do. The mod itself doesn't affect health, it just displays the remaining amount to the player.
http://pastebin.com/8YNJma6n
spamming error
@Gamerguy14
so...how to fix it?