promotional bannermobile promotional banner

Randomized Block & Mob Drops

This mod randomizes all block and mob drops in Minecraft — including modded ones.

File Details

RBMD 2.0.2

  • R
  • Mar 19, 2026
  • 23.60 KB
  • 281
  • 1.21.1
  • NeoForge

File Name

rbmd-2.0.2.jar

Supported Versions

  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:rbmd-1332736:7782618"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

[2.0.2] — 2026-03-19 — Features & Bug Fixes

🚀 New Features

  • /rbmditemdrops <item> — reverse lookup showing what blocks and mobs drop a specific item, split into separate categories.
  • /rbmdmobdrops <mob> — shows what a specific mob drops now after randomization.
  • First join welcome message — shown once per player per world on first login. Tells players drops are randomized and to run /rbmdhelp.
  • Config file (config/rbmd-common.toml) with the following options:
    • randomize_blocks — toggle block drop randomization
    • randomize_mobs — toggle mob drop randomization
    • randomize_silk_touch — toggle Silk Touch drop randomization (default: true)
    • item_blacklist — items that never appear as randomized drops (defaults to unobtainable blocks like bedrock, barrier, command blocks, etc.)
    • mob_blacklist — mobs whose drops are never randomized
    • mod_blacklist — exclude all items and mob drops from an entire mod by its mod ID
    • reset_welcome_message — force the welcome message to show again on next join
  • Spawn eggs excluded as loot table sources — items won't drop from spawn eggs since they can't be broken.
  • Config values logged on startup — active config is printed to latest.log on every world load for easy debugging.

🐛 Bug Fixes

  • Fixed: randomize_mobs=false still randomizing mob drops. The config toggle only skipped the LivingDropsEvent handler but the datapack was still writing randomized entity loot tables. Entity loot tables are now skipped during datapack generation when randomize_mobs=false. Same fix applied to randomize_blocks=false and block loot tables.
  • Fixed: randomize_blocks=false not applying to existing worlds. The existing-world code path hit a return before checking the config, so the toggle was silently ignored on any world that had already been loaded. Config is now checked before scheduling the reload on existing worlds too.
  • Fixed: COVERED_TABLES always empty, causing some mobs to drop nothing. COVERED_TABLES.clear() was called at the end of makeDatapack instead of the beginning, wiping the set immediately after building it. The onLivingDrops handler always saw an empty set and remapped every mob through the event — mobs whose loot table used complex entry types (tags, groups) got nothing remapped and dropped nothing.
  • Fixed: double-randomization on mobs with loot tables. Broadened the loot table ID match in onLivingDrops to handle mods that register table IDs without the loot_table/ path prefix.
  • Fixed: all warnings — removed unused imports, simplified always-true/false null checks, replaced deprecated defineListAllowEmpty with defineList using suppliers.

⚙️ Technical / Internal

  • /rbmddrops renamed to /rbmditemdrops.
  • Section comments trimmed to single lines throughout the file.
  • Unobtainable items (bedrock, barrier, etc.) moved from hardcoded EXCLUDED set into the configurable item_blacklist default — only AIR remains hardcoded.
  • makeDatapack now reads randomize_blocks and randomize_mobs config values to skip irrelevant loot table categories at generation time, not just at event time.