COWMODSКаталог модов

Mob Dice Attributes

Every mob. Every spawn. A fresh roll. A mod that dynamically converts mob attributes into a range using tabletop RPG dice mechanics.

Автор: gottsch2,7 тыс.21обновлён 26 апр. 2026 г.
МобыУтилиты

Описание

Mob Dice Attributes

Every mob. Every spawn. A fresh roll.

Mob Dice Attributes replaces Minecraft's fixed mob stats with tabletop RPG dice rolls. A zombie isn't always 20 HP — it might roll 13 or 27. A skeleton might track you from twice its normal range, or barely notice you across the room. Every encounter is different.

Balance is preserved by design. The dice formula is constructed so the average rolled value always equals the vanilla value. Mobs aren't globally buffed or nerfed — they vary.


⚔️ Core Features

🎲 Dice Rolling for All Mob Attributes

Eight attributes are rolled on spawn using the xdn + b formula:

  • Max Health, Movement Speed, Attack Damage, Knockback
  • Armor, Armor Toughness, Attack Speed, Follow Range

Die type is auto-selected per mob based on its vanilla value (low-HP mobs use d6, bosses use d20). Everything is configurable per attribute.

🏅 Rarity Tiers

Every mob spawn draws from a weighted rarity pool — like an RPG loot table, but for mobs.

TierDefault chanceEffect
Common60%Baseline rolls
Uncommon25%Slightly above average
Rare10%Blue name, 2× XP, bonus loot
Legendary5%Purple name, 5× XP, 3× bonus loot, all stats boosted

Tier weights and profiles are fully customizable via datapack.

⭐ Elite Mobs

Mobs that roll significantly above their average HP are automatically tagged as Elite — given a custom name and (optionally) a visible name tag. Threshold and prefix are configurable.

💰 Loot & XP Scaling

Above-average mobs drop more. Configure the XP multiplier and bonus loot rolls globally, or set them per rarity tier profile. Rare mobs are worth hunting.

🪝 Spawn Hooks

Map specific spawn contexts to profiles. Always give raid mobs a legendary profile. Force spawner mobs to be rare. Or leave it to the rarity draw. Your call.

Valid contexts: natural, spawner, chunk_generation, structure, breeding, mob_summoned, jockey, event, conversion, reinforcement, triggered, bucket, spawn_egg, command, patrol


🗂️ Datapack Customization

Everything is driven by datapacks under data/mobdiceattribs/:

FolderPurpose
spawn_profiles/Named stat bundles (name, color, XP, loot, dice overrides)
rarity_tiers/Weighted pool of profiles drawn on every spawn
spawn_hooks/Context → profile mappings
mob_overrides/Per-mob or per-tag dice overrides
dimension_rules/Enable/disable rolling or scale stats per dimension
difficulty_rules/Scale stats per world difficulty

All reloaded live with /reload — no restart required.


🖥️ Commands

CommandDescription
/mda reroll <targets>Force-reroll matched entities (op level 2)
/mda inspect <target>Print current stats, HP ratio, and assigned profile

⚙️ Configuration

A full server.toml config controls every attribute independently:

  • Enable/disable per attribute
  • Auto dice selection or manual die type
  • Range factor (how swingy the rolls are)
  • Mob whitelist / blacklist
  • Distance-from-spawn health scaling (disabled by default)
  • Elite mob threshold, prefix, and name tag visibility

🔌 Compatibility

  • Server-side only — clients do not need the mod installed
  • Jade / The One Probe — custom names are visible on hover
  • Reloads on /reload — fully compatible with datapack managers

📖 Documentation

PageLink
HomeWiki
Dice FormulaHow xdn+b works
Spawn ProfilesProfile format & fields
Rarity TiersWeighted pool setup
Spawn HooksContext-based profiles
Mob OverridesPer-mob dice overrides
Dimension RulesScale by dimension
Difficulty RulesScale by difficulty
ConfigurationFull config reference
Commands/mda reroll & inspect

📦 Source & Issues

GitHub

Последние версии

Все версии →
release

Mob Dice Attributes 2.0.0

