Links
Tags
Creators
Details
1.2.4+mc1.21.1
Compatibility
Required content
Changes
Minecraft 1.21.1 changelog
1.2.4 — Horseshoes compatibility
- Fix the horn and Horseshoes equipment slots drawing on top of each other.
- Fix shift-click transfers for horns, horseshoes, and chested-donkey cargo.
- Fix the inventory accessor conflict with Horseshoes, including legacy-save migration.
- Run all 16 GameTests both with and without Horseshoes 1.3.3 before publishing.
1.2.3 — Backported fixes
Based on origin/1.21.1 (74277a7), in branch MrInterBugs/backport-1.21.1.
Backported fixes
- Store the horn in a dedicated one-slot inventory, separate from the saddle, armor, and chest cargo. Adding a chest no longer moves or unequips the horn.
- Synchronize horn state on inventory mutations and use the inventory as the authoritative server value. Removing a horn immediately removes its protection.
- Correct shift-click boundaries for equipment, cargo, all 36 player slots, and the horn slot.
- Save horns under
UnicornHornItemfor every horse type. Recover horns from the extra chest-inventory slot used by previous 1.21.1 versions, without duplicating them into cargo. - Drop separately stored horns once on forced death. Respect
bypasses_invulnerabilitydamage, including/killand the void. - Filter vanilla unicorn potion and arrow variants out of both creative-tab and creative-search lists. Supply fallback translations for vanilla variants already in inventories.
- Keep potion creation and conversions exclusively in the brewing stand. Remove the obsolete potion-crafting definitions and invalid horn recipe. Migrate only the eight tipped arrows recipe and its unlock to the current resource directory/format, using a component ingredient to require the correct potion.
- Restrict unicorn bottles to the valid gunpowder/dragon-breath conversions. Reject unrelated vanilla effect ingredients and avoid turning no-op mixes of legacy vanilla unicorn bottles into fake conversion recipes.
- Let REI discover the real arrow recipe instead of adding a duplicate manual display. Keep all five valid brewing paths visible, including Awkward splash/lingering potion + horn.
- Render a tapered 3D horn on the forehead while retaining the inventory icon. On 1.21.1 this uses a custom-model-data override on a temporary render-only stack; saved/equipped stacks are unchanged.
- Position the horn slot below the other equipment and move its background to match.
- Register both environment source sets with Loom and remove the duplicate unremapped Fabric API client dependency so the development/GameTest runtime loads remapped dependencies correctly.
Version-specific behavior retained
Minecraft 1.21.1 stays on Java 21 and Yarn mappings. The existing REI and optional RyoamicLights integrations remain enabled; it does not use the 26.1.2 JEI integration or client-item JSON format. Native 1.21.1 potion items already handle drinking, bottle returns, and lingering/arrow duration scaling, so the newer consumable/duration components are not copied into this version.
The release workflow already selects Java 21 and Minecraft 1.21.1 and retains those values.
Validation
./gradlew build compiles the common/client code, packages remapped release/source jars, and runs 16 Minecraft GameTests on Java 21. Tests cover lethal damage, immediate removal, chest attachment, horse/donkey saves, old chest-slot migration, horn and ordinary shift-clicking, brewing, rejection of crafting-table potion conversions, eight-arrow crafting, drinking/bottle returns, /kill/death drops, creative-search duplicates, and item translation keys.
The report is build/reports/gametest/results.xml; logs are in build/run/gameTest/logs/. The integration suite also runs against the actual Horseshoes 1.3.3 mod; the minimal Prism 1.21.1 test instance includes both mods. The existing 26.1.2 test installation is unaffected by the backport.
Horseshoes compatibility follow-up
- Restore the horn slot to
(26, 18)beside the saddle; Horseshoes keeps its(8, 54)slot. Move the client background with the horn's actual slot. - Identify the horn and player slots by their inventory, instead of assuming the horn is last. Handle all equipment slots before cargo when shift-clicking, including Horseshoes on chested donkeys. Run this handler before Horseshoes' fixed-index quick-move handler.
- Namespace the native-horse inventory accessor to avoid colliding with
Horseshoes' own
getInventory()method. This also preserves legacy chest-slot migration while both mods are loaded. - Add regression checks for non-overlapping horse/donkey slots and independent horn/horseshoe transfers without loss or duplication. CI runs with and without Horseshoes 1.3.3; release builds require both configurations to pass.
Run the integration checks with
./gradlew build runGameTest -PtestHorseshoes=true. The optional dependency is
only added to the development runtime; it is not bundled or required by the mod.
Optional dependencies
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:gWWYaw4W:vjeRm4Du"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:gWWYaw4W:vjeRm4Du"
}

