# EventController Plugin Documentation

EventController is a comprehensive multi-feature Minecraft plugin for Paper 1.21.3+ designed for hosting large-scale events (100+ players). It includes event management, KOTH zones, team systems, custom recipes, civilization management, tracking systems, and more.


# Table of Contents

  • Installation
  • Quick Start Guide
  • Core Features
  • Configuration
  • All Commands Reference
  • Event Management System
  • Team Management
  • KOTH (King of the Hill)
  • Custom Recipes System
  • Civilization System
  • Tracker & Navigation
  • Item & Enchant Limits
  • Block Decay System
  • Pedestal System
  • Zone Linking
  • Permissions Reference
  • Advanced Features
  • Troubleshooting

# Installation

# Requirements

  • Server Software: Paper 1.21.3 or newer
  • Java Version: Java 21+
  • Required Dependencies:
    • LuckPerms (required for team chat integration)
  • Optional Dependencies:
    • WorldGuard (for KOTH block decay and region protection)
    • ProtocolLib (for enhanced visual effects and crack animations)
    • PlaceholderAPI (for placeholder support in other plugins)

# Installation Steps

  1. Download the latest eventcontroller.jar from releases
  2. Install Dependencies: Ensure LuckPerms is installed in your plugins/ folder
  3. Place JAR: Put eventcontroller.jar in your server's plugins/ folder
  4. Start Server: Start or restart your server
  5. Verify: Check console for "EventController has been enabled!"
  6. Configure: Edit plugins/eventcontroller/config.yml to enable/disable modules

# Quick Start Guide

# For Event Hosts

  1. Enable Modules: Edit config.yml to enable features you need
  2. Reload Config: /eventreload to apply changes
  3. Create Teams: /team create [count] to create teams
  4. Assign Players: Use /civ teams auto for automatic assignment
  5. Start Event: /event start [type]

# For Recipe Creators

  1. Open Creator: /recipes create
  2. Follow GUI: Set name, ingredients, limits
  3. Test Recipe: Try crafting in-game
  4. Adjust Limits: /recipes playerlimit <name> <limit>

# For Server Admins

  1. Check Status: /configstatus to view all modules
  2. Configure: /eventconfig for in-game configuration
  3. Reload: /eventreload after manual config edits
  4. Monitor: /event status to check active events

# Core Features

# Module System

EventController uses a modular architecture where each feature can be independently enabled or disabled in config.yml:

config.yml
modules:
  teams: true              # Team management and organization
  koth: true               # King of the Hill zones
  pedestals: true          # Interactive crafting pedestals
  custom-recipes: true     # Custom recipe system
  events: true             # Event management system
  block-decay: true        # WorldGuard block decay
  civilizations: true      # Civilization management
  tracker: true            # Structure tracking
  item-limits: true        # Item quantity limits
  enchant-limits: true     # Enchantment level limits

Set any module to false to disable it completely. Changes require /eventreload to take effect.


# Configuration

# Main Configuration File

Location: plugins/eventcontroller/config.yml

Complete Example
# EventController Main Configuration
version: 1.0

# Module toggles - Enable/disable features
modules:
  teams: true
  koth: true
  pedestals: true
  custom-recipes: true
  events: true
  block-decay: true
  civilizations: true
  tracker: true
  item-limits: true
  enchant-limits: true

# Team settings
teams:
  max-members: 10           # Maximum players per team
  allow-friendly-fire: false # Can teammates hurt each other
  auto-color-assignment: true # Auto-assign colors
  
# KOTH settings
koth:
  capture-time: 180         # Default capture time (seconds)
  particle-interval: 20     # Particle spawn interval (ticks)
  progress-bar-height: 3.0  # Height above center point
  check-y-level: true       # Require players above min Y level
  
# Recipe settings
recipes:
  broadcast-crafts: true    # Default broadcast setting
  default-limit: 100        # Default global craft limit
  
# Pedestal settings
pedestals:
  max-per-player: 5         # Max pedestals per player
  display-height: 1.5       # Item display height
  
# Event settings
events:
  freeze-on-join: true      # Freeze players when event starts
  death-spectator: true     # Death puts players in spectator
  thunder-on-death: false   # Lightning strike on death
  
# Civilization settings
civilizations:
  max-members: 50           # Max players per civilization
  require-approval: true    # Join requests need approval
  
# Tracker settings
tracker:
  max-distance: 10000       # Max tracking distance (blocks)
  update-interval: 20       # Direction update interval (ticks)
  
# Item limit settings
item-limits:
  drop-excess: true         # Drop items over limit
  warn-players: true        # Notify when limit reached
  
# Enchant limit settings
enchant-limits:
  downgrade-excess: true    # Lower enchants over limit
  warn-players: true        # Notify about downgrades
  
# Block decay settings
block-decay:
  default-time: 300         # Default decay time (seconds)
  show-cracks: true         # Show crack animations
  check-interval: 2         # Check every N ticks

# Data Files

All persistent data is stored in YAML format in plugins/eventcontroller/:

File Purpose Auto-Created
config.yml Main configuration Yes
teams.yml Team data and memberships Yes
koth_data.yml KOTH zone configurations Yes
pedestals.yml Pedestal locations and recipes Yes
custom-recipes.yml Custom crafting recipes Yes
events.yml Event configurations Yes
civilizations.yml Civilization data Yes
tracked-structures.yml Structure waypoints Yes
item-limits.yml Item quantity limits Yes
enchant-limits.yml Enchantment level limits Yes

# All Commands Reference

# Complete Command List

Here's every command in EventController with full syntax and descriptions:

# Event Management Commands

