Server systems
The systems that run on their own once enabled, and the settings that control them.
On this page
Alpha-system includes several server-wide systems that run on their own once enabled. This page explains what each one does and which settings control it. Every setting lives in config.yml unless noted.
Combat tag
Hitting another player, directly or with a projectile, tags both players for combat.tag-seconds (15 by default). While tagged, the common ways to escape a fight are closed.
combat:
enabled: true
tag-seconds: 15
actionbar: true # show the remaining time
block-teleports: true # command and plugin teleports
block-flight: true # also drops anyone flying when tagged
allow-escape-items: false # ender pearls and chorus fruit
logout-kill: true # leaving while tagged kills the player
logout-broadcast: true # and says so in chat
blocked-commands:
- spawn
- warp
- warps
- back
- tp
- tphere
- otp
- home
| While tagged | Setting |
|---|---|
| Commands in the list are refused | blocked-commands, without the slash |
| Command and plugin teleports are cancelled | block-teleports |
| Ender pearls and chorus fruit are cancelled | allow-escape-items: false |
| Starting to fly is refused | block-flight |
| Logging out kills the player | logout-kill, announced by logout-broadcast |
Dying clears the tag. Players with alphasystem.combat.bypass are never tagged and ignore every restriction above, which is meant for staff who must moderate a fight. The permission defaults to op and can be remapped with permissions.combat-bypass. The messages are in lang/messages.yml.
Safe teleports
One shared routine places players for /spawn, /warp, /back, /tp, the first-join spawn point and respawning. It loads the destination chunk in the background, then moves the player to the nearest safe floor around the target instead of into a wall or the air.
teleport-safety:
enabled: true
horizontal-radius: 4 # blocks searched sideways
vertical-range: 6 # blocks searched up and down
Respawning has its own search distances under respawn.safety. See below.
Warmups
/warp, /spawn and /back make the player wait before teleporting, and moving cancels it. Each has its own length, display style and message.
| Section | Default | Keys |
|---|---|---|
warps | 3 s | countdown-seconds, countdown-style, countdown-message with {warp} and {time} |
spawn | 3 s | warmup-seconds, warmup-style, warmup-message with {time} |
back | 5 s | warmup-seconds, warmup-style, warmup-message with {time} |
The style is bossbar, actionbar, title or none. Set the seconds to 0 for an instant teleport. alphasystem.spawn.bypasswarmup skips the spawn warmup for a player.
Respawn
When a player dies, Alpha-system picks the respawn location from an ordered list. The first entry that applies wins.
respawn:
enabled: true
priority:
- BED
- ANCHOR
- CUSTOM
- SPAWN
- WORLD_SPAWN
custom:
enabled: false
world: ""
x: 0.0
y: 64.0
z: 0.0
safety:
enabled: true
horizontal-radius: 4
vertical-range: 4
| Entry | Uses |
|---|---|
BED | The player's bed. |
ANCHOR | Their respawn anchor. |
CUSTOM | The location set with /setrespawn. Needs respawn.custom.enabled: true. |
SPAWN | The server spawn from /setspawn. |
WORLD_SPAWN | The spawn of the world the player died in. |
Put CUSTOM or SPAWN first to send everyone to the same place regardless of beds. An invalid entry in the list is rejected when the config loads, and respawn.safety keeps the player off unsafe blocks. If no entry gives a usable location, the plugin logs a warning and leaves Minecraft's own respawn location alone.
Nameplates
Multi-line labels above players, with their own colours, shadows and live values. Off by default.
PacketEvents is unavailable; custom nameplates are visible but vanilla player names cannot be hidden. Install PacketEvents, or set hide-vanilla-name: false to accept both.nameplates:
enabled: true
hide-vanilla-name: true
visible-to-self: false
lines:
- "<shadow:#000000FF>&#FFF0C2{player}</shadow>"
- "<shadow:#000000FF>&#FF9400{health}&#A66F16/&#FFF0C2{max_health} ❤</shadow>"
vertical-offset: 0.35
view-range: 48.0
- Built-in placeholders:
{player},{display_name},{world},{health},{max_health},{ping}. PlaceholderAPI placeholders work too, and LuckPerms prefix, suffix and primary group resolve directly even without its PlaceholderAPI expansion. - Formatting: MiniMessage tags and
&#RRGGBBhex.<shadow:#RRGGBBAA>sets a custom text shadow where the client supports it. - Unknown placeholders:
unresolved-placeholders: hideremoves them,keepshows them so you can debug. - Tuning:
update-ticks,text-refresh-ticks,teleport-interpolation-ticks,line-width,text-opacity,see-throughanddefault-shadowcontrol how often the label moves and refreshes and how it is drawn.
Join and quit messages
join-quit:
enabled: true
first-join-message: true # a different message the first time a player joins
hide-vanished: true # vanished staff never reveal a real join or quit
silent-permission: true # alphasystem.joinquit.silent hides a player's own
record-in-chat-history: true # keep them in the history used for chat deletion
The wording is in lang/messages.yml. Vanished players, and players with the silent permission, never expose their real connection state. With vanish.fake-join-quit-messages on, vanishing and unvanishing show as a normal quit and join, kept consistent with the chat history setting.
Vanish reminder
vanish:
fake-join-quit-messages: true
notify-style: bossbar # bossbar | actionbar | none
Reminds a vanished player that they are still vanished, with the bossbar or actionbar text and colour you set under vanish.bossbar and vanish.actionbar.
Client brand alerts
With client-brand.enabled: true, staff holding alphasystem.staff.clientbrand see the launcher or client brand a player connects with (vanilla, Lunar, Badlion, a spoofed one and so on).
Admin inventory audit
Every real change or clear made through /invedit or an editable ender chest can be recorded, so staff actions on player inventories are accountable.
admin-audit:
console: true
file:
enabled: true
name: "admin-audit.log"
discord:
enabled: false
webhook-url: ""
username: "Alpha-system Audit"
Each change goes to the console, to admin-audit.log in the plugin folder, and optionally to a Discord webhook as a structured embed.
