Java Edition 1.20.3

From Minecraft Wiki
Jump to navigationJump to search
Minecraft 1.20.3

Java Edition

Planned release date


Development versions

1.20.3 is an upcoming minor update to Java Edition, with no set release date, which improves shields, adds new functionality for decorated pots, changes chat component serialization, and fixes bugs.[1][2]



  • Added the "Update 1.21" experimental toggle (update_1_21 data pack).
Game rule
  • Added playersNetherPortalDefaultDelay to control time (in game ticks) that a player needs to stand in a nether portal before changing dimensions, while in Survival and Adventure mode. Defaults to 80.
  • Added playersNetherPortalCreativeDelay to control time (in game ticks) that a player needs to stand in a nether portal before changing dimensions, while in Creative mode. Defaults to 1.
  • Added projectilesCanBreakBlocks, to control whether impact projectiles will destroy blocks that are destructible by them (i.e. chorus flowers, pointed dripstone and decorated pots). Defaults to true.
Loading screen
  • Added a new screen for handling corrupted level files.
    • It gives the player the option to restore a backup, and a quick link to the bug tracker for reporting a bug about it.
  • Added "Hide Splash Texts" in accessibility options, which allows the splash in the main menu to be hidden.
  • Added hideSplashTexts, defaults to false.
  • Added new dust_plume and white_smoke particle types.
  • Added following damage type tag:
    • #can_break_armor_stand: contains player_attack, and player_explosion.
      • Used for damage types that can incrementally knock down armor stands.
  • Added following entity tags:
    • #can_breathe_under_water: contains #undead, axolotl, frog, guardian, elder_guardian, turtle, glow_squid, cod, pufferfish, salmon, squid, tropical_fish, tadpole, and armor_stand.
      • Used to disable drowning.
    • #undead: contains #skeletons, #zombies, wither, and phantom.
    • #zombies: contains zombie_horse, zombie, zombie_villager, zombified_piglin, zoglin, drowned, and husk.



Decorated Pot
  • Now can store items, up to a single stack of items.
    • Hoppers, minecart with hoppers and droppers can now insert and/or extract items from them.
    • Comparators can now read the number of items in them.
    • Players can interact with them and insert items into them.
      • Player interactions with them cause them to wobble and trigger a vibration frequency of 11.
    • They have no GUI, and need to be broken to retrieve their content by players.
  • Now can be smashed by projectiles, which cause them to shatter and drop their contents.
  • Now can stack up to 64.
  • Now, when blockstate cracked set to true, decorated pots will always shatter when broken.
  • Now appears in the Redstone tab of the Creative inventory.

Non-mob entities

  • The name of them will now be shown if looked at and a CustomName is set, or always displayed if CustomNameVisible is set, similar to living entities.

Command format

  • /function command has been changed to better accommodate 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) the 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 a 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.
  • Existing limits for functions have been refined to accommodate new execution rules and prevent a 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 the 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.
    • A new limit with game rule maxCommandForkCount now restricts the 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.
  • Re-added (if|unless) function subcommand.
    • A new execute sub-command that runs a function or function tag and matches the return value(s). If a tag is given, all functions run regardless of the results of prior functions.
    • Syntax: /execute (if|unless) function <function> -> [execute]
    • Arguments:
      • function: The function or tag to run.
    • 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 successful 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 nor unless will run.
  • Re-added run subcommand: /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.


  • When a player is blocking with a shield, the arm with the shield now follows the direction the player is looking at, when viewed from third person perspective.


Custom structure
  • Changes to structure type definitions (data/minecraft/worldgen/structure):
    • Added optional pool_aliases list to jigsaw structures.
    • Aliases represent the possibility to rewire jigsaw pool connections by redirecting pool references on individual structure instances.
    • Alias variants are represented in type and is one of:
      • direct: 1:1 mapping from an alias to a new pool.
        • alias: Pool to replace.
        • target: Pool to replace with.
      • random: 1:n mapping where a pool from n is randomly selected for the structure instance.
        • alias: Pool to replace.
        • targets: Randomized list of candidate pools to replace alias with.
      • random_group
        • groups: Each group is a randomized list of above alias types.
        • Only one group is selected per structure instance.
        • This enables modelling selections such as "if pool X is replaced with X1, also replace pool Y with Y1".
