Wave Defense

A versatile PvE and PvP engine featuring wave defense, customizable shops, and three competitive game modes for Minecraft

File Details

wavedefense-0.2.47.jar

  • R
  • May 24, 2026
  • 920.29 KB
  • 8
  • 1.20.1
  • Forge

File Name

wavedefense-0.2.47.jar

Supported Versions

  • 1.20.1

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:wave-defense-1492909:8138993")
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

Wave Defense Mod - v0.2.47

Wave Defense is a PvE/PvP Forge mod for Minecraft 1.20.1 and Java 17. It lets server owners build configurable arena locations with mob waves, team PvP, shops, loot events, portals, boundaries, HUD panels, and in-game admin editors.


Status

Version 0.2.47 — Deep audit pass: 12 HIGH + 16 MED bugs fixed across all layers. Key fixes: ZoneActivationManager now ticking, mob dimension fixed, WaveAutoScaler state now persists, PlayerBackup safe for modded effects/gamemodes, double PvP death-penalty fixed, path traversal guards added, TIMER triggers use correct baseline, idle info-panel sessions eliminated.

Completed in this workspace:

  • Architecture: Decomposed WaveManager (3 748 lines) into 11 focused sub-managers; LocationSession value object; ListEditorScreen<T> base class; CoordinateInputField compound widget; LocationSerializer / NbtHelper data layer.
  • PvE runtime: Fixed totalWaves persistence, victoryLingerTicks countdown, dead-mob cleanup, waveStartMobCount inflation, PlayerBackup restore (armor/offhand/effects). Activated waveEffectpointsRewardcompletionCommandfirstWaveDelaySec. Grace period (30 s) when last player leaves mid-wave.
  • PvP runtime: Fixed premature ENDED state, dmTeamKills accumulation, BR simultaneous death draw, BR environment death tracking, rebalance during BUY phase, double-point award, PvP teammates HUD sync. PvP↔PvE mode switch now requires two-click confirmation.
  • NetworkingSellItemPacket now carries shopPointIndex and uses NBT-aware item matching; all server responses use Component.translatable().
  • Data safetyLocationManager.saveToFile() uses atomic .tmp→rename pattern; one serialization pass; .bak preserved. Restores from backup on corrupt primary file.
  • Spawn correctness: Mob dimension fixed (no longer tied to player's current dimension); unloaded-chunk guard prevents stalled waves; dead-mob sweep covers all dimensions via getAllLevels(); portal double-spawn guard.
  • Mine and Slash compat (mmorpg mod v6.1.0+, optional): per-location mob level, XP bonus %, and 5 elemental resistances configured in the PvE location editor. Pure reflection — zero compile-time dependency, zero overhead when MnS is absent.
  • i18n: Full localization — keys per language, 8 language files (EN · UK · DE · FR · ES · PL · PT-BR · ZH-CN), zero hardcoded player-visible strings; missing no_spawn_set / value_out_of_range keys added to 6 lang files; 14 new MnS + grace keys added to all 8.
  • § corruption fix: All ?[color] substitutions and \\u00A7x literal-escape auto-keys corrected across all 8 lang files and 3 Java GUI files.
  • GUI audit (52 screens): Scissor clipping, scroll behavior, hidden-widget click filtering, two-click delete confirmations (waves, rewards, PvP spawns), Cancel buttons, per-slot loot "from hand" buttons, stable effect-picker width, standardized button heights.
  • Layout fixes: Import/Export header overlap, Completion Rewards item frame padding, tooltip black-box bug, LocationEditor footer overlap, mob spawn scroll Y offset, PvP mode unlock button.
  • Config screen: In-game configuration via Mods menu → Wave Defense → Config (all wavedefense-common.toml settings, five tabs, saves on close).
  • UI designGuiTheme extended with 7 constants + 5 helpers; all 9 main screens and HUD use consistent theme (colors, cards, progress bars, section dividers, badges).
  • Loot triggers: 11 of 20 LootSpawn.Trigger values now have runtime dispatch points — added PLAYER_DEATH (PvE), TIMER_60TIMER_120TIMER_300 alongside the previous 7. TIMER_CUSTOM wave trigger also wired via tickTimerCustomForLocation().
  • GuiTheme applied uniformly to all ~25 GUI screens: GuiTheme.renderBackground, title color GuiTheme.TEXTg.flush() before every ScissorHelper.disable() — eliminates deferred-text scissor bleed.