Tags
Creators
All versions
2.0.1+neoforge
Release
2.0.1 (NeoForge)last month 18
Compatibility
Minecraft: Java Edition
1.21.1
Platform
NeoForge
Supported environments
Client and server
Required content
Changes
Everything here since 1.1.0. 34 abilities became 47, HMs moved off an item and onto a wheel, and a wandering Ditto turned up selling discs.
✨ Nine new HMs
- Thief — take whatever the creature you're aiming at is holding (#36).
- U-turn — leap backwards and spin to face what you were running from (#35).
- Charge — turn the block you aim at into a redstone power source for a while. Timed, not permanent: the original block comes back exactly as it was (#33).
- Destiny Bond — for a short window, whatever kills you does not outlive you (#34).
- Sweet Scent — draw a horde of wild Pokémon out of hiding around you (#8).
- Headbutt — hurl yourself forward head-first. Shakes trees loose, hurts what you hit, and hurts you (#9).
- Bounce (toggle) — every block you land on answers like a slime block (#37).
- Snowscape (toggle) — winter follows you: snow underfoot, still water freezing as you cross (#6).
- Vine Whip (toggle) — reach several paces further, for blocks and creatures alike (#7).
🎡 The HM Wheel
- Press H for a radial selector holding every HM you know, tinted by the type of the move it is named after. Only what you have learned appears, so a handful of HMs get wide, easy segments (#14).
- Whatever is live glows — the selected HM and every toggle that is on get a halo and a glint, so one look tells you what is running.
- The HM Case is no longer required. It survives as one of two activators; a bare hand is the other, and both are configurable. HMs fire on left-click by default — it never opens a chest or a door out from under you — with right-click and either as options.
- A keybind for every HM, unbound by default, in Options → Controls.
- Discs, HUD icons and wheel slots all wear the same art: the Scarlet/Violet TM disc for the move's type, with the trigger item set into it.
🧬 The Trainer Ditto
- A rare wanderer with perfect IVs that lays out five random HM Discs, each costing only that HM's own trigger item. If you have learned nothing yet, your first disc is free (#15).
- It really is a Ditto — throw a Poké Ball and catch it. Do that and it never seeks you out again, and actively keeps its distance if it meets you.
🔧 Also
- Camouflage really turns you into the creature, hitbox included, instead of spawning a copy and hiding you under it (#30, #4).
- Stockpile (#16), Lava Plume (#38) and Absorb (#32) joined earlier on.
- Same-move teachers (optional) — any Pokémon knowing an HM's namesake move can teach it (#12).
- Strength pushes in six directions and moves double chests as one unit, contents intact (#5).
- Big fix-and-feel pass: Dive (#26), Rock Climb (#27), Waterfall (#18), Glide (#29), Explosion (#24), Charm (#25), Magnet Rise (#19), Dig (#23), and free single-block Cut/Rock Smash (#3).
- Bullet Seed no longer crashes (#21). Ember lights campfires (#20), Rain Dance actually rains (#22), Burning Bulwark scorches nearby blocks (#28), and right-clicking a chest opens it instead of firing your HM (#17).
- HMs tell you why they didn't fire — cooldown, hunger, wrong target — instead of doing nothing.
- Toggles no longer double up. Jump, Rollout, Dive and Harden work through attributes rather than status effects, so the HM entry is the only one you see. Hiding the icon was never enough — the inventory lists every effect regardless.
- The Trainer Ditto's IVs are a setting — from rolled like any wild Ditto, through one guaranteed best stat, up to flawless.
🐛 Fixed
- Rock Climb climbs again. It only ever clung to walls like a web: it watched the forward movement key, which a server never receives unless you are riding something, so the climb branch could not fire. Look up to climb, sneak or look down to descend, look level to hold on.
- Waterfall stops at the surface instead of launching you out of the water and into the sky.
- Charge powers the block instead of replacing it. It used to swap in a redstone block and put the original back — so charging a furnace briefly deleted it, and anything with contents was refused. Now the block stays exactly what it is and simply answers as a power source.
- Substitute no longer duplicates your gear. The decoy copied your armour and held item onto an armour stand, which could then be broken for a second set — backpacks included. It now wears your skin and carries nothing.
- The Trainer Ditto is finally the right height to talk to. Entity ray-tracing is done by the client, and the client never got the disguise hitbox, so its head was not clickable.
- Strength moves containers properly again. A moved block entity kept the coordinates of where it used to be, which broke it and every later push of the same chest.
- Sweet Scent actually spawns a crowd, beside you and made of what lives around you. It used the world heightmap to place them, so underground or indoors the horde appeared far off at the surface.
- Stockpile's lava gulp hurts properly — 3.5 hearts, up from half a heart.
🔧 Changed
- Kotlin incremental compilation is off. It failed repeatedly while Gradle still reported success, shipping jars missing synthetic classes that crashed the server and looked exactly like code bugs.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:JNfSyMuQ:7Geu52fG"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:JNfSyMuQ:7Geu52fG"
}


