OtherDrops

Make anything drop anything, anyhow!
Minecraft 1.7 features (click)!!
OtherDrops allows you to add anything from a simple "glass drops glass" or mob rewards, to a complex overhaul of your servers drops with drops differing depending on tools, biome, time, weather and much more, along with custom messages, actions and commands.
OtherDrops is lightweight* (it only acts on what you configure) and respects most protection plugins (eg. WorldGuard, Regios) settings. Many examples are included that you can enable and/or customize as you wish.
Getting Started (tutorials)
- Install & setup first custom drops
- Customising mob & block drops
- Customising money & XP rewards
- Customising fishing rewards
- Customising mob spawns
Core Features
- Drop anything!* (*from Bukkit - if it doesn't, let me know)
- Use triggers such as block break, combat, fishing & more
- Conditions to fine-tune your drops such as tool, world, regions, weather, permissions & more
- Add actions including damage, healing, messages, potion effects & more
- Easy syntax allows you to quickly customize drops & rewards for your server
- Future Support
- Where-ever possible the official Bukkit lists are used so OtherDrops supports all current and future:
- blocks, items, mobs, enchantments, potion effects, biomes,
- spawn reasons, tree, villager professions, cat & skeleton types
- Support for special item data:
- Custom names & lore text
- Enchanted weapons & armour (or add random enchantments)
- Enchant anything with unlimited levels (dirt with level 30 damage?)
- Enchanted books with any enchantment
- Written books (wtih custom title/author/pages)
- Leather armour colors
- Custom fireworks colors
- Skull types & custom player heads
- Support for special mob data:
- Custom names, HP (health) & equipment for any mob
- Baby animals (all "Ageable" mobs - chicken, cow, pig, zombie etc)
- Tame wolves (including collar color) or cats (& different cat types)
- Sheep colors (and sheared/unsheared)
- Villager professions, villager zombies, powered creepers & agressive level for pig-zombies
- Wither skeletons, Slime & lava-slimes of any size
- Economy support (via Vault)
- Support for all major economy plugins (see Vault project page)
- Players can gain, lose or steal money based on fixed amount or percentage
- Compatible with "MoneyDrop" to drop physical money items.
Conditions
- Multi-world support - create separate files to handle each world
- Add super rare drops with chance values down to 0.000000001%
- Specify tools required (or a list of tools eg. [any sword, -diamond sword])
- Lorename, Heroes (class & level) conditions
- Cooldowns
Actions
- Apply actions alongside the drop (or even without a drop)
- Damage tools and/or consume items (eg. use dyes to color wool)
- Damage or heal the victim, player or even the whole world
- Apply potion effects to the victim, player, radius, world or server
- Display custom messages (or a list of messages with one selected at random)
- Create explosions, lightning, visual effects (including particles), sound effects
- Run commands
Ideas
- Give leaves various chances of dropping apples, sticks, cocoa beans, saplings, etc on break and/or leaf decay.
- Make glass, stairs, and boats reclaimable (can be tool-specific if you wish).
- Allow gold and iron to be mined directly into ingots with a golden pickaxe.
- Allow users to right-click on cobblestone with vines in hand to turn the cobblestone mossy.
- Nerf mob traps by disabling drops from environmental damage.
- Unleash the zombie apocalypse by setting zombies to drop zombies when they die! (This can be world-specific.)
- Make mobs that don't normally spawn naturally spawn.
- Make mob spawning, drops, and events biome specific!
Documentation
Dev Builds
Development builds of this project can be acquired at the provided continuous integration server. These builds have not been approved by the BukkitDev staff. Use them at your own risk.
Help Wanted
Would you like to help improve OtherDrops? Here are some ways to get involved:
- Media/art: OtherDrops could really do with some tutorial and example videos.
- Testers: Testers who are able to go through the plugin and rigorously check that things (both existing and new features) work as they should. PM Zarius your Skype (or other IM) details if you're interested or jump on the IRC channel.
- Programming: any assistance is welcomed - see the todo list here for some ideas. Anyone with refactoring and/or automated testing experience that wants to assist would be great.
Thanks
Many thanks to these people who helped with OtherDrops:
- Cyklo: creator of the original OtherBlocks. OtherDrops is a continuation of Cyklo's original OtherBlocks (2011) plugin.
- Celtic Minstrel: many code commits and a major overhaul of the code moving into version 2.0. Moved on to create DropFactory.
- Rofang: major update of OtherDrops documentation.
- RugRats13: lots of testing and some documentation.
- Faldonboy & Steelsouls: currently maintaining and improving the documentation.
- CommodoreAlpha: community support on the comments/forum, assisting with documentation.
Many long nights are spent improving OtherDrops so if you like it please consider a donation to my coffee fund :) 
- OtherDrops uses Metrics for anonymous usage stats (learn more).

