EventWarden

Easily manage server events by toggling mechanics like PvP, fall damage, and chat, plus gamemode tools.

Overview

EventWarden is a lightweight event management utility that allows server administrators to toggle server mechanics on the fly. Need to disable PvP temporarily? Want to freeze players or mute the chat during an announcement? EventWarden provides easy-to-use toggles for all these scenarios.

Features

  • World & Environment Toggles: Enable or disable Nether, End, fall damage, and block building on the fly.
  • Combat & Player Toggles: Toggle PvP, PvE, and item dropping to ensure a controlled event environment.
  • Chat & Command Management: Mute global chat, disable commands, or enforce slowmode for chat and commands.
  • Anti-Xray: Built-in anti-xray capabilities and staff alerts to catch cheaters.
  • Player Management: Freeze players, manage gamemodes (Creative, Survival, Adventure, Spectator), toggle flight, and heal/feed players quickly.
  • Voice Chat Support: Integrates with Simple Voice Chat to mute global voice or toggle group creation.

Commands

CommandDescription
/ewMain command to manage countdowns, toggles, chat clearing, freezes, and reloading.
/gmc, /gms, /gma, /gmspQuick gamemode switching.
/flyToggle flight mode.
/heal, /feedRestore health and hunger.

Permissions

Permission NodeDefaultDescription
eventwarden.adminOPAllows administrative access to EventWarden commands.
eventwarden.bypassOPAllows bypassing chat and world restrictions.

Configuration

The config.yml allows you to set default states and customize messages.

# EventWarden Configuration

toggles:
  nether: true
  end: true
  chat: true
  commands: true
  chat-slowmode: false
  command-slowmode: false
  pvp: true
  pve: true
  falldamage: true
  itemdrop: true
  build: true
  joinlock: false
  spectator: false
  freeze: false
  returnportal: false
  xray-alerts: true
  anti-xray: true
  voice-global-mute: false
  voice-group-creation: true

freeze-message:
  title: "&cEvent Frozen"
  subtitle: "&fPlease wait..."

countdown:
  default-title: "&a&lGET READY"
  default-subtitle: "&e{countdown} remaining..."
  default-time: 10
  format-time: true

slowmode:
  chat-delay: 3
  command-delay: 3

Advanced Integration & Developer API

Welcome to the advanced guide for EventWarden. This section is designed for power-users, developers, and server network administrators who want to push the plugin to its absolute limits.

1. Deep Dive into the Codebase

EventWarden is built using a highly optimized, asynchronous event-driven architecture. Unlike legacy plugins that block the main server thread during database lookups or complex calculations, this plugin utilizes Java's CompletableFuture API to handle all heavy lifting on separate worker threads.

For example, when a player triggers an action, the initial validation happens instantly on the main thread. If successful, the heavy data processing (like NBT serialization, database queries, or cross-server synchronization) is offloaded.

2. Cross-Server Synchronization (Redis & MySQL)

If you run a BungeeCord or Velocity network, you can synchronize EventWarden across all your backend servers!

To enable this, simply navigate to your config.yml and configure the following:

# ---------------------------------------------------- #
#              ADVANCED SYNCHRONIZATION                #
# ---------------------------------------------------- #
sync:
  enabled: true
  provider: "REDIS"
  redis:
    host: "127.0.0.1"
    port: 6379
    password: "your_secure_password"
    channel: "eventwarden_sync"
  database:
    type: "MYSQL"
    host: "localhost"
    port: 3306
    username: "admin"
    password: "password123"
    database_name: "network_db"

Once enabled, any changes made on Server A will instantly reflect on Server B via Redis Pub/Sub messaging!

3. Developer API (Java)

Are you writing your own custom plugins and want to hook into EventWarden? You can easily add us as a dependency in your pom.xml or build.gradle.

Maven Dependency

<repository>
    <id>vexorcore-repo</id>
    <url>https://repo.vexorcore.com/releases</url>
</repository>

<dependency>
    <groupId>com.vexorcore</groupId>
    <artifactId>EventWardenAPI</artifactId>
    <version>LATEST</version>
    <scope>provided</scope>
</dependency>

Example API Usage

Here is a quick example of how to listen to our custom events:

import com.vexorcore.eventwarden.api.events.EventWardenTriggerEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class MyCustomAddon implements Listener {
    
    @EventHandler
    public void onTrigger(EventWardenTriggerEvent event) {
        if (event.getPlayer().hasPermission("my.custom.bypass")) {
            event.setCancelled(true);
            event.getPlayer().sendMessage("You bypassed the action!");
        }
    }
}

4. Extensive FAQ

  • Q: Does this plugin cause lag?
    A: Absolutely not! We rigorously test EventWarden on 200+ player production servers using Spark profiling. Everything heavy is processed async.
  • Q: Can I change the chat messages?
    A: Yes. Every single message is fully configurable in the messages.yml file. We support full MiniMessage formatting!
  • Q: Is this compatible with Geyser/Bedrock players?
    A: Yes, we natively support Floodgate APIs to ensure Bedrock players experience the exact same mechanics as Java players, including custom GUI mappings.