COI Client’s visual effects system renders screen-space overlays directly in the player’s HUD. When the server sends aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/ikeepcalm/coi-client/llms.txt
Use this file to discover all available pages before exploring further.
coi-client:effect plugin message payload, the client’s EffectManager looks up the effect by ID and activates it as an independent layer on top of the game view. Because each effect is its own VisualEffect instance managed in a shared list, multiple effects can run simultaneously — vignette, heartbeat, and cracks can all be active at once with no conflicts.
Available Effects
vignette
Darkens screen edges for cursed zones, low sanity, or death proximity.
heartbeat
Pulsing vignette that throbs with a realistic lub-DUB rhythm.
cracks
Branching fracture lines that grow from screen corners toward the center.
eyes
Creepy eyes that open from darkness, stare, then slowly close.
glitch
VHS-style horizontal distortion lines strobing in rapid bursts.
bloodrain
Dark red streaks of varying speed and opacity falling down the screen.
frost
Ice crystals and blue-white gradients growing inward from screen edges.
whispers
Cryptic text phrases that fade in and out at random screen positions.
tunnel
Circular vignette that closes inward, shrinking the player’s field of view.
flash
Instant full-screen color wash that rises quickly and fades out.
Triggering Effects
Effects are triggered from a Paper plugin via thecoi-client:effect plugin messaging channel. Write the effect ID and a comma-separated param string into a ByteArrayDataOutput, then send it to the target player:
onEnable before sending any messages:
Stopping Effects
Two stop patterns are supported:- Stop one effect — set
paramsto"stop"while providing the specific effect ID: - Stop all active effects — use
"all"as the effect ID (params are ignored):
Debug Screen
During development, press F8 to open the Effect Debug screen. It lists every effect registered inEffectManager alongside Test and Stop buttons so you can preview each effect without a running server. The screen’s isPauseScreen() method returns false, so the game world continues to render and all active effects remain fully visible while the screen is open.
Server developers looking for the complete effects API — including all per-effect params, defaults, and combination recipes — should visit the Server Integration tab for the full effects API reference.