Java Edition 19w38a

19w38a is the fifth snapshot for Java Edition 1.15, released on September 18, 2019.

Technical

 * Custom predicates
 * Added custom predicates.
 * Condition part of loot tables can now be defined as separate data pack resource in  directory.


 * Entity predicate
 * Entity predicate now accepts  field, which checks player properties.
 * Fails when entity is not player.
 * Fields:
 * - Range of allowed player levels.
 * - Same values as command.
 * - List of statistics to match. Entry fields: type (like minecraft:custom), stat (like minecraft:sneak_time) and value (int range).
 * - Map of recipe ids. Boolean value tells if it should or should not be known to player.
 * - Map of advancement ids. If value is boolean, checks if advancement is done. If value is object, checks completion of criterions.
 * Entity predicate now accepts  field, which matches team name.


 * Location predicate
 * Predicate now accepts  and   sub-predicate.
 * Fields:
 * - Exact block id to match.
 * - Exact fluid id to match.
 * - Block/Fluid id to match.
 * - Matcher for block entity NBT (only for blocks).
 * - Map of name-value properties. Value can be integer, boolean or string or object with optional min and max properties.
 * Predicate now accepts  sub-predicate.
 * Object has one integer range -  that matches visible light.


 * Loot tables
 * Loot table predicates can now be defined in separate files and used for entity selectors and in execute if command.
 * Added new parameters to the  condition.
 * ,,   - Optional offsets to location.
 * Added.
 * Includes condition defined in predicates directory of datapack, selected with name parameter.
 * Added  condition.
 * Checks day time.
 * : range of accepted values.
 * : if present, time will be modulo-divided by this value (for example, if set to 24000, value will operate on time of day).

Commands

 * Can now use  as target, which is general purpose, key-value storage.
 * Storage is shared between all dimensions in level.
 * Data in storage persists between reloads.
 * Data in storage persists between reloads.


 * New subcommand:
 * Evaluates custom predicates (defined in  directory of datapack).
 * Evaluates custom predicates (defined in  directory of datapack).


 * Now defaults to if no target argument is given.
 * Now defaults to if no target argument is given.


 * Added new syntax
 * ( defaults to replace)
 * Added new syntax to remove existing schedules (returns number of removed schedules).
 * Extended command to allow scheduling function multiple times.
 * Extended command to allow scheduling function multiple times.


 * Entity selectors
 * New selector parameter  allows to apply custom predicate (defined in   directory of datapack).