Alpha WildPvPv1.0.0

Configuration

The general, plugin-wide config.yml settings. Arena/kits/shop/kill-rewards/chat-color-specific config lives in their own files — see PvP & Arena for those.

File layout

plugins/AlphaWildSystem/
  lang/
    messages.yml # every regular player-facing message
    deathmessages.yml # death message pools, by killer/cause
  menus/
    players/warps.yml # /warp GUI layout
    staff/inventory.yml, enderchest.yml, confirm.yml # /invsee, /invedit GUIs
  config.yml # main config — theme, features, every subsystem's settings, permission remaps
  arena.yml # WorldGuard region assignment + arena regen settings
  kits.yml # random kit pools + enchant balance
  custom-items.yml # the ten arena-only special items
  shop.yml # the 7-category ruby token shop
  kill-rewards.yml # lifetime-kill milestone tiers
  chatcolors.yml # /chatcolor gradient presets
  scoreboard.yml # sidebar scoreboard layout
  punishments.yml # ban/mute/warn/jail message templates + kick screens
  economy.yml # currency settings + economy messages
  announcements.yml # auto-broadcast message pool + interval
  maintenance-state.yml # runtime — on/off + whitelist
  socialspy-state.yml # runtime — per-player toggle overrides
  alphawildsystem.db # sqlite database file (if database.type: sqlite)
Two different reload behaviors. config.yml layers the jar's bundled defaults underneath what's on disk. Every other file (lang/messages.yml, punishments.yml, economy.yml, arena.yml, kits.yml, shop.yml, etc.) has no such layering — every key you want changed must actually exist in the on-disk file, and nested config.yml sections (like warn.escalation.rules) need to be written out in full on disk too.

Theme the whole plugin's accent color

Every message/menu/config file supports full MiniMessage directly — but on top of that, theme.accent-hex is a shortcut: any text colored with it is automatically upgraded into a real two-stop gradient everywhere in the plugin.

theme:
  accent-hex: "#2E9BFF"
  gradient-start: "#0B3D91"
  gradient-end: "#4FC3F7"

Change these three values to re-theme the entire plugin — scoreboard, chat, menus, everything — without touching a single message file. Requires /awild reload or a restart. Authors only ever write the flat &#2E9BFF in a message; it renders as a real <gradient:#0B3D91:#4FC3F7> at runtime.

Features

Set any entry to false to fully disable that subsystem (command included).

features:
  chat: true
  flyspeed: true
  gamemode: true
  heal: true
  feed: true
  god: true
  fly: true
  kill: true
  ping: true
  vanish: true
  invsee: true
  invedit: true
  enderchest: true
  tphere: true
  skull: true
  punish: true
  warps: true
  announcements: true
  chat-filter: true
  economy: true
  time: true
  alts: true
  tpsbar: true
  nv: true
  freeze: true
  weather: true
  fixitem: true
  death-messages: true
  no-crafting: true          # off by default — gear comes from kits/shop on a kit-driven server
  anvil-no-damage: true      # anvils don't take normal wear-and-degrade damage

Chat

chat:
  format-normal: true
  join-quit-messages: true
  delete-button:
    enabled: true
    icon: "&#FF0000[x] "
    hover: "󅒐ᴄʟɪᴄᴋ ᴛᴏ ᴅᴇʟᴇᴛᴇ ᴛʜɪꜱ ᴍᴇꜱꜱᴀɢᴇ"
    remembered-messages: 200
    fallback-clear-lines: 100

See Integrations → Chat deletion for what the delete button actually does with/without PacketEvents.

Chat filter

chat-filter:
  words: ["badword1", "badword2"]
  warn-reason: "Used a prohibited word in chat"
  staff-alert: "{prefix}&#FF0000{player} 󅒐ᴜꜱᴇᴅ ᴀ ꜰɪʟᴛᴇʀᴇᴅ ᴡᴏʀᴅ ᴀɴᴅ ᴡᴀꜱ ᴀᴜᴛᴏ-ᴡᴀʀɴᴇᴅ򇨣. 󅒐(E9BFF{server}󅒐)"

Case-insensitive substring match. A match deletes the message before it reaches chat, auto-issues a /warn (which can trigger warn escalation), and alerts staff — network-wide if database.type: mysql.

Database & Network

database:
  type: sqlite   # sqlite | h2 | mysql
  sqlite-file: alphawildsystem.db
  mysql:
    host: localhost
    port: 3306
    database: alphawildsystem
    username: root
    password: ""

