PvP & Arena
The PvP features that make this a kit-driven arena server rather than a utility plugin.
On this page
Region & Arena Regen /region, /awild region
The plugin splits the world into two WorldGuard regions: spawn (a safe zone — no PvP, no block breaking/placing, a blocked-items list) and arena (the PvP zone, periodically regenerated).
| Command | Usage | Permission | Description |
|---|---|---|---|
/region setspawn | <worldguard-region> | alphawildsystem.region | Assign a WorldGuard region as the safe-zone spawn. |
/region setarena | <worldguard-region> | alphawildsystem.region | Assign a WorldGuard region as the arena. Immediately snapshots it for future regen. |
/region regen | alphawildsystem.region | Manually trigger an arena regeneration right now, instead of waiting for the scheduled interval. |
/region from inside the arena's world. The plugin remembers whichever world you were standing in when you ran the command, and only searches that world for the named regions. If your arena lives in a dedicated world (e.g. arena_test) instead of the main world, running /region from the wrong world is why you'd see "no WorldGuard region found" even though it exists.region:
world: "" # written automatically by /region
spawn-name: ""
arena-name: ""
spawn:
blocked-items: [TNT, FLINT_AND_STEEL, LAVA_BUCKET, WATER_BUCKET]
max-build-height: 150 # -1 disables the cap — stops sky-base/tower stalling in the arena
regen:
enabled: true
interval: "20m" # how often the arena auto-restores to its last snapshot
lift-above-y: 120.0 # players caught inside are lifted clear a moment before restore
blocks-per-tick: 20000 # restore budget per tick, keeps huge arenas from freezing the server
TNT placed inside the arena auto-ignites immediately (no flint & steel needed) — configurable fuse via tnt-fuse-ticks (default 80 = 4 seconds, matching vanilla lit TNT).
Combat & Kill Rewards
Landing a hit on another player starts a combat tag on both of you. Getting tagged blocks every command except a configurable allowlist, so logging out or teleporting away does not save you from a fight already in progress.
combat:
combat-seconds: 15 # tag duration; another hit refreshes it for both players
kill-reward-ruby: 5.0 # rubies credited for every PvP kill, 0 disables it
kill-broadcast: true # announce every PvP kill server-wide
killstreak-broadcast: true # announce streak milestones
killstreak-milestone-start: 20 # first milestone, then 40, 80, 160, 320 ...
logout-opponent-sound: true # sound for the last opponent when someone combat-logs
logout-opponent-sound-type: "ENTITY_EXPERIENCE_ORB_PICKUP"
logout-opponent-sound-volume: 0.6
logout-opponent-sound-pitch: 1.2
allowed-commands: [msg, r, tell, whisper, m]
- Kill streaks. The plugin tracks each player's current and best streak. A streak ends on death. With
killstreak-broadcaston, reachingkillstreak-milestone-startkills announces it to the server, and every later milestone is double the last (20, 40, 80, 160...). - Combat logging. Quitting while tagged kills the player. The opponent they were fighting gets a short sound if
logout-opponent-soundis on. An unknown sound name is skipped silently. - Bypass.
alphawildsystem.combat.bypasslets a player use any command while tagged. It is staff-only by default.
Kill reward milestones /killrewards
A claimable menu of lifetime PvP kill milestones, tracked with the vanilla player_kills statistic, the same number the scoreboard shows. Each tier can be claimed once per player and pays ruby tokens.
| Kills | Reward | Kills | Reward |
|---|---|---|---|
| 5 | 15 | 600 | 1,800 |
| 10 | 30 | 800 | 2,400 |
| 25 | 75 | 1,000 | 3,000 |
| 50 | 150 | 1,500 | 4,500 |
| 100 | 300 | 2,000 | 6,000 |
| 150 | 450 | 3,000 | 9,000 |
| 300 | 900 | 4,000 | 12,000 |
The tiers live in kill-rewards.yml as - {kills: 5, reward: 15} entries, plus a title for the menu. Add, remove or change them freely.
Stats menu /stats
/stats opens a 27-slot summary of a player's PvP record, centred on their head:
| Slot | Shows |
|---|---|
| Kills | Lifetime kills (vanilla player_kills). |
| Deaths | Lifetime deaths. |
| K/D ratio | Kills per death. With no deaths it equals the kill count. |
| Current streak | Kills since the last death. |
| Best streak | Highest streak ever reached. |
| Balance | Ruby token balance. |
/stats needs alphawildsystem.stats (everyone by default). /stats <player> shows someone else's and needs alphawildsystem.stats.others (op by default). The layout is built in and not configurable.
Kits /give kit
Every death (and /give <player> kit) rolls a fresh random kit — one random item per category, plus a random amount of blocks/explosives, from kits.yml. Enchant strength scales the opposite way from material tier, so the best material doesn't also roll the best enchants:
enchant-tiers:
netherite: {protection: 1, sharpness: 1} # weakest enchants — stats already win
diamond: {protection: 2, sharpness: 2}
iron: {protection: 3, sharpness: 3}
gold: {protection: 3, sharpness: 3}
chainmail: {protection: 4, sharpness: 4} # strongest enchants — stats already lose
blast-protection-chance: 20 # % chance a NON-netherite armor piece also rolls Blast Protection
Rolled per kit
- Helmet / chestplate / leggings / boots (chainmail → netherite)
- Sword or axe, offhand (totem/shield/golden carrot/none)
- Bow or crossbow + 64 arrows
- Pickaxe (Efficiency II)
- Food, building blocks (2 rolls), explosives (2-7)
- One random enabled custom item
/give in detail
/give <item|kit> <player> — kit rolls a fresh random kit exactly like a death would; any other value is treated as a specific item or custom-item id (e.g. /give dash Steve).
A player's very first join also grants a random kit.
Custom Items
Ten special items usable only inside the arena. One is rolled into every kit; admins can hand out a specific one with /give <id> <player>. Set enabled: false on any item in custom-items.yml to pull it from the kit roll and stop /give from handing it out.
| Item | Material | Effect |
|---|---|---|
| dynamite | Blaze Rod | Launches TNT at your enemies. |
| dash | Feather | Launches you in the direction you're facing. |
| speed-sugar | Sugar | Short Speed III buff (5s). |
| strength-dye | Orange Dye | Short Strength II buff (5s). |
| swapper-ball | Snowball | Throw to swap locations with whoever it hits. |
| explosive-eggs | Egg | Throw to teleport onto the hit target while dealing heavy damage (8 hearts default). |
| smoke-bomb | Gunpowder | Launches a cloud that blinds and nauseates anyone caught inside. |
| grappling-hook | Nautilus Shell | Pulls you toward whatever you're looking at (20-block range). |
| adrenaline-shot | Ghast Tear | Instant heal + short Regeneration buff. |
| flare | Glowstone Dust | Makes nearby enemies glow through walls. |
Each item has its own cooldown-seconds plus item-specific tuning (throw-speed, force, radius, range, damage, duration-seconds, etc.) in custom-items.yml.
Token Shop /shop, /sh
A ruby token shop driven entirely by shop.yml. The main menu lists the categories in the order you write them, and each category opens its own pages with 18 items per page and previous and next buttons, so nothing is ever cut off. Prices are read each time a menu opens, so /awild reload is enough after an edit. Purchases are blocked when the inventory is full, and the price is taken before the item is handed over.
| Category | Items shipped | What is in it |
|---|---|---|
| Special items | 10 | The plugin's own arena items: dash, speed sugar, strength dye, flare, swapper ball, smoke bomb, dynamite, grappling hook, explosive eggs, adrenaline shot. |
| Mystery crates | 1 | The mystery crate. |
| Armor | 20 | Full helmet, chestplate, leggings and boots sets in netherite, diamond, iron, gold and chainmail, with enchants. |
| Weapons | 9 | Netherite, diamond and iron swords and axes, a netherite pickaxe, a bow and a crossbow. |
| Misc | 3 | Totem of undying, golden apple and shield. |
| Explosives | 3 | TNT, cobweb and fire charge. |
| Foods | 2 | Cooked beef and golden carrots. |
| Storage | 3 | Shulker box, ender chest and bundle. |
| Potions | 3 | Real drinkable potions: Strength, Speed and Fire Resistance. |
Every entry is exactly one of these forms. All entries also take amount, price, name and an optional lore:
items:
- {material: NETHERITE_HELMET, amount: 1, price: 180, enchants: {PROTECTION: 2}}
- {custom-item: dash, amount: 1, price: 15} # an arena item from custom-items.yml
- {crate: true, amount: 1, price: 300} # a mystery crate from crates.yml
- {potion-effect: SPEED, level: 2, duration-seconds: 180, amount: 1, price: 25}
A custom item or crate keeps its own name, lore and icon. A potion entry builds a real drinkable potion with the effect, level and duration you give.
Mystery crates
A crate is an item players right-click to open an animated roulette that lands on a reward tier. Players get one by buying it in the shop (300 rubies by default) or with a small chance on every PvP kill. Closing the menu or disconnecting during the animation still grants whatever tier was already rolled, so nothing is lost by skipping it.
settings:
enabled: true
kill-drop-chance: 4.0 # % chance a PvP kill drops a free crate for the killer
spin-frames: 24 # longer = more suspense
broadcast-legendary: true # announce legendary pulls
animation-style: circular # single | circular | linear
| Animation | Looks like |
|---|---|
single | One slot of a small 9-slot menu cycles through tiers and slows to a stop. |
circular | A token chases around the border of a 27-slot menu like a roulette wheel. |
linear | A strip of icons scrolls past a fixed centre slot in a 27-slot menu. |
Tiers
Each tier's weight is its relative chance, so a higher weight is more common. The odds below are the shipped weights out of a total of 100.
| Tier | Weight | Reward |
|---|---|---|
| Common | 50 | 30 to 60 rubies |
| Uncommon | 27 | 70 to 120 rubies |
| Rare | 13 | One random item from custom-items.yml |
| Epic | 7 | 250 to 400 rubies |
| Legendary | 3 | 600 to 1,000 rubies, plus a bonus random kit |
A tier has reward-type ruby (a random amount between ruby-min and ruby-max) or item (one random enabled custom item). color is either a flat &#RRGGBB value or a <gradient:#RRGGBB:#RRGGBB> tag. The leading & is required, a bare #RRGGBB is not recognised. head is a base64 player-head texture, and icon is the plain material used if a head is missing or fails to apply.
Chat color /chatcolor, /cc
Opens a menu of two-stop gradients. Picking one applies it to that player's own chat messages from then on. Add, remove or recolour options in chatcolors.yml.
- It is a rank perk, not a default. The menu needs
alphawildsystem.chatcolor, which defaults to op. Grant it to ranks through your permissions plugin. - Single colours can be locked. Add
permission:to a colour to gate it behind its own node. Players with the base permission but not that node still see the colour, shown locked, and cannot pick it. Ops see everything unlocked. - Live preview. The menu previews each gradient and marks the one you have selected.
title: "E9BFFᴄʜᴀᴛ ᴄᴏʟᴏʀ"
colors:
red: {material: RED_CONCRETE, label: "ʀᴇᴅ", start: "#BD0000", end: "#FF3333"}
warden: {material: SCULK_CATALYST, label: "ᴡᴀʀᴅᴇɴ", start: "#0E5B64", end: "#2AE7F5", permission: "alphawildsystem.chatcolor.warden"}
Fourteen presets ship: red, blue, light, yellow, orange, pink, brown, purple, green, lime, cyan, end, halloween and warden. The last three have their own permission nodes.
Clear Lag
Every interval-minutes, all dropped items on the ground are swept server-wide — with a warning 15 seconds ahead of time so nobody loses something they just dropped mid-fight. /clearlag only toggles a player's own warning message; the sweep itself always runs for everyone regardless.
clearlag:
enabled: true
interval-minutes: 5
Totem Practice /totempractice
A whack-a-mole reflex minigame — click the totem before it moves. Useful for players practicing totem-popping timing outside of a real fight.