Command Syntax Description Permission
/event help /event help Show all event commands eventcontroller.events.help
/event start /event start [type] Start an event eventcontroller.events.manage
/event stop /event stop Stop current event eventcontroller.events.manage
/event list /event list List active events eventcontroller.events.list
/event status /event status View detailed event status eventcontroller.events.status
/event freeze /event freeze [player] Freeze all players or specific player eventcontroller.events.freeze
/event unfreeze /event unfreeze [player] Unfreeze all players or specific player eventcontroller.events.freeze
/event cornfreeze /event cornfreeze Freeze all players (cornucopia mode) eventcontroller.events.freeze
/event cornunfreeze /event cornunfreeze Unfreeze cornucopia freeze eventcontroller.events.freeze
/event adminfreeze /event adminfreeze <player> Freeze specific player (admin) eventcontroller.events.freeze
/event adminunfreeze /event adminunfreeze <player> Unfreeze specific player (admin) eventcontroller.events.freeze
/event heal /event heal [player] Heal all players or specific player eventcontroller.events.heal
/event feed /event feed [player] Feed all players or specific player eventcontroller.events.heal
/event tp /event tp <player> <target> Teleport player to target eventcontroller.events.teleport
/event weather /event weather <clear\|rain\|thunder> Set weather eventcontroller.events.weather
/event time /event time <day\|night\|<time>> Set time of day eventcontroller.events.weather
/event broadcast /event broadcast <message> Send server-wide message eventcontroller.events.broadcast
/event thunderdeath /event thunderdeath <true\|false> Toggle lightning on death eventcontroller.events.death
/event specdeath /event specdeath <true\|false> Toggle spectator on death eventcontroller.events.death
/event deathban /event deathban <player> Ban player on death eventcontroller.events.death
/event unbanall /event unbanall Unban all players eventcontroller.events.death
/event disablenether /event disablenether Disable nether portals eventcontroller.events.world
/event disableend /event disableend Disable end portals eventcontroller.events.world
/event lightning /event lightning [player] Strike lightning at player eventcontroller.events.effects
/event explosion /event explosion [player] Create explosion at player eventcontroller.events.effects
/event inventory /event inventory <player> View/edit player inventory eventcontroller.events.inventory
/event resetdeaths /event resetdeaths Reset all death counters eventcontroller.events.manage
/event gui /event gui Open event control GUI eventcontroller.admin.gui

# Pedestal Sub-commands

Command Syntax Description
/event pedestal create /event pedestal create Create pedestal at location
/event pedestal remove /event pedestal remove Remove nearest pedestal
/event pedestal list /event pedestal list List all pedestals
/event pedestal info /event pedestal info Get pedestal information
/event pedestal reset /event pedestal reset <name> Reset pedestal craft count

# Cornucopia Sub-commands

Command Syntax Description
/event cornucopia set1 /event cornucopia set1 Set corner 1 of cornucopia
/event cornucopia set2 /event cornucopia set2 Set corner 2 of cornucopia
/event cornucopia start /event cornucopia start Start cornucopia event
/event cornucopia clear /event cornucopia clear Clear cornucopia area
/event cornucopia info /event cornucopia info Show cornucopia info

# Preset Sub-commands

Command Syntax Description
/event preset heart /event preset heart Apply heart preset
/event preset netherite /event preset netherite Apply netherite preset
/event preset apple /event preset apple Apply apple preset

# Team Management Commands

Command Syntax Description Permission
/team help /team help Show team commands eventcontroller.team.help
/team create /team create <count> Create N teams with auto-numbering eventcontroller.team.create
/team create /team create <name> <color> Create named team with color eventcontroller.team.create
/team join /team join <name\|number> Join a team eventcontroller.team.join
/team leave /team leave Leave current team eventcontroller.team.leave
/team info /team info [team] View team information eventcontroller.team.info
/team list /team list List all teams eventcontroller.team.list
/team edit /team edit <team> <setting> <value> Edit team settings eventcontroller.team.edit
/team remove /team remove <team> Delete a team eventcontroller.team.remove
/team mode /team mode <simple\|named> Switch team creation mode eventcontroller.team.mode

# KOTH Commands

Command Syntax Description Permission
/koth help /koth help Show KOTH commands eventcontroller.koth.help
/koth create /koth create <name> Create KOTH zone (WorldEdit selection) eventcontroller.koth.create
/koth delete /koth delete <name> Delete KOTH zone eventcontroller.koth.delete
/koth start /koth start <name> Start KOTH event eventcontroller.koth.start
/koth stop /koth stop <name> Stop KOTH event eventcontroller.koth.stop
/koth list /koth list List all KOTH zones eventcontroller.koth.list
/koth info /koth info <name> View zone details eventcontroller.koth.info
/koth reset /koth reset <name> Reset zone progress eventcontroller.koth.reset
/koth config /koth config <name> <setting> <value> Configure zone settings eventcontroller.koth.config

# Custom Recipe Commands

Command Syntax Description Permission
/recipes /recipes Open recipe browser GUI eventcontroller.recipes.list
/recipes help /recipes help Show recipe commands eventcontroller.recipes.help
/recipes browse /recipes browse Browse all recipes (GUI) eventcontroller.recipes.list
/recipes list /recipes list Browse all recipes (GUI) eventcontroller.recipes.list
/recipes info /recipes info <name> Get recipe details eventcontroller.recipes.view
/recipes create /recipes create Open recipe creation GUI eventcontroller.recipes.make
/recipes delete /recipes delete <name> Delete recipe (supports color codes) eventcontroller.recipes.remove
/recipes reset /recipes reset <name\|all> Reset craft counts eventcontroller.recipes.admin
/recipes broadcast /recipes broadcast <name> <true\|false> Toggle broadcast eventcontroller.recipes.admin
/recipes playerlimit /recipes playerlimit <name> <limit> Set per-player limit eventcontroller.recipes.admin
/recipes reload /recipes reload Reload recipes from file eventcontroller.recipes.admin

# Civilization Commands

Command Syntax Description Permission
/civ help /civ help Show civilization commands eventcontroller.civilization.use
/civ create /civ create <name> Create a civilization eventcontroller.civilization.create
/civ join /civ join <name> Join a civilization eventcontroller.civilization.join
/civ leave /civ leave Leave current civilization eventcontroller.civilization.leave
/civ info /civ info [civ] View civilization details eventcontroller.civilization.info
/civ list /civ list List all civilizations eventcontroller.civilization.use
/civ disband /civ disband <name> Disband civilization (admin) eventcontroller.civilization.admin
/civ gui /civ gui Open civilization GUI eventcontroller.civilization.gui
/civ teams auto /civ teams auto Auto-assign players to teams eventcontroller.civilization.teams.auto
/civ teams swap /civ teams swap <player1> <player2> Swap players between teams eventcontroller.civilization.teams.swap
/civ teams set /civ teams set <player> <team> Set player to specific team eventcontroller.civilization.teams.set
/civ reset /civ reset Reset all civilization data eventcontroller.civilization.reset

