Inactive [MECH/ADMN] ModDamage - Change damage mechanics on the fly!

Discussion in 'Inactive/Unsupported Plugins' started by KoryuObihiro, May 20, 2011.

  1. Offline

    KoryuObihiro

    ModDamage
    We've moved to BukkitDev!
     
  2. Offline

    KoryuObihiro

    It actually might be an interesting project to make a GUI that would streamline the process, or at least simulate attack calculations between two given entities (Spider vs. "Admins") so that people still struggling to get it to work don't have to mess with a Bukkit server until they get the simulation doing something they want.

    As for the config, though...dunno, I doubt it could get much simpler the way I'm doing it.
     
  3. Offline

    tassox33

    Getting alot of errors on 860 the new recommended version of bukkit.

    Code:
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:861)
            at net.minecraft.server.Packet7UseEntity.a(SourceFile:33)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:75)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:399)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:309)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    09:42:19 [SEVERE] Could not pass event ENTITY_DAMAGE to ModDamage
    java.lang.NullPointerException
            at java.util.ArrayDeque.addLast(Unknown Source)
            at java.util.ArrayDeque.add(Unknown Source)
            at com.nijiko.permissions.Entry.getAncestors(Entry.java:261)
            at com.nijiko.permissions.ModularControl.getGroups(ModularControl.java:6
    29)
            at com.KoryuObihiro.bukkit.ModDamage.Handling.WorldHandler.calcDefenseBu
    ff(WorldHandler.java:527)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamage.passDamageEvent(ModDamage
    .java:438)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamageEntityListener.onEntityDam
    age(ModDamageEntityListener.java:20)
            at org.bukkit.plugin.java.JavaPluginLoader$51.execute(JavaPluginLoader.j
    ava:598)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:310)
            at net.minecraft.server.EntityArrow.o_(EntityArrow.java:180)
            at net.minecraft.server.World.entityJoinedWorld(World.java:1114)
            at net.minecraft.server.WorldServer.entityJoinedWorld(WorldServer.java:6
    2)
            at net.minecraft.server.World.playerJoinedWorld(World.java:1096)
            at net.minecraft.server.World.cleanUp(World.java:1073)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:395)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:309)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    09:42:19 [SEVERE] Could not pass event ENTITY_DAMAGE to ModDamage
    java.lang.NullPointerException
            at java.util.ArrayDeque.addLast(Unknown Source)
            at java.util.ArrayDeque.add(Unknown Source)
            at com.nijiko.permissions.Entry.getAncestors(Entry.java:261)
            at com.nijiko.permissions.ModularControl.getGroups(ModularControl.java:6
    29)
            at com.KoryuObihiro.bukkit.ModDamage.Handling.WorldHandler.calcDefenseBu
    ff(WorldHandler.java:527)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamage.passDamageEvent(ModDamage
    .java:438)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamageEntityListener.onEntityDam
    age(ModDamageEntityListener.java:20)
            at org.bukkit.plugin.java.JavaPluginLoader$51.execute(JavaPluginLoader.j
    ava:598)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:310)
            at net.minecraft.server.EntityHuman.damageEntity(EntityHuman.java:419)
            at net.minecraft.server.EntityPlayer.damageEntity(EntityPlayer.java:184)
    
            at net.minecraft.server.EntityArrow.o_(EntityArrow.java:183)
            at net.minecraft.server.World.entityJoinedWorld(World.java:1114)
            at net.minecraft.server.WorldServer.entityJoinedWorld(WorldServer.java:6
    2)
            at net.minecraft.server.World.playerJoinedWorld(World.java:1096)
            at net.minecraft.server.World.cleanUp(World.java:1073)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:395)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:309)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    09:42:19 [SEVERE] Could not pass event ENTITY_DAMAGE to ModDamage
    java.lang.NullPointerException
            at java.util.ArrayDeque.addLast(Unknown Source)
            at java.util.ArrayDeque.add(Unknown Source)
            at com.nijiko.permissions.Entry.getAncestors(Entry.java:261)
            at com.nijiko.permissions.ModularControl.getGroups(ModularControl.java:6
    29)
            at com.KoryuObihiro.bukkit.ModDamage.Handling.WorldHandler.calcAttackBuf
    f(WorldHandler.java:560)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamage.passDamageEvent(ModDamage
    .java:465)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamageEntityListener.onEntityDam
    age(ModDamageEntityListener.java:20)
            at org.bukkit.plugin.java.JavaPluginLoader$51.execute(JavaPluginLoader.j
    ava:598)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:310)
            at net.minecraft.server.EntityHuman.d(EntityHuman.java:531)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:861)
            at net.minecraft.server.Packet7UseEntity.a(SourceFile:33)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:75)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:399)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:309)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    09:42:20 [SEVERE] Could not pass event ENTITY_DAMAGE to ModDamage
    java.lang.NullPointerException
            at java.util.ArrayDeque.addLast(Unknown Source)
            at java.util.ArrayDeque.add(Unknown Source)
            at com.nijiko.permissions.Entry.getAncestors(Entry.java:261)
            at com.nijiko.permissions.ModularControl.getGroups(ModularControl.java:6
    29)
            at com.KoryuObihiro.bukkit.ModDamage.Handling.WorldHandler.calcAttackBuf
    f(WorldHandler.java:560)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamage.passDamageEvent(ModDamage
    .java:465)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamageEntityListener.onEntityDam
    age(ModDamageEntityListener.java:20)
            at org.bukkit.plugin.java.JavaPluginLoader$51.execute(JavaPluginLoader.j
    ava:598)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:310)
            at net.minecraft.server.EntityHuman.d(EntityHuman.java:531)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:861)
            at net.minecraft.server.Packet7UseEntity.a(SourceFile:33)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:75)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:399)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:309)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    09:42:20 [SEVERE] Could not pass event ENTITY_DAMAGE to ModDamage
    java.lang.NullPointerException
            at java.util.ArrayDeque.addLast(Unknown Source)
            at java.util.ArrayDeque.add(Unknown Source)
            at com.nijiko.permissions.Entry.getAncestors(Entry.java:261)
            at com.nijiko.permissions.ModularControl.getGroups(ModularControl.java:6
    29)
            at com.KoryuObihiro.bukkit.ModDamage.Handling.WorldHandler.calcAttackBuf
    f(WorldHandler.java:560)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamage.passDamageEvent(ModDamage
    .java:465)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamageEntityListener.onEntityDam
    age(ModDamageEntityListener.java:20)
            at org.bukkit.plugin.java.JavaPluginLoader$51.execute(JavaPluginLoader.j
    ava:598)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:310)
            at net.minecraft.server.EntityHuman.d(EntityHuman.java:531)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:861)
            at net.minecraft.server.Packet7UseEntity.a(SourceFile:33)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:75)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:399)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:309)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    09:42:20 [SEVERE] Could not pass event ENTITY_DAMAGE to ModDamage
    java.lang.NullPointerException
            at java.util.ArrayDeque.addLast(Unknown Source)
            at java.util.ArrayDeque.add(Unknown Source)
            at com.nijiko.permissions.Entry.getAncestors(Entry.java:261)
            at com.nijiko.permissions.ModularControl.getGroups(ModularControl.java:6
    29)
            at com.KoryuObihiro.bukkit.ModDamage.Handling.WorldHandler.calcAttackBuf
    f(WorldHandler.java:560)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamage.passDamageEvent(ModDamage
    .java:465)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamageEntityListener.onEntityDam
    age(ModDamageEntityListener.java:20)
            at org.bukkit.plugin.java.JavaPluginLoader$51.execute(JavaPluginLoader.j
    ava:598)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:310)
            at net.minecraft.server.EntityHuman.d(EntityHuman.java:531)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:861)
            at net.minecraft.server.Packet7UseEntity.a(SourceFile:33)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:75)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:399)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:309)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    09:42:21 [SEVERE] Could not pass event ENTITY_DAMAGE to ModDamage
    java.lang.NullPointerException
            at java.util.ArrayDeque.addLast(Unknown Source)
            at java.util.ArrayDeque.add(Unknown Source)
            at com.nijiko.permissions.Entry.getAncestors(Entry.java:261)
            at com.nijiko.permissions.ModularControl.getGroups(ModularControl.java:6
    29)
            at com.KoryuObihiro.bukkit.ModDamage.Handling.WorldHandler.calcDefenseBu
    ff(WorldHandler.java:527)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamage.passDamageEvent(ModDamage
    .java:438)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamageEntityListener.onEntityDam
    age(ModDamageEntityListener.java:20)
            at org.bukkit.plugin.java.JavaPluginLoader$51.execute(JavaPluginLoader.j
    ava:598)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:310)
            at net.minecraft.server.EntityArrow.o_(EntityArrow.java:180)
            at net.minecraft.server.World.entityJoinedWorld(World.java:1114)
            at net.minecraft.server.WorldServer.entityJoinedWorld(WorldServer.java:6
    2)
            at net.minecraft.server.World.playerJoinedWorld(World.java:1096)
            at net.minecraft.server.World.cleanUp(World.java:1073)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:395)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:309)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    09:42:21 [SEVERE] Could not pass event ENTITY_DAMAGE to ModDamage
    java.lang.NullPointerException
            at java.util.ArrayDeque.addLast(Unknown Source)
            at java.util.ArrayDeque.add(Unknown Source)
            at com.nijiko.permissions.Entry.getAncestors(Entry.java:261)
            at com.nijiko.permissions.ModularControl.getGroups(ModularControl.java:6
    29)
            at com.KoryuObihiro.bukkit.ModDamage.Handling.WorldHandler.calcDefenseBu
    ff(WorldHandler.java:527)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamage.passDamageEvent(ModDamage
    .java:438)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamageEntityListener.onEntityDam
    age(ModDamageEntityListener.java:20)
            at org.bukkit.plugin.java.JavaPluginLoader$51.execute(JavaPluginLoader.j
    ava:598)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:310)
            at net.minecraft.server.EntityHuman.damageEntity(EntityHuman.java:419)
            at net.minecraft.server.EntityPlayer.damageEntity(EntityPlayer.java:184)
    
            at net.minecraft.server.EntityArrow.o_(EntityArrow.java:183)
            at net.minecraft.server.World.entityJoinedWorld(World.java:1114)
            at net.minecraft.server.WorldServer.entityJoinedWorld(WorldServer.java:6
    2)
            at net.minecraft.server.World.playerJoinedWorld(World.java:1096)
            at net.minecraft.server.World.cleanUp(World.java:1073)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:395)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:309)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    09:42:27 [SEVERE] Could not pass event ENTITY_DAMAGE to ModDamage
    java.lang.NullPointerException
            at java.util.ArrayDeque.addLast(Unknown Source)
            at java.util.ArrayDeque.add(Unknown Source)
            at com.nijiko.permissions.Entry.getAncestors(Entry.java:261)
            at com.nijiko.permissions.ModularControl.getGroups(ModularControl.java:6
    29)
            at com.KoryuObihiro.bukkit.ModDamage.Handling.WorldHandler.calcAttackBuf
    f(WorldHandler.java:560)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamage.passDamageEvent(ModDamage
    .java:465)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamageEntityListener.onEntityDam
    age(ModDamageEntityListener.java:20)
            at org.bukkit.plugin.java.JavaPluginLoader$51.execute(JavaPluginLoader.j
    ava:598)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:310)
            at net.minecraft.server.EntityHuman.d(EntityHuman.java:531)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:861)
            at net.minecraft.server.Packet7UseEntity.a(SourceFile:33)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:75)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:399)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:309)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    09:42:29 [INFO] [world2]<DJfunkymuffinz> go to my house
    09:42:37 [INFO] [world2]<Jedi_Meatball> im busy i cant srry
    09:42:41 [INFO] [world2]<ScarabUser> this is creeper busters :D
    09:42:42 [SEVERE] Could not pass event ENTITY_DAMAGE to ModDamage
    java.lang.NullPointerException
            at java.util.ArrayDeque.addLast(Unknown Source)
            at java.util.ArrayDeque.add(Unknown Source)
            at com.nijiko.permissions.Entry.getAncestors(Entry.java:261)
            at com.nijiko.permissions.ModularControl.getGroups(ModularControl.java:6
    29)
            at com.KoryuObihiro.bukkit.ModDamage.Handling.WorldHandler.calcAttackBuf
    f(WorldHandler.java:560)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamage.passDamageEvent(ModDamage
    .java:465)
            at com.KoryuObihiro.bukkit.ModDamage.ModDamageEntityListener.onEntityDam
    age(ModDamageEntityListener.java:20)
            at org.bukkit.plugin.java.JavaPluginLoader$51.execute(JavaPluginLoader.j
    ava:598)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:310)
            at net.minecraft.server.EntityHuman.d(EntityHuman.java:531)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:861)
            at net.minecraft.server.Packet7UseEntity.a(SourceFile:33)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:75)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:399)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:309)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    09:42:57 [INFO] [world2]<DJfunkymuffinz> Oh why did you want to know where I was
     then?
    >
    config
    Code:
    debugging: quiet  # "quiet", "normal", and "verbose", for the differing stages a tinkerer will need for
                      #   comfortable console use with this plugin:
                      #   quiet - represses all but critical console outputs - no reload/startup spam.
                      #   normal - Prints recognized configuration elements to the console
                      #   verbose - For those who like wading through a lot of text to find a
                      #       frustratingly useless amount of information. Only use this if you're afraid of wikis,
                      #       are a tester, or just don't want to talk to the dev.
    
    disableDefaultDamage: false # When true, add some simplicity to your calculations by disabling the default damage
                                #   This effectively makes all event damage zero when it is passed, so
                                #   don't forget to define your damage nodes if you set this to false.
    
    disableDefaultHealth: false # When true, only mobs with defined MobHealth nodes will spawn.
    
    negativeHeal: false         # When true, negative damage results will heal the target
    
    ##########################################
    # Damage modification config reference
    ##########################################
    #
    # ALL damage modification strings are LEAF NODES. For example:
    # branch:
    #     - 'leaf'
    #     - 'leaf'
    #     - 'leaf'
    #     - 'leaf'
    #
    #  Simple damage buff: add a value to the damage event
    #
    #  - '#value'
    #
    #   ex., - '3' adds 3 to the specified buff
    #
    #---------------------------------------------
    #
    #  Damage setting: set event damage to a specified amount
    #
    #  - 'set.#value'
    #
    #   ex., - 'set.15' sets the event damage to 15, regardless of the event's previous damage value
    #
    #---------------------------------------------
    #
    #  Binomial (on/off) calculation: #value percent chance of executing $function,
    #   or in the case that $function is not defined, has #value percent chance of "hitting".
    #
    #   NOTE: You cannot use another binom function for this.
    #
    #  - 'binom.#chance[*($function)]'
    #
    #   ex., - 'binom.68' means that 68 out of 100 times the current damage count will NOT be set to 0
    #        - 'binom.69*3' means a 69% chance of applying a value of 3 to the specified buff
    #
    #---------------------------------------------
    #
    #  Attack roll calculation: Equal chance for all integer values < input
    #
    #  - 'roll[.#value]'
    #
    #   ex., - 'roll' for a current damage count of 15 gives equal chances of 0, 1, 2, 3, 4, ... 15
    #        - 'roll.4' means 20% chance for "rolling" to add a value of 0, 1, 2, 3, or 4
    #        - 'roll.6' means 1/7 chance for "rolling" to add a value of 0, 1, 2, 3, 4, 5, or 6
    #
    #---------------------------------------------
    #
    #  Simple multiplication of accumulated damage
    #
    #  - 'mult.#factor'
    #
    #   ex., - 'mult.3' at a point where the damage is 3 means the result is 6
    #
    #---------------------------------------------
    #
    #  Simple division of accumulated damage
    #
    #  - 'div.#factor'
    #
    #   ex., - 'div.3' at a point where the damage is 27 means the result is 9
    #
    #---------------------------------------------
    #
    #  Divide and add to total damage
    #
    #  - 'div_add.#factor'
    #
    #   ex., - 'div_add.4' for 12 would be (12 + 12/4) = 15
    #
    #---------------------------------------------
    Offensive:
        world:  # This should be the name of the world you want to configure - NOT "worldName",
                    #   unless...that's the name. :P
            global: # settings applied regardless of group
                generic:
                    animal:
                    humans:
                    melee:
                    ranged:
                    armor: # Applied whenever...something...is equipped
                    mob:
                    ranged:
                animal:
                    Chicken:
                    Cow:
                    Pig:
                    Sheep:
                    Wolf:
                melee:
                    axe:
                    hoe:
                    pickaxe:
                    spade:
                    sword:
                    BUKKIT_ITEMNAME:
                ranged:
                    bow:
                    egg:
                    snowball:
                armor:
                    EXAMPLE_HELMET.EXAMPLE_LEGGINGS: # Order of equipment doesn't matter - just **no duplicate slots.**
                    EXAMPLE_LEGGINGS.EXAMPLE_CHESTPLATE:
                mob:
                    Creeper:
                        - '20'
                    Ghast:
                        - '20'
                    Giant:
                        - '20'
                    Skeleton:
                        - '20'
                    Slime:
                        - '20'
                    Spider:
                        - '20'
                    Zombie:
                        - '20'
                    ZombiePigman:
                        - '20'
                nature:
                    blockexplosion:
                    burn:
                    cactus:
                    explosion:
                    fall:
                    fire:           # "fire" is exposure to a fire or lava block, "burn" is damage taken
                                    #   after you survive that exposure
                    lava:
                    lightning:
                    suffocation:
                    void:           # "void" is damage from falling through the world
            groups:
                groupname:          # MUST match up with the name in Permissions
                    generic:        # This pretty much follows the global configuration, so specific
                                 #   nodes have been omitted here in favor of readability.
                    animal:
                    melee:
                    ranged:
                    armor:
                    mob:
                    nature:
                    groups:         # this changes PvP damage so group relationships are possible
                        groupname2: # Again, this needs to be a valid group in Permissions
        world1:
            global: # settings applied regardless of group
                melee:
                    axe:
                    sword:
                ranged:
                    bow:
                mob:
                    Creeper:
                        - '1'
                    Ghast:
                        - '1'
                    Giant:
                        - '1'
                    Skeleton:
                        - '1'
                    Slime:
                        - '1'
                    Spider:
                        - '1'
                    Zombie:
                        - '1'
                    ZombiePigman:
                        - '1'
        world2:
            global: # settings applied regardless of group
                melee:
                    axe:
                    sword:
                ranged:
                    bow:
                mob:
                    Creeper:
                        - '5'
                    Ghast:
                        - '5'
                    Giant:
                        - '5'
                    Skeleton:
                        - '5'
                    Slime:
                        - '5'
                    Spider:
                        - '5'
                    Zombie:
                        - '5'
                    ZombiePigman:
                        - '5'
    
    Defensive:
        world:
            global:
                generic:
        # Same format as the Offensive node...except since the world can't take damage
        # you probably don't want to clutter up things with a global "nature" node.
    
    #############################
    # MobHealth config reference
    #
    #    In contrast to damage modification, there is only ONE MobHealth
    #    definition string permitted, and that is as a property of the tree node
    #    in config. For example:
    #
    #    $mobname: 'range.14.2'
    #
    #    Leaf nodes will only get ignored.
    #    *Remember*, 200 is the max for any given mob health.
    #
    #---------------------------------
    #
    #  Integer setting: use an integer to always set a spawned mob's health to #value
    #   ex., $mobname: '3'
    #
    #---------------------------------
    #
    #  Simple range equation (base - range) <= health on spawn <= (base + range)
    #
    #  - 'range.#base.#range'
    #
    #    ex., $mobname: 'range.64.14' means 50 <= mob health on spawn <= 78
    #
    #---------------------------------
    #
    #  Interval-based range equation (base - (interval * factor)) <= health on spawn <= (base + (interval * factor))
    #   ...where factor is calculated in a similar fashion to the Attack Roll in DamageCalculator.
    #
    #  - 'range_int.#base.#interval.#range'
    #
    #    ex., possible outputs for - 'range_int.12.2.3' would be 6, 8, 10, 12, 14, 16, 18.
    #---------------------------------
    
    MobHealth:
        world:
            Chicken: '12'
            Creeper: '30'
            Cow: '12'
            Ghast: '50'
            Giant: '50'
            Pig: '12'
            Sheep: '12'
            Skeleton: '50'
            Slime: '12'
            Spider: '50'
            Wolf: '50'
            Zombie: '50'
            ZombiePigman: '50'
        world1:
            Chicken: '4'
            Creeper: '10'
            Cow: '4'
            Ghast: '15'
            Giant: '15'
            Pig: '4'
            Sheep: '4'
            Skeleton: '15'
            Slime: '4'
            Spider: '15'
            Wolf: '15'
            Zombie: '15'
            ZombiePigman: '15'
        world2:
            Chicken: '8'
            Creeper: '20'
            Cow: '8'
            Ghast: '25'
            Giant: '25'
            Pig: '8'
            Sheep: '8'
            Skeleton: '25'
            Slime: '8'
            Spider: '25'
            Wolf: '25'
            Zombie: '25'
            ZombiePigman: '25'
    
    Scan:
        world:
            global:
                - 'sword'
            groups:
                Default:
                    - 'sword'
        worldName2:
    And btw, how do you make spoilers to hide code?
     
  4. Offline

    KoryuObihiro

    Something like:
    Code:
    "[spoiler=Code]"
    some text
    "[/spoiler]"
    
    That's a Permissions error I'm rather familiar with...it's thrown because ModDamage is trying to find a player group and not getting anything. This SHOULD be fixed in 0.9.3 - are you using the latest version?
     
  5. Offline

    tassox33

    Was on .92 sorry
     
  6. Offline

    KoryuObihiro

  7. Offline

    cholo71796

    I was told that this plugin makes a lot of checks every time someone left clicks. Thought I'd ask here for confirmation.
     
  8. Offline

    KoryuObihiro

    @cholo71796 o_o Uh...well, if you could be so kind as to point me in the right direction...**gets out his ragehammer**

    Every time somebody left clicks? No. It only does checks which I hope are quite fast when a damage event is thrown.

    In the meantime, if somebody has a gripe about MD slowing down their machine, I'd be happy to understand why - making things faster is always good.
     
  9. Offline

    cholo71796

    Yeah, I logged onto some guy's server and he had banned diamond swords, so I suggested this plugin to him and he threw some rage fit about lag and extra plugins. I just left the server haha. Plugin works fine on my server.
     
    KoryuObihiro likes this.
  10. Offline

    slimpyman

    lookin forward to 860 build of this :)
     
    KoryuObihiro likes this.
  11. Offline

    KoryuObihiro

    @slimpyman Technically there's no API breaks, so 0.9.3 should work fine with RB 860.
     
  12. Offline

    KoryuObihiro

    Update for everyone: ModDamage 0.9.4 has been pushed back for an indefinite period, because I have decided to briefly halt development of ingame commands in favor of a restructuring the damage/spawning calculation storage algorithms - the goal is to optimize calculation time further by allocating calculation objects for each node as opposed to interpreting the configuration string again and again for every instruction.

    In plain English, I'm making some major changes that should make things a bit speedier fricking fast and eventually more customizable. :D See the issue tracker for more info!
     
    embty likes this.
  13. Offline

    Flenix

    UPDATE: This plugin now uses Permissions 3.1 and above. If you have a Permissions-related issue please make sure your Permissions setup is up-to-date.


    Could you add support for the older Permissions? a lot of plugins don't even work with 3+ yet so a lot of admins can't/wont update to it yet.
    (Its annoying because 3+ looks really good...)
    If not, which older versions work with it? I'll just use one of those :)
     
  14. Offline

    KoryuObihiro

    Hmm....shouldn't be hard. I hadn't considered that - I'm just bent on making support issues as painless as possible. Wish granted. 0.9.4 shall have backwards-compatibility. :)
     
    Flenix likes this.
  15. Offline

    sagethor

    @KoryuObihiro

    Is this compatible with mcMMO? Just wondering, since I want to make enemies distinctively tougher, with more health and damage the more powerful the mob is (considered by me that is).

    Thanks! Great plugin by the looks of it.
     
  16. Offline

    KoryuObihiro

    :)

    Well, let me examine McMMO for a second here...

    I don't see anything that could cause an issue. Wanna give it a shot, tell me how it works?
     
  17. Offline

    sagethor

    Hm. Will do. I'm redoing a server with around thirty-five plugins, and mcMMO's one of them.

    Thanks for the speedy response. :)

    EDIT - Oh, and will it work with Giants?
     
  18. Offline

    KoryuObihiro

    @sagethor Definitely. However, realize that Giants are already at the maximum mob health when they spawn by default - 200 health, or 100 hearts. Anything over that results in a Bukkit error right now. :(
     
  19. Offline

    KoryuObihiro

    Okay, so, now that I'm in the testing phase of 0.9.4, I'd like to invite everybody to throw any input they may have for "conditional" ideas they may have, in addition to any other input they feel they should offer.

    What are "conditionals", you may ask?

    Conditionals are calculations based off of information that can be used from within the game. They are intended to provide the final layers of complexity ModDamage will have, and will be quite the addition to the configurability I had hoped to originally hoped to achieve when I started coding this plugin.

    Tl;dr folks, conditionals follow this basic format:
    Code:
    - 'if.$subject.$comparisonType.[#comparisonValue]*some_calculation'
    
    It looks a bit messy, but a simple demonstration shows that in practice this should be relatively easy to read. For instance:

    Code:
    - 'if.targetis.onfire*set.20'
    - 'if.attackerHealth.lessthanequals.10*2'
    
    Seems pretty self-explanatory: the first says "If the defender's on fire, then add a crapton of damage (10 hearts)." The second is also easy enough, if one remembers previous ModDamage versions - "If the attacker's health is less than or equal to 5 hearts, then add 1 heart's worth of damage."

    Applying this directly, one could do something interesting like:
    Code:
    #Sample ModDamage config
    Offensive:
        Las_Vegas:                        #This is...err...a world name. :P
            groups:
               Gamblers:                   #"We own the streets at night."
                    groups:
                        BlueCollars:
                            - 'if.worldtime.13701.22200*binom.20*mult.3*-2'
    
    This one isn't hard to understand either, once one realizes that the time range 13701-22200 is nighttime. Literally, members of group Gamblers have a 20% chance of inflicting (3*original)-2 damage to members of group BlueCollars.

    Can anyone else see the potential here? I know I'm not going to think of all of the good ideas, so I ask now, before I push another release soon.

    Alright, made some massive progress on the feature creep with some help from @ricochet1k - will post details tomorrow.

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

    KoryuObihiro

    Well...now that "tomorrow" is here, I'll give everybody a little update as to why 0.9.4 is taking so long.

    ModDamage 0.9.3 did what it needed to, and no more - there wasn't a lot of easy extensibility in mind as it was coded, and when I'm not working and/or sleep-deprived a majority of my time is being spent massively restructuring that code so future ideas are very easy to implement.

    What caused most of this upheaval was implementation of conditionals - which should make this plugin even more insanely customizable. I've made a complete list of conditionals that have been coded below, and am completely open to suggestion as to what to add:
    Notes (open)

    • <comparison> - can be substituted with one of the following:
      • "equals"
      • "notequals"
      • "lessthan
      • "lessthanequals"
      • "greaterthan"
      • "greaterthanequals"
    • All conditionals can either use "if" or "if_not". :D
    • Entity conditionals can be geared towards the attacker, or the target.

    Damage Conditionals (open)

    Event evaluations:
    1. Binomial has been changed to act as a conditional.
    2. Damage<comparison> - evaluates current event damage.
    Entity evaluations:
    1. EntityAltitude<comparison> - evaluates y-coordinate of an entity
    2. EntityBiome (input: Biome) - what do you think?
    3. EntityDrowning - returns true when an entity has no AirTicks left
    4. EntityExposedToSky - open to tweaking right now, just returns false if there are obstructions to the highest block.
    5. EntityFallen (input: int #value) - returns true if an entity has fallen at least as many blocks as #value
    6. EntityHealth<comparison> (input: int #value) - what do you think?
    7. EntityLightLevel<comparison>(input: int #value) - what do you think?
    8. EntityOnBlock (input: Material name) - returns true if entity is resting on a matching block type.
    9. EntityOnFire - returns true when entity's FireTicks > 0
    10. EntityTargetedByOther - Returns true when the other entity has targeted the defined entity.
    11. EntityUnderwater - Returns true when head and feet are in a water block.
    World conditionals:
    1. WorldEnvironment (input: Environment) - what do you think?
    2. WorldTime (input: int #startTime, int #endTime) - what do you think?
    Server conditionals:
    • Yet to write anything, but it'd be fairly easy to make evaluations based upon server settings...not sure why you'd want to, though.

    Conditionals that are planned, but not coded yet:
    Planned conditionals (open)

    1. EntityIsWearing - checks whether they are wearing a single bit of equipment.
    2. EntityWearingOnly - checks an entire armor set (i.e., GOLD_LEGGINGS is NOT the same as GOLD_HELMET, GOLD_LEGGINGS)
    3. EntityIsWielding - checks the material held by attacker or target. Will use the tool aliasing already in place in MD for this. :D

    Also, MobHealth will be changed so that conditionals can be used too. :D
    Spawn/MobHealth Conditionals (open)

    Event evaluations:
    1. Binomial has been changed here too.
    Entity evaluations:
    1. EntityAltitude<comparison>
    2. EntityBiome (input: Biome)
    3. EntityExposedToSky
    4. EntityLightLevel<comparison> (input: int #value)
    5. EntityOnBlock (input: Material name)
    6. EntityUnderwater
    World conditionals:
    1. WorldEnvironment (input: Environment)
    2. WorldTime (input: int #startTime, int #endTime)
    Server conditionals:
    • Again...planned, but no real motivation right now. :p

    Since the object access requirements for these conditionals also let us mess with stuff, I've also coded some "effect"-type calculations (which, again, can be applied to the target or attacker). These can also use nesting for insane configurability, but is not necessary. More details:
    Effects (open)

    1. EntityExplode (input: int #power)
    2. EntityHeal
    3. EntityReflect (Think "thorn" mail - it reflects some damage back to the attacker which you can calculate.)
    4. EntitySetAirTicks - changes the amount of air an entity has left.
    5. EntitySetFireTicks - changes the burn duration left on an entity.
    These can be configured with nesting by simply formatting it as a conditional. See example below.

    You may have noticed that there are "server" conditionals - this is because I also plan on implementing server-global calculations, as per the idea @nsko gave me.

    Now, an example with conditionals/effects should look something like this:
    Code:
    #Sample config...with conditionals!
    Offensive:
        global:
        worlds:  # Note the structural changes, as server globals will have been implemented.
            worldName:
                global:
                    ranged:
                        egg:       #Let's make these volatile. :P
                            - 'if.binom.40':
                                - 'targeteffect.explode.5'   #In essence...we have a 40% chance to make the egg asplode. :D
                groups:
                    FlameSwordWielders:
                        melee:
                            sword:
                                - 'targeteffect.setFireTicks':
                                    - 'roll.9001'         #Over 9000 fire ticks.
        groups:
            FlameSwordWielders:
                generic:
                    melee:
                        - 'if.attackeris.onfire':     #Buff these guys up when they're on fire!
                            - '4'
    Defensive:
        groups:
            FlameSwordWielders:
                generic:
                    melee:
                        - 'if.targetis.onfire':     #Make 'em harder to kill server-wide.
                            - '-2'
    
    @Rpa;otj @Brvtvs @sagethor @Kainzo @Deolin

    What do you guys think?

    Also...has anybody else tested this on 935? Is everything working okay?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 15, 2016
    embty likes this.
  21. Offline

    sagethor

    @KoryuObihiro
    Sounds like I'll be debating for days what to set values at in the config file and such. As with OtherBlocks. Both of these plugins have a vast number of possibilities.

    In short: Damn. You had to add so much customization that I just can't choose.:p
     
  22. Offline

    KoryuObihiro

    @sagethor With "mob" and "animal" handlers to complement the "groups" nodes, I think this thing's gonna be pretty fricking comprehensive. :p
     
  23. Offline

    KoryuObihiro

    Okay, everyone! 0.9.4 is officially in the testing phase.

    If there's anybody out there who wants to check out the yet-to-be-posted changelog and new configuration reference page...g'head and click. :p

    I'm also open to anybody who'd like to help me test this, as there's a lot of ground to cover with all this new refactoring - I'll post the indev JAR tomorrow, after I document the calculation syntax for the crazy number of new calculation strings.

    Anybody who wants to post ideas or suggestions is also encouraged to do so! Implementing new stuff should be a snap now, and relatively easy to test.
     
  24. Offline

    embty

    Oh my still looks complicated for a noob like me :( lol
     
  25. Offline

    kahlilnc

    Critical hits?
     
  26. Offline

    KoryuObihiro

    @kahlilnc You mean...something like...
    Code:
    Offensive:
        global:
            generic:
                humans:
                    - 'binom.10':
                        - 'mult.2'
    
    ...?

    Essentially...all players have a 10% chance of dealing double damage.

    Okay, everyone. Here's the link for a test build for 0.9.4, which I hope doesn't need any fixing and can progress straight to release when Bukkit for MC 1.7 is declared stable. Remember, I am making no claims as to whether this build is actually stable either, but I'm sure enough to post this, aren't I?

    REMEMBER: 0.9.4 BREAKS PREVIOUS CONFIGURATIONS. SEE THE LINKS BELOW FOR MORE INFORMATION.

    Those interested in testing may may want to review the in-progress config reference, tutorial page, and changelog (which can only be found in those locations right now!) so that you can actually make configurations for the new stuff.

    I'm not going to be available all weekend, so I'm crossing my fingers and hoping I stomped most of the bugs that I might have made with the refactoring. @ricochet1k will be picking up the slack as I take this time away from the computer. He's a collaborator in Github, so he should be able to fix any minor problems in MD that you guys encounter as well as explain my hastily-written documentation. Have fun!

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 15, 2016
    kahlilnc likes this.
  27. Offline

    ricochet1k

    And lucky me, I found some bugs! Issues with running on Linux, attackerEffect/targetEffect and exploding have been fixed. Luckily none of you have encountered any of them yet! I generated a new jar, which is available at the link posted above.

    So yeah, let me know if you guys have any trouble and I'll do my best to figure out what's going on.
     
  28. Offline

    NeonJ

    This is.. complex.

    Would it be possible to do these with the plugin..? I don't understand this at all...

    > Make player damage back to the original 1/2, not 1. [and affect all items it also affected, so everything deals 1/2 less]
    > Make certain mobs have more health [this bit I understood and know it's correct].
     
  29. Offline

    ricochet1k

    IIRC, you actually have 20 health normally, 2 for each heart. You could put a - 'div.2' item inside the Defensive.global.generic.human tree, which should, as I understand it, divide all damage taken by players by two. Or you can attach it to a world or group if you don't want it to be global.
    Yes, just put - 50 or whatever you want inside the MobHealth tree under the mob who's health you want to change.
     
  30. Offline

    NeonJ

    I didn't say that damage TAKEN by players should by 0.5, I said that damage DEALT by players should go back to 0.5. Listen >_>
     
  31. Offline

    Rpa;otj

    Really happy that the new build will have thornmail, glad you accepted some of the suggestions and really excited now more than ever!

    Also, on .9.3 I just started getting this error a few minutes ago...I have no changed anything at all since the day after we last spoke! This is the last thing in my log before the server crashed:

    2011-07-02 16:48:33 [SEVERE] Could not pass event ENTITY_DAMAGE to ModDamage
    java.lang.NoSuchMethodError: org.bukkit.event.entity.EntityDamageByProjectileEvent.getProjectile()Lorg/bukkit/entity/Entity;
    at com.KoryuObihiro.bukkit.ModDamage.ModDamage.passDamageEvent(ModDamage.java:441)
    at com.KoryuObihiro.bukkit.ModDamage.ModDamageEntityListener.onEntityDamage(ModDamageEntityListener.java:21)
    at org.bukkit.plugin.java.JavaPluginLoader$55.execute(JavaPluginLoader.java:628)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:321)
    at net.minecraft.server.EntityArrow.m_(EntityArrow.java:178)
    at net.minecraft.server.World.entityJoinedWorld(World.java:1190)
    at net.minecraft.server.WorldServer.entityJoinedWorld(WorldServer.java:48)
    at net.minecraft.server.World.playerJoinedWorld(World.java:1172)
    at net.minecraft.server.World.cleanUp(World.java:1102)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:447)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:361)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)


    *EDIT* I have now disabled my Scout(archer) class completely on my server because this appears in the log constantly along with a server crash. Not a huge huge deal to me but my Scout players are angry at me right now :(
     

Share This Page