Links
Tags
Creators
Details
Licensed MIT
Published 7 months ago
Updated 12 hours ago
All versions
2.1.0-beta.3
Beta
2.1.0-beta.35 months ago 33
Compatibility
Minecraft: Java Edition
26.2-snapshot-5
Platform
Fabric
Supported environments
Client-side
Required content
Changes
Breaking
- Mod ID renamed from
handytraderstohandytraderto match the rest of the Handy series convention (singular). Existing config (config/handytraders.json) and per-villager favorites (config/handytraders-favorites.json) are migrated automatically on first launch — no settings or favorites lost. - Internal package moved from
net.rezanmb.handytraderstodev.handy.mods.handytrader. No user-facing impact unless another mod was depending on internal classes.
Changes
- Trade-identity hash upgraded from 32-bit hashCode to 64-bit truncated SHA-1. Eliminates the silent collision risk where two distinct trades on the same villager could star/unstar each other. Existing favorites are rewritten to the new format the first time you reopen each villager — no manual reset needed, but villagers you never revisit stay on the old format.
- Mod is now declared client-only (
environment: "client"). Dedicated servers no longer load the jar; the mod was already client-only in behavior, this just makes it explicit. - Favorites file write moved off the render thread so toggling a bookmark on a slow disk no longer stalls the frame.
- Config persistence rebuilt on YACL
ConfigClassHandler(matches the rest of the Handy suite). On-disk JSON shape is unchanged; users without YACL installed still run on defaults.
Internal
- Cleanup wave aligned this mod with the rest of the suite — JAVA_25 mixin compatibility level, full @At descriptors, named bookmark color palette, narrowed exception handlers, and a CI release workflow that no longer fails on prerelease tags.
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:j5oLffcp:IqCPq3qT"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:j5oLffcp:IqCPq3qT"
}

