Minecraft Server Management Protocol
Added a server management API (JSON-RPC over WebSocket) for dedicated servers
- The API is disabled by default and can be enabled in server.properties
- management-server-enabled=true
- management-server-host=localhost
- management-server-port=0
- The API is accessible at ws://<management-server-host>:<management-server-port> when enabled
- Supports querying and updating of server state (players, allowlist, operators, settings, game rules)
- Sends notifications on state changes (e.g. player joins, game rule updates)
- Calling {"id":1,"method":"rpc.discover"} returns an API schema containing supported methods and notifications of the currently running server
- The Data Generator produces an API schema (json-rpc-api-schema.json) in the reports output folder mirroring the contents returned by the rpc.discover method
- The API adheres to the JSON-RPC 2.0 specification
- Uses namespaced methods and the reserved namespaces are minecraft (e.g. minecraft:players, minecraft:allowlist/add)
- Extensible via custom namespaces for additional methods and events
- Core method groups: players, allowlist, operators, server (save, stop), server settings, game rules
- Example method call:
- Request: {"method":"minecraft:allowlist/add","id":1,"params":[[{"name":"jeb_"}]]}
- Response: {"jsonrpc":"2.0","id":1,"result":[{"id":"853c80ef-3c37-49fd-aa49-938b674adae6","name":"jeb_"}]}
- Example notification:
- {"jsonrpc":"2.0","method":"minecraft:notification/players/joined","params":[{"id":"853c80ef-3c37-49fd-aa49-938b674adae6","name":"jeb_"}]}
- Example error:
- Request: {"method": "minecraft:foo/bar","id": 1}
- Response: {"jsonrpc":"2.0","id":1,"result":{"jsonrpc":"2.0","id":1,"error":{"code":-32601,"message":"Method not found","data":"Method not found: minecraft:foo/bar"}}}
- Errors and error codes follow JSON-RPC 2.0 error object format
- Clients must authenticate to access the API
- Clients should supply an Authorization bearer token header with a server-specific secret
- The secret is configured in server.properties
- management-server-secret=
- The secret should be exactly 40 alphanumeric characters (A-Z, a-z, 0-9)
- The secret will be automatically generated if the server property is empty
- Unauthorized requests are rejected with 401 Unauthorized
- TLS is enabled by default
- Can be disabled in server.properties
- management-server-tls-enabled=false
- Requires a keystore file to be set in server.properties
- management-server-tls-keystore=path/to/keystore.p12
- The keystore file must be in PKCS12 format
- Keystore password can be set in the following ways, in order of priority
- Environment variable: MINECRAFT_MANAGEMENT_TLS_KEYSTORE_PASSWORD
- JVM argument: -Dmanagement.tls.keystore.password=
- Server property: management-server-tls-keystore-password=
Chat Drafts
- Unsent chat messages now get saved as Chat Drafts if the chat was forcibly closed
- This includes it being closed by external sources such as dying or a dialog opening, but not the player intentionally closing their chat
- Any existing Chat Draft will get pre-filled into the message box the next time the chat is opened
- Draft text has a grayed-out appearance until fully restored
- Draft text can be restored as regular text by interacting with it:
- Typing additional text
- Moving the text cursor using the arrow keys
- Clicking it
- Highlighting it
- Pressing enter on a Chat Draft prior to it being restored sends it like a normal chat message
- Pressing backspace on a Chat Draft prior to it being restored deletes it
- Added an option to the Chat Settings screen that enables saving unsent chat messages by default
- With this option enabled, unsent messages will always get saved as Chat Drafts, even if the player intentionally closed their chat
Server Code of Conduct
When connecting to a server, a Code of Conduct screen can now be shown.
- Accepting the Code of Conduct is required to play on the server
- A checkbox is available for not showing the same Code of Conduct in the future
- If the Code of Conduct changes, it will be shown again
Server Setup
- A new boolean field has been added to server.properties called enable-code-of-conduct
- Setting it to true will make the server look for Code of Conduct files in the codeofconduct subfolder in the same folder as server.properties
- Each file in the folder should have the form <language_code>.txt and be UTF-8 encoded
- The language shown will attempt to match the player's language
- If it doesn't exist, the en_us Code of Conduct will be used
- If that also doesn't exist, an arbitrary available entry is used
Sounds
- Some sound sliders in the Music & Sound Options now play a preview sound when adjusting the setting outside a world
Accessibility
- The "Attack/Destroy" and "Use Item/Place Block" key binds are now toggleable, meaning they can be set to either "Hold" or "Toggle" in the Controls screen
- Added "Invert Mouse X" option to the Mouse Settings screen, which inverts the mouse x-axis
- Added "Sprint Window" option to the Controls screen, which represents the time window in ticks where double-tapping the forward key activates sprint
- Multiple key binds that have the same key assigned to them can now work together, while before only one would work
- For example, you can now bind D to Jump and Strafe Left to jump and strafe left at the same time
- The red warning for assigning the same key to multiple key binds is changed to yellow
- The spectator hotbar menu key can now be rebound
- It is part of a new Spectator category in the Key Binds screen, alongside the pre-existing Highlight Players key bind
Changes
- Performance improvements
- The Chain block has been renamed to "Iron Chain"
- Monster Spawn Eggs now have a tooltip warning when the difficulty is set to Peaceful
- The mob no longer spawns for one tick when an attempt is made to use the Spawn Egg
- Changes to world loading and the "Spawn Chunks"
- A dimension that has any player activity, forceloaded chunks, active portals, or Ender Pearls in flight will be considered "active" and will keep processing chunks and entities
- Previously, this would only apply if a player was in the dimension or a chunk was forceloaded
- Reworked the debug overlay to be less cluttered and more configurable
- Players seen in the game world of the current server are now always shown in the Social Interactions screen even if they are offline
- Players now stop flying when switching from Spectator Mode to Creative Mode if they are near the ground
- A player is considered to be near the ground if there is a collidable surface (i.e. blocks, Happy Ghasts, boats...) within 1 block below them
- Flight will not get disabled if the player was inside a block or collidable entity
- This is to prevent players from suddenly falling through the ground
- Migrated several server properties into game rules
- OpenGL 3.3 is now required to play the game, up from 3.2. This does not change our posted Minimum Requirements
Developer’s Note: We do not expect the update to OpenGL version to affect many people, if any at all. Our posted Minimum Requirement has been OpenGL 4.0 since 2017, and OpenGL 3.3 turned 15 years old recently.
Performance Improvements
- Entity rendering order was improved for significantly better performance
- You’ll notice much smoother gameplay in areas with lots of mobs, like mob farms
- FPS won’t improve much if most of your lag comes from things other than entities, like playing with high render distance while not being near many mobs
- Particles outside the player's view are not rendered anymore, which provides a performance improvement in some cases
World Loading and Spawn Chunks
- The concept of fixed "Spawn Chunks" has been removed
- The game will ensure that the following chunks are fully loaded before the player joins or the server starts, in the same way as spawn chunks formerly were:
- Chunks loaded by the forceload command
- Chunks active due to portal activity
- Thrown Ender Pearls (Singleplayer only)
- A small area of chunks around the player (Singleplayer only)
- Chunks required to assign the global world spawn (World creation only)
- The world loading screen now shows the chunks that the player is about to be placed into, rather than chunks loaded around world spawn
- The loading screen now has a progress bar
- This progress bar accounts for all kinds of chunk loading mentioned above
Developer’s Note: Spawn chunks incur a memory and performance cost for all players and have outlived their initial technical purpose of keeping the spawn area ready for players to quickly join into.
However, we also want to recognize that spawn chunks have enabled a multitude of clever contraptions and farms throughout the years, so simply removing them without having other mechanics in the game enable these designs was never an option.
We believe that the niche held by spawn chunks has now been filled by alternative methods of chunk loading, such as using portals or ender pearls, particularly with the changes in this snapshot to how the game loads these chunks before the world starts ticking.
Server Properties
Several server properties were removed in favor of making them into game rules, allowing these settings to be changed while the server is running.
- Removed server property allow-nether in favor of the new game rule allowEnteringNetherUsingPortals
- Removed server property spawn-monsters in favor of the new game rule spawnMonsters
- Removed server property enable-command-block in favor of the new game rule commandBlocksEnabled
- Removed server property pvp in favor of the new game rule pvp
- Added server property management-server-enabled controlling whether the new Minecraft Server Management Protocol is enabled or not
- Added server property management-server-port controlling on what port the Minecraft Server Management Protocol is started
- Defaults to 0, assigning an available port each time management server is started
- Added server property management-server-host controlling with what host the new Minecraft Server Management Protocol is started
- Added server property management-server-tls-enabled controlling whether the Minecraft Server Management Protocol uses TLS or not
- Added server property management-server-tls-keystore controlling the path to the keystore file used for TLS
- Defaults to an empty string
- A dedicated server won't start when TLS is enabled and no keystore is provided
- Added server property management-server-tls-keystore-password controlling the password to the keystore file used for TLS
- Defaults to an empty string
- Added server property status-heartbeat-interval controlling the interval the management server sends heartbeat notifications to connected clients
- Defaults to 0, meaning it’s disabled
- Added server property enable-code-of-conduct
- Details on this property can be found in the "Server Setup" header
Game Rules
- Removed spawnChunkRadius game rule
- Added pvp game rule controlling whether players can deal damage to other players
- Added allowEnteringNetherUsingPortals game rule controlling if the Nether can be entered through portals
- Added spawnMonsters game rule controlling if monsters should spawn naturally
- Added commandBlocksEnabled game rule controlling if Command Blocks should be enabled or not
- Added spawnerBlocksEnabled game rule controlling if Spawner Blocks should be enabled or not
Mob Spawning
- The logic for choosing a type of equipment for mobs spawning with equipment has been tweaked to add Copper as a possibility
- The initial roll to choose a type now chooses between Leather, Copper and Gold
- The chance to increase an armor tier has increased from 9.5% to 10.87%
Minor Tweaks to Blocks, Items and Entities
- Test Instance Blocks now preserve error markers between world reloads
- Ambient lighting on entities has been adjusted to be more visually in line with blocks and other parts of the game
- The underside of flat surfaces will now be lit from that direction, instead of the opposite direction
- This mainly affects models containing cubes that are either flat or "hollow" such as:
- Worn armor
- Worn Elytra
- The outside layers on player skins
- The ribcages of Skeletons or Skeleton Horses
- The feet of Chickens or Frogs
- The wings of Phantoms or the Ender Dragon
- The fins on fish
- And more!
Recipes
- Changed the Copper Trapdoor recipe to use 4 Copper Ingots instead of 6 and now yields one Copper Trapdoor instead of two
Sounds
- The Happy Ghast is now audible from 64 blocks
- Sounds for Chests now play at a lower volume
- The volume at which a sound is played at now respects the sound source volume value
- The "Voice/Speech" sound source has been rephrased to "Narrator/Voice"
UI
- The Resource Pack and Data Pack selection screens now have a search box
- More text inputs now support selecting text by mouse dragging
- Double-clicking a word in an edit box now selects it
- When adding a new server to the server list, the server name is no longer prefilled
- When omitted, the default name "Minecraft Server" is used
Mouse cursor
- Some UI components will now change the shape of the mouse cursor
- Examples: text inputs, numeric sliders, buttons, scroll bars
- Additionally, clickable parts of text labels (like links) will now change the cursor to the "hand" shape
- This feature can be disabled with the "Allow Cursor Changes" option in the Mouse Settings screen
Debug Overlay
- The debug overlay is accessible by pressing F3, as before
- The debug overlay can now be accessed from everywhere in the game, not only when in a game world
- It is now less cluttered, displaying less information by default
- Added a new Debug Options screen, available by pressing F3 + F6, which can be used to configure what debug information should be displayed
- For each element, you can configure whether it should be visible in the debug overlay or not, and can even set it to always be visible regardless of the debug overlay being active
- Some debug features that were previously available, like chunk border rendering or entity hitbox rendering, can now be toggled through this Debug Options screen
- Some debug features that were not previously available to the community, like Octree visualization, are now accessible through the Debug Options screen
- The state of the Debug Options screen is saved between launches of the game
- The Debug Options screen has the following preset profiles:
- Default resets everything to the default state
- Performance shows simple performance metrics, including the FPS meter always visible
Developer's Note: Previously, gathering the information every frame to render the F3 screen had a significant performance cost. So opening the screen to check your FPS noticeably dropped the FPS. Now checking your FPS in the Performance profile should not affect game performance.
Chat
- It is now possible to start chatting while standing inside a Nether Portal
- The chat will now remain open and unchanged if the player was chatting before being transferred to another dimension
Accessibility
- Dye Colors now have updated icons
- The goal with these is to enhance visual cohesion across the dye set while maintaining distinct shapes to support colorblind accessibility
- A button leading to the Controls screen has been added to the Accessibility Settings screen
- The "Auto-Jump" option, as well as the "Sneak" and "Sprint" toggles have been removed from the Accessibility Settings screen
- The "Show Subtitles" option has been rephrased to "Closed Captions" to more accurately describe what it does
- The "Hide Lightning Flashes" accessibility setting has been renamed to "Hide Sky Flashes" as it includes the End light flashes
Technical Changes
- Pack versions now have minor versions
- The Data Pack version is now 88.0
- The Resource Pack version is now 69.0
- Some previously hidden debug features have been exposed to players
Pack Formats
- The pack versions for data packs and resource packs now have minor versions
- A minor version increment of the game's pack version is backwards-compatible, meaning all packs made for previous iterations of the same major version will keep working
- Packs can set compatibility requirements on minor versions in case they rely on resources introduced in a minor version
Pack Metadata
The pack.mcmeta format has been updated:
- The supported_formats field has been removed
- If your pack declares support for a pack version with the previous format (data pack < 82, resource pack < 65), it is still required
- Otherwise, it is not allowed and must be removed
- The pack_format field is now optional
- If your pack declares support for a pack version with the previous format (data pack < 82, resource pack < 65), it is still required
- Added required field min_format - specifies the minimum version supported
- A full version is specified as a list of two integers, e.g. [74, 1]
- Specifying a single integer is interpreted as that major version, e.g. 74 is the same thing as [74, 0]
- Specifying a list of a single integer is interpreted the same as specifying that integer alone
- Added required field max_format - specifies the maximum version supported
- A full version is specified as a list of two integers, e.g. [74, 1]
- Specifying a single integer is interpreted as any minor version, i.e. the minor version is 0x7fffffff
- Specifying a list of a single integer is interpreted the same as specifying that integer alone
- For overlay entries:
- The formats field has been removed
- If your pack includes any overlay range that includes a pack version with the previous format (data pack < 82, resource pack < 65), it is still required for all overlay definitions
- Otherwise, it is not allowed and must be removed
- Added required fields min_format and max_format with the same formats as the fields above with the same name for the pack section
Debug Features
- Some debug features that were previously removed during compilation are now preserved and can be used by players
- Individual values can be enabled with JVM properties:
- First, a global debug flag must be enabled with -DMC_DEBUG_ENABLED or -DMC_DEBUG_ENABLED=true
- Then, a specific feature can be enabled, for example -DMC_DEBUG_BRAIN or -DMC_DEBUG_BRAIN=true
- To get the list of all available debug properties, add -DMC_DEBUG_PRINT_PROPERTIES
- Warning: this is debug code, and the primary intention is to help modders - not for normal play. Handle with extreme care!
- Features can crash your game or corrupt your worlds
- Features are not guaranteed to work as intended
- Features might be added, changed or removed without a notice
Data Pack Versions 82.0 Through 88.0
- Added Mannequin entities
- World Borders can now be set per dimension
- Added a way to use GUI and item sprites in text
- Player profiles in data components and block entities no longer resolve automatically
- Added fetchprofile command for downloading player profiles
- Renamed chain to iron_chain
Mannequins
Added a new type of technical entity called minecraft:mannequin which can only be spawned with summon commands.
- A Mannequin is a Player Avatar without a connected Player
- Mannequins show a description text (by default entity.minecraft.mannequin.label) where a Player's below_score score would show
- Mannequins function as Living Entities - they can hold and wear equipment, have attributes & effects, take damage, etc.
- Mannequins accept the minecraft:profile component from spawner items
Data Fields:
- profile - Which Player profile to show on the entity (same format as a minecraft:profile component), defaults to {} (i.e. static profile with both id and name missing)
- hidden_layers - List of outer skin layers to hide
- Valid entries: cape, jacket, left_sleeve, right_sleeve, left_pants_leg, right_pants_leg, hat
- pose - The pose of the mannequin
- Valid entries: standing, crouching, swimming, fall_flying, sleeping
- main_hand - Which hand is the main hand of the Mannequin - one of left and right
- immovable - Optional boolean specifying that the Mannequin cannot be moved (defaults to false)
- description - Optional Text Component shown where a Player's below_score score would show
- The default entity.minecraft.mannequin.label text is shown if omitted
- hide_description - Optional boolean specifying that no description should be shown at all
- A Mannequin with the description hidden displays as if a Player had no below_score display
分享这个故事