Data pack
  • The version is now 21.
Entity format
  • In NBT format for entity type tnt:
    • Added block_state.
      • This field allows replacement of rendered block model.
    • Renamed Fuse to fuse.
Raw JSON text format
  • Plain-text chat components (text, no sibilings, no stylings) are now always serialized as string instead of {"text": "your text"}.
  • Chat components now serialize to NBT when sent over network.
    • Components of type nbt now have source field with allowed values: entity, block, and storage.
  • Chat components now have an optional type value (allowed values: text, translatable, score, selector, nbt, and keybind) to speed up parsing and improve error checking.
  • id field in show_entityhoverEvent style now also accepts UUID as an array of 4 integers.
  • Numeric and boolean arguments for translate component are no longer converted to string.
  • The following JSON component representations are no longer accepted:
    • null
    • []
  • Errors in following style fields are no longer silently ignored:
    • color
    • clickEvent
    • hoverEvent
    • hoverEvent[action=show_entity]
    • hoverEvent[action=show_item].contents.tag
  • Realms are now available in Snapshots, Pre-Releases, and Release Candidates.
    • Any player who has an active Realms subscription is eligible to create a free Snapshot Realm.
    • Snapshot Realms will be separate from the regular Realms to prevent any issues from impacting regular Realms.
  • The version of the last played world on a Realm is displayed in the Realms list.
  • Experiments are available for newly created worlds.
Resource pack
  • The version is now 19.
  • Added block model, item model and block state definitions for crafter.
  • Added GUI container texture and sprites for crafter.
  • Added white_smoke particle definition.
  • Added firework_rocket into the impact_projectiles entity tag.
  • Added skeleton_horse into #skeletons entity tag.

Experimental additions


  • A variant of crafting table, can be crafted with five iron ingots, a crafting table, two redstone dusts, and a dropper in the crafting table.
  • Crafters can be oriented in any direction when placed.
  • A pickaxe can increase the speed of mining them.
  • Have a user interface similar to crafting table.
    • Have 3×3 interactable crafting grid.
    • Their crafting grid slots are toggleable, meaning that the player can change the behavior of a slot by clicking or pressing on a slot with an empty hand.
      • A toggled slot cannot hold any items and therefore cannot have items placed into it by other blocks such as hoppers and droppers.
      • A toggled slot can be toggled off by player, whether clicked directly or holding item(s), pressing slot keys associated with an empty or a not empty hotbar slot.
    • Unlike the crafting table, the slots display a preview of the crafted item which will be crafted and ejected on the next redstone pulse, but cannot be manually taken out by the player.
    • The user interface is shared between all players interacting with them, meaning that multiple players can interact with them at the same time, similar to chests and hoppers.
    • The user interface does not have a recipe book to provide help, so the player must know the recipes.
  • The crafter ejects one crafted item at a time when powered by a new redstone pulse, a redstone signal that is not a continuous signal.
    • Upon receiving this new signal, crafters eject the recipe result from the front face.
    • All the result items will be ejected together when the output result has multiple type of items.
  • They can interact with hoppers and droppers, to input/output automatically.
    • Hoppers can be used to both insert and pull items out of them.
    • Droppers can be used to insert items into them.
    • Moving items in from another block with a hopper or a dropper prioritizes filling items into slots, by following these rules:
      • If there is a toggled slot, skipped.
      • If there is not a toggled slot, crafters prioritize the first empty slot from left-to-right and top-to-bottom.
      • If there is not a toggled slot, and there are no empty slots, crafters prioritize the smallest stack of the same item. If there are multiple possible stacks, pick the first from left-to-right and top-to-bottom.
    • If failed to select a slot, hoppers and droppers will not take any action.
  • When read by a redstone comparator, the redstone signal strength is 0 to 9, where each non-empty or toggled slot adds 1 strength.

