Apex Boss · Paper 1.21.1 · Separate Plugin

The SerpentKing

Ancient Tyrant · Flying Apex · Silent Hunter

A 300-block-long sculk-patterned serpent that cannot be stopped by walls, wards, or warning. Summoned deliberately — never spawns on its own — and hunts players and other snakes with no user interface to announce its arrival.

2000 HP 80 Segments Husk-Based Flight Terrain-Phasing Bossbar No Popups Ancient Serpent Kin Admin-Summoned
I — Overview

About

The Serpent King is a standalone boss fight in its own plugin, SerpentKing. It's designed as a bigger, faster, flying cousin of the Ancient Serpent found in the Snake plugin's Deep Dark — same sculk-and-deepslate palette, same venom profile, same brutal aggression, but scaled up to a 300-block flying apex that ignores terrain entirely.

It lives in its own Java package (com.example.serpentking) and requires no dependency on the Snake plugin to compile or run. However, if the Snake plugin is installed alongside it, the Serpent King will actively hunt every snake in its 300-block radius — including the Ancient Serpent itself.

Base Entity
Husk
invisible, scaled, flying
Health
2000
HP
Length
~280
blocks, 80 segments
Follow Range
300
blocks
II — Arrival

Summoning & Spawning

Does not spawn naturally

The Serpent King never appears on its own. There is no biome, no dimension, no structure, no moonphase, and no block that triggers it. It exists only when an admin — or a player with the serpentking.admin permission — runs the /spawnboss command.

When /spawnboss is run by a player, the boss is spawned 20 blocks directly above them in that player's world. It begins descending toward the nearest valid target within the same tick. No inventory clearing, no gear handout, no ceremony — the boss arrives exactly like any other summoned mob.

II.b — Persistence

Persistence & Worlds

The Serpent King uses the same persistence model as the Snake plugin's named snakes. Once summoned, it is permanent — it survives chunk unloads, server restarts, plugin reloads, and player relogs. The only ways to remove it are to kill it or run /killboss.

Survives everything

On plugin enable the server does a 2-second-delayed scan of every loaded chunk in every world, finds any Husk tagged serpent_king, and wraps it in a fresh SerpentKingEntity. Phase is re-derived from HP — a boss you left at 40% HP last session comes back already in its corrupted phase-2 palette.

III — Presence

The Silent Hunt

⌬ Minimal interface — proximity-gated

One bossbar, only when you're within 300 blocks. No titles. No chat broadcast. No toast.

The Serpent King encounter is communicated almost entirely through in-world cues — sounds, particles, and the visible serpent itself. The single concession to UI is a proximity-gated bossbar that appears only when you're in the same world as the boss and within its 300-block hunt range. Walk out of range and the bar disappears from your HUD. Players in other worlds, or far enough away, never see it. No "ENRAGED!" subtitle pops up at 50% HP. No "VICTORY" banner on death. No global chat message announces the fight.

What the player DOES see

·
What
When
A 300-block sculk-patterned serpent floating through the air
Always, for as long as they can see it
Proximity bossbar — purple "The Serpent King" bar with HP fraction
Only when in the same world AND within 300 blocks. Hidden otherwise.
Bossbar color flips red
When phase 2 triggers (≤50% HP). Permanent for the rest of the fight.
Sculk Soul particles trailing around the body
Every 40 ticks (2 seconds)
Low Warden Roar in the distance
Every 80 ticks (4 seconds)
Sculk Charge Pop particles + Warden Sonic Boom sound
Once, at phase 2 trigger (50% HP)
Body palette darkens — sculk → crying obsidian & sculk shriekers
Permanent, from phase 2 onward
Dragon growl
Once, when the boss is first summoned

What the player does NOT see

·
What
Why
Bossbar in other worlds
Filtered by world UUID — only same-world players see it
Bossbar from outside 300 blocks
Filtered by distance check each tick — bar removed when player walks out of range, restored when they walk back in
Vanilla Wither bossbar
Irrelevant — base entity is a Husk, not a Wither
Title / subtitle popup on spawn
Removed
"ENRAGED!" title popup at phase 2
Removed — bossbar color flip serves the same purpose
"VICTORY" title popup on death
Removed
Chat broadcasts to all players
Removed
Achievement-toast sound on kill
Removed

Bossbar mechanics

IV — The Vessel

Combat Stats

The base entity is an invisible Husk with attribute modifiers applied in the constructor. The invisible flag + scaled block displays create the 300-block visual; the attributes do the actual damage math.

