Using anti-block glitch technology, you can now place Block 36 in areas where players are not permitted to place blocks and it will automatically prevent block glitching.
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.
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.
Added a player count filter.
<grounded/> filter to check if the player is standing on the ground.
<match-finished/> filters that are used to check the state of the current match.
pre-match-physics attribute for the terrain module to enable physics events before the match starts.
<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.
As of minecraft 1.9 TNT fuse time is no longer limited to 4 seconds.
Portals react to player move events allowing almost instant teleportation as soon as the filter matches.
<participant> filters. Also added an
observers filter property to portals to restrict observer access.
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.
Control points have new
decay attributes that replace the
incremental attribute and allow more control of the progress.
Filters, regions, and kits now use
id instead of
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.
Teams have a
id attribute and are always referenced by it everywhere in the XML, never by name.
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>
The region for an
<apply> must be either a
region attribute or a
It cannot appear directly inside the
Inline filters must always be a single tag, multiple tags are not accepted anywhere.
To combine multiple filters, always use a compound filter like
This change is retroactive, and affects all proto versions.
There is no longer a filter type called
<block> is always interpreted as a region.
The old built-in filters are gone, and there are only two new ones:
always which is equivalent to
never which is equivalent to
All of the new built-ins have equivalent tags of the same name i.e.
Filters can no longer have parents.
<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.
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.
Match time limit is no longer part of the
<blitz> module, instead it is defined directly in the root
<map proto="1.4.0"> <time result="objectives">5m</time> <!-- Other modules. --> </map>
The top-level tags
<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).
Any filter tag anywhere can have an
<apply> tag accepts both references and inline definitions for its
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>
spread attributes of spawns can now be combined.
A items slot attribute is no longer required in kits.
This attribute now also accepts Mojang slot names e.g.
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"/>
Two new region types
<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 -->
There are two built-in regions called
nowhere that contain all points and no points, respectively.
All of the new built-ins have equivalent tags of the same name i.e.
A team can have a minimum required size with the
Objectives have a
required attribute that specifies if they are required to complete the match.
A players gamemode can be changed by using the new
<game-mode> </game-mode> kit.
New world border module that can be used to create a shifting and/or auto resizing world border.
Support added for block punch and trample
Custom item crafting recipe module.
All items of a specific type can be modified for the whole match using the
Teamless gamemodes with the
Heads can be given to players in kits with the
Cause filters have several new possible values they can filter for.
<relation> filter to check the relation between two players.
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.
XML files can now contain conditional
These statements allow modules to be loaded on specific servers or during holiday events.
The maps display gamemode can be specified with the
Added a shield kit module that gives a player an absorption hearts recharging shield.
Pickups module for location specific kit pickups.
<multitrade/> tag has been removed, it is now always enabled.
Regions for cores, destroyables, wools, portals & score boxes must be defined in a
<region> sub-element or referenced in a
<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
<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>
Everything scores 0 points by default, this means you have to explicitly define
<deaths> in the score module if you want players to get points for killing players.
<playable> region module has been removed, this should now be handled using filters.
Filters/regions/teams are always referenced by ID
Move all defining elements out of module xml root
Everything scores zero points by default
||Filters know who owns TNT|
||Wools have a location property|
||Define how overlapping regions behave|
||Off-by-one region bug fixed.|