2.0.0
26 апр. 2026 г.746Minecraft: 1.21.1neoforge
Скачать
Что нового
# Changelog for Mob Dice Attributes 1.21.1 All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). --- ## [2.0.0] - 2026-04-25 ### ➕ Added - **Improved Dice Algorithm:** - Die count (`x`) is now computed from the mob's vanilla attribute value and `rangeFactor`, then the bonus (`b`) absorbs the rounding error so the rolled average is always exactly equal to the vanilla value — no more systematic buff/nerf from rounding drift - Formula: `xdn + b` where `b = target − x · dieAvg` - **Auto Dice Type Selection:** - New `autoDice` config option (default `true`) per attribute section — picks the most "natural-feeling" die for each mob automatically based on its vanilla attribute value - Health curve: d4 (≤6 HP) → d6 (≤15) → d8 (≤30) → d10 (≤60) → d12 (≤120) → d20 - Speed curve: d4 (≤0.15) → d6 (≤0.25) → d8 (≤0.35) → d10 - Damage curve: d4 (≤2) → d6 (≤5) → d8 (≤10) → d10 (≤20) → d12 - Knockback curve: d4 (≤0.5) → d6 (≤1.0) → d8 (≤2.0) → d10 - Set `autoDice = false` to revert to the global `diceType` fallback - **Per-mob Datapack Overrides:** - Override dice / rangeFactor / bonus per mob ID or entity tag via datapack JSON files under `data/<namespace>/mob_overrides/` - Partial overrides supported — omit any field to fall through to the auto-pick or global config value - Tag support via `#` prefix (e.g. `#minecraft:raiders`) - Reloads on `/reload` with no restart required - Example file shipped in jar: `data/mobdiceattribs/mob_overrides/example.json` - Resolution order: datapack override → auto-pick → config diceType fallback - **Dimension Filter:** - Rolling can be disabled or scaled per dimension via datapack JSON files under `data/<namespace>/dimension_rules/` - `enable` field (optional, default `true`) — set to `false` to suppress all rolling in that dimension - `multiplier` field (optional, default `1.0`) — scales every attribute target before dice are rolled - Example file shipped in jar: `data/mobdiceattribs/dimension_rules/example.json` - Reloads on `/reload` - **Difficulty Scaling:** - Rolling can be disabled or scaled per world difficulty via datapack JSON files under `data/<namespace>/difficulty_rules/` - Targets: `"peaceful"`, `"easy"`, `"normal"`, `"hard"` (lowercase) - Multipliers stack multiplicatively with any active dimension rule multiplier - Example file shipped in jar: `data/mobdiceattribs/difficulty_rules/example.json` - Reloads on `/reload` - **Distance-from-Spawn Health Scaling:** - Scales mob max health based on horizontal distance from world spawn (health only) - Controlled via `[distanceScaling]` config section — **disabled by default** - Config fields: `enable` (default `false`), `blocksPerTier` (default `1000`), `multiplierPerTier` (default `0.1`), `cap` (default `3.0`) - Detailed conflict warning in config comments: enabling alongside mods like Scaling Health or Gradual Difficulty causes double-scaling - **Additional Attributes:** - Four new attributes now support dice rolling, each with its own full config section and datapack override support: - `armor` — only rolls for mobs with base armor > 0 (zombie=2, warden=30) - `armorToughness` — only rolls for mobs with base armor toughness > 0 (warden=3) - `attackSpeed` — only rolls if base > 0; note: limited visible effect on most hostile mobs - `followRange` — detection/pursuit range (zombie=35, skeleton=16, blaze=48) - Example file `mob_overrides/example_all_attributes.json` shipped in jar showing all eight attributes - **Elite Mobs:** - Mobs that roll above a configurable HP ratio threshold are tagged as "elite" - Elite mobs display a custom name tag (e.g. `Elite Zombie`) that is always visible - Config section: `[eliteMobs]` — `enable`, `healthThreshold` (default `1.2`), `namePrefix` (default `"Elite"`), `showName` (default `true`) - Threshold note: with `rangeFactor=2.0` the practical rolled maximum is ~1.35×; values above that will never fire. Recommended range: 1.15–1.35 - Profile `namePrefix` (see Spawn Profiles) takes priority over the elite name when set - **Loot Scaling:** - Mobs that roll above-average health drop bonus loot rolls and/or extra XP on death - `mda_hp_ratio` stored in entity NBT for any mob that rolls above its vanilla HP target - Config section: `[lootScaling]` — `enable`, `threshold` (default `1.0`), `xpMultiplier` (default `2.0`), `lootBonusRolls` (default `1`) - Set `threshold` equal to `eliteMobs.healthThreshold` to restrict bonuses to elite mobs only - Spawn profile `xpMultiplier` / `lootBonusRolls` fields (see Spawn Profiles) override config for that mob - **Spawn Profiles:** - Reusable named attribute bundles stored in `data/<namespace>/spawn_profiles/` - Fields: `namePrefix`, `nameColor`, `xpMultiplier`, `lootBonusRolls`, and all eight `AttribOverride` sections (all optional) - Profile overrides merge on top of mob-specific overrides; profile name/loot fields replace the corresponding elite/lootScaling config for that mob - Four default profiles shipped in jar: `common`, `uncommon`, `rare` (blue, 2× XP, 1 bonus roll), `legendary` (purple, 5× XP, 3 bonus rolls, all attributes boosted) - Example reference profile: `data/mobdiceattribs/spawn_profiles/example_legendary.json` - Reloads on `/reload` - **Rarity Tiers:** - On every mob spawn, a weighted random roll selects a spawn profile from a global tier pool - Tier pool defined via `data/<namespace>/rarity_tiers/` — `{ "tiers": [ { "profile": "...", "weight": N }, ... ] }` - Weights are proportional (do not need to sum to 100) - Config section: `[rarityTiers]` — `enable` toggle only - Example pool shipped in jar: `data/mobdiceattribs/rarity_tiers/example.json` (60/25/10/5 weights for common/uncommon/rare/legendary) - Reloads on `/reload` - **Spawn Hooks:** - Map specific spawn contexts (natural, spawner, raid event, command, etc.) to a fixed spawn profile, bypassing rarity tier selection for that context - Defined via `data/<namespace>/spawn_hooks/` — JSON object with context name keys and profile `ResourceLocation` values; omit a key or set to `null` to fall through to rarity tiers - Valid contexts: `natural`, `spawner`, `chunk_generation`, `structure`, `breeding`, `mob_summoned`, `jockey`, `event`, `conversion`, `reinforcement`, `triggered`, `bucket`, `spawn_egg`, `command`, `patrol` - Spawn hook profile beats rarity tier when both apply - Config section: `[spawnHooks]` — `enable` toggle only - Example file shipped in jar: `data/mobdiceattribs/spawn_hooks/example.json` - Reloads on `/reload` - **Commands:** - `/mda reroll <targets>` — force-rerolls matched entities; resets HP to stored vanilla value (`mda_base_hp`) before rolling so results don't compound. Requires op level 2. Accepts standard entity selectors. - `/mda inspect <target>` — prints current attribute values plus `mda_hp_ratio`, `mda_base_hp`, and assigned profile. Single-entity selector only. - **Jade Mod Integration:** - `jade` added as a runtime dependency (`implementation`) in `build.gradle` ### ⚙️ Changed - All eight `roll*()` methods now accept a `SpawnProfile` parameter; attribute overrides merge as `profile.attrib().merge(mobOverride)` so per-mob overrides beat profile - `applyRolls()` gate order: mob whitelist/blacklist → dimension gate → difficulty gate → profile resolution → per-attribute rolls - Distance multiplier (health only) stacks on top of the combined dimension × difficulty multiplier - All `SimpleJsonResourceReloadListener` implementations now filter by `MDA.MOD_ID` namespace — only `data/mobdiceattribs/` files are loaded, preventing collisions with other mods - All eight attributes now store vanilla base values in NBT on first roll and reset to them on reroll — prevents compounding across multiple rerolls - `showName` config (default `false`) now gates name tag visibility for both profile names and elite names; names are still set on the mob for Jade/TOP hover - `[speed] enable` defaults to `true` with standard dice mechanics; speed profile overrides removed from legendary/rare after confirming compounding was the root cause - `/mda inspect` now outputs `Profile` and `Spawn type` NBT fields for debugging - `rarity_tiers/example.json` renamed to `rarity_tiers/default.json` - `FinalizeSpawnEvent` updated to top-level class (NeoForge 1.21.1 API change) --- ## [1.0.0] - 2026-04-23 ### ⚙️ Changed - **Platform port: Forge 1.20.1 → NeoForge 1.21.1** - Build system migrated to `net.neoforged.moddev` (Gradle plugin) - `@Mod` class now uses constructor injection of `IEventBus` and `ModContainer` - `Mod.EventBusSubscriber` replaced with `@EventBusSubscriber(bus = Bus.GAME)` - `ForgeConfigSpec` replaced with `ModConfigSpec` throughout - `ResourceLocation.fromNamespaceAndPath()` API adopted - Attributes API updated: `Attributes.X` returns `Holder<Attribute>`; `.value()` used to reach `RangedAttribute` - GottschCore package updated: `mod.gottsch.forge.gottschcore.*` → `mod.gottsch.neo.gottschcore.*` - GottschCore artifact updated: `gottschcore` → `gottschcore-neoforge` - `neoforge.mods.toml` moved to `src/main/templates/META-INF/` with `generateModMetadata` task for property substitution - Mod config registered directly via `modContainer.registerConfig()` — removed premature `ModConfigEvent` validation listener that caused "Cannot get config value before config is loaded" crash - `isValidEntity()` simplified to `entity instanceof Monster` (Enemy interface removed in 1.21) - Gradle wrapper pinned to 8.12.1 for compatibility with moddev 2.0.78 - All dependencies declared `side = "SERVER"` — mod is server-only and clients can connect without it installed
release

