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.
This plugin seems really goodI would like to hook it with a console command..
/cor spawnpos zombie 1 100 80 100 - would be amazing to add!
Thank you.
I am still here, but Erackron is more the public face, because his knowledge of the English language is far better than mine, so in most cases, he'll answer your comments. ;)
Remember that our code (and consequently, the whole plugin) will become better, because we learn a lot about coding and related stuff. :)
Thank you for your patience!
Having issues and errors.
It wasn't loading due to damn windows and PermGen errors.
Getting an error when NPCs damage mobs.
Also getting this...have withers naturally spawning in a biome: 2013-10-08 14:30:14 [SEVERE] Could not pass event ChunkLoadEvent to Corruption v2.3.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.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:47) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:478) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:463) at org.bukkit.craftbukkit.v1_6_R3.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:58) at org.bukkit.craftbukkit.v1_6_R3.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:13) at org.bukkit.craftbukkit.v1_6_R3.util.AsynchronousExecutor$Task.finish(AsynchronousExecutor.java:179) at org.bukkit.craftbukkit.v1_6_R3.util.AsynchronousExecutor.finishActive(AsynchronousExecutor.java:287) at org.bukkit.craftbukkit.v1_6_R3.chunkio.ChunkIOExecutor.tick(ChunkIOExecutor.java:30) at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:529) at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:240) at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:483) at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:415) at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583) Caused by: java.lang.IllegalArgumentException: Health must be between 0 and 273.3644714355469 at org.bukkit.craftbukkit.v1_6_R3.entity.CraftLivingEntity.setHealth(CraftLivingEntity.java:75) at com.mcdr.corruption.entity.Boss.setBossData(Boss.java:181) at com.mcdr.corruption.entity.Boss.restoreBoss(Boss.java:292) at com.mcdr.corruption.listener.CorEntityListener.onChunkLoad(CorEntityListener.java:140) at sun.reflect.GeneratedMethodAccessor170.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425) ... 14 more
I accidentally left in corruption during a new map and we had 300 people online.
There was some major lag on the effects/mob updater (I cant recall the exacts) ripping it out solved a lot of our latency issues.
You may want to see where or what could cause some bottlenecks with VIRTUAL player tests .. or unit test it.
Just helping :)
@LordKainzo
I couldn't reproduce the error, so I'm not sure what could be the problem.
I have now changed the event priority of the EntityDamageEvent listener in Corruption to Highest, since it should always have a last say in those cases when it comes to Corruption mobs.
I have tested Heroes alongside the upcoming release and I didn't bump into any errors whatsoever. The extra exp you can define for killing a Corrupted/Boss in bosses.yml also works as intended.
Perhaps it's not such a bad idea to create more extensive support for Heroes in the future, but at the moment everything that's supposed to work actually should.
Any of the fixes mentioned below should be added in an upcoming release not too far off.
@wiedzmin137
This should be fixed as well, although You'll have to verify that, since I didn't reproduce the error, I just found the code that was probably causing it based on your stacktrace and adjusted that.
@wiedzmin137 @LordKainzo
This should be fixed as well, it was probably because of livingEntity.resetMaxHealth() not behaving as I thought it should. This caused the Max Health of bosses with a multiplied health to be multiplied each time after being unloaded and loaded again with a chunk or after using /cor reload. Thus eventually skyrocketing to unsupported values.
@Jewremy
I'm not sure why it's not loading for you in 1.6.4, but the released 2.3.1 loads just fine in a clean bukkit 1.6.4 server.
Totally understandable Erackron! Thank you so much for letting us know instead of going MIA :D Good luck with your studies! My server and I anxiously await to be able to use your plugin :D
@Erackron
No worries. Thanks for being such great developers! :D
Hello everyone,
Yet again sorry for the long time without updates/replies. I'm sorry to say that as of late, both Pyriphlegethon and I are very busy with the Computer Science study we both started at a local University. I'ts a tough one and requires a lot of our attention and time. Due to this we won't be able to work on this as much as we would like without hurting the progress of our study.
That being said, we both have no desire of abandoning this project anytime soon, and if it will ever come to that we will first try to find someone to take over development (given that there is still an interest in this plugin).
Long story short
We will try to make this compatible with Minecraft 1.6.4 (as some of you have reported that it won't load) probably somewhere next week.
Development of new features is now on hold, so we can focus on fixing the remaining bugs first.
Is it possible to make it spawn on set coordinates. I am trying to use command blocks to spawn in a boss. If its already, can someone tell me what the command is.
Won't load in 1.6.4...
http://pastie.org/private/kqzpsry3rfgkv3obfqbe3a
errors!
and ChunkLoadevent
http://pastie.org/8312919
@Kirstiana
I've come to realize that it's definitely not your plugin, but I don't know how to go about getting this fixed. It seems to be the Demigods plugin that not only affects your plugin, but other plugins I have too (like Deathcraft). It seems that if someone uses a demigods ability on a corrupted mob, it doesn't understand what is damaging it. So any advice on what I should do from here, let me know :D
@Erackron
http://pastie.org/private/w4iveix840gixearcgwow
Looks like some Heroes compat issues - check out the error :)
It also doesnt appear that the Corruption damage is overwriting the normal heroes damage for mobs... may want to throw a higher event priority for this.... not 100% sure the way you set it up.
Hi there! Your plugin seems to be working, though I am getting these errors spamming in console. Other than that... it doesn't seem to be affecting how it's working. Maybe it's user error? If I'm doing something wrong, let me know! :D :
Going to test this on one of our test servers, interesting to see others add things like this!
Hello. Can you engage in it:
http://pastebin.com/Wqqx15Ls
and enormus health?
@Hangjai
Unfortunately, I don't think you can right now, because Color isn't stored as a data value or anything, but in the Item Metadata, so when we add the possibility of configuring that, you will be able to do this.
@mobilephone2003
I sent you a pm with a possible fix, could you please try it and report back if it works?
i have some problem? can i set dyed armor to the Boss,if can ,how can i set ? please help me @@
@Erackron
Sure, I didn't post the whole freeze log as i thought the rest wouldnt be relevant. The server seems to function fine without Corr running, but with seems to restart after an amount of time.
I'll check out 2.3.1 when available and see if I can get a more detailed analysis
Edit: New error for you with 2.3.1 http://hastebin.com/qemeremuba.avrasm