# Tracker Commands

Command Syntax Description Permission
/tracker help /tracker help Show tracker commands eventcontroller.tracker.help
/tracker set /tracker set <name> Create tracked waypoint at location eventcontroller.tracker.set
/tracker remove /tracker remove <name> Remove tracked waypoint eventcontroller.tracker.remove
/tracker list /tracker list List all tracked structures eventcontroller.tracker.list
/tracker info /tracker info <name> View structure information eventcontroller.tracker.info
/tracker tp /tracker tp <name> Teleport to tracked structure eventcontroller.tracker.teleport
Command Syntax Description Permission
/track /track <name> Get directional guidance to structure eventcontroller.track
/track stop /track stop Stop tracking eventcontroller.track

# Item Limit Commands

Command Syntax Description Permission
/itemlimit help /itemlimit help Show item limit commands eventcontroller.items.help
/itemlimit set /itemlimit set <item> <limit> Set max stack size for item eventcontroller.items.set
/itemlimit remove /itemlimit remove <item> Remove item limit eventcontroller.items.remove
/itemlimit list /itemlimit list List all item limits eventcontroller.items.list
/itemlimit clear /itemlimit clear Remove all item limits eventcontroller.items.clear

Alias: /ilimit

# Enchantment Limit Commands

Command Syntax Description Permission
/elimit help /elimit help Show enchant limit commands eventcontroller.enchants.help
/elimit set /elimit set <enchant> <level> Set max level for enchantment eventcontroller.enchants.set
/elimit remove /elimit remove <enchant> Remove enchant limit eventcontroller.enchants.remove
/elimit list /elimit list List all enchant limits eventcontroller.enchants.list
/elimit clear /elimit clear Remove all enchant limits eventcontroller.enchants.clear

Alias: /enchantlimit

# Zone Linking Commands

Command Syntax Description Permission
/zonelink help /zonelink help Show zone link commands eventcontroller.zonelink.help
/zonelink create /zonelink create <zone1> <zone2> Link two KOTH zones eventcontroller.zonelink.create
/zonelink remove /zonelink remove <zone1> <zone2> Unlink zones eventcontroller.zonelink.remove
/zonelink list /zonelink list [zone] List zone dependencies eventcontroller.zonelink.list

# Block Decay Commands

Command Syntax Description Permission
/decay help /decay help Show decay commands eventcontroller.admin
/decay start /decay start <region> Start decay in region eventcontroller.admin
/decay stop /decay stop <region> Stop decay in region eventcontroller.admin
/decay status /decay status View decay status eventcontroller.admin

# Configuration Commands

Command Syntax Description Permission
/eventreload /eventreload Reload all configuration files eventcontroller.admin
/eventconfig /eventconfig Open in-game configuration GUI eventcontroller.admin
/configstatus /configstatus View all module statuses eventcontroller.admin
/eventgui /eventgui Open event configuration GUI eventcontroller.admin.gui

# Event Management System

The Event Management System is designed for hosting large-scale Minecraft events with 100+ players, including Hunger Games, Battle Royale, Purge events, and custom competitions.

# Core Concepts

Event Types:

  • Battle Royale: Last player/team standing
  • Hunger Games: Survival with cornucopia phase
  • Purge: Timed PvP events
  • Custom: Fully customizable events

Event States:

  • Preparation: Event created, players joining
  • Frozen: Players spawned but can't move
  • Active: Event in progress
  • Ending: Victory conditions met
  • Completed: Event finished

# Starting an Event

# Basic Event Start

/event start

Starts a basic event with default settings.

# Hunger Games Event

1. /event cornucopia set1  (Set corner 1 of cornucopia area)
2. /event cornucopia set2  (Set corner 2 of cornucopia area)
3. /event freeze           (Freeze all players)
4. /event cornfreeze       (Special cornucopia freeze)
5. /event cornucopia start (Start cornucopia countdown)
6. Wait for countdown...
7. /event cornunfreeze     (Release players to cornucopia)

# Battle Royale Event

1. /event freeze           (Freeze players at spawn)
2. /event specdeath true   (Death = spectator mode)
3. /event thunderdeath true (Lightning on death)
4. /event start            (Start event)
5. /event unfreeze         (Release players)

# Player Management

# Freeze/Unfreeze

/event freeze              # Freeze all players
/event freeze PlayerName   # Freeze specific player
/event unfreeze            # Unfreeze all
/event unfreeze PlayerName # Unfreeze specific player

Freeze Types:

  • Regular Freeze: Basic movement lock
  • Cornucopia Freeze: Hunger Games specific, prevents early movement
  • Admin Freeze: Individual player freeze for moderation

# Health & Food

/event heal                # Heal all players
/event heal PlayerName     # Heal specific player
/event feed                # Feed all players
/event feed PlayerName     # Feed specific player

# Death Handling

# Spectator on Death

/event specdeath true      # Enable
/event specdeath false     # Disable

When enabled, dead players enter spectator mode and can fly around watching the event.

# Thunder on Death

/event thunderdeath true   # Enable lightning strike on death
/event thunderdeath false  # Disable

Creates dramatic death effects with lightning strikes.

# Death Banning

/event deathban PlayerName # Ban player permanently on death
/event unbanall            # Unban all event-banned players

Useful for hardcore events where death should remove players completely.

# Environmental Control

# Weather Control

/event weather clear       # Clear weather
/event weather rain        # Start rain
/event weather thunder     # Start thunderstorm

# Time Control

/event time day            # Set to day (1000)
/event time night          # Set to night (13000)
/event time 6000           # Set specific time (0-24000)

# World Restrictions

/event disablenether       # Disable nether portal use
/event disableend          # Disable end portal use

Prevents players from escaping event world.

# Communication

# Broadcasting

/event broadcast <message>

Sends a server-wide announcement to all players.