-
View User Profile
-
Send Message
Posted Jan 6, 2015[15:57:20] [Server thread/ERROR]: THIS IS NOT AN ISSUE TO DO WITH PER WORLD PLUGINS Could not pass event EntityDamageEvent to OtherDrops v2.8b.582 org.bukkit.event.EventException at us.Myles.PWP.TransparentListeners.PerWorldPluginLoader$1.execute(PerWorldPluginLoader.java:122) [?:?] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [spigot1.8.jar:git-Spigot-13716d9-0899683] at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:36) [spigot1.8.jar:git-Spigot-13716d9-0899683] at us.Myles.PWP.TransparentListeners.PWPTimedRegisteredListener.callEvent(PWPTimedRegisteredListener.java:30) [PerWorldPlugins.jar:?] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot1.8.jar:git-Spigot-13716d9-0899683] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot1.8.jar:git-Spigot-13716d9-0899683] at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.callEvent(CraftEventFactory.java:85) [spigot1.8.jar:git-Spigot-13716d9-0899683] at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:538) [spigot1.8.jar:git-Spigot-13716d9-0899683] at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:524) [spigot1.8.jar:git-Spigot-13716d9-0899683] at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:570) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.EntityLiving.d(EntityLiving.java:1064) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.EntityLiving.damageEntity(EntityLiving.java:705) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.EntityMonster.damageEntity(EntityMonster.java:44) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.EntityZombie.damageEntity(EntityZombie.java:168) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.Entity.K(Entity.java:312) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.EntityLiving.K(EntityLiving.java:163) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.EntityInsentient.K(EntityInsentient.java:149) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.Entity.s_(Entity.java:245) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.EntityLiving.s_(EntityLiving.java:1406) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.EntityInsentient.s_(EntityInsentient.java:193) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.EntityMonster.s_(EntityMonster.java:26) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.EntityZombie.s_(EntityZombie.java:222) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.World.entityJoinedWorld(World.java:1590) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.World.g(World.java:1565) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.World.tickEntities(World.java:1412) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.WorldServer.tickEntities(WorldServer.java:577) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:757) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:623) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:526) [spigot1.8.jar:git-Spigot-13716d9-0899683] at java.lang.Thread.run(Thread.java:745) [?:1.7.0_65] Caused by: java.lang.NullPointerException at com.sk89q.worldguard.bukkit.RegionContainer.get(RegionContainer.java:236) [?:?] at com.sk89q.worldguard.protection.GlobalRegionManager.get(GlobalRegionManager.java:78) [?:?] at com.gmail.zariust.otherdrops.event.OccurredEvent.setRegions(OccurredEvent.java:838) [?:?] at com.gmail.zariust.otherdrops.event.OccurredEvent.<init>(OccurredEvent.java:217) [?:?] at com.gmail.zariust.otherdrops.listener.OdEntityListener.onEntityDamage(OdEntityListener.java:64) [?:?] at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source) [?:?] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [?:1.7.0_65] at java.lang.reflect.Method.invoke(Method.java:606) [?:1.7.0_65] at us.Myles.PWP.TransparentListeners.PerWorldPluginLoader$1.execute(PerWorldPluginLoader.java:120) [?:?] ... 30 more [15:57:35] [Server thread/ERROR]: [TabAPI] Unhandled exception occured in onPacketSending(PacketEvent) for TabAPI com.comphenix.protocol.reflect.FieldAccessException: Field index out of bounds. (Index: 0, Size: 0) at com.comphenix.protocol.reflect.StructureModifier.read(StructureModifier.java:193) [ProtocolLib.jar:?] at org.mcsg.double0negative.tabapi.TabAPI$1.onPacketSending(TabAPI.java:99) [TabAPI.jar:?] at com.comphenix.protocol.injector.SortedPacketListenerList.invokeSendingListener(SortedPacketListenerList.java:195) [ProtocolLib.jar:?] at com.comphenix.protocol.injector.SortedPacketListenerList.invokePacketSending(SortedPacketListenerList.java:149) [ProtocolLib.jar:?] at com.comphenix.protocol.injector.PacketFilterManager.handlePacket(PacketFilterManager.java:637) [ProtocolLib.jar:?] at com.comphenix.protocol.injector.PacketFilterManager.invokePacketSending(PacketFilterManager.java:613) [ProtocolLib.jar:?] at com.comphenix.protocol.injector.netty.NettyProtocolInjector.packetQueued(NettyProtocolInjector.java:286) [ProtocolLib.jar:?] at com.comphenix.protocol.injector.netty.NettyProtocolInjector.onPacketSending(NettyProtocolInjector.java:254) [ProtocolLib.jar:?] at com.comphenix.protocol.injector.netty.ChannelInjector.processSending(ChannelInjector.java:368) [ProtocolLib.jar:?] at com.comphenix.protocol.injector.netty.ChannelInjector.access$500(ChannelInjector.java:61) [ProtocolLib.jar:?] at com.comphenix.protocol.injector.netty.ChannelInjector$5.handleScheduled(ChannelInjector.java:334) [ProtocolLib.jar:?] at com.comphenix.protocol.injector.netty.ChannelInjector$5.onMessageScheduled(ChannelInjector.java:302) [ProtocolLib.jar:?] at com.comphenix.protocol.injector.netty.ChannelProxy$2.schedulingRunnable(ChannelProxy.java:110) [ProtocolLib.jar:?] at com.comphenix.protocol.injector.netty.EventLoopProxy.execute(EventLoopProxy.java:79) [ProtocolLib.jar:?] at net.minecraft.server.v1_8_R1.NetworkManager.a(NetworkManager.java:140) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.NetworkManager.handle(NetworkManager.java:101) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.PlayerConnection.sendPacket(PlayerConnection.java:868) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.PlayerList.sendAll(PlayerList.java:827) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.PlayerList.tick(PlayerList.java:819) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:789) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:623) [spigot1.8.jar:git-Spigot-13716d9-0899683] at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:526) [spigot1.8.jar:git-Spigot-13716d9-0899683] at java.lang.Thread.run(Thread.java:745) [?:1.7.0_65] [15:57:35] [Server thread/ERROR]: Parameters: net.minecraft.server.v1_8_R1.PacketPlayOutPlayerInfo@35ee05de[ a=UPDATE_LATENCY b=[net.minecraft.server.v1_8_R1.PlayerInfoData@1dc34d7b] ]
-
View User Profile
-
Send Message
Posted Jan 4, 2015@AshvaleStaff
You can check the values here: http://minecraft.gamepedia.com/Wood#Block_data
E.g log@4 should be rotated oak wood.
-
View User Profile
-
Send Message
Posted Jan 4, 2015Apologies if this is explained somewhere in the documentation but I'm having difficulty finding the item ID for Logs that have been rotated. Could anyone point me in the right direction?
Fantastic plugin by the way, used it on every server I've opened.
-
View User Profile
-
Send Message
Posted Jan 3, 2015@Noxcode
Yeah, the ANY_ don't check for enchantments, I've been working on this but requires quite a large change so won't have time to do it for now. Heading off for a 3 week holiday shortly so won't be coding for a while - will pick back up in February (will still be checking the forums occasionally though).
-
View User Profile
-
Send Message
Posted Jan 2, 2015@CommodoreAlpha
Already tested. Doesn't work. I'm pretty sure enchantments are totally ignored. Hope you can fix the problem. :(
-
View User Profile
-
Send Message
Posted Jan 2, 2015@Noxcode
It does look like a bug as the format appears correct to me. I'm not sure if enchantments are applicable to group aliases, however.
One thing that's for sure - make sure you specify tools for the first drop-line. Being more specific with your configuration makes it less error-prone.
-
View User Profile
-
Send Message
Posted Jan 2, 2015Hello, I'm sorry, it's me again '
I tried to change the drop of pacific mobs (because I want to reduce the population of mobs in enclosures without constrain my players on drops) by example, for the pig, like this :
When I kill a pig with an axe or a tool which is not a sword, it's okay. It just drop the items I set in the first line. But when I do with a sword, it drops ALL the line I set, like the plugin doesn't care about the enchantment condition. To be sure, I tried to make several tests (by example, make a mob dropping a DIAMOND_SWORD@!DAMAGE_ALL#2 or try other enchantment as condition for a specific drop on a block) and none of them worked at all. :( The enchantment is always ignored. Am I doing something wrong? Thank you again in advance. :)
-
View User Profile
-
Send Message
Posted Jan 2, 2015@Noxcode
Or I just update the code - latest dev build supports "body" as an alias for "chest" with mob equipment :)
-
View User Profile
-
Send Message
Posted Jan 1, 2015@ZariusT
Works, thank you. Need to be modified here for others users ! :)
-
View User Profile
-
Send Message
Posted Jan 1, 2015@Noxcode
Try chest rather than body?
-
View User Profile
-
Send Message
Posted Jan 1, 2015@ZariusT
Not likely... :/ I just tried by spawning a normal Zombie (no health tag) which must wear a iron chestplate like this :
He had the weapon but didn't wore the chestplate too.
When I trying to modify it by adding helmet and health point, it well spawned with helmet, the weapon, and 40hp, but still no chestplate.
I don't belive that the error comes from the adding health points, but from the parameter "body" which seems to be not recognized. :/ Am I right ?
-
View User Profile
-
Send Message
Posted Dec 31, 2014@Noxcode
Seems to have to do with Bukkit not wanting to allow health values more than 20, I've separated the code a little more so that a failure to set the health value doesn't fail setting the equipment as well.
-
View User Profile
-
Send Message
Posted Dec 31, 2014Hello, I tried to make different form of zombie which became harder to kill when we go deeper. So I set something like this :
It's actually working, the new Zombie spawned, with all specifications, but it miss the armor. I tried again with only "ZOMBIE@40h!!eq:body:307", but he wore nothing again. I think that the "body" equipment is ignored. :/ Can you help me please ?
-
View User Profile
-
Send Message
Posted Dec 31, 2014@Onewingseraphim
The Loading Distance message is probably a debug message I left in - I'll fix that in the next build.
If you've set the bookshelf to drop just one bookshelf silktouch shouldn't affect it, in fact I usually hear the opposite (that people want silktouch to offer extra) - I've just tested it out locally and worked fine (dropped just one bookshelf with silktouch). Can you post or pm me the config you're using?
-
View User Profile
-
Send Message
Posted Dec 30, 2014I have in my config
BOOKSHELF: - drop: BOOKSHELF
And when players use a silktouch tool to break a Bookshelf they get 2 instead of 1, how can I fix this?
Also I get - "Loading distance condition: null lorename: null" on server startup and plugin reload what's this about?
-
View User Profile
-
Send Message
Posted Dec 29, 2014@TomXPro
I'm pretty sure I added multiple blocks but I'd have to look up the exact syntax - generally more flexible to add them one at a time anyway (can customise messages, etc).
-
View User Profile
-
Send Message
Posted Dec 28, 2014@ZariusT
Thanks for responding! Can I define multiple blocks in one line like STONE,WOOD,... or do I have to define them separateley?
Thanks for your time and supprt!
-
View User Profile
-
Send Message
Posted Dec 28, 2014@TomXPro
I think this should work (but I haven't tested it, let me know if it doesn't):
@aalwein
Yes, this should work, let me know if it doesn't. Using drop: NOTHING will still blank out a target's vanilla loot table if you need it.
-
View User Profile
-
Send Message
Posted Dec 28, 2014Question: if I just want to ADD drops to the vanilla loot tables (not completely replace them), do I just make my custom lists and set the config file variable "loot_overrides_default" to false?
-
View User Profile
-
Send Message
Posted Dec 28, 2014@ZariusT
Could you give me an example how to configure that Sand and Dirt could be mined by Hand but Stone just by Pickaxe?
That would be really nice.