network:
  broadcast-scope: global   # global = every server sees alerts | local = only where it happened
  poll-interval-seconds: 3
  overrides:
    ban: global
    mute: global
    warn: global
    jail: global
    chat-filter: global
TypeWhen to use it
sqliteDefault. Zero-config, local file, single server.
h2Embedded, pure-Java — a SQLite alternative on hosts that block native code.
mysqlRequired for cross-server punishment sync and network-wide maintenance mode.

Jail

jail:
  world: ""
  x: 0.0
  y: 0.0
  z: 0.0
  notify-style: bossbar   # bossbar | actionbar | title | none
  bossbar:
    text: "�B3D91ᴊᴀɪʟᴇᴅ 󅒐— E9BFF{remaining} 󅒐ʀᴇᴍᴀɪɴɪɴɢ"
    color: RED

Set the location with /setjail. No movement radius is enforced automatically — build a physical containment area yourself.

Restart

restart:
  style: bossbar
  duration-seconds: 60
  relaunch-process: true
  storm-effect:
    enabled: true
    interval-ticks: 60
    strikes-per-player: 1
    chance: 0.5

relaunch-process: true reconstructs the original java launch command and spawns a fresh process before this one shuts down, so /restart actually restarts. The storm-effect is purely cosmetic (rain, fog, distant fake lightning) — set enabled: false for a plain countdown.

Maintenance

maintenance:
  kick-message: "&#FF0000ꜱᴇʀᴠᴇʀ ɪꜱ ɴᴏᴡ ɪɴ ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ򇨣. 󅒐ᴡᴇ'ʟʟ ʙᴇ ʀɪɢʜᴛ ʙᴀᴄᴋ!"
  join-deny-message: "&#FF0000ꜱᴇʀᴠᴇʀ ɪꜱ ᴄᴜʀʀᴇɴᴛʟʏ ᴜɴᴅᴇʀ ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ򇨣. 󅒐ᴄʜᴇᴄᴋ ʙᴀᴄᴋ ꜱᴏᴏɴ򇨣!"
  motd: "&#FF0000ꜱᴇʀᴠᴇʀ ᴜɴᴅᴇʀ ᴍᴀɪɴᴛᴇɴᴀɴᴄᴇ"

On/off state and the bypass whitelist live in maintenance-state.yml, managed through /maintenance. Leave motd blank to keep the normal server-list MOTD.

Warps & Spawn

warps:
  countdown-seconds: 3
  countdown-style: actionbar

spawn:
  warmup-seconds: 3
  warmup-style: actionbar
  void-safety-net: true   # falling off a floating arena teleports back to spawn instead of killing you

spawnpoint:                # first-join-only location, separate from /setspawn
  world: ""

The warp menu layout lives in menus/players/warps.yml — action types [warp], [player], [console], [message], [sound], [close].

TPS bar

tpsbar:
  text: "�B3D91ᴛᴘꜱ: &#FFFFFF{1m} 󅒐| �B3D91ᴍꜱᴘᴛ: &#FFFFFF{mspt} 󅒐| �B3D91ᴘɪɴɢ: &#FFFFFF{ping}ᴍꜱ"

{1m}/{5m}/{15m} are the 1/5/15-minute TPS averages (auto-colored green/yellow/red), {mspt} is the current average tick time, and {ping} is the viewing player's own connection ping — fully admin-composable.

Weather

weather:
  extra-lightning:
    enabled: true
    interval-seconds: 4
    chance: 0.6
    max-distance: 40
    real: true   # true = actual lightning (can hurt mobs/start fires) | false = visual+sound only

/weather snow just sets rain like /weather rain does — vanilla itself only ever renders that as snow in cold-enough biomes, no server-side biome forcing.

bStats & update checker

bstats:
  enabled: true
  plugin-id: 0   # 0 = disabled until you set a real id, see bstats.org/what-is-my-plugin-id

update-checker:
  enabled: true
  repo: "alpha-m19/alphacore-plugin"
  notify-ops-on-join: true

Reload vs. restart

/awild reload re-reads config.yml, the theme, every lang/message file, and every PvP-layer manager (region, custom items, kill rewards, chat color, clearlag, kits, shop, scoreboard). It does not reload compiled Java — anything changed by updating the plugin jar itself needs a full server restart.