#
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.
Two-Part Documentation
For easier navigation, this documentation is split into two files:
📘 Part 1 (This File):
- Installation & Setup
- Complete Commands Reference (all commands in tables)
- Event Management System (full guide)
- Team Management (full guide)
- KOTH System (full guide)
- Configuration overview
📗 Part 2 - Detailed Feature Guides:
- Custom Recipes System (recipe creation, limits, color codes, examples)
- Civilization System (organization, teams, GUI)
- Tracker & Navigation (waypoints, directional guidance)
- Item & Enchant Limits (balancing, restrictions)
- Block Decay System (WorldGuard integration, timing)
- Pedestal System (interactive crafting stations)
- Permissions Reference (complete permission list)
- Advanced Features (WorldGuard, ProtocolLib, LuckPerms, PlaceholderAPI)
- Troubleshooting (common issues and solutions)
Choose the file based on what you need!
Quick Navigation
This documentation covers every feature and command in the plugin. Use the table of contents to jump to specific sections.
#
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
- Download the latest
eventcontroller.jarfrom releases - Install Dependencies: Ensure LuckPerms is installed in your
plugins/folder - Place JAR: Put
eventcontroller.jarin your server'splugins/folder - Start Server: Start or restart your server
- Verify: Check console for "EventController has been enabled!"
- Configure: Edit
plugins/eventcontroller/config.ymlto enable/disable modules
Important
EventController requires LuckPerms to function. Team features will not work without it.
#
Quick Start Guide
#
For Event Hosts
- Enable Modules: Edit
config.ymlto enable features you need - Reload Config:
/eventreloadto apply changes - Create Teams:
/team create [count]to create teams - Assign Players: Use
/civ teams autofor automatic assignment - Start Event:
/event start [type]
#
For Recipe Creators
- Open Creator:
/recipes create - Follow GUI: Set name, ingredients, limits
- Test Recipe: Try crafting in-game
- Adjust Limits:
/recipes playerlimit <name> <limit>
#
For Server Admins
- Check Status:
/configstatusto view all modules - Configure:
/eventconfigfor in-game configuration - Reload:
/eventreloadafter manual config edits - Monitor:
/event statusto check active events
#
Core Features
#
Module System
EventController uses a modular architecture where each feature can be independently enabled or disabled in 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
# 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/:
Backup Recommendation
Back up all .yml files before major server updates or plugin changes.
#
All Commands Reference
#
Complete Command List
Here's every command in EventController with full syntax and descriptions:
#
Event Management Commands
#
Pedestal Sub-commands
#
Cornucopia Sub-commands
#
Preset Sub-commands
#
Team Management Commands
Team Modes
- Simple Mode:
/team create 4creates "Team 1", "Team 2", "Team 3", "Team 4" - Named Mode:
/team create Warriors REDcreates team named "Warriors" with red color
#
KOTH Commands
#
Custom Recipe Commands
Multi-Word & Color Codes
Recipe names support spaces and color codes!
Example: /recipes delete &l&6Golden &4Legendary &fSword
#
Civilization Commands
#
Tracker Commands
Navigation Feature
The /track command provides real-time directional guidance with distance indicators!
Example: → 253 blocks East or ↑ 45 blocks Up, ← 128 blocks West
#
Item Limit Commands
Alias: /ilimit
Item Limit Behavior
When a player exceeds the item limit:
- Pickup: Extra items drop on ground
- Craft: Extra items drop on ground
- GUI Move: Transaction cancelled with warning
#
Enchantment Limit Commands
Alias: /enchantlimit
Enchant Limit Behavior
When an enchantment exceeds the limit:
- Enchanting Table: Max level enforced
- Anvil: Excess levels reduced
- Loot/Trade: Excess levels downgraded
- Player Warning: Notified of downgrade
#
Zone Linking Commands
Zone Link Mechanic
Linked zones create capture chains:
- Zone A must be captured before Zone B can be captured
- Creates strategic progression in KOTH events
- Prevents simultaneous multi-zone captures
#
Block Decay Commands
#
Configuration Commands
Quick Reload
After editing config.yml manually, always run /eventreload to apply changes!
#
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
Explosion Safety
Explosions do NOT damage blocks by default. Use for dramatic effect only.
#
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
- Define the area (two corners):
/event cornucopia set1
/event cornucopia set2
This saves the two opposite corners and creates the Cornucopia region.
- Inspect the cornucopia:
/event cornucopia info
Shows coordinates, configured countdown, and current status.
- 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)
- Release players early or manually manage freeze:
/event cornfreeze # Immediately freeze players (cornucopia-style)
/event cornunfreeze # Release frozen players
- 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 cornfreezeand/event cornunfreezefor 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 colorname: Rename teammax-members: Set player limitfriendly-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
Warning
Removing a team kicks all members! They'll need to rejoin another team.
#
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:
- Player joins "Team 1" (RED)
- Plugin sets LuckPerms prefix:
&c[Team 1] - Player's chat name becomes red
- 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 requirementprogress-height: Display entity heightparticles: 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:
- Zone becomes active
- Progress bar appears at center
- Players can begin capturing
- Capture progress tracked per team
- 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.
Deletion Warning
Deleted zones cannot be recovered! Use /koth stop instead if you want to reuse the 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:
- Create WorldGuard region for KOTH area
- Enable decay:
/rg flag <region> block-decay allow
/rg flag <region> decay-time 300
How It Works:
- Blocks gradually show crack animations
- After
decay-timeseconds, blocks break and drop - Creates dynamic battlefields
- Prevents camping in structures
Decay Settings:
block-decay:allowordenydecay-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 membershipskoth_data.yml- KOTH zone configurationspedestals.yml- Pedestal locations and recipescustom-recipes.yml- Custom crafting recipesevents.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)
- Run
/recipes create(requireseventcontroller.recipes.admin) - 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 Name: Type a name with optional color codes (e.g.,
#
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)
- Enabled:
#
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:
/recipes create- Name:
&6&lEvent Trophy - Type: Crafting Table
- Pattern: Shaped
- Ingredients: Gold blocks in specific pattern
- Result: 1x Diamond named "Event Trophy"
- Craft Limit: 100
- Per-Player Limit: Disabled
- Broadcast: Enabled
#
Example 2: Daily Craft for Players
Create an item each player can craft twice per day (manual reset):
/recipes create- Name:
&aDaily Reward - Type: Crafting Table
- Craft Limit: 0 (infinite global)
- Per-Player Limit: 2
- Broadcast: Disabled
#
Example 3: Custom Furnace Recipe
Create a custom smelting recipe:
/recipes create- Name:
Refined Ore - Type: Furnace
- Input: Iron Ingot
- Result: 1x Diamond
- Craft Limit: 0
- 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
- Players must stand within the KOTH zone boundaries
- Players must be above the zone's minimum Y-level (prevents underground capturing)
- Progress bar displays capture percentage
- Multiple players from same team can speed up capture
- 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
- Install WorldGuard on your server
- Enable the block-decay module in config.yml
- 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-timeflag (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
- Right-click a pedestal to open its GUI
- Place required ingredients
- Click the result to craft
- Items are consumed from the pedestal inventory
- 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
#
Team Permissions
#
KOTH Permissions
#
Pedestal Permissions
#
Event Permissions
#
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
- Values:
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:
- Check if custom-recipes module is enabled in config.yml
- Verify recipe has remaining crafts
- Check per-player limit hasn't been reached
- Reload recipes:
/recipes reload
#
Color Codes Not Displaying
Problem: Recipe names show &l instead of bold
Solutions:
- Ensure you're using
¤when creating recipes - Recreate the recipe if it was created before color code update
- The plugin automatically translates
&codes to§codes
#
KOTH Not Capturing
Problem: Standing in KOTH zone doesn't trigger capture
Solutions:
- Verify you're above the minimum Y-level
- Check if KOTH event is started:
/koth start <name> - Ensure you're within the zone boundaries
- Check permissions:
eventcontroller.koth.join
#
Block Decay Not Working
Problem: Blocks don't decay in KOTH zones
Solutions:
- Verify WorldGuard is installed and running
- Check region flags:
/rg info <region> - Set decay flags:
/rg flag <region> block-decay allow - Verify block-decay module is enabled
- Check server logs for WorldGuard integration errors
#
Team Colors Not Showing
Problem: Team colors don't appear in chat
Solutions:
- Verify LuckPerms is installed
- Check LuckPerms permissions are synced
- Reload LuckPerms:
/lp reload - 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
- Fork the repository
- Create a feature branch
- Make your changes
- 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+