Max HP
2000
GENERIC_MAX_HEALTH
Attack
20
damage per hit
Armor
18
GENERIC_ARMOR
KB Resist
1.0
immovable
Hitbox Scale
2.5×
GENERIC_SCALE attribute
Follow Range
300
blocks

Permanent potion effects

Equipment

Any default Husk equipment (spawn-with-sword chance, etc.) is stripped at spawn — main hand, offhand, and drop chances are all set to AIR / 0. The invisible base never appears armed, and never drops gear on death.

V — The Flight

Flight & Movement

Husks do not fly natively — the Serpent King's flight is driven entirely by plugin code. At spawn, the base husk has setGravity(false) so it doesn't fall, and setAI(false) so no pathfinder goal can compete with the manual velocity. Every tick, the plugin computes a normalized direction vector from the boss's position to its target's upper torso and applies it as raw velocity. Block physics stay enabled — the boss collides with terrain, keeping fights grounded in real space.

Melee attacks

Vanilla Husk melee is broken on this boss — gravity-off and manual velocity overrides both prevent the mob's MeleeAttackGoal from ever firing (the pathfinder can't "reach" the target because it can't path at all). So the plugin deals damage directly whenever the boss is within attack range, on a fixed cooldown. This is why the boss actually kills things instead of just orbiting them.

Attack Range
3.5
blocks, generous for the 4.9-block hitbox
Damage Per Hit
20
half-heart count × 2
Cooldown
1 s
20 ticks between hits
Hit Sound
Warden
attack-impact, on every landed hit

Speed comparison

Flight speed is a raw velocity magnitude (blocks per tick). For reference, a sprint-jumping player moves roughly 0.35 blocks per tick.

Player sprint-jump
0.35 b/t
King — Phase 1
0.45 b/t
King — Phase 2
0.70 b/t
Tuning

Both flight speeds are single-line constants at the top of SerpentKingEntity.java: FLIGHT_SPEED_P1 and FLIGHT_SPEED_P2. Recompile and redeploy to tune.

VI — The Rage

Phase System

The boss has two phases, triggered by HP threshold. Phase 2 is one-shot — once entered, it cannot be undone, even if the boss is somehow healed back above 50%.

Phase 1 — The Hunt

HP 2000 → 1001 (100% → 51%)
  • Flight speed 0.45 blocks/tick
  • Strength I permanent effect
  • Resistance II, Fire Resistance
  • Sculk Soul ambient particles every 2s
  • Warden roar every 4s
  • Venom aura within 8 blocks every 3s

Phase 2 — The Rage

HP 1000 → 0 (≤ 50%)
  • Flight speed jumps to 0.70 blocks/tick
  • Strength upgrades to Strength IV
  • Body palette swaps to a corrupted variant
  • Sculk Charge Pop burst at transition
  • Warden Sonic Boom sound at transition
  • All other effects carry over from phase 1
No popup at transition

The "ENRAGED!" title and chat broadcast that used to fire here are gone. The only cues the player receives are in-world: the Sonic Boom sound, the sculk particle burst, the body visibly darkening as its palette swaps to crying obsidian and sculk shriekers — and suddenly the boss catches up to them faster than they can run.

VII — The Curse

Abilities & Aura

Beyond raw melee damage, the Serpent King projects a venom aura matching the Ancient Serpent's profile. Any survival-mode player within an 8×8×8 cube of the boss gets hit with a triple stack of effects every 3 seconds.

Poison II
10s
reapplied every 3s
Wither I
5s
bypasses natural regen
Darkness
5s
dims vision, no brightness

Note: unlike the regular Ancient Serpent's melee-hit venom in the Snake plugin, the Serpent King's venom is proximity-based, not contact-based. You don't have to be hit to be poisoned — you just have to be close.

VIII — The Hunt

Targeting

