Skip to content
This repository has been archived by the owner on Apr 3, 2024. It is now read-only.

Changelog

revcompgeek edited this page Dec 27, 2011 · 29 revisions

0.9.6

There are some breaking changes with this release - the ones that will immediately break configs are highlighted in bold. However, it is still strongly recommended you read all of these changes, so that you understand how ModDamage has changed.

  • Fixes

    • Fixed debug setting changes re-emitting the YAML, and causing users to lose their configuration formatting.

    • Fixed the Hurt calculation causing "unknown" deaths - if you still with to use this, refer to the Unknown Hurt Calculation.

    • Improved instruction caching speed by over 20%! :D

    • (Hopefully) fixed the myriad problems with Permissions that many servers keep having.

  • Changes

    • Value-changing routines have had their articles merged, and had some behavioral changes that will NOT actually break configs, but may have unexpected results. See the wiki page for more details.

    • Switches now use YAML "list" notation for their cases - that is, you use dashes now. This is so you can have routines with the same names - you'd want this in particular for the Weighted Switch

    • The default routines for numbers have been changed in the spirit of syntactic sugar. When you use straight-up numbers in your config, keep the following in mind:

      • Numbers without a sign, i.e., "20", "9001", "target.health", are assumed to be SET routines. You can still explicitly make it so as with old configurations, by denoting with "set.#number".

      • Numbers that ARE signed are assumed to be addition operations, i.e., "-2", "+5", "-(target.health / 5)".

    • Values are now copied into the Calculation nests (this includes the Calculate routine). This is so that damage can be used to potentially factor into, say explosion size.

    • The Range routines have been changed from value-setting to additive - this may cause some confusion for people upgrading to 0.9.6. The most simple solution to fix this is to use the Set routine, akin to "- 'set': 'range.13.18'".

    • The Binom routine has been renamed to "Chance", for semantic reasons. Usage is exactly the same as before: "- 'chance.30': 'set.0' # Has a 30% chance to set the value to 0."

    • For the sake of simplicity in future updates, basic status conditional routines have been changed back to $entity.is$status.

    • "Item" aliases are now "Material" aliases. This is because of the new ItemStack routines - see below.

  • New features:

    • Implemented Type name overrides in the form of TypeName aliases. See FAQ: How do I override these ugly Type names?

    • Updated with the Bukkit 1.0 API. This includes the following:

      • Entity types:

        • VILLAGER as a subtype of NPC

        • BLAZE

        • ENDERDRAGON

        • MUSHROOM_COW

      • Projectile types:

        • FIREBALL_SMALL as a subtype of FIREBALL

        • POTION

    • Config logging:

      • All messages are now stored and filtered upon output to console or ingame, so now you don't have to reload to check your configuration with, say, verbose debugging if you originally loaded your configuration on normal.

      • Diversified ingame check colors a bit so that it's easier to determine the nature of the message. See the updated first tutorial for more details.

    • Plugin integrations:

    • Miscellaneous new routines:

    • Aliasing:

      • Condition - only accepts a single line, obviously.

      • Region - attempts to validate with regional plugins.

      • Routine - this is essentially an injection of routines. Treat their usage as if you were pasting the aliased routines in.

    • Dynamic integer references! This brings several new features to the table, listed below. For a complete reference to valid integer properties, see this page

      • Deprecation of the hardcoded comparison routines in favor of a single one that uses the new integer references. Some examples:

        • target_health.lessthan.attacker_health

        • (target_y.greaterthanequals.attacker_y)*

        • - 'if (target_health - event_value).lessthanequals.0': 'set.(1 - target_health)'

      • Now you can use these in Message routines! Simply encapsulate entity references or routine aliases in percentage signs to use this. For instance:

        • - 'message.attacker.You did %event_value% damage! Target now has &0%(target_health - event_value)%&f health left!
    • Events:

      • Tame

      • ProjectileHit

    • Projectile entity reference (in addition to currently existing "attacker" and "target") - this deprecates the 'event.rangedelement' routine, and has been replaced with a Projectile reference Type check (i.e., projectile.type.arrow)

    • Message routines have had a massive upgrade! Now you can use dynamic variables, strings, and colors to greatly speed along debugging and perhaps even use for RPG-type messaging. See the Message routine for more details.

    • Short-circuit evaluation has been integrated into logical operations. This is best explained here.

    • Parenthetical nesting for new arithmetic expressions and conditional statements! An example of usage would be like below. Keep in mind that there is no order of operations for arithmetic statements currently, and that at least one space between operators and terms is absolutely necessary.

