Epic Fight Guard Fix

Quick rating

Community listing page, reviews here may not be monitored by the author.

Epic Fight Guard Fix

No reviews yet

Mixin fixes for Epic Fight's shield/weapon guard system (base GuardSkill, Weapons of Miracles' Perfect Bulwark, and Epic Fight Nightfall's parry) plus unarmed combat and other core bugs.

Mod Loaders
Minecraft

About

Description

Guard Fix

Mixin-based bugfixes for Epic Fight and its ecosystem. Everything here was traced to a root cause by decompiling the actual mod jars before writing a fix — no guesswork, no config-based workarounds where a real fix was possible.

Troubleshooting

A weapon's own right-click skill stops responding after installing guardfix

Some weapons trigger their own skill (reload, charge, special attacks, etc.) on right-click — including weapons whose charge/hold detection reads Epic Fight's GUARD keybind directly instead of a dedicated key. guardfix forces Epic Fight's guard to be "available" for any weapon it recognizes, and when a weapon's own mechanic also relies on that same right-click/GUARD input, the two can end up fighting over it — Epic Fight's own USE/GUARD key-conflict resolution may cancel the weapon's action entirely, or the weapon's own charge state can get corrupted, even if you're not holding a shield.

If this happens to you:

  1. Find the weapon's item registry name (e.g. wom:napoleon — usually visible via F3+H item tooltips, or the item's own mod page)
  2. Add it to weaponBlacklist in config/guardfix-common.toml
  3. Restart or reload the config — that weapon now behaves exactly as vanilla Epic Fight/its addon intends, completely unaffected by guardfix

17 weapons are excluded by default as confirmed cases — wom:napoleon, wom:nova, all of Weapons of Miracles' Torment-family weapons (wom:tormented_mind, simplyswords:livyatan, simplyswords:hearthflame), and 11 other SimplySwords weapons found to share the same conflict-prone skill classes (full list in config/guardfix-common.toml). If you find another weapon with this issue, please report it (with the weapon's registry name) so it can be added by default too.

Pickaxes, shovels, and hoes (vanilla and modded) are excluded from all of this automatically — Epic Fight gives them a combat capability of their own, which used to make guardfix treat them as weapons and break chest/block interaction in battle mode. No config needed for this one.

Something else looks off, or an attack keeps coming out wrong (e.g. a dash attack from a standstill)?

