# Minestom 1.21.10 The 1.21.10 (including 1.21.9) branch has now been merged, thanks to all who tested and contributed to it! ## Java 25 Minestom tracks the latest LTS version of Java. Since Java 25 has been released, it is now the minimum required version of Java to use Minestom. **To use Java 25 you must be on IntelliJ IDEA 2025.2 or higher**. In gradle (Kotlin), you can set the Java version as such: ```kotlin java { toolchain { languageVersion.set(JavaLanguageVersion.of(25)) } } ``` ## New in Minecraft This is a new segment to these release notes, a high level description of how some of the new Minecraft features appear in Minestom: * Mannequins and Copper Golems are now spawnable with the associated `EntityType` and `MannequinMeta`/`CopperGolemMeta`. * **Note:** Some fields from PlayerMeta were moved to the common AvatarMeta between player/mannequin. Offsets may have changed for those editing metadata manually for player entities. * Object text components may be used with the adventure API, see [Javadocs](https://jd.advntr.dev/api/4.25.0/net/kyori/adventure/text/ObjectComponent.html). * The server code of conduct may be sent during configuration with the `CodeOfConductPacket`, at which point you should block the `AsyncPlayerConfigurationEvent` until receiving a `ClientAcceptCodeOfConductPacket`. ## Misc Changes * The `IChunkLoader` interface has been renamed to `ChunkLoader`. * Minestom now tracks the server and client connection states separately, and play->configuration state changes only occur between ticks. These changes significantly improve stability when reentering the configuration phase from play. As such, `PlayerConnection#getConnectionState` has been fatally deprecated in favor `#getServerState` and `#getClientState`. When updating, `#getConnectionState` can be translated directly into `#getClientState` to preserve prior behavior. However, some logic may benefit from being side-state aware around configuration swaps. * Block collision and occlusion shapes are now distinct, they can be accessed with `myBlock.registry().collisionShape()` and `myBlock.registry().occlusionShape()` respectively. * `PlayerChangeHeldSlotEvent#getOldSlot` now returns a byte (inline with other methods about player held slots) instead of an int. * The `ResourceLocation` argument now uses an Adventure Key instead of a raw string. * Adventure API, Key, and NBT are exported as transitive dependencies of Minestom. * Fastutil is no longer exported as a transitive dependency of Minestom. ## Misc Future Tasks * Receiving transfers and correctly processing entity passenger/vehicle offsets remain as TODO items from 1.20.6. * API to send and automatically wait for code of conduct acceptance from 1.21.9.