slashlootr-0.3.0+mc1.21.6-fabric.jar
Curse Maven Snippet
What's new
0.3.0 — 2026-08-29
Built to sit inside somebody else's modpack. Almost everything here is SlashLoot learning to do less: leaving containers it does not own alone, handing blacklisted loot back to vanilla, letting chests behave like chests. And it now runs on NeoForge, across every version Fabric already had.
Thanks to TheArchictect on CurseForge, who reported four of these.
Containers SlashLoot does not own are left alone
- Blacklisted dimensions and loot tables no longer serve empty containers. If you put a dimension or a loot table on a blocklist, that container now behaves exactly as it would with SlashLoot uninstalled: shared vanilla loot, working hoppers, working comparators. Previously the blocklist stopped SlashLoot from serving the container but did not stop it from suppressing the vanilla roll, so nobody filled it and it stayed empty forever.
- Modded containers are no longer broken by association. The vanilla method SlashLoot hooks is
shared by every container type in the game, including ones from other mods that it has no idea how
to serve. Those are now left completely untouched. If you want SlashLoot to instance unknown
modded containers, set
handleUnknownContainers: true. - Container size is read from the container instead of being assumed to be 27 slots, so a modded chest with a different inventory size gets a personal copy of the right shape.
Chests behave like chests again
- Lids animate. Chest and shulker lids open, barrels flip their
openstate, and both halves of a double chest animate together. The open sound now comes from vanilla, so it plays once. - Trapped chests emit redstone again. This had been silently broken since 0.1.0.
- Turn it off with
delegateContainerAnimation: falseif it conflicts with something.
It cleans up after itself
Stored loot for a container is dropped when that container is destroyed, so a long-running server
does not accumulate dead entries. Three layers cover the ways a container can vanish: breaking it,
destroying the minecart or boat carrying it, and a low-cost background sweep that catches
explosions, pistons, and world edits. Tune with cleanupOnBreak, pruneIntervalTicks, and
pruneBatchSize.
You can ask it what it decided
Set debugLogging: true and SlashLoot logs one line per container: position, loot table, whether it
served a personal copy or handed the container to vanilla, and why.
[SlashLoot] block chest @ minecraft:overworld [123,64,-45] table=minecraft:chests/simple_dungeon -> INSTANCE reason=instanced slots=27
[SlashLoot] block minecraft:hopper @ minecraft:overworld [110,-60,100] table=minecraft:chests/village/village_weaponsmith -> VANILLA reason=unsupported_container:minecraft:hopper
Repeat verdicts are deduplicated, so hopper polling cannot flood the log. Built for exactly the job of working out why a container in a big pack behaves the way it does.
NeoForge, and Minecraft 26.2
- NeoForge builds for 1.20.6, 1.21 through 1.21.1, 1.21.2 through 1.21.3, 1.21.4, 1.21.5, 1.21.6 through 1.21.8, 1.21.9 through 1.21.10, 1.21.11, 26.1.2, and 26.2. Same mod, same behaviour, same save data.
- Minecraft 26.2 on both loaders.
- JARs are now named
slashlootr-<version>+mc<band>-<loader>.jar. Mind the suffix when you pick one.
Two gaps worth knowing about, both outside our control: NeoForge has no 1.20.1 or 1.20.5 line, so Fabric covers those alone; and NeoForge has published no stable 21.6, 21.7 or 21.9 build, so Minecraft 1.21.6 through 1.21.8 and 1.21.9 through 1.21.10 are served by the 21.8 and 21.10 builds.
Version coverage correction
If you run Minecraft 1.21.5 on Fabric, the old download did not work and you should take the new 1.21.5 file. Releases up to 0.1.2 advertised the 1.21.4 JAR as covering 1.21.5. It never could: Minecraft removed the save-data API that build relies on at 1.21.5, one version earlier than the metadata assumed. 1.21.5 now has its own build on both loaders.
New commands
/slashloot forget all now works (it previously printed instructions to stop the server and delete
a file by hand). Also new: /slashloot prune, /slashloot stats, and /slashloot reload.
Config
Every key is optional and defaults sensibly, so a config file from an older version keeps working.
/slashloot reload re-reads it without a restart.
{
"enabled": true,
"dimensionBlocklist": [],
"lootTableBlocklist": [],
"handleUnknownContainers": false,
"delegateContainerAnimation": true,
"playOpenCloseSounds": true,
"cleanupOnBreak": true,
"pruneIntervalTicks": 6000,
"pruneBatchSize": 256,
"debugLogging": false
}
Mod id, config path, and the per-dimension save file are unchanged, so existing server data carries over untouched.
Under the hood
- The nine per-band source forks are gone. Every band from 1.20.5 up now compiles one shared source tree plus small per-generation compatibility shims, so a fix is written once instead of nine times. 1.20.1 stays a documented fork; it predates the interfaces the rest of the tree relies on.
- That shared tree is loader-neutral behind a single seam, which is why NeoForge needed one adapter and no changes to the mod logic or the mixins at all.
- The 26.1.2 mixin config now declares JAVA_25, matching the JDK it is compiled with. It was shipping JAVA_21.
- Break cleanup no longer trusts the break event. NeoForge fires its version before the break and allows it to be cancelled, unlike Fabric, so the position is re-checked a tick later instead of being dropped on faith.
Verified
Band 1.21.1 was checked end to end on both loaders: instanced containers, blacklist fallback, unsupported-container fallback, commands, config reload, and decision logging. All 22 band and loader combinations build clean.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