If you can, enable debugLoggingEnabled in config/guardfix-common.toml, reproduce the issue, and attach guardfix-debug.log (found in the instance's root folder, not inside logs/) to your report — it's off by default to keep the log quiet during normal play, but turning it on costs nothing else and makes tracking down a new issue much faster.

What it fixes

Shield + one-handed weapon guarding Normally, holding a shield in your offhand alongside a one-handed weapon silently breaks Epic Fight's guard/parry — the skill request never even fires. This is fixed across all three guard-skill implementations this modpack ecosystem can end up running:

  • Base Epic Fight GuardSkill
  • Weapons of Miracles' PerfectBulwarkSkill (soft dependency — only applies if Weapons of Miracles is installed)
  • Epic Fight Nightfall's EFNParryingSkill (soft dependency — only applies if EFN is installed)

For the eligible combo (one-handed weapon + shield, main hand not empty/edible/two-handed), blocking works, the stamina cost is removed, and the accumulating block-penalty multiplier is reset instead of climbing indefinitely.

Shield durability Since guarding is now free and penalty-free, a shield used to be a completely free, infinite-use tank. Blocking now costs the shield 1–5 durability per hit (configurable, default 1), so tanking still has a real cost.

Two-handed weapons (opt-in combo, always-on baseline guard) Epic Fight treats a two-handed main-hand weapon as fully occupying both hands, so nothing in the offhand is normally usable — including a fix for a conflicting mod that was making Epic Fight's own combat logic act as if the offhand were empty the moment a two-handed weapon was equipped, even though the item was never actually removed. Turning on allowTwoHandedWeaponWithShield lets a shield specifically (not another weapon) keep working there too, unlocking the full shield-combo treatment above. Importantly, the two-handed weapon's own native guard/parry works normally regardless of this setting — merely having a shield in the offhand no longer disables the weapon's baseline block just because the combo bonus is turned off.

Well-timed parry bonus (off by default) EFN's perfect-timing parry window and Weapons of Miracles' Perfect Bulwark charge finisher both still fully block/negate the hit either way — this setting only controls the extra payoff (bonus knockback reduction, penalty reset, or the counter-attack finisher) on top of a normal block. Off by default so a shield can't be used to tank indefinitely for free; togglable via allowParryingBonus.

Passive shield buff Since the shield itself no longer actively blocks (your weapon's native parry handles that now), holding one grants a passive Resistance buff instead. Toggleable in config. Also fixed: random non-weapon items (scrolls, compasses, etc.) were incorrectly qualifying for this buff.

Bare-fist combat in Epic Fight battle mode Punching with an empty main hand silently did nothing — traced to a JVM class-init race that null-poisons the fist attack-animation list. Fixed at the root cause, with a force-play fallback as a second-layer safety net.

Skill gauge / icon display flicker (Epic Fight base-mod bug) The percentage/number shown on skill icons — charge gauges, resource meters, cooldown rings, including Torment's own charge display — could flicker rapidly and look "random" even though the underlying value was perfectly stable the whole time. Root cause: Epic Fight's own smooth-interpolation code for skill icon rendering never updated its "previous tick" reference, so the displayed number was recalculated from a stale (frozen at zero) baseline every tick instead of the real previous value. Patched at the source, so this fixes the flicker for any skill icon that uses this display path, not just Torment's.

Torment weapon early-release (opt-in) Weapons of Miracles removed Torment's "release right-click before the first charge tier plays a dash attack" behavior in version 2.0.171, quietly, as part of a stamina-cost rebalance never called out in WoM's own changelog. By default guardfix now matches WoM's current behavior (no animation on an early release). If you preferred the old feel, restoreTormentEarlyReleaseDash brings the dash back.

Attacks getting stuck as the dash attack Epic Fight picks the dash/running attack purely off isSprinting(), which some movement mods (auto-sprint, custom sprint keybinds, toggle-sprint desyncs) can leave stuck true even while standing completely still — every attack, including from a dead stop, then comes out as the dash attack, often with a visible FOV-zoom flicker. Now a dash attack also requires the player to have actually moved within the last few ticks (tracked server-side); a genuine running attack is unaffected. On by default via preventStuckDashAttack, with dashAttackMoveGraceTicks and dashAttackMinSpeed to tune the sensitivity if needed.

Tool interaction (pickaxe/shovel/hoe) Epic Fight gives every pickaxe, shovel, and hoe (vanilla and modded) a real combat capability so they can be swung in battle mode — guardfix was treating that as "this is a weapon" and forcing guard availability on for it, which made Epic Fight's own key-conflict resolution cancel legitimate block/chest interactions (right-clicking a chest while holding a pickaxe in combat mode could silently do nothing). These tools are now excluded from that guard-forcing entirely. Axes were deliberately left alone since some are legitimate combat weapons in this pack.

Misc.

  • Food/bow/other non-weapon items no longer get blocked from use just because a shield is in the offhand
  • A misbehaving AnimationEvent callback from any third-party addon now logs and gets skipped instead of crashing the game

Requirements

  • Minecraft 1.20.1, Forge 47+
  • Epic Fight (required)
  • Weapons of Miracles (optional — its Perfect Bulwark fixes and Torment fixes only apply if it's present)
  • Epic Fight Nightfall (optional — its parry fixes only apply if it's present)

Config

config/guardfix-common.toml

  • passiveShieldBuffEnabled (default true) — turn the passive Resistance buff on/off
  • shieldDamagePerBlock (default 1, range 1–5) — durability damage to the shield per successful block
  • allowParryingBonus (default false) — allow the well-timed-parry bonus payoff (see above)
  • allowTwoHandedWeaponWithShield (default false) — allow a shield in the offhand alongside a two-handed main-hand weapon, unlocking the full shield-combo treatment for it
  • weaponBlacklist (17 weapons pre-listed) — item registry names fully excluded from guardfix's guard-forcing behavior entirely; see Troubleshooting above
  • restoreTormentEarlyReleaseDash (default false) — bring back WoM Torment's pre-2.0.171 dash-on-early-release animation
  • preventStuckDashAttack (default true) — require genuine recent movement before allowing a dash attack (see "Attacks getting stuck as the dash attack" above)
  • dashAttackMoveGraceTicks (default 8) / dashAttackMinSpeed (default 0.03) — sensitivity tuning for the above; ignored if it's off
  • debugLoggingEnabled (default false) — write diagnostic lines to guardfix-debug.log; turn on only when reporting an issue

Notes

Built for a specific modpack combination and tuned against decompiled behavior of the exact mod versions in use. If a guard-skill implementation from another addon isn't covered, please report it with your mod list.