1.16.0
Compatibility
Required content
Changes
Two big changes, and a pile of smaller ones. Profiles let you keep more than one HUD layout and have the right one load itself when you change worlds. Underneath, the config is now a folder instead of one file — your existing config migrates automatically on first launch and the old file is left as a backup.
Download the jar matching your Minecraft version:
- Minecraft 1.21.11 —
mclabs-addons-1.16.0-mc1.21.11.jar - Minecraft 26.2 —
mclabs-addons-1.16.0-mc26.2.jar
Downgrading to 1.15.x: your old
config/labsaddons.jsonis left in place untouched, so an older version still starts and reads it — but it is frozen at the moment you upgraded, so anything changed since (layout tweaks, runner jobs, tracked timers) will not be there. Nothing is lost from 1.16.0's own files; they are simply ignored by older versions.
Added
- HUD profiles. Save more than one widget layout, name them, and switch between them, so the HUD can match what you are actually doing instead of being one compromise for everything. A profile remembers every widget's position, size, colours and whether it is switched on at all, plus the display choices inside them — your pinned progress rows, which ability cooldowns are hidden, which Raid Mine resources are shown, and whether cooldowns stack in a column. Everything else — bite marker colours, the item-uses overlay, the low-job alarm — stays shared, so switching layouts never quietly changes a setting. New profiles start as a copy of the one you are on, and can be renamed or deleted at any time.
- Profiles can load themselves when you change worlds. The server announces which world you have arrived in, so the mod reads that and swaps to whichever profile you bound to it — a fishing layout at Spawn, a mining one in the Underworld, and back again, with nothing to press. All five worlds worth binding a layout to are listed from the start: Spawn, the Overworld, the Underworld, Events and The Pit. Any world you leave unbound simply keeps whichever profile is already loaded. Manage all of it from the new Profile button in the HUD editor.
- Sunken Treasure now shows up in the Bounties widget. The Fishing Weekend hides a batch of barrels along Spawn's shorelines and announces the count as players find them, so the widget tracks it the same way it tracks a Bounty Hunt — a barrel row reading how many are still out there, sitting under the bounty chest row when both events are running. Each new wave re-seeds the count on its own, and the row goes away once the last barrel is claimed. Joined partway through a wave and missed the announcement? Open
/fwonce and the widget picks up whatever the menu says is still out there. - The HUD editor's Widgets list rolls up out of the way. It sits in the top-left corner and there was no getting it off there, so anything you wanted to place behind it had to be nudged in blind. Click the Widgets header and the list rolls away to just its title bar — the same easing the Runner Leaderboard's job history uses — freeing the corner to click, drag and marquee in like any other part of the screen. Click it again to roll it back down; it remembers which way you left it.
- The editor's panels ghost out while you move a widget. Drag, resize or arrow-nudge anything and both the Widgets list and the settings panel fade back to a quarter of their opacity for as long as you're moving, so you can watch a widget travel underneath them instead of losing sight of it. Both come back the moment you let go. The bottom toolbar stays solid — it's the editor's frame rather than something in your way, and its nudge hint is worth reading precisely while you're nudging.
- The low-job alarm's "Alert At" is now a slider. It was a typing box, which meant it could hold any number you liked (including ones that would never fire) and was the one part of the settings panel that stayed a stark white box while everything around it faded. It now slides from 0 to 30 jobs with the figure on the control itself, so there is nothing to type, nothing to mistype, and one less row in the panel.
Changed
- The config is now a folder instead of one file.
config/labsaddons.jsonhas becomeconfig/labsaddons/, holding your settings, the server state the mod tracks, the runner leaderboard and your profiles as separate files. The split is by how each kind of data behaves: settings change when you change them, tracked state changes constantly, and the leaderboard only grows. Keeping them apart means a save no longer rewrites all of it at once, and a file that somehow gets damaged costs you only what was in it rather than everything. Your existing config is migrated automatically on first launch and left in place as a backup — nothing to do, and nothing moves on screen. - The mod writes to disk far less. Saves used to be whole-file and immediate, including from the per-tick paths that fire on every mob kill, fish caught and chem sold. They are now batched onto a background thread and skipped entirely when nothing has changed, so a busy fishing or Pit session stops hitting the disk hundreds of times. The leaderboard — much the largest part — is only rewritten when a runner job actually changes it.
- "Reset All" is now "Reset Profile". With more than one layout in play the old name was ambiguous, and it only ever reset the layout you were looking at anyway. It now also clears the things that travel with a layout — pinned progress rows, hidden ability cooldowns, hidden Raid Mine resources and the cooldown stacking direction — so a reset is a genuinely clean profile. Your other profiles, your tracked server state and your global settings are untouched.
- The editor toolbar wraps instead of overlapping itself. On a narrow screen (GUI scale 4 on a 1080p monitor, say) the buttons had no room for a full row; the Profile, Grid and Snap group now moves to a row of its own rather than running into the buttons on the left.
Fixed
- Fixed a crash opening the Runner Leaderboard on Minecraft 26.2. The rotating 3D model beside the list is a display-only player that never joins a world, so it had never been given an entity id — which 26.2 refuses to hand out rather than defaulting, taking the game down as the screen drew. The models are given their own ids now.
- Fixed a startup crash on Minecraft 26.2. Restoring your saved Mastery board built its quest icons during start-up — but 26.2 binds item components later than it fills the item registry, so the game died with "Components not bound yet" before reaching the menu. Only players with a saved board hit it. The boards are now restored when you join a world, which is both safely after start-up and the first moment they matter. A quest icon that still cannot be built now just leaves the row without one rather than taking the client down.
- Config writes can no longer be corrupted by a crash. The old save truncated the file and then wrote it, so losing the game mid-write left a broken config. Each file is now written beside itself and moved into place, which either fully succeeds or leaves the previous version untouched.
- Items you already had no longer count toward a Mastery challenge you just started. Starting a
Catchchallenge while holding a stack of what it asks for — 13 fishing crates already in the bag — credited the whole stack the instant the challenge went live. Only what you catch after starting counts now. The bar was only wrong while a challenge was already active alongside the new one, which is the usual case, and reopening/masteryalways corrected it.
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:W09tZtbv:JutB0V0P"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:W09tZtbv:JutB0V0P"
}



