
A creeper × Weeping Angel crossbreed for Minecraft 26.1.x on Fabric and NeoForge.
Stare at it: it freezes. Look away: it sprints. Catches you: explodes — but only damages you, not the terrain. Build whatever you want, wherever you want, and stop fearing the psssss.
movementSpeed 0.40 vs vanilla 0.25 — about a spider). When you're not watching, it closes the gap aggressively.Config at config/weepingcreeper.json (created on first launch):
{
"replacementChance": 1.0,
"movementSpeed": 0.4,
"lookArcDegrees": 120.0,
"proximityFreezeRadius": 1.5,
"followRange": 64.0,
"tearsEnabled": true,
"heartParticlesEnabled": false,
"heartIntervalTicks": 60,
"tintBrightness": 0.55,
"desaturation": 0.25,
"explosionRadius": 3.0,
"chargedExplosionRadius": 6.0
}
| Key | Default | Notes |
|---|---|---|
replacementChance |
1.0 |
Fraction of vanilla creeper spawns that become weeping creepers. 0.0 = never replace; 1.0 = always. |
movementSpeed |
0.4 |
Movement speed attribute. Vanilla creeper is 0.25. |
lookArcDegrees |
120.0 |
Front cone width that counts as "looking at". |
proximityFreezeRadius |
1.5 |
Any player within this distance freezes the creeper regardless of look angle. 0 to disable. |
followRange |
64.0 |
Detection / pursuit range. Vanilla creeper is around 16. |
tearsEnabled |
true |
Tears overlay on the face. |
heartParticlesEnabled |
false |
Spawn a heart particle above the creeper while observed. Comedic, off by default. |
heartIntervalTicks |
60 |
Ticks between hearts when enabled. 20 = 1 second. |
tintBrightness |
0.55 |
Uniform brightness multiplier on the creeper texture. 1.0 = no change. |
desaturation |
0.25 |
Per-channel green reduction for the statue look. 0.0 = uniform darken only. |
explosionRadius |
3.0 |
Player-damage radius. Same as vanilla creeper. |
chargedExplosionRadius |
6.0 |
Radius when struck by lightning. Same as vanilla charged. |
tearsEnabled, heartParticlesEnabled, and the tint values take effect live on render. Other values require restart.
WeepingCreeperEntity extends Creeper) — inherits the standard creeper AI, swell timer, and charged variant. Spawn-replaces vanilla creepers via EntityJoinLevelEvent (NeoForge) / ServerEntityEvents.ENTITY_LOAD (Fabric).cos(arc / 2), plus a vanilla hasLineOfSight() check.customServerAiStep stops navigation, clears the target, zeroes horizontal velocity, and hard-resets the swell fuse to 0 each tick. The swell reset uses a tiny mixin accessor (CreeperAccessor) because the swell field is private and setSwellDir(-1) alone only decrements one per tick — too slow against an already-mid-explosion creeper.CreeperTickMixin) wraps the private Creeper#explodeCreeper() invocation inside Creeper#tick. For weeping creepers, redirects to WeepingCreeperEntity#explodeWeeping() which fires a cosmetic-only explosion (Level.ExplosionInteraction.NONE = no block damage) and applies vanilla creeper damage scaling only to players in radius. Vanilla creepers are unaffected.LivingEntityRenderer#getModelTint(state) with a per-channel ARGB multiplier. Keeps the vanilla creeper texture path so resource pack retextures still apply through the tint.Both mixins target very small bytecode footprints in vanilla Creeper.class. Should play nice with anything that doesn't itself redirect the same private invocation.
CC0-1.0 — public domain, do whatever you want with it.