[MECH] OtherDrops 2.8- Ultimate block/mob/player drop editing [1.5.2]

Discussion in 'Archived: Plugin Releases' started by Zarius, Jun 12, 2011.

  1. Offline

    Zarius

    [​IMG]


    Want to fix glass/stairs/boat drops? Want to gather ice/glowstone/grass in a balanced manner? Want to smelt ore with golden tools? Want to cause chaos with undead that rise again? Now you can, simply by enabling the included example files or delve into the more advanced customisation and make drops work the way you want.

    OtherBlocks aims to give you ultimate control over what item that blocks/entities drop when destroyed, depending on how they were destroyed. Compatible with WorldGuard. Lightweight! Only scans what it needs to and ignores the rest.
    Download: BukkitDev (download link on there) | Source Code

    Included Modules
    * Fix undroppables: fix drops for stairs, glass (don't use your hands - ouch), boats & bookshelves (1.8 stairs included)
    * Gold tools (basic): gold tools have a chance of dropping the complete block for grass, ice & glowstone.
    * Gold tools (smelt): gold tools have a chance of mining an ingot directly from ores.
    * Ore Extraction: using the usual tools, ingots are ripped out of ores, leaving the stone behind.
    * Leaf overhaul: adds leaf drops (apples, cocoa, leaves, sticks & a very small chance of golden apple).
    * Undead Chaos: beware the night! Zombies & skeletons rise again and even players rise back from the dead (player deaths spawn more zombies/skeletons).
    * and more...

    Custom Configuration Examples
    Code:
        # Simple glass drop fix
        GLASS:
          - drop: GLASS
     
        # Players drop Zombies on death, 50% of the time
        PLAYER:
          - drop: CREATURE_ZOMBIE
            chance: 50%
     
        # Spiders killed with any sword at night have a 10% chance to drop web,
        # otherwise they drop whatever they normally would
        CREATURE_SPIDER:
          - tool: ANY_SWORD
            time: NIGHT
            drop: WEB
            chance: 10%
     
        # Trees drop apples (or cocoa from birch trees)
        SPECIAL_LEAFDECAY@GENERIC:
          - drop: APPLE
            chance: 5%
        SPECIAL_LEAFDECAY@BIRCH:
          - drop: DYE@BROWN
            chance: 5%
    
    If you are getting errors with the word "snakeyaml" in it, your config file isn't properly formatted.
    Test it on this website (or this one).

    See the dev.bukkit page for full details on how to set up OtherDrops, a complete parameters list and further examples.


    Changelog

    Newest changelog details here.


    Main author: @Zarius
    Contributors: @Celtic Minstrel, raws
    Original author: @cyklo
     
  2. Offline

    Zarius

    Yes, this would be a problem and I don't know really if there would be many cases where the entity death event doesn't get triggered for OtherDrops (I know that /killall in Essentials works).

    The list would be as small as possible (containing just the UUID and a string of the spawnreason) and would reset when the server reloads (I assume it would be completely cleaned up by the garbage collector then). I don't see another way around it really. Also keep in mind that if the "spawnedby" condition isn't used it wont use the list at all.
     
  3. Offline

    Abnormal Zombie

    AWESOMENESS
    Code:
      PUMPKIN:
          - drop: SKELETON@eq:head:PUMPKIN!!eq:hands:AIR
            chance: 0.5%
    
    1 in every 200 pumpkins will actually be a skeleton in a pumpkin. When broken, the skeleton will 'wake up' and attack you. Unfortunately I can't specify the equipment a skeleton was wearing when he died, otherwise I could make this skeleton drop a pumpkin, since that is what he's wearing.

    The cool thing is the skeleton won't burn in daylight, and he isn't holding a bow which means he'll run kinda crazy and attack you for 1 heart damage.

    EDIT: A new "equipment:" parameter could be made to specify what the mob was wearing/holding.
     
  4. Offline

    Zarius

    Abnormal Zombie

    Wow! That's a really cool config :) Doesn't burn? Perhaps the pumpkin protects him? :)

    Yeah but it's not quite right as a parameter - I would assume an "equipment" parameter to be a condition (ie. required to have this equipment - and probably assume it relates to the player). The best place is to define custom mobs (health, equipment, names, etc) in a separate "custommobs" section then you can do things like pumpkinskel: drop: blah or pumpkin: drop: pumpkinskel.

    Abnormal Zombie

    Until I get other conditions in you could try this:

    Code:
      SKELETON@!!8:
        - drop: PUMPKIN
     
      PUMPKIN:
          - drop: SKELETON@eq:head:PUMPKIN!!eq:hands:AIR!!8
            chance: 100%
    
    edit: Also, with the WitherSkeleton dropped default stuff - what config were you trying? I just noticed that "WITHER_SKELETON" isn't recognised as a target (SKELETON@WITHER works and doesn't drop default stuff) - though I've fixed that in a local build.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 15, 2016
  5. Offline

    Abnormal Zombie

    Zarius

    That seems to work for some reason, but how? The 8 represents the health of the skeleton, but from what I thought, SKELETON@!!8 should have meant that the skeleton must have had exactly 8 health as it died for the drop to occur, which isn't the case (it must have spawned with that amount of health). - Oh and logging out doesn't reset any of the values.

    I was using SKELETON@WITHER.

    Having a symbol which signifies the end of a lore name so that I can use it in a group of drops would be really useful (otherwise OtherDrops thinks everything else after the lore name is part of it):
    Code:
    - drop: {311@!~something, 310, 312}
    - drop: {310, 312, 311@!~something}
    
    I know there are ways around this, but keeping it compact is much easier.

    Zarius when you add custom mobs be sure to include potion: effect/DurationInSeconds/chance for the mob attributes because that would be awesome. :)
    Code:
    custommob:
      strongzombie:
          - potion: [STRENGTH#2/500, RESISTANCE#3/500]
    
    ...and if the action: SPAWN gets implemented, the code shown below would give all zombies a chance to spawn with strength 2 and resistance 3 if they are below y:25. Custom mob spawning ftw!
    Code:
    otherdrops:
      ZOMBIE:
          - action: SPAWN
            potion: [STRENGTH#2/500, RESISTANCE#3/500]
            height: "<25"
            chance: 75%
    
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 15, 2016
  6. Offline

    Zarius

    Yeah, the 8 represents "maxhealth" rather than the current health so even when the creature dies it has the same maxhealth, which is handy to use for conditions like that :)

    Not sure what's happening with the skeleton@wither - works fine here, perhaps set the verbosity to high and check the startup log?

    Odd. This works fine for me and the code splits it up based on the commas first, so in the first example the "311@!~something" gets passed to the item parser, then "310", then "312". Tried it with [ ] brackets too.
     
  7. Offline

    Abnormal Zombie

    Very odd.... since it seems to be working now :eek:

    You should do your psychic updates more often.

    EDIT: ZOMG this max health thing opens up so many possibilities!

    Minor problem: When dropspread is set to false and a drop consists of more than 64 items, it will create one stack instead of multiple stacks (but when picked up it reverts to multiple stacks).

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 15, 2016
  8. Offline

    Zarius

    [quote uid=49373 name="Abnormal Zombie" post=1550745]Minor problem: When dropspread is set to false and a drop consists of more than 64 items, it will create one stack instead of multiple stacks (but when picked up it reverts to multiple stacks).[/quote]

    Yeah, the psychic updates are a little less reliable but it's great when they work :D

    Dropspread: if it's not too much of a problem I might leave it - dropspread: false implies no spreading at all and it'd take a bit of work to sort out max stack sizes for everything.

    Dev update beta3 (<font color="#ff0000">warning: something broken with drops<font color="#000000">)</font></font>

    <font color="#ff0000"><font color="#000000">Okay, here's a dev update for any one that wants to try out new features but I just did a quick test and it seems some drops are doubling up, will do more testing on this soon before a full beta3 release.</font></font>

    <font color="#ff0000"><font color="#000000">I've added:</font></font>

    79594dc Release 2.8-beta-dev3
    b78e08e extend PotionAction to apply to player, victim (target), world, server, radius.
    888a6a3 allow (already included) message.radius to work - default radius to 10 (no way to change it yet)
    6651b1b add action: MOB_SPAWN as a new trigger.
    a18f0e7 add log message (Verbosity.HIGH) for commands
    174d3e5 improve SkeletonData - eq chance split character is % and better toString().
    adc921e add crop state named aliases to carrots & potatoes
    a00abdd add DamageAction
    3393492 allow CommonMaterial aliases to work with targets.
    65ae538 add Cocoa = dye@brown as an alias
    2981ad0 fix /odr so it reregisters appropriate events
    27e957e fix permissions & permissiongroups condition - if agent is not a player we now return false (if permissions condition exists)
    c9aca7b added support for CoreProtect (logging blockbreak's cancelled by OtherDrops)
    b8dc4de add data support for WOOD (eg. WOOD@JUNGLE), WOOD_STEP(slab), WOOD_DOUBLESTEP, COBBLEWALL, STEP@NETHER_BRICK, SANDSTONE
    2ba5ed6 fix for "invalid enchantment" message appearing even with blank enchantments
    1d02cae Allow a list for spawnedcheck (eg. [NORMAL, OTHERDROPS] or [-SPAWNER])
    e4692c9 Move CreatureEquipment class into it's own file
    402f8f6 fix lorename so it works when item data exists (eg. diamondsword@400!~Blah)
    example of mobspawn:
    Code:
      ZOMBIE:
        - action: MOBSPAWN
          drop: DIAMOND
        - action: MOBSPAWN
          drop: DEFAULT
          potioneffect.victim: SPEED@2000@7
    
    Sorry for lack of formatting, in a rush :)

    <Edit by Moderator: Redacted mediafire url>

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Nov 27, 2016
  9. Offline

    Abnormal Zombie

    Awesome! Some really cool features have been added. I won't be trying it out until that problem is fixed though :oops:... which would actually be in a few days since I'm going away for a while.

    What was that second data value for the SPEED you had? EDIT: oh wait... duration and level :). Is the duration in seconds?

    The GHAST is also (in addition to SKELETON@WITHER) a mob whose default drop isn't being overridden by a new drop (both appear). This is the code I was using, and is what I have tested it with so far:
    Code:
      GHAST:
          - tool: PROJECTILE_FIREBALL
            drop: 2263
    
    If you want to test it yourself just click on a ghast fireball while looking at the ghast.

    EDIT:
    I may have been wrong about this. DEFAULT cannot be in a drop group at all, and must be added serparetely to work:
    Code:
    # Cows drop 1 more leather than usual.
      COW:
          - drop: DEFAULT
          - drop: LEATHER
    
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 15, 2016
  10. Offline

    Zarius

    Worked out the issue (in 2.8-betadev3) - was just that I was registering the event listeners twice on load up (doh) due to fixing a different issue - this will be fixed in next release.

    Yeah, potioneffects: <potioneffect>@<duration>@<modifierlevel>.

    re: DEFAULT in dropgroups - yeah, I've noticed it doesn't work at all in the dropgroup. Will be a tricky one but will fix it eventually.
     
  11. Offline

    Abnormal Zombie

    Code:
    - drop: SKELETON@eq:head:PUMPKIN
    works but


    Code:
    - drop: ZOMBIE@eq:head:PUMPKIN
    doesn't


    Is there a way to apply potion effects to mobs directly as they drop (like equipment)?

    I'm finding all the separators confusing. Wouldn't something like this be more conventional?
    Code:
    - drop: ZOMBIE/t:BABY^VILLAGER/3/15H/eq:head:DIAMOND_HELMET/eq:hands:STONE_SWORD^DAMAGE_ALL#2^KNOCKBACK#1^10/potioneffect:STRENGTH:2:500/20%
    
    With a chance of 20%, this would spawn three baby zombie villagers with max health of 15 each wearing a diamond helmet, holding a stone sword with sharpness 2 + knockback 1 + data value of 10, with a potion effect of strength 2 for 500 seconds

    : = required parameter
    t = type
    H = max health, so it isn't confused with quantity
    / = separator between all attributes
    ^ = Additional information (more enchantments for the item, or an additional type if applicable for example)
     
  12. Offline

    Zarius

    Release - 2.8-beta3 (link <Edit by Moderator: Redacted mediafire url>

    * **NOTE**: multiple enchantments on item separator is now a "!" rather than "," - eg. bow@!arrow_damage#5!arrow_fire#1 rather than the old bow@!arrow_damage#5,arrow_fire#1 (this is to fix issue within droplists)
    * extend potioneffect parameter: potioneffect.<type>: SPEED@<duration(ticks)>@<strength> (eg. SPEED@400@3 - be careful, too high a strength value goes weird) where type is: attacker, victim, world, server or radius (eg. potioneffect.victim)
    * allow message.radius (plus potion.radius & damage.radius) to work(defaults to 10 - Unchangeable at this time.) Radius type only applies to players.
    * add DamageAction - similar to PotionAction & MessageAction this has multiple parameters: damage.attacker, .victim, .world, .server & .radius. Damge can be normal, fire or lightning. eg:
    Code:
    # apply fire to 500 ticks (might change to look like fire@500t)
      damage.victim: [fire@500]   
    
    # apply between 2 to 6 normal damage
      damage.attacker: [2-6]  
    
    # strike whole server with lightning (*evil laugh*) - supports loc-randomise parameter
      damage.server: [lightning]  
    
    * add action: MOB_SPAWN as possible trigger.
    Code:
    # example: drop diamond on zombie spawns & apply a speed potion effect to the zombie
    ZOMBIE:
        - action: MOBSPAWN
          drop: DIAMOND
        - action: MOBSPAWN
          drop: DEFAULT  # "default" in this context means "allow zombie to spawn"
          potioneffect.victim: SPEED@2000@7
    
    # another example: replace zombie's in the desert with blazes:
      ZOMBIE:
        - action MOBSPAWN
          drop: BLAZE       # drop a blaze mob, and because there's no "default" the zombie wont spawn
          biome: DESERT # only in the desert
    
    # replace Skeletons with random number between 1 & 6 skeletons in desert
      SKELETON:
        - action: MOBSPAWN
          drop: SKELETON/1-6
          biome: DESERT
    
    # NOTE: I've added protection against recursion by ignoring custom spawns (eg. drops from otherdrops) otherwise: zombie: -action:mobspawn drop: zombie/2 - each zombie drops 2 zombies which trigger the spawn and drop another 2, etc would crash the server.  There is an option to enable mobspawn trigger working on custom mobs - let me know if you need it.
    
    * added support for CoreProtect (logging blockbreak's cancelled by OtherDrops).
    * allow a list for spawnedby (eg. [NORMAL, OTHERDROPS] or [-SPAWNER]).
    * added named aliases for crop states to carrots & potatoes.
    * added Cocoa as alias for dye@brown.
    * add data support for WOOD (eg. WOOD@JUNGLE), WOOD_STEP(slab), WOOD_DOUBLESTEP, COBBLEWALL, STEP@NETHER_BRICK, SANDSTONE
    * fix /odr so it reregisters appropriate events.
    * fix - allow CommonMaterial aliases to work with targets.
    * fix lorename so it works when item data exists (eg. diamondsword@400!Blah)
    * fix for "invalid enchantment" message appearing even with blank enchantments.
    * fix permissions & permissiongroups condition - if agent is not a player we now return false (if permissions condition exists).

    Release 2.8-beta4 (<Edit by Moderator: Redacted mediafire url>

    * fix LogBlock/BigBrother/Hawkeye/CoreProtect support (was registering AIR rather than correct block)
    * add RegenBlock support
    * remove docs-help folder (docs there are out of date)

    * allow SpawnedCheck to work with CreatureSpawnEvents
    * fix DamageAction - allow parsing of integers (eg. damage.victim: [20] no longer gives an error)
    * add new trigger: HIT (applies to any entity hitting another, except a player hitting, that's still LEFT_CLICK to avoid breaking existing configs).
    * added potioneffect.drop (applies to dropped LivingEntities - eg. any mob)
    * allow LoreNameCheck to apply to tool used to fire a projectile (more accurately: the item in the shooters hand - eg. PROJECTILE_ARROW lorename: MyBow will check the lorename on the bow rather than the projectile).
    * allow RANDOM as an enchantment (will search for a random valid enchantment)
    * enchantments level now an IntRange and works in tool: condition. (eg. tool: DIAMOND_SWORD@!DAMAGE_ALL#3-6)
    * fix "xp_overrides_default" setting

    And here's some examples of what the changes let us do:

    Code:
      GRASS:
        - drop: [SKELETON, ZOMBIE]
          potioneffect.drop: SPEED@300@5
     
        - drop: [FISHING_ROD@!~Poison Whip, BLAZEROD@!FIRE_ASPECT#6~Flaming Justice, DIAMOND_SWORD@!DAMAGE_ALL#1-6~Butterfly, BOW@!~Bow of Zeus, ARROW/64]
          dropspread: false
     
      ANY_CREATURE:
        - tool: DIAMOND_SWORD@!DAMAGE_ALL#2
          drop: DIAMOND
        - tool: DIAMOND_SWORD@!DAMAGE_ALL#5
          drop: EGG
          
        - action: HIT
          tool: PROJECTILE_FISHING_ROD
          lorename: Poison Whip
          potioneffect.victim: POISON@60@5
          damage.victim: 1
          message: "You've poisoned %v."
     
        - action: HIT
          tool: PROJECTILE_ARROW
          lorename: Bow of Zeus
          damage.victim: [LIGHTNING@20]
          
        - action: LEFT_CLICK
          tool: BLAZEROD
          lorename: Flaming Justice
          damage.victim: [5-500]
          message: "You've set %v on fire."
     
    # Pokeball like action! :)
        - action: HIT
          tool: PROJECTILE_EGG
          drop: SPAWNEGG@THIS
          replacementblock: AIR
    
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Nov 27, 2016
  13. Offline

    Abnormal Zombie

    Zarius I (and many others I am sure) really appreciate the effort you have put into OtherDrops! The updates you have been making are incredible.

    I haven't done too much testing with the new features (yet), but I have come across some new bugs/problems which I think I should mention:
    - Baby zombies (and maybe other baby types) will get 1 more max health than specified.
    - Messages cannot be put into groups to make multiple messages (message: ["test 1", "test 2"])
    - Cannot specify a specific height between two points: height: ["<50", ">40"]

    After re-reading my previous post I realize it was quite stupid to suggest a new separator system than what is currently used, since that would break all existing configurations people have made.
     
  14. Offline

    Zarius

    Abnormal Zombie

    Thanks & I appreciate all the feedback too, helps make the plugin better :)

    ZOMBIE@!!eq:.... didn't work as I'd only written the code for the Skeleton :) I spent a few hours last night recoding the CreatureData classes - I've extracted out the equipment & maxhealth code and applied it to any current and/or new LivingEntity (basically all mobs). I've also made sure any current and/or new "Ageable" has the "baby/adult" parameter. Not yet in a live build.

    With maxhealth isolated to one class it'll be easier to test and it should apply equally to any creatures, baby or adult. Will look into the extra health issue (how are you measuring the maxhealth?).

    Yeah, message lists select one at random from the list. I could do [ ] as a multiple message and { } as "select one" simlar to drops but this would break existing configs. Alternately I could add a "newline" variable, eg. something like "Line1%newline%Line2"?

    I'll look into the height condition (allowing a range).

    No worries regarding the separator suggestions - was still good and made me think about the separators. You're right though, I have to tread carefully to not break existing configs but the new creature multiple parameters (baby/maxhealth/equip etc) are new so not set in stone yet.

    I don't like having to use the "!!" separator but can't think of anything better - can't use "!" or "#" as they're used for enchantments, can't use "," because it gets confused with lists (eg. [zombie, skeleton]). Can't use "&" as it's used for color codes & probably shouldn't use "%" because it's used for variables. Also can't use "/" without major changes as it's the drop/quantity/chance shortcut separator. Can't use "\" as it's a special character (and would look confusing with /).
     
  15. Offline

    Zarius

    Just an update:

    as per above I've add support for AgeableData (baby/adult) to all Ageable mobs (cow, sheep, pig, etc) and equipment & maxhealth support to all LivableEntities (basically all mobs).

    Yes, a diamond_helmet on a sheep works, just can't see it :) Not sure about a diamond sword...

    I've also added a "/od drop" command (alias /odd) that can drop any item/mob including data at the point you're looking at - eg. /odd zombie@baby, /odd skeleton@wither!!eq:head:diamond_helmet or /odd wool@red/20/50% (50% chance of 20 red wool dropping).
     
  16. Offline

    Abnormal Zombie

    That new command lets us do something I don't think any other plugin can, which is, like, awesome.

    Here's some of the most recent bugs I have come across:

    - Damaging an entity by 0 doesn't negate the default damage
    - Setting the damage an entity receives from action: LEFT_CLICK stops any knockback (left click related damage should modify damage dealt instead of applying damage)
    - Damaging entities creates lots of spam in the console
    - Potion effects only apply if that potion effect isn't already present. They should apply if the current potion effect has the same level or less AND the same time or less.
    - Potion effects gives an additional potion level to what was specified. For example: SLOW@100@1 = SLOW 2 (tested with PLAYER: - action: HIT - tool: SILVERFISH - potioneffect.victim: <effect>)
    - When lorename and quantity are specified in the "drop:" data, only one item will have the lore name
    - Whenever TNT explodes I get a ton of errors in the console:
    Show Spoiler

    20:06:12 [SEVERE] Could not pass event EntityDamageByEntityEvent to OtherDrops v
    2.8-beta4
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:427)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
    at net.minecraft.server.v1_4_R1.Explosion.a(Explosion.java:167)
    at net.minecraft.server.v1_4_R1.World.createExplosion(World.java:1608)
    at net.minecraft.server.v1_4_R1.WorldServer.createExplosion(WorldServer.
    java:773)
    at net.minecraft.server.v1_4_R1.EntityTNTPrimed.explode(EntityTNTPrimed.
    java:81)
    at net.minecraft.server.v1_4_R1.EntityTNTPrimed.j_(EntityTNTPrimed.java:
    61)
    at net.minecraft.server.v1_4_R1.World.entityJoinedWorld(World.java:1332)

    at net.minecraft.server.v1_4_R1.WorldServer.entityJoinedWorld(WorldServe
    r.java:548)
    at net.minecraft.server.v1_4_R1.World.playerJoinedWorld(World.java:1313)

    at net.minecraft.server.v1_4_R1.World.tickEntities(World.java:1191)
    at net.minecraft.server.v1_4_R1.WorldServer.tickEntities(WorldServer.jav
    a:445)
    at net.minecraft.server.v1_4_R1.MinecraftServer.r(MinecraftServer.java:5
    80)
    at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:2
    24)
    at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:4
    94)
    at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java
    :427)
    at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:8
    49)
    Caused by: java.lang.NullPointerException
    at com.gmail.zariust.otherdrops.event.OccurredEvent.<init>(OccurredEvent
    .java:161)
    at com.gmail.zariust.otherdrops.listener.OdEntityListener.onEntityDamage
    (OdEntityListener.java:59)
    at sun.reflect.GeneratedMethodAccessor19.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:425)
    ... 18 more
    >
     
  17. Offline

    Zarius

    Good for quick testing too :) Especially now minecraft saves the lines and you can use up/down arrows to go through previous commands.

    Bugs:
    - Yeah, damage is a completely separate action. You'd need to DENY the event.
    - Might look at a way of funnelling the damage value back to the event, that could help with the FIRE damage not being compatible with normal damage (at least for hit events).
    - Sorry about the spam, can you provide a sample line (is a debug message or an exception error?)
    - Hmm, tricky with the potion effects - will look into that.
    - Yeah, often the data values start at 0. Will look into adjusting that for potioneffect.
    - (lorename issue) I think I've already fixed this in a local build.
    - Ouch, will fix that TNT nullpointerexception asap.

    Also, how does:

    drop: zombie@!!baby!!eq:hands:diamond_sword@!damage_all#2~name!!villager^sheep@red^bat

    sound? :) Baby villager zombie wielding an enchanted diamond sword (with lorename) riding a red sheep riding a bat :D

    (not sure if baby zombies show items held.. haven't tested this yet)
     
  18. Offline

    Abnormal Zombie

    ...and so we are introduced to the all new, one of a kind, TOTEM POLE MOB!

    That is really cool! I remember a time back in minecraft beta when a server admin showed me something funny in the nether. He spawned several chickens with giants riding them, slowing falling into the lava and it looked hilarious.


    - The spam is:
    Code:
    00:37:18 [INFO] [OtherDrops:2.8-beta4] Damaging entity: CraftCow range=5 value=5
     (NORMAL)
    - The mechanics of the potion effects aren't crucial, but if there is a way to apply the effects the same way vanilla minecraft does, it might make it easier for you.

    Hmmmmm...
    Code:
    #Insane flying creepers. Move rapidly and randomly, watch out!
      CREEPER:
          - action: MOB_SPAWN
            drop: CREEPER@!^BAT
     
      BAT:
          - action: MOB_SPAWN
            spawnedby: OTHERDROPS
            potioneffect.victim: [SPEED@200000@5, INVISIBILITY@200000]
     
    
    OOOOoooo.....

    Code:
    #A stack of magma cubes where the next one on top keeps getting smaller
      MAGMA_CUBE:
          - action: MOB_SPAWN
            spawnedby: NATURAL
            drop: MAGMA_CUBE@1!^MAGMA_CUBE@2^MAGMA_CUBE@3^MAGMA_CUBE@4
    
    Ahhh.....

    Code:
    # Flying and teleporting squid! Don't look at them!
      ENDERMAN:
          - action: MOB_SPAWN
            spawnedby: NATURAL
            drop: SQUID@!^ENDERMAN
          - potioneffect.victim: INVISIBILITY@200000
            spawnedby: OTHERDROPS
    
    Question: Would a potioneffect.drop apply to all mobs in a drop if they are riding eachother?

    Boats and minecarts would be cool to add to spawn-able entities.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 15, 2016
  19. Offline

    Zarius

    [quote uid=49373 name="Abnormal Zombie" post=1558138]...and so we are introduced to the all new, one of a kind, TOTEM POLE MOB![/quote]

    I've seen totem'mobs around before but a lot easier to spawn with the new /odd command eg:

    <font color="#000080">/odd slime@1^slime@2^slime@3^slime@4</font>

    [​IMG]

    <font color="#000080"><font color="#000000">Or:</font> /odd skeleton@!!eq:head:diamond_helmet^bat</font>

    [​IMG]

    Beta5-prerelease for those that want to try it (<Edit by Moderator: Redacted mediafire url>

    See here for some more example images.

    * added command "/od drop" (or /odd) - takes an single drop description (doesn't support lists)
    ** eg: /odd diamond_sword@!damage_all#3~Butterfly or /odd cow^bat
    * added support for mobs riding mobs, eg. cow^sheep@red^bat = cow riding a red sheep riding a bat
    * equipment support (previously just Skeletons) extended to all mobs
    * added colored leather armour (supports LEATHER_(BOOTS|CHESTPLATE|LEGGINGS|HELMET), limited color support at the moment, only Green, BLUE, RED or YELLOW)
    * fix NPE in LoreNameCheck
    * removed a couple of debug messages that were left in the previous beta

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Nov 27, 2016
  20. Offline

    Abnormal Zombie

    Zarius It would be cool if we could get a "mobequipmentdrops: true" option in the configuration file, which would prevent/allow mobs dropping any equipment which they are wearing/holding. Therefore we could equip mobs with awesome gear without having to worry about players obtaining it.

    NOTE: If mobequipmentdrops is false it should also disable mobs being able to pick up gear as well (wouldn't want to get killed by a creeper, come back and see a zombie with your diamond armor on and you are unable to get it back :p)

    EDIT: Unsafe slime/magma_cube sizes would be cool too, for boss mobs :)

    Code:
      ENDER_DRAGON:
          -action: MOB_SPAWN
            drop: MAGMA_CUBE@15!!500
      MAGMA_CUBE@!!500:
          - drop: MAGMA_CUBE@10!!100/2-4
      MAGMA_CUBE@!!100:
          - drop: MAGMA_CUBE@5!!30/2-4
    
     
  21. Offline

    Zarius

    Unsafe slime is already there :D

    Disabling equip is on the books... got a bunch of stuff first though :)

    Release 2.8-beta5.1 (link on BukkitDev page)

    * Added drop command - /odd <item/mob> - eg. /odd diamondsword@!damage_all#3~MySword
    * Skull owner support - /odd skull_item@Notch. (Case sensitive)
    * Added skull aliases - skull=skull_item, skull_block=skull (original bukkit "skull" is the block but most people will want the item)
    * Leather armor color support - /odd leatherpants@red (includes any dye color, also try richred richblue more colors, eg. By RGB number, to come later)
    * Written book support - /odd writtenbook@author=me:title=Snail:page=Once there was a:page=snail.
    * EnchantedBook support - /odd enchantedbook@damage_all
    * All mobs now support maxhealth & equipment.
    * All ageables (sheep, pig, cow, wolf, etc) now support baby/adult.
    * Support creatures riding creatures (passenger^ride) - eg. cow^bat = cow riding a bat. Supports entities, eg. entity_boat^bat
    * /od id command now also identifies block looked at.
    * Entity name matches by shortest unqieu name if starting with ; (mostly for /odd command) - eg. /odd ;z = spawn zombie

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 15, 2016
  22. Offline

    Abnormal Zombie

    Zarius
    BUGS (as of beta 5.1):
    -Spaces are deleted from lore names and book information when using /odd
    -Player heads don't currently work for mob equipment (/odd zombie@!!eq:head:397@Notch)
    -If xp and a regular drop are one after another, OtherDrops will forget the first drop ever happened, therefore allowing the default xp or drop to occur:
    Code:
    #A bone, 20 xp and the default drops will drop
      ZOMBIE:
          - drop: BONE
          - drop: XP/20
    #20 xp, a bone and the default xp will drop
      ZOMBIE:
          - drop: XP/20
          - drop: BONE
    -Can't specify a tool's lorename with colors (lorename: &r&aWEAPON)
    -action: MOB_SPAWN isn't working properly. The following configuration does not work:
    Code:
      SKELETON@WITHER:
          - action: MOB_SPAWN
            drop: SKELETON@WITHER!!eq:hands:261
    
    This configuration, however, does work:
    Code:
      ZOMBIE:
          - action: MOB_SPAWN
            height: ">95"
            chance: 75%
            drop: ZOMBIE@BABY!!16
    
    -Multiple drops don't work in the /odd command (/odd [ITEM1, ITEM2])
    -For some reason the lore name won't be colored in this configuration:
    Code:
      MELON_BLOCK:
          - drop: [MELON@!DAMAGE_ALL#2~&r&aSharp Melon Slice, MELON/3-6]
    -Drop groups create a blank line in the client chat
    -If the ender dragon is killed (again) during the death animation via command, it will drop all of the drops again.
    -Enchanted books (for the anvil) don't seem to work
    -Getting this error with exploding TNT (which then causes tool: EXPLOSION_TNT to have no effect):
    Show Spoiler
    Code:
    12:59:10 [INFO] Abnormal_Zombie issued server command: /odd entity_primed_tnt
    12:59:15 [SEVERE] Could not pass event EntityDamageByEntityEvent to OtherDrops v
    2.8-beta5.1
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:427)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at net.minecraft.server.v1_4_R1.Explosion.a(Explosion.java:167)
            at net.minecraft.server.v1_4_R1.World.createExplosion(World.java:1608)
            at net.minecraft.server.v1_4_R1.WorldServer.createExplosion(WorldServer.
    java:773)
            at net.minecraft.server.v1_4_R1.EntityTNTPrimed.explode(EntityTNTPrimed.
    java:81)
            at net.minecraft.server.v1_4_R1.EntityTNTPrimed.j_(EntityTNTPrimed.java:
    61)
            at net.minecraft.server.v1_4_R1.World.entityJoinedWorld(World.java:1332)
     
            at net.minecraft.server.v1_4_R1.WorldServer.entityJoinedWorld(WorldServe
    r.java:548)
            at net.minecraft.server.v1_4_R1.World.playerJoinedWorld(World.java:1313)
     
            at net.minecraft.server.v1_4_R1.World.tickEntities(World.java:1191)
            at net.minecraft.server.v1_4_R1.WorldServer.tickEntities(WorldServer.jav
    a:445)
            at net.minecraft.server.v1_4_R1.MinecraftServer.r(MinecraftServer.java:5
    80)
            at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:2
    24)
            at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:4
    94)
            at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java
    :427)
            at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:8
    49)
    Caused by: java.lang.NullPointerException
            at com.gmail.zariust.otherdrops.event.OccurredEvent.<init>(OccurredEvent
    .java:161)
            at com.gmail.zariust.otherdrops.listener.OdEntityListener.onEntityDamage
    (OdEntityListener.java:59)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.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:425)
            ... 18 more
    12:59:15 [SEVERE] Could not pass event EntityDamageByEntityEvent to OtherDrops v
    2.8-beta5.1
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:427)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at net.minecraft.server.v1_4_R1.Explosion.a(Explosion.java:167)
            at net.minecraft.server.v1_4_R1.World.createExplosion(World.java:1608)
            at net.minecraft.server.v1_4_R1.WorldServer.createExplosion(WorldServer.
    java:773)
            at net.minecraft.server.v1_4_R1.EntityTNTPrimed.explode(EntityTNTPrimed.
    java:81)
            at net.minecraft.server.v1_4_R1.EntityTNTPrimed.j_(EntityTNTPrimed.java:
    61)
            at net.minecraft.server.v1_4_R1.World.entityJoinedWorld(World.java:1332)
     
            at net.minecraft.server.v1_4_R1.WorldServer.entityJoinedWorld(WorldServe
    r.java:548)
            at net.minecraft.server.v1_4_R1.World.playerJoinedWorld(World.java:1313)
     
            at net.minecraft.server.v1_4_R1.World.tickEntities(World.java:1191)
            at net.minecraft.server.v1_4_R1.WorldServer.tickEntities(WorldServer.jav
    a:445)
            at net.minecraft.server.v1_4_R1.MinecraftServer.r(MinecraftServer.java:5
    80)
            at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:2
    24)
            at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:4
    94)
            at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java
    :427)
            at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:8
    49)
    Caused by: java.lang.NullPointerException
            at com.gmail.zariust.otherdrops.event.OccurredEvent.<init>(OccurredEvent
    .java:161)
            at com.gmail.zariust.otherdrops.listener.OdEntityListener.onEntityDamage
    (OdEntityListener.java:59)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.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:425)
            ... 18 more
    


    Suggestions:
    -If a dash is placed at the end of a /odd command, it will add the next /odd to that string for a bigger drop
    -Support for -drop: SKULL_ITEM@THIS (for player heads)
    -Support for SKULL@2 (so skull blocks can be identified by data values)
    -Offset mob spawns which are relevant to a block location by X + 0.5 and Z + 0.5 to be in the center of the block rather than the corner
    -Add support for baby zombie pigmen (Discovered from http://dev.bukkit.org/server-mods/mob-armor/)
     
  23. Offline

    Zarius

    [quote uid=49373 name="Abnormal Zombie" post=1564795]Zarius
    BUGS (as of beta 5.1):[/quote]

    Woo!, thanks for the report :)

    -Spaces are deleted from lore names and book information when using /odd

    Fixed locally, will be in next build.

    -Player heads don't currently work for mob equipment (/odd zombie@!!eq:head:397@Notch)

    Fixed locally, will be in next build.

    -If xp and a regular drop are one after another, OtherDrops will forget the first drop ever happened, therefore allowing the default xp or drop to occur:

    Show Spoiler
    Code:
    #A bone, 20 xp and the default drops will drop
      ZOMBIE:
          - drop: BONE
          - drop: XP/20
    #20 xp, a bone and the default xp will drop
      ZOMBIE:
          - drop: XP/20
          - drop: BONE




    Not sure about this one yet, testing.


    -Can't specify a tool's lorename with colors (lorename: &r&aWEAPON)

    Unfortunately YAML interprets the & as a special character - if you put quotes (ie. lorename: "&r&aWEAPON") it'll work (I've updated the documentation to note this).

    -action: MOB_SPAWN isn't working properly. The following configuration does not work:
    Code:
      SKELETON@WITHER:
          - action: MOB_SPAWN
            drop: SKELETON@WITHER!!eq:hands:261
    
    This configuration, however, does work:
    Code:
      ZOMBIE:
          - action: MOB_SPAWN
            height: ">95"
            chance: 75%
            drop: ZOMBIE@BABY!!16
    
    Testing this one.

    -Multiple drops don't work in the /odd command (/odd [ITEM1, ITEM2])

    Yeah, only built /odd around one item so far... I should be able to support lists soon(ish).

    -For some reason the lore name won't be colored in this configuration:
    Code:
      MELON_BLOCK:
          - drop: [MELON@!DAMAGE_ALL#2~&r&aSharp Melon Slice, MELON/3-6]
    Hmm, confirmed this one and looking for a solution.

    -Drop groups create a blank line in the client chat

    Will look into this one.


    .. will answer the rest later.

    - Drop groups create a blank line in the client chat

    Fixed in a local build.

    -If the ender dragon is killed (again) during the death animation via command, it will drop all of the drops again.

    Hmm, tricky to tell if the event has been triggered again - I might be able to save a list of processed entities to avoid reprocessing but not sure when I'd clean up the list and seems like a messy solution. Sounds more like a Bukkit bug as the EntityDeathEvent shouldn't be able to trigger more than once for a mob.

    -Enchanted books (for the anvil) don't seem to work

    They need an enchantment - ie. enchantedbook@DAMAGE_ALL. Local build has greatly improved enchantments - support for multiple enchantments (although minecraft doesn't use the second enchantment on the book) and an improved RANDOM, ie. diamondsword@!RANDOM!RANDOM!RANDOM will give three completely random (type & level) enchantments.

    -Getting this error with exploding TNT (which then causes tool: EXPLOSION_TNT to have no effect):

    Fixed in a local build. EXPLOSION_TNT now works correctly.

    Suggestions:
    -If a dash is placed at the end of a /odd command, it will add the next /odd to that string for a bigger drop

    Good idea, can you post it to the feature requests so I don't forget?

    -Support for -drop: SKULL_ITEM@THIS (for player heads)

    I think there's already an issue for this one, it's a good idea.

    -Support for SKULL@2 (so skull blocks can be identified by data values)

    Should still work, if not in beta5.1 then in a local build (ie. will be fixed in next beta).

    -Offset mob spawns which are relevant to a block location by X + 0.5 and Z + 0.5 to be in the center of the block rather than the corner

    Fixed in a local build.

    -Add support for baby zombie pigmen (Discovered from http://dev.bukkit.org/server-mods/mob-armor/)

    Fixed in a local build.

    Code:
       SKELETON@WITHER:
          - action: MOB_SPAWN
            drop: SKELETON@WITHER!!eq:hands:261
    
    This should work, did you test it in the nether or by manually spawning a witherskeleton? Problem is that SKELETON@WITHER also matches any wither skeleton, regardless of equipment, which means it matches the wither skeleton that it replaces with, catches the new custom spawn and replaces it again - getting stuck in an infinite loop.
    I do want this to work with custom spawns but until I work it out I've disabled the MOBSPAWN action for custom drops so you need to find some natural spawning wither skeletons to test it on.

    Release 2.8-beta6 (download <Edit by Moderator: Redacted mediafire url>

    * overhaul enchantments system, allow item@!random!random for multiple random enchantments, support enchantedbooks (item@!random = random ench & level, item@!random#1 = random ench of level 1, item@!DAMAGE_ALL#? = damage_all ench and random level, item@!random!random = two different random enchantments)
    * register PigZombieData class and allow it to extend Zombie (to allow for baby or VILLAGER pigzombies)
    * allow EXPLOSION_TNT to match EXPLOSION_PRIMED_TNT (which is what actually occurs)
    * add Heroes condition (heroes.class & heroes.level) if Heroes plugin found
    * add aliases (sticks->stick, zombiepig->pigzombie)
    * allow drop: NOTHING to cancel entity equipment drops
    * fix leafdecay drop: NOTHING & extract "clearDrops()" method from performDrop
    * center mob spawns on the block, rather than spawning in the corner
    * Support colon as a data separator for items eg. ("wool:red") as some users will expect this format (previous separator "wool@red" works as normal)
    * stop dropgroups sending a blank line to player's chat
    * fix MoneyDrop - needed to load Vault after globalconfig but before loading drops
    * ensure all creatures use same data separator (currently "!!")
    * initial testing for PistonExtendEvent to intercept melon/pumpkin/etc smashing (not yet live)
    * stop CreatureData changing case (as data like playername for skull owner is case sensitive)
    * fix spawnlistener (it was ignoring non-custom spawns instead of custom ones)
    * avoid NPE in OdEnchantedBookMeta
    * minor - avoid issue with tailing characters (eg. DIAMONDSWORD@!)

    Not sure what happened there but I fixed the download link for <Edit by Moderator: Redacted mediafire url>

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Nov 27, 2016
  24. Offline

    Steelsouls


    I found that the quotes are required and work, but only work for the lorename: parameter. When assigning a lorename to a drop it is mandatory that no quotes are used or you will have quotes in the name.

    Basically my testing boils down to this:

    If the & symbol is used at the beginning of a line (not counting the itself, eg. lorename:) then you must have quotes, because the interpreter sees this as a special character.

    If the & symbol is within a line of text (eg. ITEM@!~&9Special Item) then you do not, and cannot use quotes or you will get quotes on the item name.

    I did a fair amount of testing with this and following the guidelines I have figured out, here is an example test drop using color codes.

    Code:
    #needs no quotes for &
     
    WOOL@RED:
    - drop: SHEARS@!~&6Epic Test
     
    WOOL@GREEN:
    - tool: SHEARS
    #needs quotes because & is at beginning of the line
    lorename: '&6Epic Test'
    drop: WOOL@RED
     
    
     
  25. Offline

    Zarius

    Steelsouls

    Thanks for the testing :) I think that drop: "SHEARS@!~&6Epic Test" should work ok but yes, with drops it works fine without the quotes (I expect it's because the line doesn't start with the & - so lorename: Dark &aSword will probably work without quotes too - haven't tested it though).
     
  26. Offline

    Zarius

    <Edit by Moderator: Redacted mediafire url>

    * improve /od show command (don't show null parameters, add standardised formatting and newlines)
    * show /odd usage message if no arguments provided
    * minor cleanup - remove unused OtherDropsConfig.priority and mark some variables "final"
    * Add metrics graph for tracking number of each trigger (action) used
    * modify potioneffectlevel so that userwritten config value matches ingame value (because Bukkit lvl 0 = ingame lvl 1)
    * fix NPE in EntityDamageByEntity (if no entity?)
    * Avoid "found" and "notFoundPlugins" console messages being duplicated upon Bukkit reload
    * add auto-incrementing build numbers
     
    Last edited by a moderator: Nov 27, 2016
  27. Offline

    Abnormal Zombie

    Bugs (beta 6):
    - Parameter "tool" doesn't recognize numbers
    - /odd <entity>/<amount> creates a line of entities, rather than a spot of them
    - Still getting a TNT error upon detonation
    - Slime and magma cube sized (TINY, HUGE etc...) no longer work
    - Creating massive slimes or magma cubes doesn't work because the data is mistaken for max health and not size.
    - This doesn't work for some reason, but did before an update (or two):
    Code:
      CREEPER:
          - tool: DAMAGE_BLOCK_EXPLOSION
            drop: 397@4!PROTECTION_EXPLOSIONS#10~&r&5Creeper Head
    - Skeletons (and maybe other mobs) can't be used as tools because their projectiles don't register


    More suggestions (I might add them to the feature requests when I get time):
    - Add support for entity_falling_block@<block id> (no really important, just kinda cool)
    - Add support for entity_firework@<firework configuration> (same as above)
    - Add action: PLAYER_SPAWN or support for players under MOB_SPAWN so that events can be triggered when a player respawns. For example:
    Code:
      PLAYER:
          - action: MOB_SPAWN
            potioneffect.victim: WEAKNESS@2000@1
    
    - Able to specify the exact coordinates for /odd (Then the commands could be used by other plugins or even command blocks). Example: /odd zombie@!!eq:head:diamond_helmet!!eq:hands:diamond_sword 350/60/-722
    - Max health needs to be separated by !! or else it causes problems. (can't use with mob types. eg: tool: ZOMBIE@BABY!!5)
    - A way to stop an ender dragon from creating a portal after death (I have tried using "command: /!$butcher enderdragon world_the_end" with a delay, but it just thinks that the player killed it again, thus creating more drops).
     
  28. Offline

    Zarius

    [quote uid=49373 name="Abnormal Zombie" post=1568817]Bugs (beta 6):[/quote]

    - Parameter "tool" doesn't recognize numbers

    Fixed.

    - /odd <entity>/<amount> creates a line of entities, rather than a spot of them

    Fixed (was due to placing entities in the middle of the block, I add it to the actual location rather than a copy, so each mob spawned moved out further).

    - Still getting a TNT error upon detonation

    Found the bug, fixed and tested a few explosions on normal verbosity - got no errors or messages.

    - Slime and magma cube sized (TINY, HUGE etc...) no longer work

    Fixed.

    - Creating massive slimes or magma cubes doesn't work because the data is mistaken for max health and not size.

    Fixed - max health now needs a h - ie. ZOMBIE@!!BABY!!50H or skeleton@10h

    - This doesn't work for some reason, but did before an update (or two):
    Code:
      CREEPER:
          - tool: DAMAGE_BLOCK_EXPLOSION
            drop: 397@4!PROTECTION_EXPLOSIONS#10~&r&5Creeper Head
    Fixed - it wasn't working for any creeper drops :\

    - Skeletons (and maybe other mobs) can't be used as tools because their projectiles don't register

    You can use PROJECTILE_<type>@<entitytype> - eg. PROJECTILE_ARROW@SKELETON or PROJECTILE_FIREBALL@GHAST as the tool. This is deliberate so you can still distinguish between melee and ranged.

    Having SKELETON match both and allowing for SKELETON@MELEE, SKELETON@ARROW, SKELETON@FIREBALL etc might be easier to understand but would be very difficult to fit into the current code.

    More suggestions (I might add them to the feature requests when I get time):
    - Add support for entity_falling_block@<block id> (no really important, just kinda cool)

    Tried this and crashed the server so might leave it for a bit :D Feel free to add a ticket though and I'll class it as a feature request for a future version.

    - Add support for entity_firework@<firework configuration> (same as above)

    Some support already in there (ie. /odd firework@green) I can possibly extend to cover the entity_firework too. I haven't used the fireworks much so if anyone can give me an idea of preferred parameters they'd like to change I'll look into it further.

    - Add action: PLAYER_SPAWN or support for players under MOB_SPAWN so that events can be triggered when a player respawns. For example:
    Code:
      PLAYER:
          - action: MOB_SPAWN
            potioneffect.victim: WEAKNESS@2000@1
    
    Will think about this. I don't want to get too crazy with the triggers in the core of OtherDrops - users could see it as being too heavy (even though really doesn't make much difference if you're not using that trigger). I'm thinking about making extra triggers as an expansion plugin.

    - Able to specify the exact coordinates for /odd (Then the commands could be used by other plugins or even command blocks). Example: /odd zombie@!!eq:head:diamond_helmet!!eq:hands:diamond_sword 350/60/-722

    Good idea, can you add this one to the feature requests on github?

    - Max health needs to be separated by !! or else it causes problems. (can't use with mob types. eg: tool: ZOMBIE@BABY!!5)

    Seems to be working ok now - ZOMBIE@5h & ZOMBIE@BABY!!5H works (I've changed it to require the h, more obvious and allows for the oversized slime - I might also allow ZOMBIE@maxhealth:5!!head:etc....).

    - A way to stop an ender dragon from creating a portal after death (I have tried using "command: /!$butcher enderdragon world_the_end" with a delay, but it just thinks that the player killed it again, thus creating more drops).[/quote]

    Hmm, I don't think there is - without manually searching for an removing the portal. EntityDeathEvent's aren't cancellable (I can remove the entity but the event still continues and I expect it'll spawn the portal still, you can test this with ENDERDRAGON: drop: DENY since deny removes the entity).


    Thanks :)

    <Edit by Moderator: Redacted mediafire url>
    * Cleanup some imports.
    * Add: aliases lavaslime & magmaslime = MAGMA_CUBE
    * fix: remove debug message seen when using eq:head:<item> for mobs
    * Fix: creeper drops not working
    * Fix: allow SLIME(and MAGMACUBE)@TINY/SMALL/BIG/HUGE & numerical (for larger slimes)
    * Change: max health now requires a "h" - eg. ZOMBIE@5h or zombie@baby@5H (allows for me to fix for eg. SLIME@32)
    * Fix: stop mutiple entities (eg. zombie/10) spawning in a line rather than on the spot
    * Fix: correctly parse tools for "explosives" (eg. tnt, fireball).
    * Fix: messageaction - empty string no longer gets sent to player chat.
    * cleanup - remove some debug messages & auto-generated catch block comments
    * Fix trigger counting for custom metrics graph, set debug msg to high verbosity
    * allow tools as data ID - eg. "tool: 276" = diamond sword
    * add command to view mob details - /od id mob


    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Nov 27, 2016
  29. Offline

    Abnormal Zombie

    Bugs (<font color="#000000"><Edit by Moderator: Redacted mediafire url>
    - tool: PROJECTILE@SKELETON@NORMAL or PROJECTILE@SKELETON!!NORMAL doesn't work (entity type doesn't apply)
    - Max health can't be specified for a mob under "tool:" (I don't know if this is a bug, or just hasn't been implemented yet)
    - Capital H doesn't work for max health
    - Potion effects don't apply if there is an existing effect already present.

    Suggestions:
    - [Messages]: [] to be used for multiple messages and {} to be used for a signle random message just like drops.
    - New code to set the minimum time at which a message can be sent again: message.victim: "You feel weaker"@200 (this will greatly reduce spam is certain situations).
     
    Last edited by a moderator: Nov 27, 2016
  30. Offline

    Zarius

    [quote uid=49373 name="Abnormal Zombie" post=1571361]Bugs (<font color="#000000"><Edit by Moderator: Redacted mediafire url>
    - tool: PROJECTILE@SKELETON@NORMAL or PROJECTILE@SKELETON!!NORMAL doesn't work (entity type doesn't apply)

    Ah, haven't implemented that yet, will look into it.

    - Max health can't be specified for a mob under "tool:" (I don't know if this is a bug, or just hasn't been implemented yet)

    Not yet implemented.

    - Capital H doesn't work for max health

    Odd, I'm sure I tested that, will check again.

    - Potion effects don't apply if there is an existing effect already present.

    Yeah, this has been noted, will see if I can add to existing instead.

    Suggestions:
    - [Messages]: [] to be used for multiple messages and {} to be used for a signle random message just like drops.

    I thought about this before but rejected it for some reason, will think again :)

    - New code to set the minimum time at which a message can be sent again: message.victim: "You feel weaker"@200 (this will greatly reduce spam is certain situations).

    Good idea, bit worried about confusing users with the @ and not allowing messages including @. So maybe another parameter for "message.cooldown" applying to any messages for this drop section.
     
    Last edited by a moderator: Nov 27, 2016
  31. Offline

    Abnormal Zombie

    Here's some of the more minor bugs/issues I have been coming across:

    - Slimes splits can't be stopped (more slimes appearing after one dies)
    - When an anvil damages an entity this error occurs: http://pastebin.com/raw.php?i=MyyMD9Zw
    - When ANY_DAMAGE is one of the tools and a player gets killed by damage via OtherDrops, this error occurs: http://pastebin.com/raw.php?i=z7Jbfwrp (Add a new damage type for OtherDrops inflicted damage?)
    - Parameters like loc-offset and quantity have to be defined for each individual drop in a dropgroup and cannot be defined above.
    - When a block breaks because the supporting block is removed, it will drop the default drops.

    SUGGESTIONS:
    Show Spoiler

    -Add POTION as a projectile or add DAMAGE_POTION_<data value> as a damage type. At the moment splash potions of harming can only be detected by DAMAGE_PROJECTILE or PROJECTILE, which aren't specific enough.

    -Add flags: ONLY so that if no other events are triggered, this event will trigger. For example:
    Code:
      PLAYER:
          - tool: ANY_CREATURE
            message.server: "%v was killed by a mob"
          - tool: DAMAGE_VOID
            message.server: "%v was killed by the void"
          - message.server: "%v was not killed by a mob or the void"
            flags: ONLY 
    -If you really want to go big with this you could add new sections to the configuration files such as 'othercrafts' (control what is made by furnaces, crafting tables, brewing stands etc.), 'othercommands' (make new commands where the command could be linked with any other configuration/drop) , or 'otheritems' (damages/resistances/unique properties of armor/weapons/anything). This plugin would be the ultimate all-in-one, do-it-yourself, fully customizable, "an absolute must" for any server.

    -Allow an offset and delay to be specified after a replacementblock (such as -replacementblock: STONE@0/0/0!500). If this were implemented, a city could literally be built on the death of a zombie, or the right-click on a block. Therefore multiple replacement blocks should probably be allowed as well, via "[]".

    -Allow all items to be used as the "block type" and add a new action: USE (similar to RIGHT_CLICK except the player is holding the object while clicking and not looking at the object while clicking) to allow for easier/better/more options. The default action for items would be 'USE', but it would have to be defined for blocks. The reason I am suggestion this is because the two examples below would otherwise be more complicated without it, and placing fluids is otherwise currently impossible to completely stop because they can be placed a little farther than the block selection distance.
    Code:
      SNOWBALL:
          - action: USE
            drop: DENY
      LAVA_BUCKET:
          - action: USE
            drop: DENY
    
    -Add these sounds to what can be used under effects: http://jd.bukkit.org/rb/apidocs/org/bukkit/Sound.html

    Don't think you should have to do any of my suggestions. I have ideas running through my head constantly and I like to share them.
     

Share This Page