Minecraft mod removing PvP. It makes it posible to set dedicated PvP zones on the Server.
  • Kotlin 95%
  • Java 5%
Find a file
sandrp 884ac35bb2
All checks were successful
Build & Publish Mod / build (push) Successful in 6m53s
Add combat item restrictions, weapon balance rules, explosive bans, and raid hooks
2026-11-02 10:26:43 +01:00
.forgejo/workflows Revert workflow and gradle.properties to match FishWarp 2026-10-29 16:12:45 +01:00
gradle/wrapper Fix Gradle wrapper, add Modrinth setup, .gitignore and release workflow 2026-10-29 11:14:56 +01:00
src Add combat item restrictions, weapon balance rules, explosive bans, and raid hooks 2026-11-02 10:26:43 +01:00
.gitignore Fix Gradle wrapper, add Modrinth setup, .gitignore and release workflow 2026-10-29 11:14:56 +01:00
build.gradle.kts Migrate to de.fish.fishpvp, add /pvp reload and config options, and unify metadata 2026-11-01 18:09:58 +01:00
gradle.properties Migrate to de.fish.fishpvp, add /pvp reload and config options, and unify metadata 2026-11-01 18:09:58 +01:00
gradlew Fix Gradle wrapper, add Modrinth setup, .gitignore and release workflow 2026-10-29 11:14:56 +01:00
gradlew.bat Fix Gradle wrapper, add Modrinth setup, .gitignore and release workflow 2026-10-29 11:14:56 +01:00
LICENSE.txt Migrate to de.fish.fishpvp, add /pvp reload and config options, and unify metadata 2026-11-01 18:09:58 +01:00
README.md Migrate to de.fish.fishpvp, add /pvp reload and config options, and unify metadata 2026-11-01 18:09:58 +01:00
settings.gradle.kts first commit 2026-10-29 10:52:10 +01:00

FishPvP

FishPvP is a lightweight, purely server-side Fabric mod that restricts player-versus-player combat to designated PvP arenas, enforces combat-tag rules, and automatically resets modified blocks inside arenas on a configurable schedule.

100% Server-Side: Players do not need to install this mod on their clients to join and use its features.


Features

  • Designated PvP Zones: PvP is disabled globally outside registered arenas and enabled automatically when both players are inside a PvP zone (or already tagged in combat).
  • Combat Tagging & Anti-Combat-Log: Attacking another player starts a 30-second (configurable) combat timer shown in the actionbar. Disconnecting during active combat eliminates the player.
  • Delta-Based Arena Resets: Only blocks modified since the last baseline (update) are recorded and restored automatically on schedule or manually via command.
  • LuckPerms Ready: Uses the Fabric Permissions API (fish.pvp) with an automatic fallback to vanilla OP levels.

How It Works for Players

  1. Enter an Arena: Walking into a PvP zone displays an actionbar notification.
  2. Engage in Combat: Fighting tags both players in combat; the actionbar counts down the remaining combat time.
  3. Automatic Arena Restoration: Arenas automatically reset to their saved build state after the configured interval with an on-screen countdown.

Commands & Permissions

All management commands require the permission fish.pvp (configurable) or OP status (Level 3/4) if no permission plugin is installed.

For Team Members (fish.pvp)

  • /pvp – Displays command usage overview.
  • /pvp area <Name> pos1 – Sets the first corner (X/Z) of a PvP arena.
  • /pvp area <Name> pos2 – Sets the second corner (X/Z) of a PvP arena.
  • /pvp area <Name> update – Saves the current build state of the arena as the reset baseline.
  • /pvp area <Name> reset – Immediately restores the arena to its saved baseline.
  • /pvp area <Name> delete – Deletes the PvP arena.
  • /pvp list – Lists all configured PvP arenas and their coordinates.
  • /pvp debug [Seconds] – Starts a test reset countdown (default 10s).
  • /pvp reload – Reloads config.json and areas.json at runtime.

⚙️ Configuration

All configuration and runtime files are automatically generated and stored in config/fishpvp/:

  • config.json – Customize pvpPermission ("fish.pvp"), combatLogSeconds (30), resetIntervalMinutes (60), and autoResetEnabled (true).
  • areas.json – Stores all PvP zone names and corner coordinates.
  • snapshots.json – Stores delta block states recorded since the last arena update/reset.