A comprehensive Minecraft PvP management plugin that provides players with control over their PvP status while giving administrators powerful tools to enforce PvP in specific zones and through playtime-based mechanics.
- Player-controlled PvP toggling
- Administrator-defined forced PvP zones
- Playtime-based forced PvP system (configurable debt mechanics)
- Compatible with Bukkit, Spigot, Paper, and Purpur
- Fully customizable messages with color code support
- Persistent data storage with automatic save intervals
- Minecraft Server 1.20+
- Java 17 or higher
- Bukkit/Spigot/Paper/Purpur
- Download the latest release JAR file
- Place the JAR file in your server's
plugins/directory - Start or restart your server
- Configure the plugin by editing
plugins/SSoggyPvP-Manager/config.yml - Use
/pvpadmin reloadto apply configuration changes without restarting
| Command | Description | Permission |
|---|---|---|
/pvp on |
Enable your PvP status | pvptoggle.use |
/pvp off |
Disable your PvP status | pvptoggle.use |
/pvp status |
Check your current PvP status | pvptoggle.use |
| Command | Description | Permission |
|---|---|---|
/pvpadmin wand |
Get the zone selection wand | pvptoggle.admin |
/pvpadmin zone create <name> |
Create a forced PvP zone | pvptoggle.admin |
/pvpadmin zone delete <name> |
Remove a forced PvP zone | pvptoggle.admin |
/pvpadmin zone list |
List all zones | pvptoggle.admin |
/pvpadmin zone info <name> |
Display zone details | pvptoggle.admin |
/pvpadmin player <name> info |
View player PvP information | pvptoggle.admin |
/pvpadmin player <name> reset |
Reset player's PvP data | pvptoggle.admin |
/pvpadmin player <name> setdebt <seconds> |
Set player's forced PvP debt | pvptoggle.admin |
/pvpadmin simtime <seconds> |
Simulate playtime for testing | pvptoggle.admin |
/pvpadmin reload |
Reload configuration | pvptoggle.admin |
| Permission | Description | Default |
|---|---|---|
pvptoggle.use |
Allows using /pvp commands | true (all players) |
pvptoggle.admin |
Allows using /pvpadmin commands | op |
pvptoggle.bypass |
Bypass forced PvP from playtime debt | op |
Forced PvP zones are areas where players cannot disable PvP, regardless of their personal setting.
- Use
/pvpadmin wandto obtain the zone selection wand (default: Blaze Rod) - Left-click one corner block of your desired zone
- Right-click the opposite corner block
- Both blocks must be in the same world
- Run
/pvpadmin zone create <name>to create the zone
- List all zones:
/pvpadmin zone list - View zone details:
/pvpadmin zone info <name> - Delete a zone:
/pvpadmin zone delete <name>
The playtime debt system automatically enforces periods of mandatory PvP based on player activity.
- Players accumulate playtime as they play on the server (by default, even when online alone; set
solo-accumulate: falseto require 2+ players) - After a configured number of minutes (default: 60 minutes via
minutes-per-cycle), players enter a forced PvP period - During forced PvP, players cannot disable PvP
- Forced PvP lasts for a configured duration (default: 1200 seconds / 20 minutes)
- By default, debt only counts down when 2 or more players are online; set
solo-forced: trueto also count down while alone - Logging out does not reduce debt
Configure the playtime system in config.yml:
playtime:
minutes-per-cycle: 60 # Minutes of playtime to trigger forced PvP (overrides hours-per-cycle)
hours-per-cycle: 1 # Legacy: Hours of playtime to trigger forced PvP
forced-seconds: 1200 # Seconds of forced PvP per cycle (overrides forced-minutes)
forced-minutes: 20 # Legacy: Minutes of forced PvP per cycle
solo-accumulate: true # Whether playtime should accumulate when a player is online alone
solo-forced: false # Whether forced PvP debt should decrease when a player is online aloneThe plugin configuration is located at plugins/SSoggyPvP-Manager/config.yml.
| Setting | Description | Default |
|---|---|---|
default-pvp-state |
Default PvP state for new players | false |
playtime.minutes-per-cycle |
Minutes between forced PvP periods | 60 |
playtime.hours-per-cycle |
Hours between forced PvP periods (Legacy) | 1 |
playtime.forced-seconds |
Duration of forced PvP in seconds | 1200 |
playtime.forced-minutes |
Duration of forced PvP in minutes (Legacy) | 20 |
playtime.solo-accumulate |
Accumulate playtime when player is online alone | true |
playtime.solo-forced |
Decrease debt when player is online alone | false |
zone-wand-material |
Material for zone selection wand | BLAZE_ROD |
save-interval |
Auto-save interval in minutes | 5 |
debug |
Enable debug logging | false |
All messages can be customized in the config file. Use & color codes for formatting:
&a- Green&c- Red&7- Gray&l- Bold- And more (standard Minecraft color codes)
The plugin stores data in YAML files:
playerdata.yml- Player PvP states, playtime, and debt informationzones.yml- Zone definitions and boundaries
Data is automatically saved:
- Every 5 minutes (configurable with
save-interval) - When a player quits the server
- When the server shuts down
Requirements:
- Maven 3.6 or higher
- Java 17 or higher
Build the plugin:
mvn clean packageThe compiled JAR will be located in the target/ directory, typically named SSoggyPvP-Manager-<version>.jar.
- Verify the player has the
pvptoggle.usepermission - Check if the player is in a forced PvP zone
- Check if the player has active playtime debt
- Review configuration settings
Enable debug logging to troubleshoot issues:
- Set
debug: trueinconfig.yml - Reload the plugin with
/pvpadmin reload - Check console logs for detailed information
- Plugin not loading: Ensure you are running Java 17 or higher
- Commands not working: Check permissions are properly configured
- Zones not saving: Verify file permissions on the plugin data directory
For bug reports, feature requests, or support, please open an issue on the GitHub repository.
This plugin is licensed under GPL-3.0. See the LICENSE file for details.
Note about usage of AI: i used ai for stuff like fixing bugs, getting feedback, coding the bukkit api stuff etc etc, stuff like that