Example:

/event broadcast The Purge begins in 60 seconds!

# Special Effects

# Lightning Strike

/event lightning           # Strike at your location
/event lightning PlayerName # Strike at player

# Explosion

/event explosion           # Explode at your location
/event explosion PlayerName # Explode at player

# Inventory Management

# View/Edit Inventory

/event inventory PlayerName

Opens the player's inventory for viewing and editing. Useful for:

  • Checking for illegal items
  • Giving event items
  • Removing contraband
  • Equipment verification

# Event Presets

Pre-configured item loadouts for quick distribution.

/event preset heart        # Apply heart preset
/event preset netherite    # Apply netherite preset
/event preset apple        # Apply apple/golden apple preset

Each preset gives specific items to the executing player or selected players.

# Pedestal System (Event Context)

Pedestals in event areas allow custom crafting stations.

# Create Event Pedestal

/event pedestal create

Creates an interactive crafting pedestal at your location.

# Remove Pedestal

/event pedestal remove

Removes the nearest pedestal.

# List Pedestals

/event pedestal list

Shows all pedestals in event area with coordinates.

# Reset Craft Counts

/event pedestal reset <name>

Resets the craft counter for a pedestal's recipe.

# Cornucopia System

The Cornucopia is a dedicated, configurable central loot zone used for Hunger Games-style events. It defines a cuboid area where special loot spawns and players are held for a countdown before the event begins.

Key behaviors:

  • Define a cuboid area for the cornucopia
  • Freeze players inside the area during a countdown
  • Release players when the countdown completes (or manually)
  • Optional manual freeze/unfreeze controls for staff

# Commands & Typical Workflow

  1. Define the area (two corners):
/event cornucopia set1
/event cornucopia set2

This saves the two opposite corners and creates the Cornucopia region.

  1. Inspect the cornucopia:
/event cornucopia info

Shows coordinates, configured countdown, and current status.

  1. Start the countdown (default: 60s):
/event cornucopia start

During the countdown:

  • All players inside the cornucopia region are frozen (cannot move or act)
  • A visible timer is shown to players (action bar/chat depending on config)
  1. Release players early or manually manage freeze:
/event cornfreeze       # Immediately freeze players (cornucopia-style)
/event cornunfreeze     # Release frozen players
  1. Clear the saved cornucopia area:
/event cornucopia clear

Removes the saved area and associated settings.

# Notes & Tips

  • The default countdown is 60 seconds; this can be adjusted in event presets or command options if available.
  • Only players physically inside the defined cuboid are affected by the freeze/countdown.
  • Use /event cornfreeze and /event cornunfreeze for ad-hoc control during rehearsals or when adjusting arena setup.
  • When running multi-world servers, ensure the cornucopia area and players are in the same world—players in other worlds will be ignored by the cornucopia logic.
  • For large events, use the GUI (/event gui) to double-check player counts before starting the countdown.

# Event Monitoring

# Status Check

/event status

Shows:

  • Active events
  • Player count
  • Death count
  • Event duration
  • Enabled settings (freeze, specdeath, etc.)

# Death Statistics

/event resetdeaths

Resets all death counters for a fresh start.

# Event GUI

/event gui

Opens a graphical interface for event control:

  • Start/Stop buttons
  • Freeze controls
  • Setting toggles
  • Quick actions
  • Player management

# Team Management

The Team Management System provides organization for players in events, with LuckPerms integration for chat colors and prefixes.

# Two Team Modes

EventController supports two team creation modes:

# Simple Mode (Auto-Numbered)

/team create 4

Creates: "Team 1", "Team 2", "Team 3", "Team 4" with auto-assigned colors.

Benefits:

  • Quick setup
  • No thinking required
  • Perfect for randomized events
  • Clean team names

# Named Mode (Custom Names)

/team create Warriors RED

Creates team named "Warriors" with red color.

Benefits:

  • Themed events
  • Memorable names
  • Specific color control
  • Branded teams

# Switch Modes

/team mode simple          # Switch to auto-numbered teams
/team mode named           # Switch to named teams

# Team Creation

# Create Multiple Teams (Simple)

/team create <count>

Example:

/team create 8             # Creates Team 1 through Team 8

Available Colors (auto-assigned):

  • RED, BLUE, GREEN, YELLOW
  • AQUA, LIGHT_PURPLE, GOLD, WHITE
  • GRAY, DARK_RED, DARK_BLUE, etc.

# Create Named Team

/team create <name> <color>

Example:

/team create Dragons DARK_RED
/team create Phoenix GOLD
/team create Sharks AQUA

Color Codes:

  • RED, DARK_RED, BLUE, DARK_BLUE
  • GREEN, DARK_GREEN, AQUA, DARK_AQUA
  • YELLOW, GOLD, LIGHT_PURPLE, DARK_PURPLE
  • WHITE, GRAY, DARK_GRAY, BLACK

# Joining Teams

# Join Team

/team join <name|number>

Examples:

/team join 3               # Join Team 3 (simple mode)
/team join Warriors        # Join Warriors (named mode)

# Leave Team

/team leave

Removes you from your current team.

# Team Information

# View Team Info

/team info                 # Your team's info
/team info Warriors        # Specific team's info
/team info 3               # Team 3's info

Shows:

  • Team name and color
  • Member list
  • Member count
  • Team creation date
  • Team settings

# List All Teams

/team list

Shows all teams with member counts and colors.

# Team Management (Admin)

# Edit Team

/team edit <team> <setting> <value>

Settings:

  • color: Change team color
  • name: Rename team
  • max-members: Set player limit
  • friendly-fire: Enable/disable team damage

Examples:

/team edit Warriors color BLUE
/team edit 3 name Champions
/team edit Dragons max-members 10
/team edit 2 friendly-fire false

# Remove Team

/team remove <team>

Examples:

/team remove Warriors
/team remove 5

# LuckPerms Integration

Teams automatically integrate with LuckPerms for chat features:

Automatic Features:

  • Chat name colors based on team color
  • Team prefix in chat
  • Color persistence across sessions
  • Compatible with chat plugins

