evilcursefix-1.6.0.jar
Curse Maven Snippet
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.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

