TownyPacifist - Addon

Prevents combat involving peaceful Towny towns — bidirectional protection with arena, SiegeWar & TownyCaptureSites support.

48

Quick challenge

How far can you run before the mobs catch you?

TownyPacifist - Addon

☮ TownyPacifist

> A lightweight Towny addon that enforces peace for peaceful towns — everywhere, not just within their borders.

---

📖 About

Many servers struggle with a common problem: players from peaceful towns getting killed by aggressive towns, or peaceful town members attacking others without consequence.

TownyPacifist solves this by hooking directly into Towny's own peaceful flag (`/t toggle peaceful`). No custom data, no extra commands — if a town is marked as peaceful in Towny, this plugin enforces that everywhere on the map.

---

✨ Features

- Cross-platform — reads directly from Towny's `isNeutral()` flag - Cross-platform — peaceful towns can't attack OR be attacked - Cross-platform — peaceful players can still PvP inside Towny arena plots (`/plot set arena`) - Cross-platform — works naturally alongside EventWar's neutrality system - Cross-platform — respects SiegeWar's own peaceful town system when installed - Cross-platform — allows peaceful players to fight inside capture sites when installed - Cross-platform — ships with 9 languages (en-US, pt-BR, es-ES, fr-FR, de-DE, zh-CN, ru-RU, pl-PL, tr-TR) - Cross-platform — a single event listener, no databases, no commands - Cross-platform — runs on Bukkit, Spigot, Paper, Purpur and Folia

---

🔗 Dependencies

| Plugin | Required | |---|---| | Towny | ✅ Required | | EventWar | ➕ Optional (integrates automatically) | | SiegeWar | ➕ Optional (integrates automatically) | | TownyCaptureSites | ➕ Optional (integrates automatically) |

---

⚙️ How It Works

TownyPacifist listens to `TownyPlayerDamagePlayerEvent` and checks both players' towns using Towny's API:

``` Player A hits Player B └─ Is either player from a neutral (peaceful) town? ├─ No → do nothing, let Towny handle it normally ├─ Yes → are they inside an arena plot? │ ├─ Yes + arenas allowed → permit combat (no spam, notified on entry) │ └─ No → cancel damage + send message └─ Both peaceful → cancel damage + specific message ```

The "peaceful" status is set by the town mayor using Towny's own command: ``` /t toggle peaceful ```

No TownyPacifist commands needed.

---

📁 Config

```yaml

Enable or disable all protection globally

enabled: true

Allow peaceful town members to PvP inside Towny arena plots

allow-pacifist-in-arenas: true

Allow peaceful town members to fight inside TownyCaptureSites plots (requires TownyCaptureSites)

allow-pacifist-in-capture-sites: true ```

---

🌍 Adding a Language

TownyPacifist uses Towny's built-in translation system. Messages are delivered in each player's own language automatically.

1. Go to `plugins/TownyPacifist/lang/` 2. Copy `en-US.yml` and rename it (e.g. `es-ES.yml`) 3. Translate the messages 4. Towny picks it up automatically — no config change needed

---

🔨 Building from Source

Requirements: - JDK 21 (for compilation) - Gradle 8.12 (or use the included `gradlew`) - Towny JAR → `libs/Towny-x.x.x.x.jar` (download from Requirements:) - EventWar JAR → `libs/EventWar-x.x.x.jar` *(optional, for IDE support only)*

```bash ./gradlew build

Output: build/libs/TownyPacifist-1.0.jar

```

---

🗺️ Planned Integrations

- [x] Capture sites - [x] SiegeWar

---

📜 License

Apache 2.0 — see LICENSE

---

👤 Author

Made by RN_Axol

ADS