Links
Tags
Creators
Details
1.1.1
Compatibility
Required content
Changes
CraftStats 1.1.1 — Changelog
Bug Fixes
Wand & Book
Fixed CraftWand being unusable by survival players — instanceof ServerPlayer always returned false on the client side; replaced with player.hasPermissions(2) check Fixed missing textures on CraftWand and Player Stats Book — MC 1.21.4 requires item model files in assets/craftstats/items/ which were missing Mob Stats
Fixed invisible, silent, and glowing flags not applying immediately when stats are saved — they were only being set during the per-tick pass, not on stat apply Fixed max health not taking effect on mobs — health was only clamped down to the new max, never set up; mobs now have their health set to the new max on both stat apply and spawn Fixed newly spawned mobs not having correct health — finalizeSpawn mixin now sets health to max after applying attributes Fixed invincible toggle not working — hurt was injected into Entity.class but in MC 1.21.4 hurt lives on LivingEntity; moved to LivingEntityMixin so all damage cancellation (invincible, god mode, fire/drown/explosion immunity) actually fires Fixed mob stats not applying to already-loaded entities when type stats are saved — APPLY_MOB_STATS now iterates all loaded entities and applies attributes immediately Block Stats
Fixed blast resistance never taking effect — MC 1.21.4 explosion engine calls ExplosionDamageCalculator.getBlockExplosionResistance directly; added a new ExplosionDamageCalculatorMixin that intercepts at that exact call site Fixed light emission requiring a world reload to take effect — applying block stats now calls levelRenderer.allChanged() to force immediate chunk re-render Fixed step damage, climbable, and speed effects persisting after the block is removed — mixin now checks !blockState.isAir() before applying position-based effects Recipe & Item Models
Fixed crafting recipe JSON format for MC 1.21.4 — ingredients changed from {"item": "..."} to plain strings New Features
Hostile toggle — New toggle in the Mob Combat tab; when enabled, the mob targets the nearest player within aggro range every second regardless of its vanilla behavior Randomize screen redesign — Two-panel diff view showing original vs randomized values side by side, themed with CraftStatsTheme, scrollable, seed input box, Save Preset button; supports per-instance UUID randomize Speed modifier duration — New number field on the Block Step FX tab to control how long the speed effect lasts (in ticks, 20 = 1 second) UI
Text input boxes now always show a visible border (dim when unfocused, bright when focused) so it's clear which fields are editable Number values are centered in their input box when not being edited Fixed text in number boxes jumping to the left edge when clicked — the EditBox now uses standard bordered rendering when focused Fixed two input boxes both appearing active after switching focus between them Added 2px top padding to the stat row list so rows don't clip against the tab bar Mod menu settings screen now correctly registers using the entrypoints.modmenu format required by Mod Menu 5+ (previously used a deprecated format that was silently ignored, so the Settings button had no effect) MC 1.21.4 Compatibility
Replaced ServerEntityLoadEvents.ADD (removed from Fabric API 0.119.4) with a Mob.finalizeSpawn mixin Updated MobSpawnType references to EntitySpawnReason (renamed in MC 1.21.2) Fixed Entity.hurt() injection — method moved to LivingEntity in 1.21.4 Fixed BlockBehaviour.neighborChanged() fifth parameter type changed to Orientation Fixed FoodData.tick() parameter changed from Player to ServerPlayer
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:PWB0PJLv:2a35DlqM"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:PWB0PJLv:2a35DlqM"
}



