For this week's Snapshot, we've made improvements to the Decorated Pots!
Additionally, Realms is now available in Snapshots moving forward! Any player who has an active Realms subscription is eligible to create a free Snapshot Realm. This Snapshot Realm will be separate from your regular Realm to prevent any issues from impacting your regular Realm. For more information on how Snapshot Realms work, please see Realms in Minecraft: Java Edition Snapshot FAQ.
New Features
Snapshot Realms
Realms is now available in Snapshots, Pre-Releases, and Release Candidates
The version of the last played world on a Realm is displayed in the Realms list
Experiments are available for newly created worlds
Changes
Decorated Pots can now store items, and can be smashed by projectiles
Decorated Pots
Decorated Pots now store up to a single stack of items
Hoppers, Hopper Minecarts and Droppers can now insert and/or extract items from Decorated Pots
Comparators can now read the number of items in Decorated Pots
Players can interact with Decorated Pots to insert items into them
Decorated Pots have no GUI, and need to be broken to retrieve or discover their content by players
Player interactions with Decorated Pots cause the Decorated Pot to wobble and trigger the vibration frequency of 11
Decorated Pots can be smashed by projectiles which cause them to shatter and drop their content
Decorated Pots now stack up to 64
We want to hear your feedback on these improvements to Decorated Pots - let us know what you think in our dedicated feedback site post!
Technical Changes
The Data Pack version is now 20
The name of non-living entities will now be shown if looked at and a CustomName is set, or always displayed if CustomNameVisible is set, similar to living entities
Data Pack Version 20
Changed function command results
Adjusted check for gamerule maxCommandChainLength
Added new gamerule maxCommandForkCount
Reintroduced form of the execute command: execute if function
Reintroduced form of the return command: return run
Decorated Pots with cracked state set to true will always shatter when broken
Added new dust_plume particle type
Commands
Functions
function command has been changed to better accomodate new return command
Functions no longer have any result unless they use return or there was error during lookup or instantiation
That means function command will no longer return (or even display) number of commands run during execution
Error conditions:
Calling non-existent function
Calling empty function tag
Macro instantiation failure
"Result" in this context means values that would be stored with execute store
The previous behavior where every command in function would perform store if a function was called with execute store ... run function is removed
That means that a single call to function will store at most once (zero times if return was not called)
For function tags with multiple entries, function results will be accumulated, but partial results will be stored at the end of every function
Limits
Existing limits for functions have been refined to accomodate new execution rules and prevent wider range of exploits:
Limits apply even if run from command line (so it will now always behave as if they were placed in a function)
For example, all functions called by execute as @e run function will count towards same limit
Executions from command blocks still count as separate ones
Limit maxCommandChainLength for functions will now count "operations" like:
execution of command for a single context
execution of a stage in execute (no matter how many contexts were modified)
invocation of function
New limit with game rule maxCommandForkCount now restricts total amount of context that can be created by single state of functions like execute
Example: if there are 5 entities in world, execute as @e creates 5 contexts, while execute as @e at @e creates 5*5 = 25 contexts
execute if function
An execute sub-command that runs a function or function tag and matches the return value(s).
This is a reintroduction of functionality removed in previous version.
If a tag is given, all functions run regardless of the results of prior functions.
Syntax:
execute if|unless function <function> <continuation>
Parameters:
function: The function or tag to run
Matching
The matching of the result value of the function(s) that run:
At least one of the functions must succeed for the match to succeed
A succeessful call is defined as a function that:
Uses the return command to return a value
The return value is not 0
If no functions exited with return, neither if or unless will run
return run
A form of the return command is now available, return run.
This is a reintroduction of functionality removed in previous version.
Syntax:
return run <command>
This takes the result value from running the specified command and returns that as the return value of the function.
If command did not return any value (like, for example, call to a function without return), return will not execute and function will continue execution
If the given command fails, the return value is 0
In all other aspects, it works like return with a specified return value
In case of fork (for example return run execute as @e run some_command) the first execution of the command will return
If there are no executions (for example in return run execute if @e[something_impossible] run some_command) function will not return and will continue execution
Fixed bugs in Snapshot 23w41a
MC-16937 Shooting an arrow into the nether portal can hurt anybody when PvP is disabled
MC-50319 Player owned projectiles lose their player ownership when exiting portals
MC-81656 Field determining whether or not a wither skull is blue is not saved to and read from NBT
MC-118403 Vexes summoned by evoker do not have evoker team applied
MC-143266 Nested function calls reevaluate maxCommandChainLength before queueing commands
MC-143269 Nested intermediate functions are skipped when maxCommandChainLength commands are already queued
MC-236501 Renamed minecarts and boats don't show their name tag in the world
MC-249408 Boats with Chests lose their name when placed
MC-257786 The game takes a long time to process players leaving realms groups or accepting or declining realms invitations
MC-260576 Incomplete 'execute summon' command still runs
MC-261682 Brushing can continue when block goes out of range
MC-262105 Entities can block brushing actions when players look very close to their hitboxes
MC-263575 When an item is extracted from suspicious sand/gravel, gravity does not work on this block
MC-263660 "Sign wobbles" subtitle is the same for signs and hanging signs, causing translation issues
MC-264595 Return command cannot run function when inside another function
MC-264699 Functions return the output of commands only if the command doesn't start with return run
MC-264710 "/execute if function" always fails and "/execute unless function" always succeeds if run from a function
MC-264880 GUI slider uses new texture with programmer art
MC-265516 The "Cancel" button within some realms menus can be deselected using keyboard navigation despite it being the only element within the said menu
MC-265647 Shield arm position is incorrect while in a boat