Links
Tags
Creators
Details
All versions
2.6.0
Release
Infused Mobs 2.6.03 months ago 33
Compatibility
Minecraft: Java Edition
26.2
Platform
Fabric
Supported environments
Client and server
Required content
Unavailable version
Changes
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[2.6.0] - 2026-07-29
Added
- Command tree —
/infusedmobswithhelp,nametag [on|off],list,summon <tier> [entity] [abilities],reloadsubcommands (gamemaster-level permission) - Entity tab-completions —
/infusedmobs summonnow suggests only MONSTER-category entities - Ability tab-completions — space-separated, prefix-filtered, skips already-picked abilities, trailing-space detection for multi-word suggestions
- Ability validation with fuzzy matching — unknown ability IDs show "Did you mean?" suggestions via Levenshtein distance
- Crosshair spawn —
/infusedmobs summonspawns at the block the player is looking at (10-block raycast) /infusedmobs list— lists all hostile mob types that can receive a tier- Global nametag toggle —
showNametagsfield in config, toggled via/infusedmobs nametag - Config reload —
/infusedmobs reloadre-readsconfig/infusedmobs.jsonat runtime without restart - Projectile HURT trigger — projectiles fired by infused mobs (arrows, fire charges, etc.) now trigger their HURT abilities
MobTier.colourCode()— consolidated colour mapping as single source of truth- Random ability fallback — summoning without abilities draws random ones per tier config
Changed
- Ability IDs aligned to display names —
venom→bane,freeze→chill,inferno→hellfire,acid→vitriol,fortify→ward,fury→frenzy,gust→wraith,bloom→blight(also renamedfission→rupturein earlier 2.6.0) - Simplified summon syntax — removed
[pos]argument; always spawns at crosshair; eliminated command priority conflicts with greedyString - Improved input validation —
parseAbilitiesnow shows fuzzy-matched "Did you mean?" for unknown IDs hurt()→hurtServer()— fixed deprecated method call in Combust and Thorns- Removed duplicate
findMob—MobTickTriggernow uses sharedMobTierManager.findMob - Tier colours consolidated — all colour lookups go through
MobTier.colourCode()instead of duplicated switches - Removed
/infusedmobs info— replaced by nametag toggle and/infusedmobs list - Ability suggestions use spaces — comma-separated → space-separated (e.g.,
bane thorns) - Cached Gson instances —
ModConfigreuses static GSON and GSON_PRETTY instead of creating new ones each read/write - Split copy ability draw — retries if a DEATH ability is drawn, preventing empty-ability split copies
Fixed
- Entity default fallback bug —
BuiltInRegistries.ENTITY_TYPE.getValue()returns default (PIG) for unknown keys; switched togetOptional() - Tier re-roll bug — summon command's tier argument was cosmetic; tier was re-rolled by
assignTier()untilassignSpecificTier()was added - Stale comments — AbilityRegistry TICK timer said "2 seconds" (corrected to "1 second"); docs refreshed across README + MODRINTH_DESCRIPTION
- Tab-completion trailing space — pressing space after an ability now shows remaining abilities instead of
<abilities>hint - Unused imports — cleaned up in
MobTickTrigger,InfusedMobsCommand(duplicate ArrayList/List)
[2.5.0] - 2026-07-27
Added
- 26 unit tests (up from 21) — new config validation tests for
abilityCount,spawnChance, null tiers - Config validation hardened —
isValid()now checks all tier fields; old configs fall back to defaults
Changed
- Unified ability pool — abilities drawn from all trigger types mixed together
- Cinder: 1 ability, Shade: 2, Doom: 3 (was per-type HURT/TICK/DEATH counts)
- Spawn rates increased — Cinder 40%, Shade 20%, Doom 10% (was 10%/5%/2.5%)
- Debuff pass — all HURT/TICK effects are level I, 3s duration (was II–III, 5s)
- Chill no longer hardcoded to level III — uses config amplifier like everything else
- Version bump to 2.5.0
Removed
BY_TRIGGERindex (dead code — populated but never read since unified pool)- Redundant shuffle in
getRandomAbilities - Stale metadata (fabric.mod.json still referenced Ember/Surge/Tempest)
Fixed
- Config validation missing
abilityCountcheck — old configs silently got 0 abilities
[2.4.0] - 2026-07-26
Added
- Persistent tier state (
TierSavedData.java) — mobs keep their tier (or rolled-nothing state) across world reloads - Despawn cleanup (
EntityRemoveMixin) — tier tracking cleaned up when mobs despawn, not just on death - Immutable collection safety — codec deserialization wrapped in
HashMap/HashSetto prevent crash
Fixed
- Duplicated nametags —
mob.getName()was reading previously-set custom names; now usesgetType().getDescription()for the base entity name - Duplicated announcement — same fix in
MobHurtTriggerchat message
Changed
- No particles on TICK abilities — status effects on mobs (Strength, Resistance, etc.) no longer show particles
- Combust quieted — silent area damage instead of explosion (no particles, no block damage)
- Version bump to 2.4.0
[2.3.0] - 2026-07-25
Added
- Configuration system (
ModConfig.java) — JSON-driven config atconfig/infusedmobs.jsonwith:- Per-tier overrides (spawn chance, ability counts, health/XP multipliers)
- HURT/TICK effect durations and amplifiers
- Inferno fire duration, Acid armor damage, Combust explosion power
- Auto-generates defaults on first run
- Unit test suite (20 tests) — Pure-logic tests for
DamageContext,MobTier,ModConfig,AbilityRegistry - Fission split copies now receive full Ember-tier stats:
- 3× health multiplier
- 1 random HURT ability (no Fission/Combust to prevent infinite recursion)
- 60% of boosted max health
- Greyscale nametag
Changed
- Performance optimizations:
MobTickTriggernow iterates tracked UUIDs (O(tracked)) instead of scanning all entities (O(entities))AbilityRegistrypre-indexes abilities by trigger type (EnumMap) for O(1) filteringgetRandomAbilitiespre-sizes result list and copies candidate pool to avoid mutating cache
- Code cleanup:
- Removed deprecated
assignSplitAbility()method - Extracted helper methods in
AbilityRegistry(registerHurtEffect,registerTickEffect) - Extracted announcement/firing logic in
MobHurtTrigger - Extracted
placeCopy()helper inSplitEffect - Consolidated nametag building in
MobTierManager(setNametagshared method) - Replaced magic numbers with named constants (
SPLIT_HEALTH_FRACTION,COPY_COUNT,COPY_OFFSET,TICK_INTERVAL,ARMOR_SLOTS) - Fixed typo "EMBERE" → "EMBER" in test assertions
- Inlined single-use UUID local in
MobDeathTrigger - Added
MinecraftServerimport inMobTickTrigger(removed fully-qualified reference)
- Removed deprecated
Fixed
MobSpawnMixinflag order: tier assignment now only runs on server level (no behavioral change, just cleaner)
[2.2.0] - 2026-07-25
Added
- Combust DEATH ability — explodes on death (configurable power)
- Strict ability spread — tiers now have fixed HURT/TICK/DEATH counts (Ember 1/0/0, Surge 1/1/0, Tempest 1/1/1)
Changed
- Renamed project from "MobAbilities" → "Infused Mobs"
- Elemental theme: tiers now Ember/Surge/Tempest (was Necro/...)
- Rebalanced tier spawn chances and multipliers
[2.1.0] - 2026-07-24
Changed
- Elemental theme overhaul
- Cleanups and testing tweaks
[2.0.0] - 2026-07-23
Changed
- Complete redesign: tier system, balance, naming
[1.1.0] - 2026-07-22
Fixed
- Memory leaks, build errors, performance
[1.0.0] - 2026-07-21
Added
- Initial release: MobAbilities for MC 26.2
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:J3NKKD4Y:r8N0t6bZ"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:J3NKKD4Y:r8N0t6bZ"
}

