ChallengeUtil

A PaperMC Challenge Util including a timer, a waiting room system, fast world resets and different challenges that can be combined at will.

126

ChallengeUtil

ChallengeUtil - Advanced Speedrunning & Challenge Plugin

Dependencies: Minecraft 1.21.11 (Paper/Spigot) Dependencies: PlaceholderAPI (optional, for team chat prefixes)

---

Overview

ChallengeUtil is a comprehensive Minecraft plugin designed for speedrunning servers and challenge gamemodes. It features instant world resets (~30 seconds, no server restart!), a built-in timer system, multiple game modes, and various challenge mechanics to create unique and engaging gameplay experiences.

Perfect for Velocity/BungeeCord proxy networks - players stay connected during world regeneration!

---

Key Features

Instant World Reset System - Async world deletion without server restart - Async world deletion: Players are smoothly transferred to a waiting room while the speedrun world regenerates - Async world deletion for each reset - Async world deletion: Full Velocity/BungeeCord support with auto-reconnect - Async world deletion: Players remain connected throughout the entire reset process - Async world deletion: Zero lag during world regeneration

Advanced Timer System - Real-time timer display above the hotbar (action bar) - Format: `HH:MM:SS` with visual indicators - Color-coded states: - Light Purple when running - Red with pause symbol (⏸) when paused - Start, pause, reset, and resume functionality - Persistent through pause/resume cycles - PlaceholderAPI support for external plugins

Multiple Game Modes

Dynamic Spawning Classic speedrunner vs hunters gameplay: - Dynamic Spawning: 1+ speedrunners trying to defeat the Ender Dragon - Dynamic Spawning: 1+ hunters trying to stop the runners - Dynamic Spawning: Hunters receive a compass that tracks the nearest runner - Dynamic Spawning: Friendly fire protection within teams (configurable) - Dynamic Spawning: Spectators can watch without interfering - Dynamic Spawning: Hunters spawn 10 minutes after `/start` for balanced gameplay

Scoreboard Integration Competitive team-based speedrunning: - Scoreboard Integration: Customizable team count with German names and colors - Scoreboard Integration: Rot, Blau, Grün, Gelb, Lila, Aqua, Weiß, Orange, Pink, Grau - Scoreboard Integration: Each team tracks the nearest enemy team member - Scoreboard Integration: Team names appear in their respective colors - Scoreboard Integration: First team to defeat the Ender Dragon wins - Scoreboard Integration: Real-time team tracking and status

Challenge Modes

Default Exclusions - Receive random items when entering new chunks - Default Exclusions: Different players get different items from the same chunk - Default Exclusions: Each chunk gives the same item to a player on re-entry - Default Exclusions: Hunters receive items only after 10 minutes - Default Exclusions: Customize which items can drop - Default Exclusions: Overpowered items (Elytra, Netherite gear, Totems) excluded by default

Team Integration Damage teammates, get rewards: - Team Integration: Both attacker and victim take the same damage - Team Integration: Natural health regeneration disabled - Team Integration: Lower health = better items - Team Integration: Basic items (Golden Apples, Arrows, Iron) - Team Integration: Medium items (Diamonds, Enchanted Iron gear) - Team Integration: Strong items (Diamond gear with Sharpness V, Totems) - Team Integration: Extremely OP items (Netherite, fully enchanted diamond gear, multiple totems) - Team Integration: Works with both Manhunt and Team Race modes

Advanced Configuration

Smart Teleportation - Smart Teleportation: Lobby world where players wait during resets (peaceful, frozen time) - Smart Teleportation: Main world that gets regenerated with new seeds - Smart Teleportation: Different gamerules for each world - Smart Teleportation: Surface-detection spawn system

World Generation Settings - World types: NORMAL, FLAT, LARGE_BIOMES, AMPLIFIED - Structure generation toggle - Configurable difficulty - Random or fixed seed generation - Custom spawn coordinates

Proxy Integration - Full BungeeCord/Velocity support - Auto-reconnect during world resets - Configurable server names - Companion proxy plugin included

---

Commands

Main Commands

