A dynamic survival challenge plugin for Minecraft that introduces plague-style siege events triggered by drinking a cursed "bad omen" potion at night.
- Dynamic Wave System: Each round gets progressively harder with more mobs and enhanced attributes
- Night-time Trigger: Start the curse by drinking a Bad Omen potion at night
- Boss Bar Integration: Visual progress tracking for each plague round
- Reward System: Treasure chests spawn with valuable loot after completing rounds
- Antidote Mechanic: Essential survival item obtained after first wave completion
- Leaderboard System: Track completions, kills, best times, and highest rounds
- XP Scaling: Difficulty scales with player experience level
- Combat Radius: Stay within the designated area or face consequences
- Poison Penalty: Failure results in deadly poisoning until antidote is consumed
- Final Wave: Unwinnable challenge that forces strategic antidote usage
- Automatic Reset: Curse resets on player death or quit/rejoin
- Cooldown System: Configurable cooldown period after curse reset
- Admin Commands: Full admin control over player curses
- Download the latest
curse-{version}.jarfrom the releases page - Place the JAR file in your server's
plugins/directory - Start or restart your Minecraft server
- The plugin will create a
config.ymlfile inplugins/TheCurse/
This plugin requires Java 25 and Maven to build.
# Clone the repository
git clone <repository-url>
cd minecraft-curse
# Build the plugin
make build
# Or use Maven directly
mvn clean packageThe compiled JAR will be available in the target/ directory.
There are two ways to start a curse:
- Wait for nighttime (time 12541-23031)
- Drink a Bad Omen potion
- Survive the waves of enhanced zombies
- Use the antidote from the first reward chest to end the curse
- Craft or obtain a ZP25 cursed book
- Drop the book near a zombie at night
- Wait for the zombie to pick up the book
- The zombie will vanish with dramatic effects and the curse begins
The ZP25 cursed book is a special item that provides an alternative way to start the curse. This dark tome is bound with powerful magic and requires specific materials to craft.
Crafting Recipe:
[Spider Eye] [Nether Star] [Spider Eye]
[Ender Pearl] [Book] [Ender Pearl]
[Rotten Flesh][Rotten Flesh][Rotten Flesh]
Admin Command:
/curse book [player]- Give a cursed book to yourself or another player (admin only)
- Drop the Book: Drop the ZP25 cursed book near any zombie
- Zombie Pickup: The zombie must be within 10 blocks (configurable) and will pick up the book
- Activation: The zombie vanishes with a dramatic puff effect and ominous sounds
- Curse Begins: After a 2-second delay, your curse starts automatically
- Unique Identifier: Each book has a unique name "ZP25" and custom lore
- Same Cooldown Rules: Follows the same cooldown mechanics as Bad Omen potions
- Visual Effects: Dramatic particles and sounds when activated
- Book Consumed: The book is permanently consumed when used
- Night Only: Must be used at nighttime like other curse triggers
The cursed book feature can be customized in config.yml:
cursedBook:
enabled: true # Enable/disable cursed book feature
pickupRange: 10 # Range for zombie to detect book
enableRecipe: true # Enable crafting recipe
enableActivationEffects: true # Enable visual effects on activationThe curse will automatically reset in the following situations:
- Player Death: All progress is lost and a cooldown is applied
- Player Quit/Rejoin: Progress is lost and a cooldown is applied
- Admin Reset: Administrators can manually reset any player's curse
After a reset, you must wait for the cooldown period (default: 5 minutes) before starting a new curse.
Administrators can manage player curses using the following commands:
/curse start <player>- Force start a curse on a specific player/curse stop <player>- Force stop a specific player's curse/curse reset <player>- Reset a player's curse and apply cooldown
/curse start [player]- Force start a curse (admin only)/curse stop [player]- Force stop current curse (admin only)/curse reset [player]- Reset a curse and apply cooldown (admin only)/curse book [player]- Give a cursed book to yourself or another player (admin only)/curse leaderboard- View curse statistics and rankings/curse reload- Reload plugin configuration (admin only)/curse help- Show available commands
curse.admin- Full access to all commands (default: op)curse.use- Basic usage and leaderboard access (default: true)curse.start- Can force start curses (default: op)curse.stop- Can force stop curses (default: op)curse.reset- Can reset curses and apply cooldown (default: op)curse.reload- Can reload configuration (default: op)
The plugin creates a config.yml file with the following options:
plague:
maxRounds: 7 # Maximum rounds before final wave
scaleWithXP: true # Scale difficulty with player level
spawnRadius: 20 # Mob spawn radius around player
timeLimitPerRound: 60 # Time limit per round (0 = no limit)
allowTerrainDamage: false # Allow mobs to damage terrain
maxActivePlagues: 3 # Max simultaneous plagues on server
visualEffects: true # Enable particle and sound effects
combatRadius: 30 # Maximum distance from start location
minDistanceFromVillages: 100 # Minimum distance from villages
resetCooldownMinutes: 5 # Cooldown after curse reset (minutes)
cursedBook:
enabled: true # Enable cursed book feature
pickupRange: 10 # Range for zombie to detect book (blocks)
enableRecipe: true # Enable crafting recipe
enableActivationEffects: true # Enable visual effects on activation
rewards:
chestLoot: # Configurable loot tables
common: [...]
uncommon: [...]
rare: [...]
legendary: [...]
leaderboard:
enabled: true # Enable leaderboard system
displayCount: 10 # Number of entries to showUse the provided Makefile for development tasks:
make setup # Set up development environment
make start # Start the test server
make stop # Stop the test server
make restart # Restart the server
make dev # Build, install, and restart (development cycle)
make test # Run plugin tests
make clean # Clean server filesThe plugin includes comprehensive test coverage:
# Run all tests
make test
# Or use Maven
mvn test- Target: Minecraft Java Edition 1.21+
- Server: Paper 26.1.2+ (recommended)
- Java Version: 21+
- Dependencies: None (standalone plugin)
- Player Data: Stored in Bukkit's Persistent Data Container (PDC)
- Server Leaderboard: Cached in memory and persisted to
leaderboard.yml - Automatic Saving: All data is automatically saved on server shutdown
This project is licensed under the GNU Affero General Public License v3.0 or later.