How It Works:

  1. Player joins "Team 1" (RED)
  2. Plugin sets LuckPerms prefix: &c[Team 1]
  3. Player's chat name becomes red
  4. Works with any chat plugin

Manual Override: If you need custom prefixes:

/lp user PlayerName meta setprefix "&6[Custom] "

# Team-Based Features

# Team Events

  • Teams compete for highest kills
  • Teams work together in KOTH
  • Team-based victory conditions
  • Team respawn locations

# Team Chat (Future Feature)

  • Private team communication
  • Team-only broadcasts
  • Leader commands

# KOTH (King of the Hill)

The KOTH system creates competitive capture zones where players/teams fight for control.

# KOTH Concepts

Zone Components:

  • Boundaries: Cuboid area (WorldEdit selection)
  • Center Point: Progress bar display location
  • Min Y-Level: Prevents underground captures
  • Capture Time: Seconds to capture (default: 180)

Capture Mechanics:

  • Multiple players same team = faster capture
  • Opposing players = contested (no progress)
  • Must be above minimum Y level
  • Progress persists until contested

# Creating KOTH Zones

# Step 1: Select Area

Use WorldEdit to select zone boundaries:

//wand
(Select two corners with left/right click)

# Step 2: Create Zone

/koth create <name>

Example:

/koth create CastleHill

The plugin automatically:

  • Saves zone boundaries from WorldEdit selection
  • Calculates center point
  • Sets minimum Y level (lowest point + 3 blocks)
  • Applies default capture time (180 seconds)

# Step 3: Configure (Optional)

/koth config <name> <setting> <value>

Settings:

  • capture-time: Seconds to capture (60-600)
  • min-y-level: Minimum height requirement
  • progress-height: Display entity height
  • particles: Enable/disable particles

Examples:

/koth config CastleHill capture-time 120
/koth config CastleHill min-y-level 65
/koth config CastleHill progress-height 4.0

# Running KOTH Events

# Start KOTH

/koth start <name>

What Happens:

  1. Zone becomes active
  2. Progress bar appears at center
  3. Players can begin capturing
  4. Capture progress tracked per team
  5. Announcements when zones change hands

# Stop KOTH

/koth stop <name>

Immediately stops the event and clears progress.

# KOTH Management

# View Zone Info

/koth info <name>

Shows:

  • Zone name and status (active/inactive)
  • Boundaries (X, Y, Z coordinates)
  • Center point
  • Capture time setting
  • Current progress (if active)
  • Capturing team (if any)
  • Min Y level

# List All Zones

/koth list

Displays all KOTH zones with status indicators:

  • ✓ Active zones
  • ✗ Inactive zones

# Reset Zone

/koth reset <name>

Clears capture progress without stopping the event.

# Delete Zone

/koth delete <name>

Permanently removes the KOTH zone.

# Capture Progress

Visual Indicators:

  • Progress Bar: Floating display entity above center showing percentage
  • Particle Effects: Minimal particles at zone edges (if enabled)
  • Block Cracks: Progressive cracking (requires ProtocolLib)
  • Chat Messages: Capture percentage updates

Capture Speed:

  • 1 player: Normal speed (180 seconds default)
  • 2 players (same team): 1.5x speed
  • 3 players (same team): 2x speed
  • Mixed teams: Contested (no progress)

Y-Level Validation:

  • Players must be above minimum Y level
  • Prevents underground camping
  • Set with /koth config <name> min-y-level <Y>

# WorldGuard Integration

# Block Decay in KOTH

When WorldGuard is installed, blocks can decay in KOTH zones.

Setup:

  1. Create WorldGuard region for KOTH area
  2. Enable decay:
/rg flag <region> block-decay allow
/rg flag <region> decay-time 300

How It Works:

  • Blocks gradually show crack animations
  • After decay-time seconds, blocks break and drop
  • Creates dynamic battlefields
  • Prevents camping in structures

Decay Settings:

  • block-decay: allow or deny
  • decay-time: Seconds until block breaks (60-3600)

Visual Effects:

  • 10 crack stages (0-9)
  • Requires ProtocolLib for animations
  • Client-side only (reversible)

# Example KOTH + Decay

1. /koth create Arena
2. //expand vert              (WorldEdit)
3. //expand 10                (WorldEdit)
4. /rg define ArenaRegion     (WorldGuard)
5. /rg flag ArenaRegion block-decay allow
6. /rg flag ArenaRegion decay-time 180
7. /koth start Arena

Now blocks in the arena will decay during the KOTH event!

# Zone Linking

Create strategic capture chains where zones must be captured in order.

# Link Zones

/zonelink create <zone1> <zone2>

Example:

/zonelink create OuterWall InnerKeep

Result: "OuterWall" must be captured before "InnerKeep" can be captured.

# View Links

/zonelink list
/zonelink list OuterWall

# Remove Link

/zonelink remove <zone1> <zone2>

Use Cases:

  • Progressive capture events
  • Strategic territory control
  • Tiered difficulty (easy → hard zones)
  • Story-driven KOTH events

# Configuration

# Main Configuration File

Location: plugins/eventcontroller/config.yml

# EventController Configuration
version: 1.0

# Module toggles
modules:
  teams: true
  koth: true
  pedestals: true
  custom-recipes: true
  events: true
  block-decay: true

# Team settings
teams:
  max-members: 10
  allow-friendly-fire: false
  
# KOTH settings
koth:
  capture-time: 180  # seconds
  particle-interval: 20  # ticks
  
# Recipe settings
recipes:
  broadcast-crafts: true
  
# Pedestal settings
pedestals:
  max-per-player: 5

# Data Files

All persistent data is stored in YAML format:

  • teams.yml - Team data and memberships
  • koth_data.yml - KOTH zone configurations
  • pedestals.yml - Pedestal locations and recipes
  • custom-recipes.yml - Custom crafting recipes
  • events.yml - Event configurations

# Custom Recipes System

The Custom Recipes system allows server administrators to create unique crafting recipes with advanced features like craft limits, per-player limits, and broadcast controls.