Mob Dice Attributes 1.0.0

1.0.0
26 апр. 2026 г.26Minecraft: 1.21.1neoforge
Скачать
Что нового
# Changelog for Mob Dice Attributes 1.21.1 All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). --- ## [1.0.0] - 2026-04-23 ### ⚙️ Changed - **Platform port: Forge 1.20.1 → NeoForge 1.21.1** - Build system migrated to `net.neoforged.moddev` (Gradle plugin) - `@Mod` class now uses constructor injection of `IEventBus` and `ModContainer` - `Mod.EventBusSubscriber` replaced with `@EventBusSubscriber(bus = Bus.GAME)` - `ForgeConfigSpec` replaced with `ModConfigSpec` throughout - `ResourceLocation.fromNamespaceAndPath()` API adopted - Attributes API updated: `Attributes.X` returns `Holder<Attribute>`; `.value()` used to reach `RangedAttribute` - GottschCore package updated: `mod.gottsch.forge.gottschcore.*` → `mod.gottsch.neo.gottschcore.*` - GottschCore artifact updated: `gottschcore` → `gottschcore-neoforge` - `neoforge.mods.toml` moved to `src/main/templates/META-INF/` with `generateModMetadata` task for property substitution - Mod config registered directly via `modContainer.registerConfig()` — removed premature `ModConfigEvent` validation listener that caused "Cannot get config value before config is loaded" crash - `isValidEntity()` simplified to `entity instanceof Monster` (Enemy interface removed in 1.21) - Gradle wrapper pinned to 8.12.1 for compatibility with moddev 2.0.78 - All dependencies declared `side = "SERVER"` — mod is server-only and clients can connect without it installed
release

Mob Dice Attributes 1.0.0

1.0.0
23 апр. 2026 г.754Minecraft: 1.20.1forge
Скачать
release

Mob Dice Attributes 1.0.1

1.0.1
15 февр. 2023 г.416Minecraft: 1.19.2forge
Скачать
Что нового
Uses the correct fml loader version (43).
release

Mob Dice Attributes 1.0.1

1.0.1
15 февр. 2023 г.243Minecraft: 1.18.2forge
Скачать
Что нового
Uses the correct update url.
release

Mob Dice Attributes 1.0.0

1.0.0
12 февр. 2023 г.115Minecraft: 1.18.2forge
Скачать
Что нового
initial release
release

Mob Dice Attributes 1.0.0

1.0.0
12 февр. 2023 г.88Minecraft: 1.19.2forge
Скачать
Что нового
initial release
release

Mob Dice Attributes 1.0.0

1.0.0
12 февр. 2023 г.355Minecraft: 1.19.3forge
Скачать
Что нового
initial release