API Reference

Java plugin API for ArenaLite integration and extension

Initialization

Get the ArenaLite singleton instance to access all managers:

ArenaLite plugin = ArenaLite.getInstance();

ArenaManager

Manage arenas, regions, and spawn locations

ArenaManager arenaManager = plugin.getArenaManager();

Arena arena = arenaManager.getArena("desert");
Set<String> names = arenaManager.getArenaNames();

if (arena != null && arena.isInRegion(player.getLocation())) {
    // Player is inside the arena region
}

Key Methods:

  • getArena(String) / getArenaNames()
  • loadArenas() / saveArenas()
  • Arena: getPos1(), getPos2(), isInRegion(Location)
  • Arena: getSpawn(), isRegenEnabled(), setBuildEnabled(boolean)

KitManager

Handle kit creation, application, and previews

KitManager kitManager = plugin.getKitManager();

Kit kit = kitManager.getKit("diamond");
Set<String> kits = kitManager.getKitNames();

if (kit != null) {
    kitManager.applyKit(player, kit);
}

Key Methods:

  • createKit(String) / deleteKit(String)
  • populateKitFromPlayer(Kit, Player)
  • applyKit(Player, Kit)
  • openPreview(Player, Kit) - honours configuration flags

StatsManager

Track player statistics and arena performance

StatsManager stats = plugin.getStatsManager();

PlayerData data = stats.getPlayerData(player);
data.addKill();
stats.savePlayerData(data);  // async

Key Methods:

  • getPlayerData(Player)
  • savePlayerData(PlayerData) - async via CompletableFuture
  • PlayerData: current arena context, kills, deaths, streak

RegenManager

Handle safe arena regeneration with player protection

RegenManager regen = plugin.getRegenManager();

// Trigger safe regeneration (teleports players, locks movement)
regen.regenArena(arena);

// Check if player is frozen during regen
boolean frozen = regen.isFrozen(player);

Key Methods:

  • regenArena(Arena) - safe regeneration with player protection
  • isFrozen(Player) - check freeze state during regen
  • Block restoration throttled via regen.blocks-per-tick

Hooks

Optional integrations with other plugins

FAWEHook fawe = plugin.getFAWEHook();
if (fawe != null && fawe.isAvailable()) {
    // Use FAWE for faster regeneration
    fawe.regenArena(arena);
} else {
    // Fallback to built-in snapshot regen
    plugin.getRegenManager().regenArena(arena);
}

Key Methods:

  • getFAWEHook() - optional FastAsyncWorldEdit integration
  • getPlaceholderAPIHook() - PlaceholderAPI placeholders
  • getVaultHook() - Vault economy integration
  • Always null-check hooks before use

Storage Layer

Abstracted player data storage with multiple backends

PlayerDataStorage storage = plugin.getPlayerDataStorage();
// storage.reload() will re-read configuration settings

// Supports YAML (default) and MYSQL
// Configure in config.yml:
// storage:
//   type: YAML|MYSQL
//   mysql: ...

Key Methods:

  • PlayerDataStorage - abstracted storage interface
  • Supports YAML and MYSQL backends
  • storage.reload() - re-read configuration

Reload Semantics

ArenaLite#reload() reloads configuration, arenas, kits, and propagates changes to the storage layer. If you hook into ArenaLite, listen for configuration changes by re-querying the managers after reload.

plugin.reload(); // Reloads configuration, arenas, kits, and storage

Integration Notes

  • Kits store slot-perfect copies of player storage contents including armor and off-hand items
  • Built-in snapshot regeneration works without FAWE, but FAWE improves performance on large regions
  • Player data saving is performed asynchronously to avoid blocking the main thread
  • Always check if optional hooks are available before using them