File Details
RBMD 2.0.3
- R
- Mar 22, 2026
- 31.00 KB
- 25
- 1.21.1
- NeoForge
File Name
rbmd-2.0.3.jar
Supported Versions
- 1.21.1
Curse Maven Snippet
[2.0.3] — 2026-03-22 — Commands, Safety & Polish
🚀 New Features
/rbmdfind <item>(renamed from/rbmditemdrops) — shows what blocks and mobs drop a specific item, now displays the actual block/mob name from the loot table path instead of the item ID. Blocks show under Mine, mobs under Kill./rbmdmob <mob>(renamed from/rbmdmobdrops) — shows what a mob drops now. Reads the written datapack file on disk so results are accurate. Both commands have full tab completion with filtered suggestions (items for/rbmdfind, entities for/rbmdmob)./rbmdcheck— OP command to verify blacklists are applied correctly. Shows which blacklisted items are still in the pool (bug indicator), validates mob/mod blacklist IDs against the registry, and shows total pool size./rbmddump— OP command that exports the full drop mapping todatapacks/rbmd_randomizer/rbmd_dump.txt. Lists every block and mob with their randomized drops — useful for reviewing changes and copy-pasting IDs into the blacklist.chaos_modeconfig option — skips all blacklists, spawn egg filter, and the natural drop filter. Every registered item enters the pool. A warning is shown in chat and logs when enabled.- Natural drop filter — the permutation pool now only includes items that appear in at least one loot table. Items with no natural source (creative-only, unobtainables) are automatically excluded, preventing them from absorbing a pool slot and making other items unreachable.
- First join welcome message now shows a
⚠ CHAOS MODE is ONwarning when chaos mode is enabled. - Config values logged on startup — active config printed to
latest.logon every world load including chaos mode status.
🐛 Bug Fixes
- Fixed:
/rbmdmobalways saying "hardcoded drops" on world rejoin.COVERED_TABLESis an in-memory set that was empty on rejoin sincemakeDatapackonly ran on first load. AddedpopulateCoveredTablesFromDisk()which scans the existing datapack folder on load and repopulates the set. - Fixed:
.jsonsuffix mismatch inCOVERED_TABLES.rm.listResources()returns paths with.jsonbutgetLootTable().location()does not — causing the double-randomization check to always miss and some mobs to drop nothing. The check now appends.jsonbefore comparing. - Fixed:
/rbmdfindnot showing mob drops. The old logic compared item IDs against entity table names (e.g.minecraft:rotten_fleshvsminecraft:zombie) which never matched. Now reads the actual datapack files to find which table each item came from. - Fixed:
randomize_mobs=falseandrandomize_blocks=falsenot applying to existing worlds. The existing-world code path returned early before checking config. Config is now checked before scheduling the reload. - Fixed: datapack not generated when
randomize_blocks=falsebutrandomize_mobs=true. Generation was gated entirely onrandomize_blocks. Now runs if either toggle is on. - Fixed: commands invisible to non-OP players.
sendSuccess()was used for all output which can be invisible on some servers. Switched tosendSystemMessage()for players. Read-only commands (/rbmdhelp,/rbmdfind,/rbmdmob) now allow all players with.requires(src -> true). State-changing commands require OP level 2. - Fixed: item blacklist defaults not loading (
item_blacklist_size=0). ThedefineListsupplier overload was silently falling back to an empty list. Switched todefineListAllowEmptywith a directList.of(...). - Fixed: all compiler warnings — removed unused imports, simplified always-true/false null checks, renamed unused
modBusparameter.
⚙️ Technical / Internal
- Commands renamed:
/rbmditemdrops→/rbmdfind,/rbmdmobdrops→/rbmdmob. ResourceLocationArgument.id()used for item/mob arguments — enables propernamespace:idinput and tab completion filtered to valid items/entities.- Verbose inline comments stripped throughout — only section headers and short one-liners remain.
collectDropNamesStaticadded as a static helper for use insidePermutation.ensureBuiltbefore instance context is available.

