Corruption
Corruption
Current Version: v2.4
Description
This plugin was originally made by bm01. We have received his permission to distribute this updated version.
This plugin occasionally turns some monsters into a stronger version, boss-like. Its main purpose is to add a little diversity and randomness to the game. It can be used as a difficulty enhancer, or even as a reward system for your players, depending on your configuration. Technically every monster spawning naturally in your world has a chance to become a boss, which hits harder, has more hit points, possess some immunities and drops better. Of course all of this is configurable. Moreover, they can notify you of their presence by sending you a message when you hit them, when they hit you, or after a certain amount of time when you're close enough. They can also have a flaming effect around them (the one used by mob spawners).
Features
- Custom bosses - You can customise the health, damage, experience, drops and much more. You can make your bosses as tough and rewarding as you want.
- Supports any minecraft entity - A list of entity types that are confirmed to be working can be found here.
- Customisable equipment - Create your own epic equipment sets with enchantments and, if you feel like it, add a bit of randomness to it.
- Customisable abilities - With 8 cool abilities (and more on the way), make fighting your bosses even more of a challenge.
- Name your boss - Give your bosses epic names to leave an everlasting impression on their foes.
- Viewer - Give people the ability to view the health of any boss nearby if it receives damage (requires the cor.viewer permission).
- Per world configuration - Choose which bosses spawn in what world, use world specific drops and more.
- Custom Spawners - Create spawners that will spawn whatever Corrupted monster you have created with highly customisable settings without having to touch the config files.
- Leaderboard - Want to see how well you've fared at slaying hordes of Corrupted? Use /cor stats to see the top 10 players with their kill count. Want to see what bosses your nemesis killed most? Use /cor stats <playername> to find out.
- Permissions support - Corruption supports nearly all permissions systems. Are you using a permissions system that we don't support? No worries, we also support Vault.
- mcMMO support - Get yourself some extra mcMMO experience for hitting a boss.
- Heroes support - Combine an RPG style server with an added bit of challenge provided by Corruption.
- Automatic updater - Never wonder if there is a new version of Corruption, use the automatic updater to check for updates and update when necessary. Don't want to update just yet? No problem, it won't unless someone with the cor.update permission uses /cor update install.
- Automatic configuration updater - Worry about updating to a new version because you don't want to dig through your configs and change everything to make it work with the new version? Worry no longer, our configuration updater will automatically update your configuration files to the latest version.
Configuration files
Updating from old versions
See this page for the guide explaining how to update from old versions of Likeaboss(1.5) or Likeaboss-mcdr(2.0) to the latest version of Corruption.
Commands and permissions
<argument> is required, [argument] is optional and '|' seperates multiple options
- (cor.*) - All the Corruption permissions.
- (cor.help) - /cor help - Display ingame help
- (cor.info) - /cor info - Display some global and non-lasting stats.
- (cor.reload) - /cor reload - Reload configuration files.
- (cor.clear) - /cor clear - Clear informations given by /cor info.
- (cor.viewer) - /cor viewer - Toggle viewer state, which allows to see boss healths.
- (cor.ignore.*) - All the ignore permissions.
- (cor.ignore) - /cor ignore - Toggle ignore state, which allows to not be affected by bosses.
- (cor.ignore.immediate) - Allow to bypass /cor ignore delay.
- (cor.list) - /cor list - Display the location of active bosses.
- (cor.stats) - /cor stats [player] - Display the leaderboard, or player stats.
- (cor.spawn) - /cor spawn <type> [amount] [x] [y] [z] [world]- Spawn one or multiple bosses on the targeted block or given coordinates.
- (cor.spawn) - /cor spawn <type> <amount> <player>- Spawn one or multiple bosses on the player's targeted block.
- (cor.spawn.region.*) - All the Spawn region permissions.
- (cor.spawn.region.list) - /cor region <l|list> [world]- List all the spawners (in a given world)
- (cor.spawn.region.info) - /cor region <i|info> [id|name]- Gives detailed information about nearby spawners or a spawner matching the id or name given.
- (cor.spawn.region.toggle) - /cor region <enable|disable> [id|name]- Enable or disable a spawner in the area you're standing or with the given id or name.
- (cor.spawn.region.manage) - /cor region <a|add> <name> [options]- Add a new spawner. To see all available options use /cor region <a|add>
- (cor.spawn.region.manage) - /cor region <r|rem|remove> [id|name]- Remove the nearby spawner or a spawner matching the id or name given.
- (cor.spawn.region.edit) - /cor region <e|edit> <id|name> <ab|addboss> <bossName> <spawnChance>- Add a Corrupted to the spawner matching the id or name given.
- (cor.spawn.region.edit) - /cor region <e|edit> <id|name> <rb|removeboss> <bossName>- Remove a Boss matching <bossName> from the spawner
- (cor.spawn.region.edit) - /cor region <e|edit> <id|name> <eb|editboss> <bossName> [chance:<spawnChance>] [name:<bossName>]- Edit the boss from a spawner with the id or name given.
- (cor.spawn.region.edit) - /cor region <e|edit> <id|name> <property> <value>- Change the <property> of the spawner with matching name or id to <value>. For a list of adjustable properties use /cor region <e|edit> <name|id> help.
- (cor.update) - /cor update <c|check|install|i>- Check for updates or install one if available.
- (cor.version) - /cor <v|ver|version> - Display the version of Corruption currently installed
Upcoming Changes
Ready:
In progress:
Planned:
- Add more abilities and activation conditions.
- Improving the API to add events and whatnot.
- Boss mounts
Recent Changes
Read the full list of changes
v2.4:
Added Features
- Made it possible to create regions where certain bosses will spawn with a (configurable) maximum number of bosses per spawner region.
- Improved drop system to support enchantments and naming. New items for use in drops/equipment will have to be defined in items.yml first. Existing drops/equipment will be taken care of by the config updater.
- Added Summon ability
Under the hood
- Changed from bukget to official Servermods API (Unfortunately, this means Corruption can no longer check if a new update was downloaded successfully, if/when the official API makes this possible, it will be reimplemented)
- Updated MCStats to revision 7 (Decreases network usage)
v2.3.3:
This build requires at least Bukkit 1.6.1
Fixes
- Fixed a bug where mobs with a health multiplier would increase in health every time they were reloaded. Again.
Added Features
- The spawn command now supports coordinates or a username and can now also be used from console and command blocks.
Source and API
The source can be found here.
The API:
Statistics
Corruption utilizes Hidendra's plugin metrics system, mcstats, which means that the following information is collected and sent to mcstats.org:
- A unique identifier
- The server's version of Java
- Whether the server is in offline or online mode
- The plugin's version
- The server's version
- The OS version/name and architecture
- The core count for the CPU
- The number of players online
- The Metrics version
And also some Corruption specific data:
- The amount of different Bosses per EntityType alive
- The amount of Bosses killed since the last time statistics were sent
This data is sent about once every 15 minutes.
Opting out of this service can be done by editing plugins/Plugin Metrics/config.yml and changing opt-out to true.
Hey again,
We've been having people complaining that the rewards from mobs are too weak. This is more specific to us as we use DiabloDrops to provide better items, but I've noticed that there is an mcMMO bonus XP option.
I have it set to 200 currently, but I'm not sure what it's adding to as I'm not seeing any level-ups (new mcMMO has the new /mcstats which don't give a lot away). Which skill is the XP applying itself to?
The pages just say "mcMMO support - Get yourself some extra mcMMO experience for hitting a boss." - But not where this goes
@TheNicklander
And besides, I'm pretty sure that the current version will still work with 1.5.2, since nothing has been changed in the bukkit API.
@TheNicklander
We are working on a release, it's almost finished.
Nice work !
Please update to 1.5.2 :)
@Erackron
Thanks for the in-depth response, much appreciated!
@mobilephone2003
Thanks for reporting this. I'm not sure if this issue still occurs in the latest development builds, since we've already changed a lot, but I'll definitely check it. I hope we're able to finish the next update soon, but we have our finals coming up, so we're going to be rather busy trying to pass those.
Edit: I have confirmed and solved the issue, so in the upcoming release, this won't be a problem anymore.
We're having the following issue:
When a player logs off near a corrupted mob then logs back in, the powers of the mob will be stripped but health remains.
Issue does not occur when multiple people stay connected around a mob.
Only seems to happen then the chunk is unloaded with the corrupted mob in.
@Mortalsinn
I think you should ask the developer of Mythic Drops to add support for Corruption. He can simply check (through the Corruption API) if a boss died. He can add additional nodes to the config files to set what bosses could drop. Then, if a boss dies, he can simply add the drops to the drops the entity is going to drop.
You probably won't understand everything I said above, you can send the developer of Mythic Drops a message linking to his command, he does probably understand it :).
Tim Visée
Note: I'm not one of the Corruption developers.
One word, Awesome!
The Corruption plugin is running for a few months already on our server, and it works like a charm. Thank you Erackron and Pyriphlegethon!
Tim Visée
Are you able to add support for Mythic Drops? basically a True or False and if True then the bosses will drop the Mythic Generated loot?
http://dev.bukkit.org/server-mods/mythic/
@Erackron
ok, that's fine because i still default spawning active. great thank you for checking on that.
@marubal21
After looking at the code for a bit I think that it is compatible in a way that mobs Monster Apocalypse controls won't become a boss, so it won't conflict.
So I think you can run them alongside each other, but any mob controlled/affected by Monster Apocalypse won't ever be a boss.
@wiedzmin137
Well, at the moment you already specify the extra exp you gain for a boss in the bosses.yml config file, which means that it only affects the boss of the node you put it in.
So I'm not sure how you get extra exp, but if it isn't from a boss where you told Corruption to do so, it sure isn't coming from Corruption.
Hello. Cam you add option to add Heroes exp only from boss, not from mob (when you kill mob you get 2 exp - one from kill mob + one from kill boss)?
Would this plugin work along side Monster Apocalypse. Meaning will i still be able to control mob spawning with Monster Apocalypse and yet implement this plugin?
@KevinVarblane
True, I'm sorry. At the moment it is not possible to enchant drops besides the equipment. Nor is it possible to make bosses drop named items just yet. It sounds like a good idea so we will probably add it in the future.
You still didn't answer how to make them drop enchanted books and gear.
Thanks
@Erackron
i have the node there if this is what your talking about. its set for 3500
Blaze:
EntityType: Blaze
mcMMOXPBonus: 3500
Loot:
FirstRoll:
FirstItem: 370:0 100.0 2 4
Spawn:
Probability: 3.0
SpawnerProbability: 1.0
MaxSpawnHeight: 256.0
Stats:
Health: 5.5
Damage: 2.0
Experience: 8.0
Immunity:
Fire: true
Lava: true
EnvironmentalFireTick: true
Fall: true
Contact: true
Drowning: true
@ThePooE
No problem :)
@KevinVarblane
Both actually. The drops you specify in bosses.yml are tied to a specific boss, regardless of what world it spawns in and the drops you specify in a worldname.yml file are used for every boss that spawns in that world.
@KingPyro
Hmm, strange error. The only thing I can think of causing it, is because you don't have the mcMMOXPBonus node in your bosses.yml for a certain boss. If that's it, I fixed it, so it should be included in the next release.
@ThePooE
As much as I agree with you that it would be better if you spread the exp so that more people get a share, I'm sorry to say that it isn't easy to implement something like that, if it is even possible at all. Currently we use the death event of a boss and then just set the dropped exp to the value specified (using a multiplier if asked to). event.setDroppedExp(exp) is the way we do this, and as you may see, this doesn't give us a lot of flexibility to do what you're asking.
Suggestion:
About the exp drop when the boss is killed. Could you adjust it so that the bosses drop many xp balls in wider area? This could help smoothing the share between players, and this will fix the problem that only one get massive amount of xp. Which cause the other to whine about they haven't got anything return on their effort.
I received this error:
2013-03-21 20:01:15 [SEVERE] Could not pass event EntityDamageByEntityEvent to Corruption v2.1.2
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
at org.bukkit.craftbukkit.v1_5_R2.event.CraftEventFactory.callEvent(CraftEventFactory.java:84)
at org.bukkit.craftbukkit.v1_5_R2.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:372)
at org.bukkit.craftbukkit.v1_5_R2.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:394)
at net.minecraft.server.v1_5_R2.EntityLiving.damageEntity(EntityLiving.java:694)
at net.minecraft.server.v1_5_R2.EntityMonster.damageEntity(EntityMonster.java:39)
at net.minecraft.server.v1_5_R2.EntityHuman.attack(EntityHuman.java:854)
at net.minecraft.server.v1_5_R2.PlayerConnection.a(PlayerConnection.java:1103)
at net.minecraft.server.v1_5_R2.Packet7UseEntity.handle(SourceFile:36)
at net.minecraft.server.v1_5_R2.Packet7UseEntity$$EnhancerByCGLIB$$c9a02846.CGLIB$handle$0(<generated>)
at net.minecraft.server.v1_5_R2.Packet7UseEntity$$EnhancerByCGLIB$$c9a02846$$FastClassByCGLIB$$2a0c9eff.invoke(<generated>)
at com.comphenix.net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at com.comphenix.protocol.injector.packet.ReadPacketModifier.intercept(ReadPacketModifier.java:98)
at net.minecraft.server.v1_5_R2.Packet7UseEntity$$EnhancerByCGLIB$$c9a02846.handle(<generated>)
at net.minecraft.server.v1_5_R2.NetworkManager.b(NetworkManager.java:292)
at net.minecraft.server.v1_5_R2.PlayerConnection.d(PlayerConnection.java:113)
at net.minecraft.server.v1_5_R2.ServerConnection.b(SourceFile:35)
at net.minecraft.server.v1_5_R2.DedicatedServerConnection.b(SourceFile:30)
at net.minecraft.server.v1_5_R2.MinecraftServer.r(MinecraftServer.java:580)
at net.minecraft.server.v1_5_R2.DedicatedServer.r(DedicatedServer.java:225)
at net.minecraft.server.v1_5_R2.MinecraftServer.q(MinecraftServer.java:476)
at net.minecraft.server.v1_5_R2.MinecraftServer.run(MinecraftServer.java:409)
at net.minecraft.server.v1_5_R2.ThreadServerApplication.run(SourceFile:573)
Caused by: java.lang.NullPointerException
at com.gmail.nossr50.api.ExperienceAPI.addXP(ExperienceAPI.java:112)
at com.mcdr.corruption.handler.mcMMOHandler.addMeleeXP(mcMMOHandler.java:24)
at com.mcdr.corruption.listener.CorEntityListener.onEntityDamage(CorEntityListener.java:253)
at sun.reflect.GeneratedMethodAccessor40.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
... 25 more
as far as i can tell everything is ok.
CB B2698
Corruption V 2.1.2