DenizenMC

Recipes & Help

Example setups, quick recipes to copy, and fixes for common problems.

A few complete setups, written the way they'd run on a live server.

Real setups

A survival server rebrand

You want every message to share one look, but you run 40 plugins and half of them only know & codes.

  1. Put your palette in sparks/theme.yml: main, accent, soft and alert.
  2. Make a prefix text spark that uses them.
  3. Go through each plugin's messages and swap their prefix for <spark:prefix>, and their colors for your palette sparks.
  4. For plugins that hardcode their text, turn on /lightning inspect, trigger the message, copy it, and write a rewire.

A full rebrand later is four lines in theme.yml and a /lightning reload.

A cleaner chat on a minigame server

Players complain chat is buried under "+10 coins", "You picked up a booster" and "Kit selected".

  • Plugins you can configure: put <actionbar> at the start of those messages.
  • Plugins you can't: a rewire with to: "<actionbar>{text}", so the message keeps its look but moves.
  • Rewards: add <sound:entity.experience_orb.pickup> so players still feel them.

Chat goes back to being for players.

An international network

Your players come from Germany, Spain and Brazil, and most plugins only speak one language.

  1. Write locale sparks for your most-seen lines: welcome, rules, vote reminders, store links.
  2. Use those sparks in every plugin config that lets you change text.
  3. For hardcoded messages, write rewires pointing to the same sparks.

Every player reads their own game language, picked up automatically from their settings.

A living tab list and scoreboard

your scoreboard plugin's config
title: "<sc><spark:name></sc>"
lines:
  - "<spark:divider>"
  - "<spark:soft>Rank</spark> <spark:rank>"
  - "<spark:soft>Balance</spark> <yellow><spark:balance>"
  - "<spark:soft>Ping</spark> <spark:ping>"
  - "<spark:soft>Server</spark> <spark:tps>"
  - "<spark:divider>"
  - "<spark:tips>"
  - "<center:70><dark_gray><clock:'HH:mm'>"

Every player sees their own rank, balance and ping in matching colors, the tips rotate, and the clock ticks. Pulse keeps the last two lines moving even if your board plugin never resends them.

Shops with sale prices

Put a formula spark like sale: {0} * 0.8 next to the normal price in your shop's lore and messages, fed by the shop's own placeholder. When the sale ends, change one number.

Quick recipes

One palette for everything

Four color sparks used in every plugin. Rebranding becomes a four-line change.

Quiet chat

Start spammy confirmations with <actionbar> to move them out of chat.

Reward moments

<silent><sound:entity.player.levelup><title:'<gold>Level up!'> turns a dull line into a moment.

One broadcast, many ranks

A permission spark in a broadcast shows each reader their own rank.

Holograms

Any hologram plugin using text displays or name tags gets full MiniMessage.

Multi-language server

Locale sparks plus rewires, and every player reads their own language.

When something's off

My tags show up as plain text

Check that the surface is on in config.yml. Then try the same text with /lightning parse. If it works there, the plugin is probably sending the message in a way Lightning doesn't cover yet. Turn on /lightning debug and look at the console.

A cycle or clock doesn't move

Make sure pulse isn't 0, and that the line is on a surface Pulse covers. Turn on debug to see if the line was dropped.

Something got charged that shouldn't have

It contains a word that happens to be a real tag. Switch to detect: marker, or reword that line.

A rewire doesn't match

Turn on /lightning inspect and compare the real text with your rule. Vanilla messages need lang, since their text is translated on the player's side.

A rewire on a kick or ban screen doesn't match

Test the rule with /lightning parse kicks <the screen's text>, using \n for line breaks. If it works there, run /lightning debug, get kicked, and read the exact text and key Lightning saw in the console.

A spark shows nothing

Run /lightning sparks to check it loaded. The console lists any spark that failed and why.

7. <face> shows a smiley

Your server is older than 1.21.9. Faces need 1.21.9 or newer.

Items lost their formatting in creative

That's on purpose. Lightning skips creative players so its formatting never gets saved onto real items.

I want to change the escape menu or other game buttons

Menus like "Back to Game" are drawn by the player's own game from its language files, and the server never sends them. No plugin can change them that way. A resource pack with your own language file can.

A replace rule works in one place but not another

Replace rules match within one colored piece of text. If a plugin colors half a word differently, or splits a line into pieces, the words aren't in one piece anymore. /lightning inspect and "What Lightning reads" show you how the text is split. A contains or regex rule reads the whole message at once, so it still matches, but it replaces the whole message.

My old config doesn't load

Lightning was rewritten in 0.2.0, so configs from earlier versions can't be read. Follow Coming from an older version to start fresh.

Still stuck?

Come say hi on our Discord. Lightning is free and in beta, and every report helps make it better.

Did this page help?

Last updated on