promotional bannermobile promotional banner

evilcursefix

Defensive crash and recursion fixes for the CLOSING SONG EZHOU 1.3.1+ modpack.
Back to Files

evilcursefix-1.6.0.jar

File nameevilcursefix-1.6.0.jar
Uploader
yuuka0desuyuuka0desu
Uploaded
Sep 6, 2026
Downloads
15
Size
85.2 KB
Mod Loaders
Forge
File ID
8819314
Type
R
Release
Supported game versions
  • 1.20.1

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:evilcursefix-1682959:8819314")

Learn more about Curse Maven

What's new

## 1.6.0 — Code Audit Release

### Medium-severity fixes

- **Reentrancy guards hardened (9 mixins).** All `ThreadLocal<Boolean>` flags were
  replaced with the new `EzfixReentrySlot` (nesting depth + 5 s TTL self-healing).
  This fixes two latent bugs in `RankHandlerRecursionGuardMixin`,
  `SpudiversityInvisibleWaitingGuardMixin`, the four Spud reflect guards
  (BloodFox / AuspiciousPotato / BuildPotato / BlazeEnd), `EzfixSlashRecursionGuardMixin`,
  and both `EzfixHighfrequency*RecursionGuardMixin`:
  - a cancelled reentrant call previously cleared the outer call's flag (breaking
    the nesting protection), and
  - an exception thrown mid-method left the flag stuck forever — silently disabling
    slash effects or damage reflection on the server thread until restart.
  Stale flags now heal automatically within 5 seconds.

- **Traveloptics rapid laser: constructor-level redirect.** `TravelopticsRapidLaserMixin`
  no longer takes over the whole `spawnLaserBeam` method. It now redirects only the
  `Laser_Beam_Entity` constructor call (javap-verified: a single `NEW` instruction,
  `(EntityType, LivingEntity, 6×double, float, Level)` argument order). The original
  method body — rotation setup, entity registration, and any other side effects —
  is fully preserved. Old cataclysm builds are forwarded unchanged; new builds are
  adapted to `(EntityType, LivingEntity, x, y, z, Vec3, float, Level)`. Constructors
  are resolved once and cached.

- **Virtual Witch learn-spell: per-frame resend fixed.** javap showed that
  `ci.cancel()` skipped the original `heldSpellTime = -1` reset after the removed
  `ServerboundLearnSpell` allocation, which caused the modern learn packet to be
  re-sent every frame while holding. The handler now resets `heldSpellTime` itself
  (restoring the original semantics), replays the learn-success sound
  (`LEARN_ELDRITCH_SPELL`) reflectively, and caches all `Field`/`Method` lookups.

- **Watchdog: pause no longer looks like a stall.** `EzfixMonitor` now raises the
  server-stall threshold from 30 s to 60 s while the render heartbeat is alive
  (single-player ESC pause stops the server tick but not rendering). Dedicated
  servers (no render heartbeat) keep the original 30 s threshold.

- **Nightwarden ring particle: cached constructor.** `TravelopticsNightwardenRingMixin`
  caches the `CompatRingData` constructor; a lookup failure logs once instead of
  reflecting on every tick.

- **Core crash fix now fails loud.** `EventBusHandleExceptionMixin` (the EventBus
  log4j `MessageSupplier` linkage crash fix) now uses `require = 1`: if a future
  eventbus version changes the method signature, the mismatch is reported at
  startup instead of being silently skipped by `defaultRequire: 0`.

### Low-severity fixes

- `GunsmithlibSpawnBoundMixin` and `SocketingRecipeMixin`: explicit `ordinal = 0`
  on the `List.get` / `List.set` redirects (javap-verified single call sites),
  so future added call sites cannot be accidentally guarded.
- `EzfixMixinPlugin` now gates the starSE-package `Highfrequency` guard as well.
- `FCAEffectSyncGuardMixin`: non-CME causes are rethrown with their original type
  (no more `RuntimeException` wrapping that broke the exception chain);
  `IllegalAccessException` logs once instead of being silently swallowed.
- yakumoblade compile-only stubs moved to a dedicated `src/stub` source set:
  excluded from the built jar and from the dev run classpath (no more
  dev-environment collision with the real classes).
- 11 mixin targets switched from `targets` strings to `value = Class`, reducing
  annotation-processor warnings from 13 to 2. The remaining 2 are intentional:
  `time_slow` and `touhou_little_maid_spell` are optional dependencies whose jars
  are not required for compilation.

### Verification

- `spawnImpactParticles(Vec3)` handler signature confirmed correct via javap —
  no change needed.
- `gradlew build` passes: 0 errors, 2 intentional warnings.
- Built jar verified: no `com/yakumosakura` entries, `EzfixReentrySlot` present,
  all 39 mixins packaged.

This mod has no additional files