SkycadiaRooms
Run 1v1 and 2v2 PvP duels! This lightweight plugin seals a room shut the moment enough players walk in and opens it back up once the fight's decided. No more manually starting duels or babysitting arenas with clunky plugins.
Features
- Automatic system — any player who walks into a saved room is tracked, and the room seals shut on its own once enough are inside for a 1v1 or 2v2
- Configurable seal block — glass by default, but set any block you want via the config
- Countdown warning — sends an action bar timer to surviving players before a room reopens after a kill. walking out or disconnecting opens the room immediately
- Overflow protection — extra players who crowd into a full room get pushed back out automatically
- Breach protection — if a sealed room somehow gets an extra player inside, the match is cancelled instantly instead of continuing with an uncounted player
- Fully configurable — health/hunger reset, fire clear, keep-inventory-on-death, seal block, entry sensitivity, countdown length, and push strength are all editable live with /reload
Commands
| Command | Description | Permission |
|---|---|---|
| /skycadiarooms wand | Get the selection wand | skycadiarooms.admin |
| /skycadiarooms create <name> <1v1|2v2> | Save your current selection as a room | skycadiarooms.admin |
| /skycadiarooms delete <name> | Delete a room | skycadiarooms.admin |
| /skycadiarooms list | List all rooms | skycadiarooms.admin |
| /skycadiarooms info <name> | View a room's details and status | skycadiarooms.admin |
| /skycadiarooms reload | Reload the config manually | skycadiarooms.admin |
Aliases: /scr, /scroom
Dependencies
None required — runs standalone on Paper 1.20+Get license key at discord.
Support
Found a bug or have a feature request? Drop a comment, happy to help with setup or customization, or join the discord.
Code:
# SkycadiaRooms configuration
# Edit this file, then run /skycadiarooms reload to apply changes.
# Paste the license key you were given here.
license:
key: ""
settings:
# How many blocks a player must walk in the room. Set to 0 to seal as soon as they cross the boundary at all.
entry-depth: 1
#Set to 0 to open immediately with no countdown.
open-countdown-seconds: 15
# How hard extra players get shoved back out when a room is over capacity
push-horizontal-strength: 0.9
push-vertical-strength: 0.4
# Fully heal + refill hunger when a match starts
reset-health-on-start: false
# Fully heal + refill hunger for survivors when a match ends
reset-health-on-end: false
# Extinguish players when a match starts
clear-fire-on-start: false
# Prevent items from dropping when a player dies inside a room
keep-inventory-on-death: false
# Block type used to seal a room shut. Any valid Bukkit Material name for a block works
cage-block: GLASS
messages:
no-permission: "&cYou don't have permission to do that."
players-only: "&cOnly players can use this."
# {location} = x, y, z
wand-given: "&aHere's your selection wand. Left-click for pos1, right-click for pos2."
pos1-set: "&aPosition 1 set: {location}"
pos2-set: "&aPosition 2 set: {location}"
create-usage: "&cUsage: /skycadiarooms create <name> <1v1|2v2>"
create-invalid-mode: "&cMode must be 1v1 or 2v2."
create-need-selection: "&cSelect both positions with the wand first."
create-different-worlds: "&cBoth positions must be in the same world."
# {room} {mode}
create-name-taken: "&cA room named '{room}' already exists."
create-success: "&aRoom '{room}' created as a {mode} room! It activates automatically when players walk in."
delete-usage: "&cUsage: /skycadiarooms delete <name>"
delete-success: "&aRoom deleted."
# {room}
delete-not-found: "&cNo room named '{room}' found."
list-empty: "&eNo rooms have been created yet."
# {rooms}
list-header: "&6Rooms: &f{rooms}"
info-usage: "&cUsage: /skycadiarooms info <name>"
# {room}
info-not-found: "&cNo room named '{room}' found."
info-header: "&6Room: {room}"
info-world: "&7World: {world}"
info-corner1: "&7Corner 1: {coords}"
info-corner2: "&7Corner 2: {coords}"
info-mode: "&7Mode: {mode}"
info-status-free: "&aFree"
info-status-busy: "&cIn use"
info-status: "&7Status: {status}"
# {room} {current} {needed} {mode}
room-entered-waiting: "&eEntered. Waiting on more players...({current}/{needed})"
# {room} {mode}
room-sealed: "&6The room has sealed shut! {mode} fight begins now."
room-left-fight: "&7You left the room and are out of the fight."
# {room}
room-left-waiting: "&eYou left before the match started."
# {room} {dead} {total}
room-opened: "&6The room has opened! {dead}/{total} players are out - match over."