# Features

  • Crafting Table Recipes: Both shaped and shapeless
  • Furnace Recipes: Custom smelting recipes
  • Craft Limits: Global and per-player craft restrictions
  • Broadcast System: Optional server-wide announcements
  • Color Codes: Full Minecraft color code support (&a, &l, etc.)
  • Multi-word Names: Recipe names can contain spaces
  • GUI Management: User-friendly interfaces for creation and browsing

# Creating Recipes

# Using the GUI (Recommended)

  1. Run /recipes create (requires eventcontroller.recipes.admin)
  2. Follow the interactive GUI:
    • Recipe Name: Type a name with optional color codes (e.g., &l&6Golden Apple)
    • Recipe Type: Choose Crafting Table or Furnace
    • Pattern Type: Select Shaped or Shapeless (crafting only)
    • Ingredients: Place items in the crafting grid
    • Result Item: Set the output item
    • Craft Limit: Set global limit (0 for infinite)
    • Per-Player Limit: Set individual player limit
    • Broadcast Toggle: Enable/disable craft announcements

# Recipe Settings Explained

# Global Craft Limit
  • Default: 100 crafts
  • 0 = Infinite: Recipe can be crafted unlimited times
  • Example: Setting to 50 means the recipe can only be crafted 50 times total across all players
# Per-Player Limit
  • Default: Disabled (-1 or 0)
  • When Active: Overrides global limit
  • Example: Setting to 2 means each player can craft the recipe 2 times
  • Note: When per-player limit is set, global limit is ignored
# Broadcast Toggle
  • Enabled: Server-wide message when crafted
  • Disabled: Private message to crafter with progress counter
  • Format:
    • Enabled: PlayerName crafted 4x Diamond Sword using recipe: Custom Sword
    • Disabled: Crafted: 4x Diamond Sword (1/2 crafted)

# Recipe Commands

# Browse Recipes

/recipes
/recipes browse
/recipes list

Opens a GUI showing all available recipes with their details.

# Get Recipe Information

/recipes info <recipe_name>

Displays detailed information about a specific recipe including:

  • Recipe type and pattern
  • Craft limits and current count
  • Remaining crafts
  • Broadcast status
  • Per-player limit settings
  • Ingredients and result

Example:

/recipes info &lGolden Apple

# Create Recipe

/recipes create

Opens the recipe creation GUI (admin only).

# Delete Recipe

/recipes delete <recipe_name>

Permanently removes a recipe from the system.

Example:

/recipes delete &lGolden Apple

# Reset Craft Counts

/recipes reset <recipe_name|all>

Resets the craft counter for a specific recipe or all recipes.

Examples:

/recipes reset &lGolden Apple
/recipes reset all

# Toggle Broadcast

/recipes broadcast <recipe_name> <true|false>

Enable or disable server-wide broadcast for a recipe.

Example:

/recipes broadcast &lGolden Apple false

# Set Per-Player Limit

/recipes playerlimit <recipe_name> <limit>

Set the per-player craft limit for a recipe.

Examples:

/recipes playerlimit &lGolden Apple 2
/recipes playerlimit Diamond Sword 5
/recipes playerlimit Special Item -1  # Disable per-player limit

# Reload Recipes

/recipes reload

Reloads all recipes from the configuration file.

# Recipe Examples

# Example 1: Limited Event Item

Create a special item that can only be crafted 100 times total:

  1. /recipes create
  2. Name: &6&lEvent Trophy
  3. Type: Crafting Table
  4. Pattern: Shaped
  5. Ingredients: Gold blocks in specific pattern
  6. Result: 1x Diamond named "Event Trophy"
  7. Craft Limit: 100
  8. Per-Player Limit: Disabled
  9. Broadcast: Enabled

# Example 2: Daily Craft for Players

Create an item each player can craft twice per day (manual reset):

  1. /recipes create
  2. Name: &aDaily Reward
  3. Type: Crafting Table
  4. Craft Limit: 0 (infinite global)
  5. Per-Player Limit: 2
  6. Broadcast: Disabled

# Example 3: Custom Furnace Recipe

Create a custom smelting recipe:

  1. /recipes create
  2. Name: Refined Ore
  3. Type: Furnace
  4. Input: Iron Ingot
  5. Result: 1x Diamond
  6. Craft Limit: 0
  7. Broadcast: Enabled

# Color Codes in Recipe Names

EventController supports all Minecraft color and formatting codes:

# Color Codes

  • &0 - Black
  • &1 - Dark Blue
  • &2 - Dark Green
  • &3 - Dark Aqua
  • &4 - Dark Red
  • &5 - Dark Purple
  • &6 - Gold
  • &7 - Gray
  • &8 - Dark Gray
  • &9 - Blue
  • &a - Green
  • &b - Aqua
  • &c - Red
  • &d - Light Purple
  • &e - Yellow
  • &f - White

# Formatting Codes

  • &l - Bold
  • &m - Strikethrough
  • &n - Underline
  • &o - Italic
  • &k - Obfuscated
  • &r - Reset

Example Usage:

/recipes create
Name: &l&6Golden &4Legendary &fSword

This creates a recipe named: Golden Legendary Sword (all bold)

# Recipe Data Storage

Recipes are stored in plugins/eventcontroller/custom-recipes.yml:

recipes:
  golden_legendary_sword:
    name: '§l§6Golden §4Legendary §fSword'
    type: CRAFTING_TABLE
    shaped: true
    craft-limit: 100
    craft-count: 23
    broadcast-enabled: true
    per-player-limit: 2
    result:
      ==: org.bukkit.inventory.ItemStack
      type: DIAMOND_SWORD
      amount: 1
    ingredients:
      '0':
        ==: org.bukkit.inventory.ItemStack
        type: GOLD_BLOCK
      '4':
        ==: org.bukkit.inventory.ItemStack
        type: DIAMOND
    player-craft-counts:
      550e8400-e29b-41d4-a716-446655440000: 1
      6ba7b810-9dad-11d1-80b4-00c04fd430c8: 2

# Team Management

The Team Management system integrates with LuckPerms to provide chat colors, prefixes, and team organization.

# Features

  • LuckPerms integration for chat colors
  • Team-based organization
  • Configurable team colors
  • Member management
  • Team prefixes

# Team Commands

# Create Team

/team create <name> <color>

