Flectone LogoFlectonePulse

Replacement

Used to replace triggers with specific values

ping

tps

online

coords

stats

item

url

image

spoiler

bold

italic

underline

Information

How to make your own replacement? For example :ip:, which is replaced with the server address

In message.yml add the trigger to format.replacement.triggers

triggers:
  server_ip: "(?<!\\\\)(?<!\\S)(?i):ip:(?!\\S)"

In localizations → language.yml add what the trigger is replaced with to message.format.replacement.values

values:
  server_ip: "<fcolor:2><u><click:copy_to_clipboard:'flectone.net'>flectone.net</click></u>"

In permission.yml add a permission to message.format.replacement.values

values:
  server_ip:
    name: "flectonepulse.module.message.format.replacement.server_ip"
    type: "TRUE"

Reload FlectonePulse with /flectonepulse reload and write :ip: in chat

(?<!\\\\)(?<!\\S) and (?!\\S) are needed so that the trigger only works as a separate word and can be escaped with \\


Localization

Path localizations → language.yml → message.format.replacement
replacement:
  spoiler_symbol: "-"
  values:
    ping: "<fcolor:2><value>"
    tps: "<fcolor:2><value>"
    online: "<fcolor:2><value>"
    coords: "<fcolor:2><x> <y> <z>"
    stats: "<color:#ff7171><hp>H</color> <color:#3de0d8><armor>A <color:#e33059><attack>D <color:#4eff52><exp>E <color:#f0a01f><food>F"
    skin: "<click:open_url:\"<message_1>\"><hover:show_text:\"<fcolor:2><pixels>\"><fcolor:2><u>Skin</u></hover></click>"
    item: "<fcolor:2>[<message_1>]"
    url: "<click:open_url:\"<message_1>\"><hover:show_text:\"<fcolor:2>Open url <br><u><message_1>\"><fcolor:2><u>Url</u></hover></click>"
    image: "<click:open_url:\"<message_1>\"><hover:show_text:\"<fcolor:2><pixels>\"><fcolor:2><u>Image</u></hover></click>"
    spoiler: "<hover:show_text:\"<fcolor:2><message_1>\"><fcolor:2><symbols></hover>"
    bold: "<b><message_1></b>"
    italic: "<i><message_1></i>"
    underline: "<u><message_1></u>"
    obfuscated: "<obf><message_1></obf>"
    strikethrough: "<st><message_1></st>"

spoiler_symbol

The symbol that will replace each letter of the words in a spoiler

values

A list of messages where the key is the name and the value is what will be shown instead of the trigger

Inside the values you can use placeholders that depend on the replacement

PlaceholderWhere it is used
<value>ping, tps, online – the value itself
<x>, <y>, <z>coords – the player's coordinates
<hp>, <armor>, <attack>, <exp>, <food>stats – the player's statistics
<pixels>skin and image – the image itself, built out of symbols
<message_1>The text found by the trigger (a link, an item name and so on)
<symbols>spoiler – the hidden text where every letter is replaced with spoiler_symbol

Setting

Path message.yml → format.replacement
replacement:
  enable: true
  triggers:
    ping: "(?<!\\\\)(?<!\\S)%ping%(?!\\S)"
    tps: "(?<!\\\\)(?<!\\S)%tps%(?!\\S)"
    online: "(?<!\\\\)(?<!\\S)%online%(?!\\S)"
    coords: "(?<!\\\\)(?<!\\S)%coords%(?!\\S)"
    stats: "(?<!\\\\)(?<!\\S)%stats%(?!\\S)"
    skin: "(?<!\\\\)(?<!\\S)%skin%(?!\\S)"
    item: "(?<!\\\\)(?<!\\S)%item%(?!\\S)"
    image: "(?<!\\\\{2,})(?<=\\s|^)((?i:https?)://(?:[a-zA-Z0-9-@]{1,63}\\.)*(?i:imgur\\.com|discordapp\\.net|cdn\\.discordapp\\.com)/[\\w\\-./?=&%!#$'()*+,;:=~@]*\\.(?:jpg|jpeg|png|gif|webp|bmp))(?!\\S)"
    url: "(?<!\\\\{2,})(?<=\\s|^)((?i:https?|ftp)://(?:[\\p{L}a-zA-Z0-9-@]{1,63}\\.)+[\\p{L}a-zA-Z]{2,6}(?::\\d{1,5})?(?:/[\\w\\-./?=&%!#$'()*+,;:=~@]*)?)(?!\\S)"
    spoiler: "(?<!\\S)\\|\\|([^\\|\\|\\n]+)\\|\\|(?!\\S)"
    bold: "(?<!\\S)\\*\\*([^\\*\\*\\n]+)\\*\\*(?!\\S)"
    italic: "(?<!\\S)\\*([^\\*\\n]+)\\*(?!\\S)"
    underline: "(?<!\\S)__([^__\\n]+)__(?!\\S)"
    obfuscated: "(?<!\\S)\\?\\?([^\\?\\?\\n]+)\\?\\?(?!\\S)"
    strikethrough: "(?<!\\S)~~([^~~\\n]+)~~(?!\\S)"