Aliases:
    Routine:
        getfour:
            - 'set.-(-4) * (-1 / -1)'
Damage:
    - 'if attacker.haspermission.admin.rage and (attacker.wielding.GOLD_SWORD or attacker.wielding.DIAMOND_SWORD or 
target.health.lessthan(attacker.health * 2))':
        - 'mult.2'
        - 'message.attacker':
            - '%attacker_name%'
            - '2 * 2 = %(2 * 2)%'
            - '3 / (9 * 2) + 2 - ((3 - 3) ^ 1) + 2 = %(3 / (9 * 2) + 2 - ((3 - 3) ^ 1) + 2)%'
            - '%((target_health - target_health) - (target_health - target_health))%'
* Implemented the tagging system! Tagging is a way to store information about entities outside of a single event, and for long configs like in the [[Hall of Fame|ModDamage Hall of Fame]] could be useful for reducing conditional lookups too. 

See the FAQ for a detailed tutorial on how to use tagging. Be advised that while this is stable from the standpoint of intermediate testing, it has not been tested for large server situations - feedback on the usage of this feature is appreciated!

* Created the [[Knockback routine|Parameterized: Knockback]]

0.9.5

Changes:

  • For what should be the last time, major syntax changes have occurred in MD. Gone now are the strange nodes - ModDamage is now entirely conditionally driven. The new configuration scheme is like follows:
Event:
    - SOME.ROUTINE
    - PERHAPS.A.CONDITIONAL:
        - SOME.ROUTINE
    - EVEN.A.SWITCH:
        FIRSTCASE:
        SECONDCASE:
        ANOTHERCASE:

These routines are run every time the relevant event is fired - conditional evaluations are now necessary for situational dynamics.

  • Modified $entity$op syntax in conditionals to be split with a period - syntax reference has been updated accordingly in the tuts and reference on the wiki

  • Renamed "MobHealth" to "Spawn".