Creates a new team with the specified name and color.

Colors Available: RED, BLUE, GREEN, YELLOW, AQUA, LIGHT_PURPLE, GOLD, WHITE, GRAY

Example:

/team create Warriors RED

# Invite Player

/team invite <player>

Invites a player to your team.

# Accept Invitation

/team accept <team>

Accepts a team invitation.

# Leave Team

/team leave

Leaves your current team.

# Team Info

/team info [team]

Displays information about your team or a specified team.

# List Teams

/team list

Shows all teams on the server.

# Chat Integration

Team colors automatically apply to player names in chat through LuckPerms:

  • Team color is set as LuckPerms prefix
  • Players see colored names based on team
  • Supports multiple chat plugins

# KOTH (King of the Hill)

King of the Hill zones are capturable areas where players compete for control.

# Features

  • Multiple KOTH zones
  • Capture progress tracking
  • Visual progress bars using display entities
  • Y-level validation (prevents underground captures)
  • Configurable capture times
  • Block decay system (with WorldGuard)
  • Progressive crack animations (with ProtocolLib)

# KOTH Commands

# Create Zone

/koth create <name>

Creates a new KOTH zone at your current location. Use WorldEdit selection for zone boundaries.

# Delete Zone

/koth delete <name>

Removes a KOTH zone.

# Start KOTH

/koth start <name>

Starts a KOTH event for the specified zone.

# Stop KOTH

/koth stop <name>

Stops an active KOTH event.

# Zone Info

/koth info <name>

Displays information about a KOTH zone.

# List Zones

/koth list

Shows all configured KOTH zones.

# KOTH Mechanics

# Capture System

  1. Players must stand within the KOTH zone boundaries
  2. Players must be above the zone's minimum Y-level (prevents underground capturing)
  3. Progress bar displays capture percentage
  4. Multiple players from same team can speed up capture
  5. Opposing team members contest the capture

# Visual Feedback

  • Progress Bar: Display entity above center point showing capture progress
  • Particle Effects: Minimal particles at zone boundaries (if enabled)
  • Block Cracks: Progressive cracking animation on decaying blocks (requires ProtocolLib)

# Block Decay System

When integrated with WorldGuard, blocks can automatically decay in KOTH zones.

# Setup

  1. Install WorldGuard on your server
  2. Enable the block-decay module in config.yml
  3. Set WorldGuard flags on your region:
/rg flag <region> block-decay allow
/rg flag <region> decay-time 300

# How It Works

  • Checks every 2 ticks (0.1 seconds) for decaying blocks
  • Blocks decay based on decay-time flag (in seconds)
  • Shows progressive crack animations (0-9 damage stages)
  • Blocks break and drop when fully decayed
  • Isolated initialization prevents WorldGuard conflicts

# Pedestal System

Interactive pedestals allow players to create custom crafting stations anywhere in the world.

# Features

  • Player-placed crafting stations
  • Custom recipe support
  • Display entity showing current recipe
  • Chat-based recipe configuration
  • Per-player and global craft limits
  • Interactive GUI for crafting

# Pedestal Commands

# Place Pedestal

/pedestal create

Creates a pedestal at your current location.

# Remove Pedestal

/pedestal remove

Removes the pedestal you're looking at.

# Set Recipe

/pedestal recipe <recipe_name>

Assigns a custom recipe to the pedestal.

# Pedestal Info

/pedestal info

Shows information about the pedestal you're looking at.

# Using Pedestals

  1. Right-click a pedestal to open its GUI
  2. Place required ingredients
  3. Click the result to craft
  4. Items are consumed from the pedestal inventory
  5. Result appears in your inventory

# Event Management

The Event Management system provides tools for running server-wide events.

# Event Commands

# Create Event

/event create <name>

Creates a new event configuration.

# Start Event

/event start <name>

Starts a configured event.

# Stop Event

/event stop <name>

Stops an active event.

# Event Info

/event info <name>

Displays event details.

# List Events

/event list

Shows all configured events.


# Permissions

# Custom Recipes Permissions

Permission Description Default
eventcontroller.recipes.list Browse recipes true
eventcontroller.recipes.view View recipe info true
eventcontroller.recipes.make Create recipes op
eventcontroller.recipes.remove Delete recipes op
eventcontroller.recipes.admin Full recipe management op
eventcontroller.recipes.help View help true

# Team Permissions

Permission Description Default
eventcontroller.team.create Create teams op
eventcontroller.team.invite Invite players true
eventcontroller.team.accept Accept invitations true
eventcontroller.team.leave Leave team true
eventcontroller.team.info View team info true
eventcontroller.team.list List teams true
eventcontroller.team.admin Full team management op

# KOTH Permissions

Permission Description Default
eventcontroller.koth.create Create zones op
eventcontroller.koth.delete Delete zones op
eventcontroller.koth.start Start events op
eventcontroller.koth.stop Stop events op
eventcontroller.koth.info View zone info true
eventcontroller.koth.list List zones true
eventcontroller.koth.admin Full KOTH management op

# Pedestal Permissions

Permission Description Default
eventcontroller.pedestal.create Place pedestals true
eventcontroller.pedestal.remove Remove pedestals true
eventcontroller.pedestal.use Use pedestals true
eventcontroller.pedestal.recipe Set recipes op
eventcontroller.pedestal.admin Full pedestal management op

# Event Permissions

Permission Description Default
eventcontroller.event.create Create events op
eventcontroller.event.start Start events op
eventcontroller.event.stop Stop events op
eventcontroller.event.info View event info true
eventcontroller.event.join Join events true
eventcontroller.event.admin Full event management op

# Commands Reference

# Quick Reference

# Custom Recipes

/recipes                                    # Browse recipes
/recipes info <name>                        # Recipe details
/recipes create                            # Create recipe (GUI)
/recipes delete <name>                     # Delete recipe
/recipes reset <name|all>                  # Reset craft counts
/recipes broadcast <name> <true|false>     # Toggle broadcast
/recipes playerlimit <name> <limit>        # Set player limit
/recipes reload                            # Reload recipes
/recipes help                              # Show help

# Teams