Experimental changes


  • Added crafter into mineable/pickaxe, and needs_stone_tool block tags.


53 issues fixed
From released versions before 1.20
  • MC-16937 – Shooting an arrow into the nether portal can hurt anybody when PvP is disabled.
  • MC-47607 – Barrier particles aren't shown if particles are set to minimal.
  • MC-50319 – Player owned projectiles lose their player ownership when exiting portals.
  • MC-50647 – Slime mob spawners spawn slimes only in slime chunks.
  • MC-78314 – (Marker) Armor stands create bubbles in water.
  • MC-81656 – Field determining whether or not a wither skull is blue is not saved to and read from NBT.
  • MC-114761 – Area effect cloud applies effect to dying mob.
  • 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-172398 – Fire texture renders according to the player's rotation in the player inventory.
  • MC-189227 – First time tutorial uses old textures.
  • MC-189261 – Various Realms buttons and texts are incorrectly capitalized.
  • MC-198113 – Incomplete commands do not prevent functions from loading.
  • MC-221558 – Light particles aren't shown if particles are set to minimal.
  • MC-223774 – Firework Rockets can't be used to break Chorus Flowers.
  • MC-225364 – Chorus flowers can be destroyed by projectiles in adventure mode.
  • MC-225365 – Pointed dripstone can be destroyed by tridents in adventure mode.
  • MC-227255 – Beehives and bee nests do not rotate/mirror correctly in structure blocks.
  • MC-232719 – The scroll bar within the singleplayer menu doesn't reset its position to the top of the list when searching for worlds.
  • MC-233276 – You can feed adult donkeys, horses, llamas or mules with maximum Temper value, and hand animation is not played.
  • MC-234323 – Performance issue with text parsing.
  • MC-234483 – Some strange pixels can be seen on the left side of world slot frames within several realms menus.
  • MC-236341 – You can feed hay bales to adult donkeys, horses or mules, and animal eating animation/sounds are not played.
  • MC-236501 – Renamed minecarts and boats don't show their name tag in the world.
  • MC-236946 – Shield attack vector is normalized incorrectly.
  • MC-249408 – Boats with Chests lose their name when placed.
  • MC-253819 – Bells don't rotate correctly when loaded by structure/jigsaw blocks.
  • MC-254850 – An operator can kick a host of a LAN world.
  • MC-255173 – Nether portal teleportation is inaccurate at large coordinate values.
  • 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-262027 – Result consumer created by /execute store is invoked for every command within a function.
  • MC-262105 – Entities can block brushing actions when players look very close to their hitboxes.
  • MC-263123 – Mending incorrectly calculates overflow after full repair.
From 1.20
  • MC-261682 – Brushing can continue when block goes out of range.
  • MC-262888 – Clicking "I know what I'm doing!" on the world loading screen when loading a world in a new snapshot is way too loud.
From 1.20.1
  • 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-264748GLX._initGlfw Treats Pointer as a String.
  • MC-265353 – Clocks and Compasses in Item Display Entities don't show correct time/direction.
From 1.20.2
  • 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-264966Signature is missing from Property texturesappears in the logs of some Minecraft worlds due to player heads.
  • MC-265462 – Sending resource pack during play phase shows loading terrain screen for a long time.
  • MC-265515 – The "You don't seem to have a Realm" element in the realms menu cannot be selected via the mouse cursor.
  • 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-265517 – The "Buy a realm!" button is automatically selected when opening the "Add Realm" interface.
  • MC-265519 – Game minimizes when certain areas of the screen are clicked on Mac in fullscreen mode.
  • MC-265551 – "No pending invites!" tooltip in Realms is now untranslatable.
  • MC-265589 – Brigadier exception can be repeatedly logged if command has invalid syntax.


  1. "Minecraft Snapshot 23w40a" –, October 4, 2023
  2. "Minecraft Snapshot 23w41a" –, October 11, 2023