Fixes:

  • Fixed events throwing NPEs when Permissions was not present. Oops.

  • Fixed EntitySetOnFireTicks routine not working.

  • Fixed EntityReflect (now renamed to EntityHurt) causing explosions, instead of hurting entities magically.

  • Changed EntityExposedToSky conditional to ignore more blocks. Current list:

    • Air

    • Torch

    • Ladder

    • Fire

    • Lever

    • Button

    • WallSign

    • Glass

  • Fixed ArmorSet comparisons to work as intended - I know there are some edge cases out there that suffered because of this. :(

  • Added an "empty" ArmorSet so it's possible to determine whether a player is wearing any piece of armor or not. This is literally the string "EMPTY", case-insensitive.

  • Removed the EntityTargetedByOther routine - this seemed a very limited-application routine.

  • Changed the Binom base routine to operate as a Conditional statement.

New features:

  • Overloaded the Set base routine to operate as a Calculation - this shouldn't break any old configs.

  • Added "switch" statements. Switch statements are the final step in effectively replacing the Offensive/Defensive paradigms and DET configuration with a more dynamic model that should be more intuitive and simple to use - see above and/or the wiki.

  • Drastically modified configuration reports ingame and on the console - characters are now counted for proper line output, and the entire configuration is essentially read back, including colored error/warning strings. Much more functional than the last config checking.

  • Tweaked Conditionals syntax - they can now use basic boolean operators, though operation is strictly linear. There are no plans for parenthetical encapsulation. See the new tutorial for more details!

  • Aliasing for the following:

    • Armor sets

    • Biomes

    • Entity types

    • Groups

    • Items

    • Message - see the Message routine for more details here.

    • Worlds

  • Added the following routines:

    • AddItem (Effect, aliasable)

    • DropItem (Effect, aliasable)

    • HasRangedElement (Conditional)

    • SetItem (Effect)

    • PlayerSleeping (Conditional)

    • PlayerSneaking (Conditional)

    • WorldEvaluation (Conditional, aliasable)

  • Added sub-elements for Spider: Spider_Jockey and Spider_Riderless.

  • Added Death and Food events. :D

  • Changed the Elements hierarchy to have a "Living" and "Nonliving" category - the former including mobs, animals, and humans, while the latter covers everything else.

  • The following were suggested by lucent (thanks!):

    • Added the "fishingrod" ranged damage element.

    • Added states for certain mobs (Slime size, Wolf angry/wild/tame, Creeper normal/charged, Human NPC/Player) - refer to wiki for more information.

    • Added EntityX and EntityZ comparisons - for consistency, EntityAltitude has been renamed to "EntityY".

  • The following were suggested by TheSquishyDitto. Thanks!:

    • Added the "trap" generic MD element and "dispenser" as a child element.

    • Changed configuration so that single-property configuration works in those cases you don't want to use another line.

  • The following were suggested by Ranzear - much obliged!

    • Added the EntitySpawn Calculation.

0.9.4

  • Made several types of nested calculations, which include the following:

    • Conditionals! These offer powerful ways to evaluate damage situations and has enormous potential for a robust override of Minecraft damage mechanics. See the wiki for more details, as there's simply too many to make mention here.

    • Effects - these do something that simple damage changing cannot. For instance, 'attackereffect.explode', or 'effect.reflect'. The reason these are nested is because there may be situations where person configuring may want something other than a static value for the effect input.

  • Fixed casing for item names - now you don't have to be anal about having everything capitalized for Bukkit, though personally I'd keep things that way so that it's easier to read your configuration.

  • Added "fist" and "other" nodes to the melee damage category - I'm still open to suggestion for classification here. :P

  • Implemented server-level globals - thanks to nsko for a great idea! It should be noted that this WILL break old configurations, in addition to the structural change made to the MobHealth node. The changes are small, but that's all it takes. Just move your world configurations from:

Offensive:
    world:
        someconfig:
            - 'some.config'
Defensive:
    world:
        someconfig:
            - 'some.config'
MobHealth:
    world:
        someconfig: 'some.config'
Scan:
    world:
        - 'SOME.CONFIG'

...to:

Offensive:
    worlds:
        world:
            someconfig:
                - 'some.config'
Defensive:
    worlds:
        world:
            someconfig:
                - 'some.config'
MobHealth:
    worlds:
        world:
            someconfig: 
                - 'some.config'   #TAKE NOTE OF THIS. MOBHEALTH CONFIGURATION HAS CHANGED.
Scan:
    worlds:
        world:
            - 'SOME.CONFIG'
  • Re-added the Permissions 2.x support, since I realize that 3.x can be a pain for some admins to deal with right now.

  • Modified some console output while loading so that it gives you more information.

  • Modified the "check" command so that it now displays configuration right off the top - use the last page(s) to check the load status of your worlds/groups!

0.9.3

  • Fixed addition and negativeHeal not working properly - thanks to Deolin for pointing this out!

  • Fixed nonliving entities throwing an NPE when they were damaged and passed to MD

  • Added chainmail to the armor generics list - thanks to embty for the suggestion!

  • Fixed some erroneous documentation for the armor set delimiter

  • Added some more "verbose" messages that should be more helpful when online support is not available

  • Cleaned up startup config output that can still be revealed with verbose debugging (default health/damage and negative healing)

  • Implemented the "check" command for the console - this will make "quiet" mode more viable

  • Added some Permissions checks that will send warnings to console if a player involved in a damage event hasn't been assigned to a group (instead of an ugly stacktrace)

  • Finished implementation of the "check" commands

  • Added the "enable" and "disable" commands

0.9.2

  • Fixed a nice fat NPE error getting thrown every time a mob spawned. Oops.

  • Finished the "/md reload" and the basic "/md check" commands

  • Documented the "/md debug" command.

  • Changed "range.#base.#range" to "range.#lower.#upper" - see config reference for more information. Thanks to Digi for his suggestion here!

0.9.1

  • Added an experimental noDamageTicks check that cancels the event if 40 ticks remain- not sure how this will affect other plugins yet.

  • Added armor sets (see wiki for more details)

  • Fixed PvP string fetching - PvP relationships should work now.

  • Changed "item" to be split into "ranged" and "melee" (this breaks configs that use "item"!), fixing the long-range exploit. However, long range still clashes when the target is struck, and the long-range item is still in hand, and a melee node is defined for it. This is because of a double-firing of the damage event that needs to be looked into.

  • Changed to Permissions 3.0. My only suggestion for adapting to this change is that the configuration be carefully considered if one plans on using multigroup.

0.9

  • Introduced ModDamage! Indev, though.
Clone this wiki locally