| Command | Aliases | Description | Permission | |---------|---------|-------------|------------| | `/start` | - | Start or resume the timer | `challenge.start` | | `/pause` | - | Pause the timer | `challenge.pause` | | `/reset` | - | Reset timer only (no world reset) | `challenge.reset` | | `/fullreset` | `/resetworld`, `/worldreset` | Holodeck reset - regenerate world instantly (3-5 sec) | `challenge.fullreset` | | `/join` | `/play`, `/go` | Join the speedrun world from waiting room | `challenge.join` | | `/settings` | `/config`, `/cfg` | Open settings GUI (waiting room only) | `challenge.settings` | | `/team <name>` | - | Join a team (Manhunt or Team Race) | `challenge.team` |

Team Command Examples Manhunt Mode: - `/team runner` - Join the runner team - `/team hunter` - Join the hunter team - `/team spectator` - Join spectators

Team Race Mode: - `/team` - List all available teams and member counts - `/team Rot` - Join Team Rot (Red) - `/team Blau` - Join Team Blau (Blue) - `/team Grün` - Join Team Grün (Green) - etc.

---

Permissions

Main Permissions

| Permission | Description | Default | |------------|-------------|---------| | `challenge.host` | Master permission - grants all admin commands | OP | | `challenge.start` | Start/resume the timer | OP | | `challenge.pause` | Pause the timer | OP | | `challenge.reset` | Reset timer only | OP | | `challenge.fullreset` | Execute Holodeck reset (world regeneration) | OP | | `challenge.settings` | Open settings GUI | OP | | `challenge.join` | Join speedrun world from waiting room | True (all players) | | `challenge.team` | Join teams in Manhunt/Team Race | True (all players) | | `challenge.*` | Grant all permissions | OP |

Permission Hierarchy The `challenge.host` permission includes: - `challenge.start` - `challenge.pause` - `challenge.reset` - `challenge.fullreset` - `challenge.settings`

---

Host Control Features

Players with the `challenge.host` permission receive special tools:

Right-click - Right-click automatically given on join - Right-click to open Host Control GUI - Quick access to all host commands without typing

⚠ FULL RESET ⚠ Interactive menu with three options: 1. ⚠ FULL RESET ⚠ (Green Wool) - Executes `/start` 2. ⚠ FULL RESET ⚠ (Comparator) - Opens `/settings` GUI 3. ⚠ FULL RESET ⚠ (Barrier) - Executes `/fullreset` with warning

---

Configuration

The plugin features extensive configuration through `config.yml`:

Proxy Settings ```yaml proxy: lobby-server: lobby1 # Lobby server name in proxy config this-server-name: challenge1 # This server's name in proxy config ```

World Settings ```yaml world: waiting-room: waiting_room # Fallback world (lobby) speedrun-world: speedrun_world # World that gets regenerated

generation: type: NORMAL # NORMAL, FLAT, LARGE_BIOMES, AMPLIFIED generate-structures: true random-seed: true

difficulty: NORMAL # PEACEFUL, EASY, NORMAL, HARD

teleport: waiting-room-spawn: x: 0 y: 65 z: 0 speedrun-spawn: x: 0 y: 100 # Auto-finds surface z: 0 ```

Gamerules Separate gamerule configurations for waiting room (peaceful, frozen time) and speedrun world (normal gameplay).

Challenge Settings ```yaml challenge: allow-respawn: true # false = hardcore mode (spectator on death)

chunk_items: excluded: # Items to exclude from random rewards

- DIAMOND

- EMERALD

friendly_fire_item: enabled: false # Toggle via GUI ```

---

PlaceholderAPI Integration (optional)

Available Placeholders

| Placeholder | Description | Example Output | |-------------|-------------|----------------| | `%ch_prefix%` | Team prefix with color | `[RUNNER]`, `[HUNTER]`, `[Red]` | | `%ch_suffix%` | Team suffix (reserved) | - | | `%ch_team%` | Raw team name | `runner`, `hunter`, `Rot` | | `%ch_team_color%` | Legacy team color code | `§d`, `§6`, `§c` |

Usage Example EssentialsX Chat: ```yaml format: '{ch_prefix}{DISPLAYNAME}{ch_suffix}§r: {MESSAGE}' ```