/team create <name> <color>                # Create team
/team invite <player>                      # Invite player
/team accept <team>                        # Accept invite
/team leave                                # Leave team
/team info [team]                          # Team info
/team list                                 # List teams
/team disband                              # Disband team (leader)

# KOTH

/koth create <name>                        # Create zone
/koth delete <name>                        # Delete zone
/koth start <name>                         # Start event
/koth stop <name>                          # Stop event
/koth info <name>                          # Zone info
/koth list                                 # List zones
/koth teleport <name>                      # Teleport to zone

# Pedestals

/pedestal create                           # Place pedestal
/pedestal remove                           # Remove pedestal
/pedestal recipe <name>                    # Set recipe
/pedestal info                             # Pedestal info
/pedestal list                             # List pedestals

# Events

/event create <name>                       # Create event
/event start <name>                        # Start event
/event stop <name>                         # Stop event
/event info <name>                         # Event info
/event list                                # List events
/event join <name>                         # Join event
/event leave                               # Leave event

# Advanced Features

# WorldGuard Integration

# Custom Flags

EventController registers custom WorldGuard flags:

  • block-decay (StateFlag): Enable/disable block decay in region

    • Values: allow, deny
    • Default: deny
  • decay-time (IntegerFlag): Time in seconds for blocks to decay

    • Values: Any positive integer
    • Default: 300 (5 minutes)

# Setting Flags

/rg flag <region> block-decay allow
/rg flag <region> decay-time 180

# Flag Initialization

Flags are registered during the onEnable() phase with delayed manager initialization (40 ticks) to ensure WorldGuard is fully loaded.

# ProtocolLib Integration

# Block Crack Animations

When ProtocolLib is installed, decaying blocks show progressive crack animations:

  • 10 damage stages (0-9)
  • Smooth visual progression
  • Player-specific packets
  • No actual block damage until decay complete

# Implementation

// Sent via ProtocolLib packets
PacketType.Play.Server.BLOCK_BREAK_ANIMATION

# PlaceholderAPI Integration

EventController provides placeholders for other plugins:

# Team Placeholders

%eventcontroller_team%              # Player's team name
%eventcontroller_team_color%        # Team color
%eventcontroller_team_members%      # Member count

# Recipe Placeholders

%eventcontroller_recipes_total%     # Total recipes
%eventcontroller_recipe_<name>%     # Specific recipe info

# KOTH Placeholders

%eventcontroller_koth_active%       # Active KOTH count
%eventcontroller_koth_capturing%    # Player's capture progress

# Async Data Operations

All data persistence operations use CompletableFuture<T> for async processing:

  • File I/O happens off the main thread
  • Periodic auto-save every 5 minutes
  • Thread-safe concurrent collections
  • Graceful error handling

# Performance Optimizations

  • Minimal Particles: Reduced visual effects to prevent lag
  • Efficient Scheduling: Optimized task intervals
  • Cached Data: In-memory caching with lazy loading
  • Batch Operations: Grouped database writes

# Troubleshooting

# Common Issues

# Recipes Not Working

Problem: Custom recipes don't appear in crafting table

Solutions:

  1. Check if custom-recipes module is enabled in config.yml
  2. Verify recipe has remaining crafts
  3. Check per-player limit hasn't been reached
  4. Reload recipes: /recipes reload

# Color Codes Not Displaying

Problem: Recipe names show &l instead of bold

Solutions:

  1. Ensure you're using & not § when creating recipes
  2. Recreate the recipe if it was created before color code update
  3. The plugin automatically translates & codes to § codes

# KOTH Not Capturing

Problem: Standing in KOTH zone doesn't trigger capture

Solutions:

  1. Verify you're above the minimum Y-level
  2. Check if KOTH event is started: /koth start <name>
  3. Ensure you're within the zone boundaries
  4. Check permissions: eventcontroller.koth.join

# Block Decay Not Working

Problem: Blocks don't decay in KOTH zones

Solutions:

  1. Verify WorldGuard is installed and running
  2. Check region flags: /rg info <region>
  3. Set decay flags: /rg flag <region> block-decay allow
  4. Verify block-decay module is enabled
  5. Check server logs for WorldGuard integration errors

# Team Colors Not Showing

Problem: Team colors don't appear in chat

Solutions:

  1. Verify LuckPerms is installed
  2. Check LuckPerms permissions are synced
  3. Reload LuckPerms: /lp reload
  4. Verify chat plugin compatibility

# Developer Information

# API Usage

EventController provides a developer API for other plugins:

// Get plugin instance
Eventcontroller plugin = (Eventcontroller) Bukkit.getPluginManager().getPlugin("EventController");

// Access managers
CustomRecipeManager recipes = plugin.getRecipeManager();
TeamManager teams = plugin.getTeamManager();
KOTHManager koth = plugin.getKothManager();

// Use API methods
CustomRecipe recipe = recipes.getRecipeByName("&lGolden Apple");
Team team = teams.getTeam("Warriors");

# Events API

Listen to EventController events:

@EventHandler
public void onRecipeCraft(CustomRecipeCraftEvent event) {
    Player player = event.getPlayer();
    CustomRecipe recipe = event.getRecipe();
    // Your code here
}

# Building from Source

git clone https://github.com/YourRepo/EventController.git
cd EventController
mvn clean package

Output: target/eventcontroller-1.0.jar


# Support & Contributing

# Getting Help

  • Issues: Report bugs on GitHub Issues
  • Discord: Join our Discord server
  • Documentation: Check this documentation first

# Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

# License

EventController is licensed under [Your License Here]


# Changelog

# Version 1.0.0

  • Initial release
  • Custom recipes system with GUI
  • Team management with LuckPerms integration
  • KOTH zones with WorldGuard integration
  • Pedestal crafting system
  • Event management framework
  • Block decay system with ProtocolLib animations
  • Per-player craft limits
  • Color code support in recipe names
  • Multi-word recipe name support

# Credits

Developer: [Your Name/Team]
Contributors: [List contributors]
Dependencies: Paper, LuckPerms, WorldGuard, ProtocolLib, PlaceholderAPI


Last Updated: November 3, 2025
Plugin Version: 1.0.0
Minecraft Version: 1.21.3+