The 1.21.10 (including 1.21.9) branch has now been merged, thanks to all who tested and contributed to it!
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:
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(25))
}
}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
EntityTypeandMannequinMeta/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.
- The server code of conduct may be sent during configuration with the
CodeOfConductPacket, at which point you should block theAsyncPlayerConfigurationEventuntil receiving aClientAcceptCodeOfConductPacket.
- The
IChunkLoaderinterface has been renamed toChunkLoader. - 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#getConnectionStatehas been fatally deprecated in favor#getServerStateand#getClientState. When updating,#getConnectionStatecan be translated directly into#getClientStateto 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()andmyBlock.registry().occlusionShape()respectively. PlayerChangeHeldSlotEvent#getOldSlotnow returns a byte (inline with other methods about player held slots) instead of an int.- The
ResourceLocationargument 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.
- 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.