Every 10 ticks (plus on the very first tick so there's no initial hover), the boss scans a 300-block radius for the nearest living entity it has line-of-sight to. The Serpent King hunts anything that breathes — but the line-of-sight gate ensures it never locks onto someone hidden behind walls.

Line of sight required for acquisition

The boss calls base.hasLineOfSight(candidate) on every potential target. Blocks between the boss's eye and the candidate cause it to be skipped. This stops the boss from locking onto players sealed in arena waiting rooms, hidden in 3-block-thick bunkers, or otherwise visually obscured. Without this filter, the boss would track and attempt to fly toward unreachable players, looking buggy and wasting flight cycles before the fight even starts.

Sticky target — LoS only matters at acquisition

Once the boss has locked onto a target, it does not drop them just because line-of-sight is briefly obscured. Ducking behind a tree, dropping into a 1-block trench, or running through a doorway will not break aggro. The boss only abandons its current target when that target dies, leaves the world, leaves the 300-block hunt range, or switches to creative/spectator. To genuinely break aggro mid-fight you have to put real distance between yourself and the boss.

Will hunt

  • Players in Survival or Adventure mode
  • Every snake from the Snake plugin (Corn Snake through Ancient Serpent)
  • Hostile mobs — zombies, skeletons, creepers, phantoms, etc.
  • Passive mobs — cows, sheep, pigs, villagers, animals
  • Raiders, piglins, guardians, anything LivingEntity

Will ignore

  • Players in Creative or Spectator mode
  • Itself (tagged serpent_king)
  • Any other Serpent Kings
  • Anything without line-of-sight to the boss at acquisition time
  • Silverfish (SnakeBedrockBridge proxies — would lock the boss to "self")
  • Non-living entities — items, armor stands, block displays, arrows
  • Its own segment displays (serpent_king_display tag)
X — The Form

Appearance

Visually, the Serpent King is a supersized version of the Ancient Serpent. Same base render pipeline — invisible base entity plus block displays — but scaled up across the board.

Segments
80
vs Ancient's 50
Head Scale
5.0×
Dragon Head block display
Segment Scale
4.0×
vs Ancient's 1.8×
Segment Spacing
3.5
blocks between centres
Total Length
~280
blocks nose-to-tail
Position History
5000
cached locations

Body palette — Ancient-Serpent family

The body rotates through six materials, identical to the Ancient Serpent's deep-dark palette, so the two read as the same species lineage.

Phase 2 palette — the Corruption

At ≤50% HP, every segment's block is swapped to the phase-2 palette. The head stays a dragon head; only the body changes. The new materials keep the dark sculk-family feel but introduce crying obsidian (violet weeping tears) and sculk shriekers (orange warning rings) to signal the boss is scarred and dangerous.

Want the old red/magma phase 2 instead?

The palette is a single Material[] constant named BODY_PALETTE_P2 at the top of SerpentKingEntity.java. Swap its six entries for MAGMA_BLOCK, RED_NETHER_BRICKS, CRYING_OBSIDIAN, etc. to restore the original fiery phase 2 look — no other code needs to change.

Structural details

XI — The Atmosphere

Sounds & Particles

Because there is no bossbar, atmosphere is everything. Every audio and particle cue is intentional — it's the only way the game tells the player what's happening.

Ambient loop

Event cues

XII — The Spoils

Drops on Kill

When the boss dies, it drops exactly what a vanilla Husk drops — nothing more. There is no custom reward system: no nether stars, no dragon eggs, no inventory-push to every online player. The Serpent King lives and dies like any other mob.

Vanilla husk drops

On death, standard Bukkit/Paper drop rules apply: rotten flesh (0–2), a small chance of carrots, potatoes, or iron ingots, and vanilla XP. Looting enchantments on the killing weapon modify drop counts normally.

Want a custom reward?

Add back a drops block inside SerpentKingPlugin.onEntityDeathevent.getDrops().clear() followed by event.getDrops().add(new ItemStack(...)) for each item you want. The old "Nether Star + Dragon Egg + Elytra + 64 XP bottles" configuration is in the git history if you ever want it back.

XIII — Staff

Admin Commands

All three commands require the serpentking.admin permission (granted to operators by default). The plugin defines no other commands.

/spawnboss
Summons a Serpent King 20 blocks above the running player, in that player's current world. Does nothing else — the player's inventory is untouched, no gear is given, HP and hunger are not modified. If a Serpent King is already active in the current world, the command replies "already active in this world" and does nothing. Other worlds are unaffected.
Players only — cannot run from console (needs a player location) · Safe to bind to a staff GUI button
/killboss
Force-removes the Serpent King in the sender's current world. Cleans up all display entities and the base husk. Replies privately with confirmation. If no boss is active in that world, replies "No active Serpent King in this world."

From console, /killboss removes every active Serpent King across every world and reports the total count.
Safe from console (console targets all worlds) · Safe to bind to a staff GUI button
/forcephase2
Test command. Immediately triggers phase 2 on the Serpent King in the sender's current world regardless of its HP — the palette swaps, the speed jumps, Strength IV is applied, and the Sonic Boom cue fires. Idempotent: running it twice does nothing the second time. Replies "Serpent King is already in phase 2." or "No active Serpent King in this world." on the invalid cases.

Console can run it only if there is exactly one active boss server-wide — otherwise it replies asking you to run from a player.
Staff test command · No reward or side-effect beyond the phase transition

Permission node