Information

Changes in 1.4.2

  • Breaking

    The objectives filter will now always automatically derive team ownership for the objective from context. To match an objective without any specific team, the any="true" attribute needs to be specified.


  • New

    Portals, kits, score boxes & structures can now be dynamically applied using dynamic filters. All region types are dynamic, however, only some filter types are dynamic.

    • Kits now have give, take & lend properties.
    • Portals have forward, reverse & transit properties.
    • Structures & score boxes have a trigger property.
  • New

    Added a player count filter.

  • New

    Added a <grounded/> filter to check if the player is standing on the ground.

  • New

    Added <match-started/>, <match-running/> & <match-finished/> filters that are used to check the state of the current match.

  • New

    New pre-match-physics attribute for the terrain module to enable physics events before the match starts.


Changes in 1.4.1

  • Breaking

    <random> filters now only respond to instantaneous events, and abstain when used in any persistent context. This breaks some uses that relied on undefined behavior, but these would likely break anyway as filters gain more dynamic functionality.


  • Change

    As of minecraft 1.9 TNT fuse time is no longer limited to 4 seconds.

  • Change

    Portals react to player move events allowing almost instant teleportation as soon as the filter matches.


  • New

    Added <observing> and <participant> filters. Also added an observers filter property to portals to restrict observer access.

  • New

    Added player rank and score filters. Filters return if the player's rank or score is within the specified range.
    Added a gliding filter, returns if the player is gliding with an elytra.

  • New

    Control points have new recovery and decay attributes that replace the incremental attribute and allow more control of the progress.


Changes in 1.4.0

  • Breaking

    Filters, regions, and kits now use id instead of name.
    Keep in mind that IDs are all in the same namespace, so you can not use the same ID for two different types of thing.

  • Breaking

    Teams have a id attribute and are always referenced by it everywhere in the XML, never by name.

  • Breaking

    Standalone filter definitions are no longer wrapped in a <filter> tag, they start with an actual filter, just like regions, e.g.

    <filters>
        <team id="only-red">red-team</team>
    </filters>
    
  • Breaking

    The region for an <apply> must be either a region attribute or a <region> sub-element. It cannot appear directly inside the <apply> tag.

  • Breaking

    Inline filters must always be a single tag, multiple tags are not accepted anywhere. To combine multiple filters, always use a compound filter like <all> or <any>. This change is retroactive, and affects all proto versions.

  • Breaking

    There is no longer a filter type called <block>, use <material> instead. <block> is always interpreted as a region.

  • Breaking

    The old built-in filters are gone, and there are only two new ones: always which is equivalent to allow-all, and never which is equivalent to deny-all.
    All of the new built-ins have equivalent tags of the same name i.e. <always/> & <never/>.

  • Breaking

    Filters can no longer have parents.

  • Breaking

    <allow> and <deny> can now be used anywhere a filter is expected, and actually function how they were supposed to i.e. they cause the filter to be ignored (skipped over) if it does not match.

  • Breaking

    Blitz or Ghost Squadron titles are no longer a part of the blitz module, instead they are set as a attribute of the <map> element and can be used with any gamemode.

  • Breaking

    Match time limit is no longer part of the <score> or <blitz> module, instead it is defined directly in the root element.

    <map proto="1.4.0">
    <time result="objectives">5m</time>
    
    <!-- Other modules. -->
    </map>
    

  • Change

    The top-level tags <filters> and <regions> are now the same thing. You can define filters, regions, and <apply>s in either one (remember that regions are a type of filter, have been for a while now).

  • Change

    Any filter tag anywhere can have an id attribute.

  • Change

    The <apply> tag accepts both references and inline definitions for its region, kit, and all of its filter properties, e.g. the two tags below are equivalent:

    <apply region="effect-pad" kit="effect-kit" filter="only-red" block="only-leaves" />
    
    <apply>
        <region>
            <cuboid min="1,2,3" max="4,5,6"/> <!-- effect-pad -->
        </region>
        <kit>
            <potion>...</potion> <!-- effect-kit -->
        </kit>
        <filter>
            <team>red-team</team>
        </filter>
        <block>
            <material>leaves</material>
        </block>
    </apply>
    
  • Change

    The safe and spread attributes of spawns can now be combined.

  • Change

    A items slot attribute is no longer required in kits. This attribute now also accepts Mojang slot names e.g. slot.hotbar.8 or armor.head.


  • New

    There is a new half-space region type that contains everything on one side of an arbitrary plane. The plane is defined by an origin point and a normal vector, and the region contains everything on the side of the plane that the normal is pointing towards. The example below defines a region with a diagonal boundary:

    <half origin="5,0,0" normal="1,1,0"/>
    
  • New

    Two new region types <above> and <below> can be used to conveniently define axis-aligned half-spaces:

    <above y="50"/>         <!-- everything above Y=50 -->
    <below x="0" z="0"/>    <!-- everything in the -X, -Z quadrant -->
    
  • New

    There are two built-in regions called everywhere and nowhere that contain all points and no points, respectively.
    All of the new built-ins have equivalent tags of the same name i.e. <everywhere/> & <nowhere/>.

  • New

    A team can have a minimum required size with the min="" attribute.

  • New

    Objectives have a required attribute that specifies if they are required to complete the match.

  • New

    A players gamemode can be changed by using the new <game-mode> </game-mode> kit.

  • New

    New world border module that can be used to create a shifting and/or auto resizing world border.

  • New

    Support added for block punch and trample <block-drops>.

  • New

    Custom item crafting recipe module.

  • New

    All items of a specific type can be modified for the whole match using the <item-mods> module.

  • New

    Teamless gamemodes with the <players/> module.

  • New

    Heads can be given to players in kits with the <head> element.

  • New

    Cause filters have several new possible values they can filter for.

  • New

    Added the <relation> filter to check the relation between two players.

  • New

    The world generator can be modified with the terrain module. This module allows the seed, void/vanilla generator, and world folder location to be specified.

  • New

    XML files can now contain conditional <if> and <unless> statements. These statements allow modules to be loaded on specific servers or during holiday events.

  • New

    The maps display gamemode can be specified with the <gamemode> element.

  • New

    Added a shield kit module that gives a player an absorption hearts recharging shield.

  • New

    Pickups module for location specific kit pickups.


  • Removed

    The <multitrade/> tag has been removed, it is now always enabled.


Changes in 1.3.6

  • Breaking

    Regions for cores, destroyables, wools, portals & score boxes must be defined in a <region> sub-element or referenced in a region attribute.

    <core>
        <region>
            <cuboid min="..." max="..."/>
        </region>
    </core>
    
    <core region="my-region"/>
    

    Similarly spawn regions must be defined in a <regions> sub-element or referenced in a regions attribute.

    <spawns>
        <spawn team="red">
            <regions yaw="90">
                <cuboid min="1,0,2" max="3,0,4"/>
                <cylinder base="7,8,9" radius="5" height="0"/>
            </regions>
        </spawn>
    </spawns>
    
  • Breaking

    Everything scores 0 points by default, this means you have to explicitly define <kills> and <deaths> in the score module if you want players to get points for killing players.

  • Breaking

    The <playable> region module has been removed, this should now be handled using filters.



Versions

Version Description
1.4.0 Filters/regions/teams are always referenced by ID
Disallow <time> inside <score> or <blitz> & disallow <title> inside <blitz>
Required objectives
1.3.6 Move all defining elements out of module xml root
Everything scores zero points by default
1.3.5 Filters know who owns TNT
1.3.4 Wools have a location property
1.3.3 Define how overlapping regions behave
1.3.2 Monument modes
1.3.1 Off-by-one region bug fixed.