For the complete documentation index, see llms.txt. This page is also available as Markdown.

๐Ÿ–ฅ๏ธFor Developers

The api module exposes stable, public interfaces for integrating with Modern BedWars โ€” matches, parties, cosmetics and the Redis key catalogue. These are the same types shared across every module.

Match

Match<T extends MatchType> describes a single game. Statuses flow WAITING โ†’ STARTING โ†’ PLAYING โ†’ RESTARTING; the first two are matchmaking phases.

public interface Match<T extends MatchType> {
    @Nullable UUID hostUUID();
    int teamSize();
    int totalCount();
    boolean canCarry(int weight);
    T type();
    String name();
    void status(MatchStatus status);
    MatchStatus status();
    String map();
    int maxPlayers();
    String server();
    Date created();
    void closed(boolean closed);
    boolean closed();
}

MatchType abstracts the game mode (Solo, Duo, Trio, Squad):

Party

Parties are immutable value objects โ€” the with* methods return a new instance.

Integrating an external party plugin

PartyProvider is the read-only integration point for external party plugins (Party and Friends, Parties/AlessioDP, or your own). Set it via bootstrap.getPartyManager().setPartyProvider(provider). When set, the built-in Redis party system is bypassed for reads and the Velocity /party command is disabled automatically.

Use PartyProvider.noop() to disable the built-in party system entirely โ€” e.g. on the Velocity side when a Bukkit-side party plugin handles everything.

Cosmetics

A Cosmetic is a registered, unlockable effect in one of eight categories.

Categories (CosmeticCategory): ARROW_TRAIL, FIREBALL_TRAIL, VICTORY_DANCE, FINAL_KILL_EFFECT, KILL_MESSAGE, BED_BREAK_EFFECT, BED_BREAK_MESSAGE, WOOD_SKIN.

CosmeticManager registers cosmetics and manages per-player unlocks and active selections. Blocking operations return CompletableFutures; there are cached (synchronous) variants for hot paths:

Statistics

StatsType enumerates tracked stats and their PlaceholderAPI names:

Stat
Placeholder

BEDS_BROKEN

BED

KILLS

KILLS

FINAL_KILLS

FINALKILLS

DEATHS

DEATH

FINAL_DEATHS

FINALDEATHS

WINS

WINS

LOSSES

LOSSES

WIN_STREAK

WINSTREAK

MAX_WIN_STREAK

MAXWINSTREAK

TOTAL_KILLS

TOTALKILLS

Redis key catalogue

For diagnostics and low-level integration, RedisKeys centralises every key (%s are format arguments):

Key
Pattern
Holds

BEDWARS_MAPS

bedwars:maps

Broadcast map list

BEDWARS_PLAYER_LOAD

bedwars:player-load:%s

Per-server player load

DISGUISE_NAME

bedwars:disguise

Disguise names

DISGUISE_ACTIVE_NAMES

bedwars:active-disguise

Active disguises

PARTY

party:%s

Party hash (leader + fields)

PARTY_INVITE

party:invite:%s:%s

Party invite data

MATCH

bedwars:match:%s

Match hash

PLAYER_IN_MATCH

bedwars:player:%s

Player โ†’ match id

PLAYER_REJOIN

bedwars:rejoin:%s

Rejoin hash (TTL)

SERVER

bedwars:server:%s

Game-server heartbeat (short TTL)

All cross-server traffic is Redis pub/sub via the internal redis-bridge library โ€” there is no BungeeCord plugin-messaging channel.

Last updated