Per-Player Loot
First visit rolls fresh loot from the container's loot table and the player's context (luck, position), stored under their UUID. Everyone who opens the chest gets their own copy.
Everything Prosperity does to make loot fair and worth discovering. Most systems are individually toggleable via config.
Every naturally generated container serves each player their own independent loot the first time they open it. The vanilla block, model, block entity, and renderer are never touched — Prosperity attaches per-player loot to vanilla containers via persistent Fabric data attachments, intercepting interactions through events.
After the first generation, the container's vanilla loot table is nullified to prevent hopper and comparator exploits. This replaces the functionality of Lootr.
First visit rolls fresh loot from the container's loot table and the player's context (luck, position), stored under their UUID. Everyone who opens the chest gets their own copy.
Hoppers see an empty container and cannot extract instanced loot; comparators read zero. This is intended — instanced loot lives outside the vanilla inventory.
Chests, trapped chests, barrels, shulker boxes, and loot dispensers/droppers are all instanced, plus chest and hopper minecarts — so mineshaft loot, which is overwhelmingly minecarts, is first-class. Each player opens their own instance of a cart just as they do a chest.
Containers you have never opened display a small gold sparkle sprite hovering above them; containers you have looted show nothing. No more re-checking every chest in a stronghold or mansion. Container minecarts carry the same sparkle, anchored to the cart so it follows along as the minecart moves.
The indicator is a world-space overlay (not a HUD element), driven client-side from lightweight per-chunk requests as chunks load.
A gold-cased compass whose needle points at the nearest container you have not looted yet — the same per-player unlooted set the sparkle indicators show, so blacklisted containers are never targeted and a refreshed container becomes a target again. Loot the target and the needle swings to the next nearest candidate; with nothing unlooted in loaded range the needle spins idly, like a vanilla compass in the Nether.
Each player's compass points somewhere different, because each player's loot history is different. The lucky way to find one is in injected chest loot at the Frontier tier and beyond — the deeper you explore, the sooner it turns up. The deliberate way is to craft one: a vanilla compass framed in a gold casing with an end rod for the needle and a netherite ingot at the crown. The recipe is intentionally late-game, because a tool that reveals the bearing and distance to your nearest unlooted container is one you should earn.
Loot quality scales with Euclidean distance from world origin (0, 0 in the XZ plane). Origin is used rather than world spawn so distance reflects absolute geography, not a movable reference.
| Tier | Distance (blocks) | Quantity | Quality |
|---|---|---|---|
| Local | 0 – 999 | 1.0× | +0 |
| Frontier | 1,000 – 2,999 | 1.5× | +1 |
| Wilderness | 3,000 – 5,999 | 2.0× | +2 |
| Outlands | 6,000 – 9,999 | 2.75× | +3 |
| Depths | 10,000+ | 3.5× | +4 |
Stack quantities scale by the multiplier (capped at 64); quality adds luck to the loot context. The End is always treated as Depths tier.
The same tiers apply to hostile-mob drops when you land the killing blow, so combat keeps pace with exploration — a mob far from origin drops scaled stacks and rarer loot, while passive mobs and environmental or non-player kills are untouched. Mob scaling is independently togglable.
Fishing joins the same reward loop: the catch is rolled with the distance tier at the bobber's position, adding the tier's quality to the roll's luck — biasing toward the treasure category the further out you fish — and multiplying stackable catches (non-stackables like enchanted books are never multiplied). Luck of the Sea stacks on top. Independently togglable.
Trial chambers join the same reward loop: vault loot (normal and ominous) and trial spawner reward ejections are scaled by the chamber's distance tier, and a shipped structure override raises chambers to at least the Wilderness tier. Vanilla's per-player vault gating and key consumption stay untouched — scaling only, independently togglable.
With Tribulation installed, the local difficulty adds bonus luck on top of the distance tier, everywhere distance scaling applies — a dangerous area yields richer chests and better drops from its scaled mobs. The bonus follows Tribulation's own tier thresholds, stays small through the early tiers, is capped at +2 luck, and gives stack counts a slight nudge only at the two highest tiers.
Tribulation's scaled mobs also drop their equipped tier gear with a chance tied to how far from spawn they roam: the mob's Tribulation tier crossed with the distance tier where it was equipped sets the odds, capped at 25% per piece for a max-tier mob in the Depths. Near spawn the same mob keeps its kit — enchanted gear stays a reward for ranging far, not an early-game firehose.
Override the tier used by a specific structure with a fixed, minimum, or maximum mode — e.g. ocean monuments fixed to Wilderness, strongholds at minimum Outlands, or village chests capped at Frontier.
Loot every instanced container in a structure and the final one pays out an extra reward drawn from the tier-appropriate injection pool, with an action-bar fanfare — ✦ Stronghold cleared! Thorough exploration beats chest-hopping. The bonus is per player and one-time per structure instance: a second player clearing the same stronghold earns their own, but loot refresh never re-arms it. Only structures with more than one instanced container qualify, blacklisted containers are excluded from the count, and a container broken before being looted simply shrinks the remaining set.
A Fabric-style LootModifierCallback.EVENT fires after distance scaling but before the loot table resolves, handing listeners a mutable context. See the API page.
A datapack system adds custom items to vanilla loot tables gated by minimum distance tier, optionally by dimension, and by a per-group chance — so a bonus item is a find, not a given. Prosperity ships built-in injections tuned to roughly 1 in 20 chests at the Frontier: most chests hold vanilla-only loot, and the bonus that does land is drawn from rarity-banded vanilla enchantment pools — Common books at a random level on the Frontier, escalating band by band out to very-rare and treasure-only enchants (Mending, Frost Walker and kin) in the Depths — alongside non-book filler like horse armor, golden apples, and upgrade templates. Whether a chest pays out and what it pays are both deterministic per player and re-roll together on a loot refresh.
With Meridian installed, its entire enchantment catalog joins far-flung chests as enchanted books at about 1 in 30 chests, drawn live from Meridian's rarity tags so new enchantments are covered automatically, banded by rarity — Common books from the Frontier out to its treasure-only enchants in the Depths. Each found book's enchantments are rolled live by Meridian's own loot-roll API at a power scaled to the container's distance tier — power 8 at the Frontier ramping to 30 in the Depths, treasure enchants Depths-only, capped by Meridian's per-enchant loot limits — deterministically per player, so deeper travel genuinely upgrades what the same book can be.
Opening an instanced container shows an action-bar message with the loot tier and active modifiers, so the risk-versus-reward loop of exploration is visible.
The very first instanced container a player ever opens also drops a one-time chat line — This loot was rolled just for you — other players get their own. — so newcomers understand up front why an already-looted dungeon still pays out for them. It fires once per player for their lifetime, never on return visits or later containers, and rides the same enableLootNotifications toggle as the tier message.
A compact badge in the shared rfizzle HUD strip (slot 3) shows your current distance loot tier — a treasure-chest glyph and the tier name, drawn in the tier's color, updating live as you travel. Crossing a tier boundary briefly flashes the label gold. It stacks below Tribulation and Mercantile when installed, honors a configurable corner and offset, and is independently togglable.
Hold Left Alt — the default Peek Loot Detail bind, rebindable under Controls → Prosperity — for a full-screen detail panel; like vanilla's hold-Tab player list, it never captures the mouse or pauses the game, and it hides under the same rules as the badge. An occasional chat hint on join points you to it until you first open it. Three pillars: your exact distance and current tier with a progress bar toward the next boundary, the complete tier ladder with each tier's stack multiplier and quality bonus (current tier highlighted), and the unlooted containers physically around you grouped by type and tier. Carrying a Prospector's Compass adds a Nearest line to that pillar — the distance in blocks and an 8-way bearing (e.g. 142 blocks NW) to the same target the needle points at. It reads only from data already on the client, so it never disagrees with /prosperity info. For the catalog of what can drop where, see the loot index — the panel is its live, in-world companion, not a duplicate.
Optional restocking (off by default) lets a container's loot regenerate per player after a configurable cooldown, so explored structures stay worth revisiting on long-running worlds. Each player's cooldown is independent; once it elapses the unlooted sparkle reappears and the next open rolls fresh loot. By default the refresh repeats the same items; flip on randomizeLootOnRefresh to draw genuinely different loot each time.
A Prosperity advancement tab turns the exploration and looting loops into concrete goals. Every milestone is granted server-side the moment loot is generated, so it counts only real instanced generations — return visits, blacklisted containers, and vanilla-passthrough opens never move the needle — and progress rides your player data across relogs and restarts. The tab hangs three chains off a Prospector's Compass root, with the deepest rung of each as a challenge.
The first instanced container you loot in each distance tier — Frontier, Wilderness, Outlands, and the far Depths — in a linear chain that follows you outward from spawn. Requires distance scaling to be enabled.
Loot 10, then 50, then 250 instanced containers over your lifetime. A double chest counts once; a refreshed container you re-loot counts again.
Loot containers across 3, 8, then 15 distinct structure types, rewarding breadth of exploration over grinding a single ruin.
Optional protection (off by default) makes any loot container that still holds unclaimed loot — including a fresh, never-opened dungeon chest — break several times slower, with an action-bar warning, particles, and a quiet cue when breaking begins, so no one can quickly destroy a dungeon's chests and erase its instanced loot. An optional unbreakable mode locks protected containers entirely — immune to mining and explosions alike (TNT, creepers) — until their loot is claimed. Creative players always break instantly, and protection lifts once every online player has opened the container — unless loot refresh is enabled, in which case the container's loot keeps returning, so it stays protected for good. Player-placed chests are never affected.
Optional co-op sharing (off by default): players on the same scoreboard team share a single loot instance per container instead of each getting their own. The first teammate to open a chest rolls the loot — with their luck and position — and everyone else sees that same inventory, drawing from one shared pot on one shared refresh cooldown. It brings back the vanilla moment of a party crowding around one chest, while strangers still can't strip a dungeon before your group arrives. Teamless players keep their own individual loot, two teammates can't have the same chest open at once, and a container you opened with your team keeps serving you that shared instance even after you leave — so there's no leave-and-re-loot. A party or social mod can supply the grouping through Prosperity's API in place of scoreboard teams — with Open Parties and Claims or FTB Teams installed, party loot mode automatically follows your party, so players manage their own groups without an admin touching scoreboard teams. With FTB Teams that means actual party teams — a solo player in their own auto-created team still gets individual loot.
A "Loot Tables" category in EMI, REI, and JEI lists every item a structure can drop — one row per item source, tagged with the structure it comes from and the tier where it becomes available. Search by an item to find where it drops (type mending to see every source of Mending), or click a structure's representative item to see just that structure's loot. Filter chips sit alongside it: click a distance-tier marker to see everything obtainable at that distance, or a Vanilla / Injected marker to scope the list by source. The index is built from the live loot tables on world load and after /reload, so it reflects datapack changes automatically.
Drops that Prosperity's loot injection adds are marked with a gold sparkle and an "Added by Prosperity at [tier]+ tier" tooltip, so it is clear at a glance which items are vanilla structure loot and which the mod contributes. Vanilla entries carry no tier restriction and read "Any tier." A book drawn from a rarity pool shows a "Random Common enchantment"-style line instead of a blank book, naming the band it rolls from.