promotional bannermobile promotional banner

SpookySeason

Halloween for your Server: trick-or-treating, blood moon nights, pumpkin rain and the Headless Horseman. With wave-based undead raid on an objective your players have to defend. Paper and Folia 1.21.x + 26.x

🎃 SpookySeason

SpookySeason turns your server into Halloween for a few weeks a year – and then turns it into a siege. Knock on doors for treats, survive the blood moon, outrun the Headless Horseman, and when the big night comes, hold the line while waves of undead march on something you cannot afford to lose.

⚔️ The Undead Raid

The centrepiece. Waves of undead walk at a target your players defend. Hold every wave and you win; let the target fall and the raid is lost.

  • One or several targets. Place them anywhere with /spookyraid target add. Each target carries its own floating health readout.
  • Or defend an area. Instead of an object, mark out a zone in game with /spookyraid zone pos1 / pos2 / save – no other plugin required. Every attacker that gets inside counts as a breach, and too many breaches lose the raid. Servers that already keep their areas in WorldGuard can point the raid at a named region instead.
  • Attackers are archetypes, not a flat mob list. Give each one equipment it actually fights with, a size, its own stats, the wave it first appears in, upper and lower bounds per wave, and even its own spawn distance. Archers shoot the target from range instead of walking up to it.
  • Separate damage against players and against the target – player damage has to stay survivable, target damage does not. One knob for each.
  • They go for the objective, not for a chase. A defender in the way gets fought; a defender across the map does not pull the whole wave along.
  • No friendly fire, no craters, no bossbar flood. Attackers do not hurt each other, nothing they do breaks blocks – withers included – and only the wave leader gets a bar.
  • The Headless Horseman leads a wave of your choosing and brings his own health pool.
  • Starts by command or on its own calendar window, independent of the season window.
  • Separate rewards for holding the line and for losing it.

🍬 The Rest of the Season

Trick-or-Treat

  • Right-click doors and villagers for treats or a nasty surprise
  • Per-door and global per-player cooldowns so nobody farms the leaderboard
  • Sneaking always opens the trade instead

Nights

  • Blood moon with its own bossbar, ambient sound, soul particles and drifting ghosts
  • Fog: a short darkness pulse at a configurable interval
  • Bat swarms and jumpscares when you break blocks in the dark
  • Naturally spawning zombies and skeletons wear carved pumpkins, creepers drop them

The Headless Horseman

  • Skeleton horse and wither skeleton share one health pool – hitting the mount hurts the rider
  • Armour, weapon, abilities and loot table are all editable live via /spookyboss
  • Wither on hit, fire resistance and a periodic charge, each toggleable

Pumpkin Rain

  • /pumpkinrain start – runs independently of the season, for when you just want the sky to rain gourds

Season End

  • Treat leaderboard and configurable reward commands for the top collectors
  • Distributed automatically when the calendar window closes, or by hand
  • Winners who were offline get their rewards on next join; nothing is lost if the server was down

Quality of Life

  • Per-player opt-out and individual sound volumes, plus a GUI for both
  • English and German included; drop in your own language file
  • Config merger: updates add new options without touching your settings
  • Folia-native: no global-tick entity access, region-correct spawns, clean task cancellation
  • Update checker (toggleable) and bStats metrics

🚀 Quickstart

/spooky menu                          Status, opt-out, volumes, leaderboard
/pumpkinrain start                    Make it rain pumpkins

/spookyraid target set                Set the objective where you stand
/spookyraid target add                ... or add several
/spookyraid start                     Launch the raid
/spookyraid status                    Waves, attackers, target integrity

/spookyraid zone pos1                 ... or mark out an area to defend instead
/spookyraid zone pos2
/spookyraid zone save village

Before a real event: put your event world into enabledWorlds, set the objective, and size maxAlive and the target health to your player count. The config ships rough starting points.

📋 Commands

Command Description
/spooky menu GUI: status, opt-out, volumes, leaderboard
/spooky optout Opt out of all player-facing effects
/spooky top Treat leaderboard
/spooky on\|off\|status\|reload Toggle features, reload config and language
/spooky rewards Hand out the season-end rewards now
/spooky spawn boss Spawn the Headless Horseman
/spookyvolume <ambient\|ghost\|rain> <0.0-1.0> Personal volume per sound type
/spookyvolume reset Reset all your own settings, opt-out included
/pumpkinrain <start\|stop> Start/stop the pumpkin rain
/spookyboss <spawn\|remove\|info> Control the boss, see its live health pool
/spookyboss set\|armor\|ability\|loot Edit every boss value without a restart
/spookyraid <start\|stop\|status> Control a raid
/spookyraid target <info\|mode\|set\|add\|list\|remove\|clear\|region> Place and manage the objectives
/spookyraid zone <pos1\|pos2\|save\|list\|remove> Mark out your own zone to defend

🔑 Permissions

Permission Purpose Default
spooky.admin All admin subcommands of /spooky, plus /spookyboss and /spookyraid op
spooky.pumpkinrain /pumpkinrain op

/spookyvolume and the player subcommands of /spooky (optout, top, menu) need no permission.

🔌 Integrations

All optional – the plugin runs without any of them.

Plugin What it adds
WorldGuard Keeps spawns out of protected regions, and lets a raid defend a named region. Not needed for the built-in zones.
GriefPrevention Keeps spawns out of claims
PlaceholderAPI Placeholders for season state and treat counts
CustomJukebox Your own music during haunted nights and raids

⚙️ Requirements

  • Paper 1.21.x or 26.x, or a fork like Purpur. Folia is fully supported.
  • Java 21

📊 Telemetry

SpookySeason uses bStats (opt out in plugins/bStats/config.yml) and can check Modrinth for updates on startup (disable with updateChecker: false).

SpookySeason Team

profile avatar
  • 11
    Projects
  • 3.9K
    Downloads

More from BoondockSulfurView all