---

Game Modes Comparison

Mode Compatibility Matrix

| Feature | Manhunt | Team Race | Solo | |---------|---------|-----------|------| | Timer System | ✅ | ✅ | ✅ | | Instant Reset | ✅ | ✅ | ✅ | | Team System | ✅ | ✅ | ❌ | | Tracking Compass | ✅ (Hunters only) | ✅ (All teams) | ❌ | | Chunk Items Challenge | ✅ | ✅ | ✅ | | Friendly Fire Challenge | ✅ | ✅ | ❌ | | Multiple Teams | ❌ (2 teams) | ✅ (2-10 teams) | ❌ | | Can Run Simultaneously | ❌ | ❌ | ✅ |

Note: Manhunt and Team Race cannot be enabled simultaneously.

---

Technical Details

Performance - Compass Updates: 10-30 seconds typical - Compass Updates: Async (non-blocking) - Compass Updates: Sync (main thread, optimized) - Compass Updates: Every second (20 ticks) - Compass Updates: Every second (20 ticks)

---

Installation

Basic Installation 1. Download `ChallengeUtil.jar` 2. Place in your server's `plugins` folder 3. Configure `server.properties`: ```properties level-name=waiting_room ``` 4. Restart your server 5. Configure `plugins/ChallengeUtil/config.yml` 6. Reload or restart

Optional: PlaceholderAPI 1. Install PlaceholderAPI from SpigotMC 2. Restart server 3. Placeholders automatically register 4. Use in chat plugins (EssentialsX, ChatControl, etc.)

---

Usage Examples

Basic Speedrun Setup 1. Server starts with players in waiting room 2. Admin: `/settings` - Configure challenge settings 3. Players: `/join` - Enter speedrun world 4. Admin: `/start` - Begin timer 5. Players: Complete speedrun 6. Admin: `/fullreset` - Instant 3-5 second reset for next run

Manhunt Setup 1. Enable Manhunt mode in `/settings > Challenges` 2. Players join teams: - `/team runner` (speedrunners) - `/team hunter` (hunters) 3. Admin: `/start` 4. Runners get 10-minute head start 5. Hunters spawn and receive tracking compass 6. First team to defeat Ender Dragon wins

Team Race Setup 1. Enable Team Race in `/settings > Challenges` 2. Players: `/team` to see available teams 3. Players join teams: `/team Rot`, `/team Blau`, etc. 4. Admin: `/start` 5. All teams receive tracking compasses 6. Race to defeat the Ender Dragon 7. First team wins!

---

Troubleshooting

Common Issues

"Waiting room not found" - Verify `level-name=waiting_room` in server.properties - Ensure waiting room world folder exists

Slow resets (>60 seconds) - Use Paper instead of Spigot - Use SSD instead of HDD - Reduce world size/pregenerate less - Check server TPS

Players fall into void - Increase `speedrun-spawn.y` to 120+ in config.yml - Plugin auto-finds surface, but high Y helps

Same seed every reset - Set `random-seed: false` in config.yml

Compass not working - Ensure players are in the same dimension - Check that target players are online - Verify team assignments with `/team`

Chat prefixes not showing - Install PlaceholderAPI - Check if expansion is registered: `/papi list` - Reload PlaceholderAPI: `/papi reload` - Verify chat plugin configuration

---

Perfect For

- Proxy Networks: Instant resets for practice or races - Proxy Networks: Unique gameplay mechanics - Proxy Networks: Classic hunter vs speedrunner - Proxy Networks: Multi-team races - Proxy Networks: Quick reset for skill improvement - Proxy Networks: Streamers and YouTubers - Proxy Networks: Multiple parallel speedrun instances

---

License

MIT License - Free to use for any server!

---

Active Development Active Development - 10-30 seconds, no server restart Active Development - Chunk Items, Friendly Fire Active Development - Perfect for networks Active Development - Customize everything Active Development - Full integration Active Development - Optimized and tested Active Development - GUI-based configuration Active Development - Regular updates

---

Built with ❤️ for the Minecraft speedrunning community

Download now and revolutionize your speedrunning server!

ADS