Hello! Here is a slightly bigger than usual snapshot with a lot of technical changes, refreshed UI, another iteration of Wolf Armor, and tweaks to new features.
Since the initial release of the Wolf Armor, we have been working on improving it to increase its protection, usability and add customization. For protection there is a new approach to armor, which considers the player's need to quickly see the state of the armor without using UI elements, and the ability to act quickly to help their pet wolf if needed. Please try it out and let us know what you think over at the feedback site: Let's talk about Wolf Armor!
The UI has been updated to sport a fresher look and to be more consistent when it comes to the layout of different UI elements, all while retaining the essence and feel of the old screens.
As always, we're eager to hear your thoughts and opinions on further improvements or changes. Let us know what you think over at the dedicated feedback site.
playsound
command can now be used without specifying the player (assuming @s
) and without specifying the mixer (assuming master
)minecraft:bypasses_wolf_armor
for damage sources that can not be absorbed by Wolf Armorloot_table
now also accepts inline loot tablestag
field) has been replaced with structured 'components'Loot table entry loot_table
(which returns all items from provided nested loot table) now has the following syntax:
value
- can be either:We are making some large changes to how Item Stack-specific properties are stored and represented in this snapshot, replacing the current NBT 'tag' with structured components.
This change has been made in order to:
We understand that this is a significant breaking change for many datapacks and custom maps which will require significant effort to upgrade.
We do however believe that this builds critical foundations for future extensibility. We have taken care to ship these changes all at once, with the hope that this avoids future incremental changes requiring many small updates to packs.
The current NBT 'tag' has existed for quite some time, and we are aware that a lot of clever techniques have been developed with this for commands and data packs.
Although we have made our best effort to identify these cases, some of these techniques rely on undocumented or undefined behavior with certain tag configurations.
We want to ensure that no functionality is lost without a suitable alternative, but due to the undocumented nature of these techniques, we have very likely not caught everything!
We hope to address any regressions over the remaining course of this snapshot cycle.
With such a large change, we deeply value your feedback! You can share your thoughts on these changes over at the feedback site: Let's talk about Item Stack Components!.
tag
field) has been replaced with structured 'components'minecraft:custom_data
componentminecraft:stick
) hold a set of default components on an item that individual item stacks can overrideitems.json
generated in reports
directoryignoreTags
field on villager trades has been removed and replaced by a component predicate on damageblocks.json
report (note: those definitions are not used yet and present only for informational purposes)key_item
field of Vault block is not present, the Vault cannot be unlocked{...}
) in commands/clear
), will be partially matched as currentlytag
will be moved into herecustom_data={some:'data'}
Damage
tagdamage=12
0
RepairCost
tagrepair_cost=12
0
Unbreakable
boolean tagshow_in_tooltip
: boolean (default: true
)true
, an 'Unbreakable' line will be included in the tooltipHideFlags
tagunbreakable={}
, unbreakable={show_in_tooltip:false}
Enchantments
taglevels
: object of enchantment (id string) to level (integer [0; 255])show_in_tooltip
: boolean (default: true
)false
, no enchantments will be shown in the item tooltipHideFlags
tagenchantments={levels:{'minecraft:protection':2},show_in_tooltip:false}
{levels:{}}
StoredEnchantments
tag on Enchanted Booksminecraft:enchantments
show_in_tooltip
value replaces 6th bit of HideFlags
tag{levels:{}}
display.Name
tagcustom_name='{"text": "This item is renamed!", "color": "red"}'
display.Lore
taglore=['{"text": "The cake is a lie!"}']
[]
CanDestroy
tagpredicates
: list of block predicatesblocks
: block, list of blocks, or hash-prefixed block tagnbt
: block entity NBT to matchstate
: map of state property key to values to matchshow_in_tooltip
: boolean (default: true
)HideFlags
tagcan_break={predicates:{blocks:'minecraft:furnace',state:{facing:'north'}}
can_break={blocks:'minecraft:stone'}
CanPlaceOn
tagpredicates
: list of block predicatescan_break.predicates
show_in_tooltip
: boolean (default: true
)HideFlags
tagcan_place_on={predicates:{blocks:'minecraft:furnace',state:{facing:'north'}}
can_place_on={blocks:'minecraft:stone'}
#minecraft:dyeable
tag)display.color
tagrgb
: integer, RGB valueshow_in_tooltip
: boolean (default: true
)HideFlags
tagdyed_color={rgb:16711680}
AttributeModifiers
tag{modifiers:[]}
)modifiers
: list of attribute modifierstype
: attribute idAttributeName
slot
: one of:any
(default)hand
: either in main or offhand (new)armor
: any armor slot (new)mainhand
offhand
head
chest
legs
feet
Slot
uuid
: uuid, uniquely represents this modifierUUID
name
: string, human-readable nameName
amount
: double, number of units to modify this attribute (controlled by operation
)Amount
operation
: one of:add_value
(was 0
): Adds amount
to the attributeadd_multiplied_base
(was 1
): Adds amount
* base value to the attributeadd_multiplied_total
(was 2
): Adds amount
* total value (from all previous modifiers) to the attributeOperation
with integer idsshow_in_tooltip
: boolean (default: true
)HideFlags
tagattribute_modifiers={modifiers:[type:'minecraft:generic.scale',uuid:[1,2,3,4],name:'Big!',amount:1.0,operation:'add_multiplied_base']}
Charged
and ChargedProjectiles
tagscharged_projectiles=[{id:'minecraft:arrow'}]
minecraft:intangible_projectile
charged_projectiles
componentintangible_projectile={}
Items
tagbundle_contents=[{id:'minecraft:poisonous_potato'}]
[]
display.MapColor
tagmap_color=16711680
4603950
Decorations
tagtype
: one of:player
(was 0
)frame
(was 1
)red_marker
(was 2
)blue_marker
(was 3
)target_x
(was 4
)target_point
(was 5
)player_off_map
(was 6
)player_off_limits
(was 7
)mansion
(was 8
)monument
(was 9
)banner_white
(was 10
)banner_orange
(was 11
)banner_magenta
(was 12
)banner_light_blue
(was 13
)banner_yellow
(was 14
)banner_lime
(was 15
)banner_pink
(was 16
)banner_gray
(was 17
)banner_light_gray
(was 18
)banner_cyan
(was 19
)banner_purple
(was 20
)banner_blue
(was 21
)banner_brown
(was 22
)banner_green
(was 23
)banner_red
(was 24
)banner_black
(was 25
)red_x
(was 26
)village_desert
(was 27
)village_plains
(was 28
)village_savanna
(was 29
)village_snowy
(was 30
)village_taiga
(was 31
)jungle_temple
(was 32
)swamp_hut
(was 33
)type
byte with numeric idsx
: double, world coordinatez
: double, world coordinaterotation
: float, clockwise rotation from north in degreesrot
doublemap_decorations={'Some marker':{type:'target_x',x:123.0,z:-45.0,rotation:0.0f}}
{}
map
tagmap_id=1
minecraft:custom_model_data
property in the item modelCustomModelData
tagcustom_model_data=43
Potion
, CustomPotionColor
, and custom_potion_effects
tagspotion
: potion id (optional)custom_color
: integer, RGB value (optional)custom_effects
: list of effect instances (default: []
)potion_contents={potion:'minecraft:invisibility',custom_color:16711680}
{}
minecraft:writable_book_contents
pages
and filtered_pages
tags{text:'...'}
wrappingfiltered_pages
are pulled by index keys into the relevant page entry under the filtered
fieldpages
: list of either:text
: string, page plain text contentsfiltered
: string, filtered page contents (optional)text
writable_book_contents={pages:[{text:'Hello world!'}]}
{pages:[]}
minecraft:written_book_contents
pages
, filtered_pages
, title
, filtered_title
, author
, generation
, and resolved
tagspages
: listwritable_book_contents
pages, except uses JSON chat component strings which can be formattedtitle
: filtered string (same format as pages)author
: string, player namegeneration
: integer [0; 2]0
= original)resolved
: booleantrue
if the chat components in this book have already been resolved (entity selectors, scores substituted)false
, will be resolved when opened by a playerwritten_book_contents={pages:[{text:'Hello world!'}],title:{text:'A delightful read'},author:'Herobrine',generation:1,resolved:true}
#minecraft:trimmable_armor
tag (although, this tag is still used for recipes)Trim
tag of the same formatpattern
: pattern id (or inline pattern)material
: material id (or inline material)show_in_tooltip
: boolean (default: true
)HideFlags
tagtrim={pattern:'minecraft:silence',material:'minecraft:redstone'}
effects
tag of the same formatid
: effect idduration
: integer, tick count (default: 160
)suspicious_stew=[{id:'minecraft:poison'}]
[]
minecraft:hide_additional_tooltip
HideFlags
taghide_additional_tooltip={}
DebugProperty
tagdebug_stick_state={'minecraft:turtle_egg':'eggs','minecraft:furnace':'facing'}
{}
EntityTag
tag, with same behaviorid
field with the entity typeentity_data={id:'minecraft:pig',Health:1.0f}
NoAI
, Silent
, NoGravity
, Glowing
, Invulnerable
, Health
, Age
, Variant
, HuntingCooldown
, and BucketVariantTag
tagsbucket_entity_data={NoAI:1,Age:43}
{}
instrument
tag of same formatinstrument='minecraft:ponder_goat_horn'
Recipes
tag of same formatrecipes=['minecraft:acacia_boat','minecraft:anvil']
[]
LodestonePos
, LodestoneDimension
, and LodestoneTracked
tagspos
: integer array of x, y, and zdimension
: dimension idtracked
: boolean (default: true
)true
, when the Lodestone at the target position is removed, the component will be removedlodestone_target={pos:[13,64,-43],dimension:'minecraft:the_nether'}
Explosion.Type
, Explosion.Colors
, Explosion.FadeColors
, Explosion.Trail
, and Explosion.Flicker
tagsshape
: one ofsmall_ball
(was 0
)large_ball
(was 1
)star
(was 2
)creeper
(was 3
)burst
(was 4
)Type
numeric idscolors
: integer array, RGB values (default: []
)fade_colors
: integer array, RGB values (default: []
)has_trail
: boolean (default: false
)has_twinkle
: boolean (default: false
)Flicker
tagfirework_explosion={shape:'large_ball',colors:[16711680],has_trail:true}
Fireworks.Explosions
and Fireworks.Flight
tagsexplosions
: list of explosionsminecraft:firework_explosion
componentflight_duration
: byte, number of gunpowder in this rocketfireworks={explosions:[{shape:'large_ball',colors:[16711680],has_trail:true}],flight_duration:2}
{explosions:[],flight_duration:1}
SkullOwner
tagname
is specified, will be resolved into the corresponding player ID and skin dataname
: string, player profile nameid
: uuid, player profile id (optional)properties
: list of properties (optional)name
: string, property name (e.g. textures
)value
: string (base64 encoded texture data)signature
: string (optional)profile={name:'MHF_Sheep'}
BlockEntityTag.note_block_sound
tagnote_block_sound='minecraft:ambient.cave'
BlockEntityTag.Base
tagwhite
(was 0
)orange
(was 1
)magenta
(was 2
)light_blue
(was 3
)yellow
(was 4
)lime
(was 5
)pink
(was 6
)gray
(was 7
)light_gray
(was 8
)cyan
(was 9
)purple
(was 10
)blue
(was 11
)brown
(was 12
)green
(was 13
)red
(was 14
)black
(was 15
)base_color='magenta'
BlockEntityTag.Patterns
tagpattern
: banner pattern registry idPatterns[].Pattern
color
: dye color namePatterns[].Color
banner_patterns=[{pattern:'minecraft:stripe_top',color:'red'}]
[]
BlockEntityTag.sherds
tag of same format['arms_up_pottery_sherd','angler_pottery_sherd','danger_pottery_sherd','shelter_pottery_sherd']
['minecraft:brick','minecraft:brick','minecraft:brick','minecraft:brick']
BlockEntityTag.Items
tagslot
: integer [0; 255], representing a slot in the containeritem
: item stackcontainer=[{slot:7,item:{id:'diamond_pickaxe',components:{'minecraft:unbreakable':{}}}}]
[]
BlockEntityTag.Bees
tagentity_data
: map of string to stringid
: entity idticks_in_hive
: integermin_ticks_in_hive
: integerbees=[{entity_data:{id='minecraft:bee'},ticks_in_hive:3,min_ticks_in_hive:10}]
[]
BlockEntityTag.Lock
taglock='hunter2'
BlockEntityTag.LootTable
and BlockEntityTag.LootTableSeed
tagsloot_table
: loot table idseed
: long, pseudorandom seed to resolve the loot table with (optional)0
, the seed will be picked randomly when the loot table is evaluatedcontainer_loot={loot_table:'minecraft:chests/buried_treasure',seed:123}
BlockEntityTag
tag, with same behaviorid
field with the block entity typeblock_entity_data={id:'minecraft:chest',Items:[{Slot:1,item:'minecraft:diamond'}]}
BlockStateTag
tagblock_state={eggs:'10'}
minecraft:enchantment_glint_override
Enchantments
tag would previously behave to add a glinttrue
, an item without an enchantment glint will display a glintfalse
, an item with a glint will not display this glint (either from enchantments or intrinsic properties of the item)enchantment_glint_override=true
/give
, /item
, /loot
, and /clear
have updated item syntax=
(e.g. wooden_pickaxe[damage=23]
)netherite_hoe[damage=5,repair_cost=2]
)/give @s wooden_pickaxe[damage=-34]
is not valid{...}
) is rewired to set or match the minecraft:custom_data
component/give @s stick{foo:'bar'}
is equivalent to /give @s stick[custom_data={foo:'bar'}]
[...]
and {...}
are specified, [...]
must be ordered before {...}
/clear
) have new semantics with respect to matching components and custom datadamage=0
by default) will be assumed to exist on the target item if not specified/clear @s diamond_pickaxe[damage=0]
will match only undamaged Diamond Pickaxes/clear @s diamond_pickaxe
will match any Diamond Pickaxe, irrespective of damageminecraft:custom_data
component{...}
custom data syntax will use pre-existing NBT partial match behaviour/attribute
command have been renamed:add
-> add_value
multiply_base
-> add_multiplied_base
multiply
-> add_multiplied_total
id
(string) and Count
(byte) fields have been replaced with id
(namespaced string) and count
(integer) fieldsicon
field in advancements, items in chat component hover events, and the result
field in smelting recipes (result
and count
are no longer inlined)count
field is optional (defaults to 1
), and no longer stored if defaulttag
field has been removed, and any remaining contents will end up in the minecraft:custom_data
component when upgradingcomponents
field stores all components attached to an item{..., components: {'minecraft:damage': 12}}
!
prefix (e.g. "!minecraft:damage": {}
) will cause this component to be removedair
item, or count
0)HandItems
in living entities), an empty map ({}
) is used to represent empty stacksitem
minecraft:potion_contents
component in a potion_contents
field:Potion
-> potion_contents.potion
Color
-> potion_contents.custom_color
effects
-> potion_contents.custom_effects
minecraft:banner_patterns
component in a patterns
field:Patterns[].Pattern
(string short id) -> patterns[].pattern
(string pattern registry id)Patterns[].Color
(integer dye id) -> patterns[].color
(string dye name)Bees[].EntityData
-> bees[].entity_data
Bees[].TicksInHive
-> bees[].ticks_in_hive
Bees[].MinOccupationTicks
-> bees[].min_ticks_in_hive
FlowerPos
-> flower_pos
'minecraft:damage': 0
components
field in item predicates)minecraft:set_components
functionconditions
: list of conditions (default: []
):components
: map of component id to component value (format varied by id)!
prefix (e.g. "!minecraft:damage": {}
) will cause this component to be removedminecraft:copy_components
functionminecraft:copy_name
and minecraft:copy_nbt
functionsconditions
: list of conditions (default: []
):source
: source type to pull from"block_entity"
components
: list of component ids to copyminecraft:set_nbt
and minecraft:copy_nbt
functions have been renamed to minecraft:set_custom_data
and minecraft:copy_custom_data
respectivelyminecraft:custom_data
component of the target itemminecraft:set_attributes
function has been updatedslot
field now supports any
, armor
, and hand
valuesoperation
values have been renamed:addition
-> add_value
multiply_base
-> add_multiplied_base
multiply_total
-> add_multiplied_total
tag
field has been removeditems
field now supports a single entry, hash-prefixed item tag, or list of itemspotion
-> potions
, and supports a single entry, hash-prefixed potion tag, or list of potionsnbt
predicate has been renamed to custom_data
and now matches minecraft:custom_data
componentcomponents
field matches exact components"components": { "minecraft:damage": 0 }
will match only undamaged itemstag
field has been removedblocks
field now supports a single entry, hash-prefixed block tag, or list of blockstag
field has been removedfluid
-> fluids
, and supports a single entry, hash-prefixed fluid tag, or list of fluidstype
field now supports a single entry, hash-prefixed entity type tag, or list of entity typesbiome
-> biomes
, and supports a single entry, hash-prefixed biome tag, or list of biomesstructure
-> structures
, and supports a single entry, hash-prefixed structure tag, or list of structuresinfinity
, multishot
and piercing
now work on both Crossbows and Bows, if placed onto the alternative weapon using data manipulation or a change to the enchantable/*
tags)textures/entity/wolf/wolf_armor_overlay.png
textures/item/wolf_armor_overlay.png
textures/item/wolf_armor.png
, has been raise by 2px to create space for the durability bartextures/entity/wolf/wolf_armor_crackiness_low.png
textures/entity/wolf/wolf_armor_crackiness_medium.png
textures/entity/wolf/wolf_armor_crackiness_high.png
options_background
and the light_dirt_background
textures have been removedmenu_background
is used as the background of screens, while menu_list_background
is used for the background of listsheader_separator
and footer_separator
textures at the top and bottom, respectivelyfooter_separator
, header_separator
widget\tab
, widget\tab_highlighted
, widget\tab_selected
, widget\tab_selected_highlighted
widget\scroller_background
sprite has been addedchanges
, changes_highlighted
, restore
, restore_highlighted
, make_operator_highlighted
, remove_operator_highlighted
, remove_player_highlighted