PvP Flag mod
Allows players to enter "PvP" mode.
Skull marks PvP flag enabled. People with PvP flag disabled (no skull) can not damage you as long as you don't have it enabled as well. In all other cases PvP works.
Default keybind: K
Version 2 came out (sorry for the wait lol)
Now we have:
- Adjustable pending timeout, cancled when doing damage or receiving damage
- Server config, no more gamerule setup
- Fabric NeoForge support, at least 1.20.1
If you don't get how PvP works with this mod refer to table below:
| Enemy's skull | Your skull | Can attack happen? |
|---|---|---|
| ENABLED | ENABLED | YES |
| ENABLED | DISABLED | YES |
| DISABLED | ENABLED | YES |
| DISABLED | DISABLED | NO |
Like in Project Zomboid.
Alternative logic
Need more classic enable disable logic? You can change it in server config.
On server check world/serverconfig/pvpflag-server.toml
Yes, this file can be customized per-world
If you are hosting local save, check save directory
People with PvP disabled will not take damage at all. Refer to the table below:
| Enemy's skull | Your skull | Can attack happen? |
|---|---|---|
| ENABLED | ENABLED | YES |
| ENABLED | DISABLED | NO |
| DISABLED | ENABLED | NO |
| DISABLED | DISABLED | NO |
Credits
Skull texture:
All Versions
+ Add Version## 2.0.2
Update to config offset default because new rendering required different approach with different values. Format is still the same
## 2.0.0
- Complete rewrite as a multiplatform Kotlin mod (Fabric + Forge).**
- Added Forge support alongside Fabric using the Kotlin MultiLoader Template
- Replaced GameRule config with proper config files (Forge Config API Port)
flagLogic: MUTUAL or PERMISSIVE PvP modedisableTimeoutSeconds: configurable disable delay- Client config for skull icon position, size, and render distance
- Added timeout-based flag disabling with pulsing skull indicator
- Flag doesn't disable instantly — starts a countdown (default 5s)
- PvP damage during countdown cancels it
- Only the player themselves sees the countdown; others still see the flag as enabled
- Switched networking to badpackets (cross-platform)
- Switched state storage to SavedData (server-authoritative)
## 2.0.2
Update to config offset default because new rendering required different approach with different values. Format is still the same
## 2.0.0
- Complete rewrite as a multiplatform Kotlin mod (Fabric + Forge).**
- Added Forge support alongside Fabric using the Kotlin MultiLoader Template
- Replaced GameRule config with proper config files (Forge Config API Port)
flagLogic: MUTUAL or PERMISSIVE PvP modedisableTimeoutSeconds: configurable disable delay- Client config for skull icon position, size, and render distance
- Added timeout-based flag disabling with pulsing skull indicator
- Flag doesn't disable instantly — starts a countdown (default 5s)
- PvP damage during countdown cancels it
- Only the player themselves sees the countdown; others still see the flag as enabled
- Switched networking to badpackets (cross-platform)
- Switched state storage to SavedData (server-authoritative)
## 2.0.1
Respect F1 press for skulls above player heads and in HUD
## 2.0.0
- Complete rewrite as a multiplatform Kotlin mod (Fabric + Forge).**
- Added Forge support alongside Fabric using the Kotlin MultiLoader Template
- Replaced GameRule config with proper config files (Forge Config API Port)
flagLogic: MUTUAL or PERMISSIVE PvP modedisableTimeoutSeconds: configurable disable delay- Client config for skull icon position, size, and render distance
- Added timeout-based flag disabling with pulsing skull indicator
- Flag doesn't disable instantly — starts a countdown (default 5s)
- PvP damage during countdown cancels it
- Only the player themselves sees the countdown; others still see the flag as enabled
- Switched networking to badpackets (cross-platform)
- Switched state storage to SavedData (server-authoritative)
## 2.0.1
Respect F1 press for skulls above player heads and in HUD
## 2.0.0
- Complete rewrite as a multiplatform Kotlin mod (Fabric + Forge).**
- Added Forge support alongside Fabric using the Kotlin MultiLoader Template
- Replaced GameRule config with proper config files (Forge Config API Port)
flagLogic: MUTUAL or PERMISSIVE PvP modedisableTimeoutSeconds: configurable disable delay- Client config for skull icon position, size, and render distance
- Added timeout-based flag disabling with pulsing skull indicator
- Flag doesn't disable instantly — starts a countdown (default 5s)
- PvP damage during countdown cancels it
- Only the player themselves sees the countdown; others still see the flag as enabled
- Switched networking to badpackets (cross-platform)
- Switched state storage to SavedData (server-authoritative)
## 2.0.1
Respect F1 press for skulls above player heads and in HUD
## 2.0.0
- Complete rewrite as a multiplatform Kotlin mod (Fabric + Forge).**
- Added Forge support alongside Fabric using the Kotlin MultiLoader Template
- Replaced GameRule config with proper config files (Forge Config API Port)
flagLogic: MUTUAL or PERMISSIVE PvP modedisableTimeoutSeconds: configurable disable delay- Client config for skull icon position, size, and render distance
- Added timeout-based flag disabling with pulsing skull indicator
- Flag doesn't disable instantly — starts a countdown (default 5s)
- PvP damage during countdown cancels it
- Only the player themselves sees the countdown; others still see the flag as enabled
- Switched networking to badpackets (cross-platform)
- Switched state storage to SavedData (server-authoritative)
## 2.0.1
Respect F1 press for skulls above player heads and in HUD
## 2.0.0
- Complete rewrite as a multiplatform Kotlin mod (Fabric + Forge).**
- Added Forge support alongside Fabric using the Kotlin MultiLoader Template
- Replaced GameRule config with proper config files (Forge Config API Port)
flagLogic: MUTUAL or PERMISSIVE PvP modedisableTimeoutSeconds: configurable disable delay- Client config for skull icon position, size, and render distance
- Added timeout-based flag disabling with pulsing skull indicator
- Flag doesn't disable instantly — starts a countdown (default 5s)
- PvP damage during countdown cancels it
- Only the player themselves sees the countdown; others still see the flag as enabled
- Switched networking to badpackets (cross-platform)
- Switched state storage to SavedData (server-authoritative)
## 2.0.1
Respect F1 press for skulls above player heads and in HUD
## 2.0.0
- Complete rewrite as a multiplatform Kotlin mod (Fabric + Forge).**
- Added Forge support alongside Fabric using the Kotlin MultiLoader Template
- Replaced GameRule config with proper config files (Forge Config API Port)
flagLogic: MUTUAL or PERMISSIVE PvP modedisableTimeoutSeconds: configurable disable delay- Client config for skull icon position, size, and render distance
- Added timeout-based flag disabling with pulsing skull indicator
- Flag doesn't disable instantly — starts a countdown (default 5s)
- PvP damage during countdown cancels it
- Only the player themselves sees the countdown; others still see the flag as enabled
- Switched networking to badpackets (cross-platform)
- Switched state storage to SavedData (server-authoritative)
## 2.0.1
Respect F1 press for skulls above player heads and in HUD
## 2.0.0
- Complete rewrite as a multiplatform Kotlin mod (Fabric + Forge).**
- Added Forge support alongside Fabric using the Kotlin MultiLoader Template
- Replaced GameRule config with proper config files (Forge Config API Port)
flagLogic: MUTUAL or PERMISSIVE PvP modedisableTimeoutSeconds: configurable disable delay- Client config for skull icon position, size, and render distance
- Added timeout-based flag disabling with pulsing skull indicator
- Flag doesn't disable instantly — starts a countdown (default 5s)
- PvP damage during countdown cancels it
- Only the player themselves sees the countdown; others still see the flag as enabled
- Switched networking to badpackets (cross-platform)
- Switched state storage to SavedData (server-authoritative)
## 2.0.0
- Complete rewrite as a multiplatform Kotlin mod (Fabric + Forge).**
- Added Forge support alongside Fabric using the Kotlin MultiLoader Template
- Replaced GameRule config with proper config files (Forge Config API Port)
flagLogic: MUTUAL or PERMISSIVE PvP modedisableTimeoutSeconds: configurable disable delay- Client config for skull icon position, size, and render distance
- Added timeout-based flag disabling with pulsing skull indicator
- Flag doesn't disable instantly — starts a countdown (default 5s)
- PvP damage during countdown cancels it
- Only the player themselves sees the countdown; others still see the flag as enabled
- Switched networking to badpackets (cross-platform)
- Switched state storage to SavedData (server-authoritative)
## 2.0.0
- Complete rewrite as a multiplatform Kotlin mod (Fabric + Forge).**
- Added Forge support alongside Fabric using the Kotlin MultiLoader Template
- Replaced GameRule config with proper config files (Forge Config API Port)
flagLogic: MUTUAL or PERMISSIVE PvP modedisableTimeoutSeconds: configurable disable delay- Client config for skull icon position, size, and render distance
- Added timeout-based flag disabling with pulsing skull indicator
- Flag doesn't disable instantly — starts a countdown (default 5s)
- PvP damage during countdown cancels it
- Only the player themselves sees the countdown; others still see the flag as enabled
- Switched networking to badpackets (cross-platform)
- Switched state storage to SavedData (server-authoritative)
- As per requests added alternative way to resolve PvP flags. Refer to [README.md](https://github.com/realkarmakun/pvpflag)
Issue reports are very welcome!
- Fixed flags not propagating on first join
- Flags are now saved between server restarts
- Skull rendering
- PvP mode propogation