enable

Enables or disables the functionality of the module

triggers

Information

A replacement can also be inserted manually into any message with the <replacement:name> tag, for example <replacement:ping> or <replacement:tps>. For url, image and spoiler a second argument is required, for example <replacement:url:'https://flectone.net'>

A list of all available triggers, where the key is the name and the value is the trigger itself in regular expression format

Warning

If you add a new trigger, you must also add it to the localization file to define what it will be replaced with.


Permissions

Path permission.yml → message.format.replacement
replacement:
  name: "flectonepulse.module.message.format.replacement"
  type: "TRUE"
  values:
    smile:
      name: "flectonepulse.module.message.format.replacement.smile"
      type: "TRUE"
    big_smile:
      name: "flectonepulse.module.message.format.replacement.big_smile"
      type: "TRUE"
    sad:
      name: "flectonepulse.module.message.format.replacement.sad"
      type: "TRUE"
    ok_hand:
      name: "flectonepulse.module.message.format.replacement.ok_hand"
      type: "TRUE"
    thumbs_up:
      name: "flectonepulse.module.message.format.replacement.thumbs_up"
      type: "TRUE"
    thumbs_down:
      name: "flectonepulse.module.message.format.replacement.thumbs_down"
      type: "TRUE"
    cool_smile:
      name: "flectonepulse.module.message.format.replacement.cool_smile"
      type: "TRUE"
    cool_glasses:
      name: "flectonepulse.module.message.format.replacement.cool_glasses"
      type: "TRUE"
    clown:
      name: "flectonepulse.module.message.format.replacement.clown"
      type: "TRUE"
    heart:
      name: "flectonepulse.module.message.format.replacement.heart"
      type: "TRUE"
    laughing:
      name: "flectonepulse.module.message.format.replacement.laughing"
      type: "TRUE"
    confused:
      name: "flectonepulse.module.message.format.replacement.confused"
      type: "TRUE"
    happy:
      name: "flectonepulse.module.message.format.replacement.happy"
      type: "TRUE"
    angry:
      name: "flectonepulse.module.message.format.replacement.angry"
      type: "TRUE"
    ascii_idk:
      name: "flectonepulse.module.message.format.replacement.ascii_idk"
      type: "TRUE"
    ascii_angry:
      name: "flectonepulse.module.message.format.replacement.ascii_angry"
      type: "TRUE"
    ascii_happy:
      name: "flectonepulse.module.message.format.replacement.ascii_happy"
      type: "TRUE"
    ping:
      name: "flectonepulse.module.message.format.replacement.ping"
      type: "TRUE"
    tps:
      name: "flectonepulse.module.message.format.replacement.tps"
      type: "TRUE"
    online:
      name: "flectonepulse.module.message.format.replacement.online"
      type: "TRUE"
    coords:
      name: "flectonepulse.module.message.format.replacement.coords"
      type: "TRUE"
    stats:
      name: "flectonepulse.module.message.format.replacement.stats"
      type: "TRUE"
    skin:
      name: "flectonepulse.module.message.format.replacement.skin"
      type: "TRUE"
    item:
      name: "flectonepulse.module.message.format.replacement.item"
      type: "TRUE"
    url:
      name: "flectonepulse.module.message.format.replacement.url"
      type: "TRUE"
    image:
      name: "flectonepulse.module.message.format.replacement.image"
      type: "TRUE"
    spoiler:
      name: "flectonepulse.module.message.format.replacement.spoiler"
      type: "TRUE"
    bold:
      name: "flectonepulse.module.message.format.replacement.bold"
      type: "TRUE"
    italic:
      name: "flectonepulse.module.message.format.replacement.italic"
      type: "TRUE"
    underline:
      name: "flectonepulse.module.message.format.replacement.underline"
      type: "TRUE"
    obfuscated:
      name: "flectonepulse.module.message.format.replacement.obfuscated"
      type: "TRUE"
    strikethrough:
      name: "flectonepulse.module.message.format.replacement.strikethrough"
      type: "TRUE"

name

Permission name

type

Permission type

TypeExplanation
TRUEAvailable to any player
FALSEAvailable to no one, must be granted separately (e.g., using LuckPerms)
OPAvailable to server operators
NOT_OPAvailable to NON-operators of the server

values

List of replacements with permissions

Last update August 14, 2026
Edit on Github

On this page

Authors of page