Skip to content

VPMessage.yml

Soreth edited this page Oct 21, 2020 · 15 revisions

This file is usable by all plugins that use the VanillaPlus api. You'll find everything you need to configure everything related to messages in this file.

Starting with the message components, understanding what this is is essential for the use of the plugin because it is used for everything that supports translation. It should not be confused with the messages that are intended to be sent to the player.

Translation system

Details

We'll start with the translation part of the plugin, the initial plugin I created was called Language and simply allowed the translation of the messages I was using as well as a translation support for items for another plugin but we'll come back to that in due time.

So VanillaPlus has a translation system, most of the texts in the plugin are configurable and translatable. To do this, when there is a text to display you can write it yourself, if you have disabled translation, you can write it directly. Otherwise, you have to write the path to this message in the translation file, or its alias if you have created one in the appropriate file. These are the message components explained below.

Moreover, it is possible to separate the translation files, in this way, it increases the ease of reading and organizing your messages, on the other hand, there will be a negligible drop in performance when loading the plugin.

The translation files are located in the Local folder of your plugin, the file must be named with the code of the desired language and end with .yml. You can put a subdirectory in the Local folder, the name of this one will be added to the paths present in the files it contains. If I take this example :

Locale/en_GB.yml :

FORMAT:
 ENABLED: "&a✔ Enabled"

It's the same as this:

Locale/FORMAT/en_GB.yml :

ENABLED: "&a✔ Enabled"

It is only a question of organization, it is up to you to separate or not the translation files.

NB: nothing prevents you from using the code of a language you don't use to replace a language I wouldn't have thought to add.

So I see you coming, just to translate you have to use a multitude of files, so I stop you immediately because it's not the case, you can use all these files or just use the translation file. Moreover, there is a majority of text that already have a predefined path so that you can just configure it but remain modifiable if you want to reuse an existing translation.

This system is based on a cache that will load in RAM all messages when the plugin is loaded to limit disk access. In order to limit the amount of RAM used, you can choose to reuse the same message several times, this will create a single copy of this message that will be used in the different places needed.

Message Components

As I said, message components are meant to be translatable but also, as their name indicates, to be components of the messages and in general will be used for the majority of the texts used by my plugins.

COMPONENTS_SETTINGS

Here you will find the parameters related to the message components.

LANG

This is the code of the main language used by the server, if not set will be en_GB.

LANG: en_GB

Supported language
Language name Language code
AFRIKAANS af_ZA
ARABIC ar_SA
ARMENIAN hy_AM
BAHASA_INDONESIA id_ID
BULGARIAN bg_BG
CATALAN ca_ES
CHINESE_SIMPLIFIED zh_CN
CHINESE_TRADITIONAL zh_TW
CROATIAN hr_HR
CZECH cs_CZ
DANISH da_DK
DUTCH nl_NL
ENGLISH en_GB
ENGLISH_AUSTRALIAN en_AU
ENGLISH_CANADIAN en_CA
ESPERANTO eo_EO
ESTONIAN et_EE
FINNISH fi_FI
FRENCH fr_FR
FRENCH_CANADIAN fr_CA
GALICIAN gl_ES
GEORGIAN ka_GE
GERMAN de_DE
GREEK el_GR
HEBREW he_IL
HUNGARIAN hu_HU
ICELANDIC is_IS
ITALIAN it_IT
JAPANESE ja_JP
KOREAN ko_KR
LITHUANIAN lt_LT
LATVIAN lv_LV
MALTI mt_MT
NORWEGIAN nb_NO
PIRATE_SPEAK en_PT
POLISH pl_PL
PORTUGUESE pt_PT
ROMANIAN ro_RO
RUSSIAN ru_RU
SERBIAN sr_SP
SLOVENIAN sl_SI
SPANISH es_ES
SPANISH_ARGENTINEAN es_AR
SPANISH_MEXICO es_MX
SPANISH_URUGUAY es_UY
SPANISH_VENEZUELA es_VE
SWEDISH sv_SE
THAI th_TH
TURKISH tr_TR
UKRAINIAN uk_UA
VIETNAMESE vi_VI

IS_FLAT

This option allows you to disable translation files, if this option is enabled, you don't have to configure anything else here.

IS_FLAT: false

LANG_LIST

All the additional languages on your server. If you don't want translation you can remove this.

LANG_LIST:
 - fr_FR
USE_DEFAULT_PATH

Boolean value, default is true. This option allows the use of default translation paths for certain message components.

USE_DEFAULT_PATH: true

FALLBACK_PLUGIN

This option allow you to configure a FALLBACK_PLUGIN, that way if your translation ain't found, the API will search in the fallback plugin's translation, If the fallback plugin doesn't have the translation either, it will look in its fallback plugin if it has one and so on.

FALLBACK_PLUGIN: VanillaPlus

COMPONENTS_LIST

Here you can configure message components that can be reused later. These are aliases, so you can use the name of the message component instead of its location. This feature is disabled if the translation is flat. Key can only have latin alphanumeric character, -, . or _ up to 128 character, can't start or end with . and must contain a .. If the given string don't match any of theses rules, it'll be used as raw translation ( usefull for in place format ).

COMPONENTS_LIST:
 #This way, if we use WELCOME as a value for a message component in another configuration file, it will redirect to `FORMAT.WELCOME`.
 WELCOME: FORMAT.WELCOME
Type list

ACTION ( Powered )

Will send message in action's bar ( minecraft add api in 1.11 but created it longer ago )

Example :
 ...
  ACTION: "This will be displayed in action's bar."

or :

 ...
  ACTION: "¤¤5¤¤This will be displayed in action's bar."

By adding this prefix, the action message will have priority 5 ( can replace 5 by any value ) and will be sent only if the last action message was sent more than 2 second ago or has lower or equal priority.

Nb : if you don't provide the priority it will be 0.

BASE

Will send message in client chat.

Example :
 ...
  BASE: "A basic message."

BB ( Powered )

Currently work only with spigot api.

Will send message with json features but more friendly user. I know Codecrafter47 has already create something similar but not improved. Since players can edit chat size I not added line size but mine don't send empty part when change, improving message up to 80% less char sent when lot of BB.

Example :
Bold
 ...
  BB: "[b]This is bold[/b]"
Italic
 ...
  BB: "[i]This is italic[/i]"
Underlined
 ...
  BB: "[u]This is underlined[/u]"
Strikeout
 ...
  BB: "[s]This is strikeout[/s]"
Color
 ...
  BB: "[color=red]This is red[color=blue] this is blue[/color] but this is red[/color]"
Url
 ...
  BB: "Tips me [url=paypal.me/Soreth]here[/url]"

or

 ...
  BB: "Tips me [url]paypal.me/Soreth[/url]"
Command
 ...
  BB: "Click [command=/spawn]here[/command]"

or

 ...
  BB: "Do [command]/spawn[/command]"
Suggest

If you click on suggest tag the suggestion will replace you current message.

 ...
  BB: "[suggest=/msg %sender_name%]%sender_name%[/suggest]"

or

 ...
  BB: "[suggest]/msg %sender_name%[/suggest]"
Insert

If you caps + click on insert tag the insertion message will be inserted in your current message.

 ...
  BB: "[insert=Why are you doing this ?]Hi %sender_name%[/insert]"

or

 ...
  BB: "[insert]Hi[/insert]"
Hover

If you move your cursor on hover tag the hover message will be displayed.

 ...
  BB: "[hover=%sender_title_lore%]%sender_title_form%[/hover]%sender_name%"

COMMAND ( Powered )

Will execute the command as the client.

Example :
 ...
  COMMAND: "teleport %sender_name%"

EFFECT ( Powered )

Will apply potion effect to receiver.

Format is : EFFECT_TYPE:DURATION:LEVEL:AMBIENT:PARTICLES.

Note that I use level, not amplifier, that mean level 1 is level 1 not as minecraft where amplifier 1 mean level 2. Can use \n for multiple effects.

Example :
 ...
  EFFECT: "SPEED:1000:2:false:true"

GLOBAL_SOUND

Will play sound where the receiver is.

Format is : SOUND:VOLUME:PITCH.

Sound can be either a minecraft sound path like entity.enderman.stare, a custom minecraft sound path like atryom.die or a bukkit sound.

Note, if sound is a custom minecraft sound, that'll do something only if client has custom texture-pack. For bukkit sounds, must be only uppercase with underscores, if so, will log if didn't found a sound.

Nb : Be carefull with sound since they changed 3 times since 1.8.

Example :
 ...
  GLOBAL_SOUND: "ARROW_HIT:1:2" #1.8 Sound
 ...
  GLOBAL_SOUND: "random.successful_hit:1:2"

SOUND

Will send sound to receiver.

Format is : SOUND:VOLUME:PITCH.

Sound can be either a minecraft sound path like entity.enderman.stare, a custom minecraft sound path like atryom.die or a bukkit sound.

Note, if sound is a custom minecraft sound, that'll do something only if client has custom texture-pack. For bukkit sounds, must be only uppercase with underscores, if so, will log if didn't found a sound.

Nb : Be carefull with sound since they changed 3 times since 1.8.

Example :
 ...
  SOUND: "ARROW_HIT:1:2" #1.8 Sound
 ...
  SOUND: "random.successful_hit:1:2"

SUBTITLE

Will send subtitle to receiver.

Note, if you don't send a title message after, the minecraft's mechanic do that will not display anything. So if you want send only subtitle you must send an empty title after.

Example :
 ...
  SUBTITLE: "This is a subtitle"

TAB

Will send header and footer to receiver.

To split message you must put \n\n, text before will be header and after will be footer.

Example :
 ...
  TAB: "This is a header \n This is new line on header \n\n This is footer\n This new line in footer"

TITLE

Will send title to receiver.

Format is : FADE_IN:STAY:FADE_OUT:TITLE

Note, if you have send subtitle to receiver, it will be displayed for each next title until you send an empty subtitle. FADE_IN, STAY and FADE_OUT are in second.

Example :
 ...
  TITLE: "10:5:2:This is a title"

Messages

Unlike message components, messages are designed to be sent to the player, for this reason they have the ability to choose between the different types of existing message component defined above.

In this way you will be able to fully configure the experience of your players.

MESSAGE_SETTINGS

Here you will find the parameters related to the messages.

FALLBACK_PLUGIN

This option allow you to configure a FALLBACK_PLUGIN, that way if your message ain't found, the API will search in the fallback plugin's messages, If the fallback plugin doesn't have the message either, it will look in its fallback plugin if it has one and so on.

FALLBACK_PLUGIN: VanillaPlus

MESSAGE_LIST

Here you can configure message that can be reused later. These are aliases, so you can use the name of the message instead of its location. Key can only have latin alphanumeric character, - or _ up to 24 character.

Common format for a message is :

 `alias`:
  `component type`: `component value`
  #Optional, if not set will be `BASE` type.
  TYPE: `message's type`
  #Optional
  `component type`: `component value`
 # for short format with only `BASE` component and `BASE` message type.
 `alias`: `component value`
Example
MESSAGE_LIST:
 #This way, if we use PLAYER_LIST as a value for a message in another configuration file, it will redirect to a `TAB` message with `FORMAT.TAB` as content.
 PLAYER_LIST:
  TAB: FORMAT.TAB
Type list

BASE

Common type, you'll use this one almost every time. Require node TYPE with BASE as value and list of message component type and with message as value.

Example
 ...
  TYPE: BASE
  SOUND: "ARROW_HIT:1:2"
  ACTION: "This will be displayed in action's bar."

CHANNEL ( Powered )

This type allow you edit receiver of message, can be useful sometimes. Require node TYPE with CHANNEL as value, CHANNEL with channel name as value, REMOVE_SENDER with true ( as default value ) if you want remove sender from receiver list false otherwise and list of message component type.

Example
 ...
  TYPE: CHANNEL
  CHANNEL: STAFF
  REMOVE_SENDER: true
  NOTE: "ARROW_HIT:1:2"
  ACTION: "This will be displayed in staff's action's bar."

DELAYED ( Powered )

This type allow you send delayed message, require TYPE with DELAYED as value, tick delay as node for other message.

Example
 ...
  TYPE: DELAYED
  0:
   TYPE: BASE
   NOTE: "ARROW_HIT:1:2"
   ACTION: "First message displayed in action's bar."
  20: "Second message displayed in chat"
  50:
   #You can combine message type.
   TYPE: CHANNEL
   CHANNEL: STAFF
   REMOVE_SENDER: false
   SUBTITLE: "This is third message subtitle."
   TITLE: "10:20:10:&cHi staff, you can see this."

GLOBAL

This type allow you edit receiver of message as all player online ( created to simplify channel ), can be useful sometimes. Require node TYPE with GLOBAL as value and list of message component type. Nb : work only with message send to a specific player or as a player.

Example
 ...
  TYPE: GLOBAL
  ACTION: "This will be displayed in all player action's bar."

MULTI ( Powered )

This type allow you send multiple message at same time, require TYPE with MULTI as value and node for other message.

Example
 ...
  TYPE: MULTI
  #Key is only to allow bukkit fully handle it.
  1:
   TYPE: BASE
   NOTE: "ARROW_HIT:1:2"
   ACTION: "First message displayed in action's bar."
  2: 
   TYPE: BASE
   NOTE: "ARROW_HIT:1:0.5"

OTHER

This type allow you edit receiver of message as other player only ( created to simplify channel ), can be useful sometimes. Require node TYPE with OTHER as value and list of message component type. Nb : work only with message send to a specific player or as a player.

Example
 ...
  TYPE: OTHER
  ACTION: "This will be displayed in other player's action's bar."

REPEAT ( Powered )

This type allow you send same message lots of time, require TYPE with REPEAT as value, REPEAT_AMOUNT with amount of repeat as value, REPEAT_TIME with amount of tick between two message and list of message component type and with message as value.

Example
 ...
  TYPE: REPEAT
  REPEAT_AMOUNT: 10
  REPEAT_TIME: 30
  ACTION: "This message will be displayed in action bar for 30 second"

REQUIREMENT ( Powered )

This type allow you send two messages, one for the players who validate the requirement and one for the others players, require TYPE with REQUIREMENT as value, REQUIREMENT with the required requirement as value, REQUIREMENT_MESSAGE with the message for player with the requirement as value and list of message component type and with message as value.

Example
 ...
  TYPE: REPEAT
  REQUIREMENT: ADMIN
  REQUIREMENT_MESSAGE: 
   ACTION: "This message will be displayed in action bar for admin."
  TITLE: "10:5:2:This message will be displayed as title for other player."

SELF

This type allow you edit receiver of message as sender only ( created to simplify channel ), can be useful sometimes. Require node TYPE with SELF as value and list of message component type. Nb : work only with message send to a specific player or as a player.

Example
 ...
  TYPE: SELF
  ACTION: "This will be displayed in your action's bar."

Nb : In the example above, I used direct translation to prevent you from seeing only path, but if you want translate your message you still need to provide message component with translation path.


Placeholder

Now that we've seen all this, let's move on to the placeholders. The principle of placeholders is, as their name implies, to hold the place. In concrete terms, they are there to be replaced afterwards by something else.

There are three types of placeholders.

Static placeholders

There are the static placeholders which will be replaced directly at the plugin startup because they will always return the same thing.

General placeholders

The general placeholders, which will display the same thing regardless of the player, depending or independently of the language.

Type list

Java version

Will replace `%java_version% by the server java version .

Example :
Your server use java version %java_version%.

User placeholders

And finally the user placeholders, which will display information about the user who is designated by a [tag] which can take several values depending on the messages to define different people related to it. In each of them, it is possible to replace [tag] by player to display the information of the person who receives the message.

Type list

Absorption ( Powered )

Will replace %[tag]_abso% or %[tag]_abso_[rate]% by the [tag]'s absorption's amount multiplied by [rate].

[rate] is a double value like 1, 0.5, 14.375, ...

The final amount is rounded with one value after dot, like 4.6, only if rate had one ., else will round the value.

Nb : useless 0 isn't allowed exepted for 1.0.

Example :
You have %player_abso_0.5% absorption's heart.

Achievement ISO date ( Powered )

Will replace %[tag]_achievement_date_iso_[id]% by the iso date [tag] got the achievement [id] ( 2020-07-24 ), can also display time if the achievement store it (2020-07-24T22:49:40).

Will return empty text if [tag] didn't got the achievement.

[id] is the achievement alias id.

Example :
You have unlocked the god success the %player_achievement_data_iso_god%.

Border radius ( Powered )

Will replace %[tag]_border_radius% by the [tag]'s world border radius ( half of the border size ).

Example :
The world border is -%player_border_radius%/+%player_border_radius% blocs from the center.

Currency

Will replace %[tag]_currency_[id]% by [tag]'s currency's amount formatted and name.

[id] is the alias id of currency you want to display.

Example :
You have %player_currency_1%.

Currency amount

Will replace %[tag]_currency_amount_[id]% by [tag]'s currency's amount formatted without name.

[id] is the alias id of currency you want to display.

Example :
You have %player_currency_1% Coin.

Id

Will replace %[tag]_id% by [tag]'s id. Id is also your position on server join.

Example :
Your the %player_id%° player on this server.

Life ( Powered )

Will replace %[tag]_life% or %[tag]_life_[rate]% by the [tag]'s life's amount multiplied by [rate].

[rate] is a double value like 1, 0.5, 14.375, ...

The final amount is rounded with one value after dot, like 4.6, only if rate had one ., else will round the value.

Nb : useless 0 isn't allowed exepted for 1.0.

Example :
You have %player_abso_0.5% absorption's heart.

Name

Will replace %[tag]_name% by the [tag]'s name or nickname if is nicknamed.

Example :
Hi %player_name% and welcome on my server.

Ping ( Powered )

Will replace %[tag]_ping% by the [tag]'s ping in millisecond.

Example :
Your ping is %player_ping% ms.

Position ( Powered )

Will replace %[tag]_pos_x% by the [tag]'s x coordinate.

Will replace %[tag]_pos_y% by the [tag]'s y coordinate.

Will replace %[tag]_pos_z% by the [tag]'s z coordinate.

Example :
I know your location is x : %player_pos_x%, y : %player_pos_y% and z : %player_pos_z%.

Prefix

Will replace %[tag]_prefix% by the [tag]'s prefix if not nicknamed.

Will replace %[tag]_prefix_"[replacement]"% by the [tag]'s prefix if not nicknamed or [replacement].

Note, replacement can't have "% inside you still can do something like this if you need it &7"&7% ( add the same color between them ). Since I added this fix, long replacement can overload your server, by long I mean thousands of char but be careful.

Example :
Hi %player_prefix_"you're nicknamed and you're nickname is : "%%player_name%.

Prefix color

Will replace %[tag]_prefix_color% by the [tag]'s prefix color if not nicknamed.

Will replace %[tag]_prefix_color_"[replacement]"% by the [tag]'s prefix color if not nicknamed or [replacement].

Note, replacement can't have "% inside you still can do something like this if you need it &7"&7% ( add the same color between them ). Since I added this fix, long replacement can overload your server, by long I mean thousands of char but be careful.

Prefix color is the actives color at the end of the prefix.

Example :
Hi %player_prefix_color_"&8[&c-&8]&c"%%player_name%.

Real name

Will replace %[tag]_real_name% by the [tag]'s name even if nicknamed.

Example :
Hi %player_real_name%.

Real prefix

Will replace %[tag]_real_prefix% by the [tag]'s prefix even if nicknamed.

Example :
Hi %player_real_prefix%%player_real_name%.

Real prefix color

Will replace %[tag]_real_prefix_color% by the [tag]'s prefix's color even if nicknamed.

Prefix color is the actives color at the end of the prefix.

Example :
Hi %player_real_prefix_color%%player_real_name%.

Real suffix

Will replace %[tag]_real_suffix% by the [tag]'s suffix even if nicknamed.

Example :
Hi %player_real_suffix%%player_real_name%.

Real suffix color

Will replace %[tag]_real_suffix_color% by the [tag]'s suffix's color even if nicknamed.

Suffix color is the actives color at the end of the suffix.

Example :
Hi %player_real_suffix_color%%player_real_name%.

Setting current

Will replace %[tag]_current_setting_[setting]% by the [tag]'s [setting]'s value.

Example :
Your mp are %player_current_setting_MP%.

Setting next

Will replace %[tag]_next_setting_[setting]% by the [tag]'s next [setting]'s value.

Example :
Your mp are %player_current_setting_MP% click to change to %player_next_setting_MP%.

Setting previous

Will replace %[tag]_previous_setting_[setting]% by the [tag]'s previous [setting]'s value.

Example :
You set your mp from %player_previous_setting_MP% to %player_current_setting_MP%.

Stat ratio ( Powered )

Will replace %[tag]_stat_ratio_[id1]/[id2]% by the result of : [tag]'s stat [id1] amount / [tag]'s stat [id2] amount.

[id1] is stat alias id.

[id2] is stat alias id.

Example :
Your kdr is %player_stat_ratio_kill/death%.

Stat session

Will replace %[tag]_stat_session_value_[id]% by [tag]'s stat session's amount.

Session is determined by KEEP_IN_MEMORY time.

[id] is the alias id of the stat.

Example :
You have %player_stat_session_value_kill% kill this session.

Stat value

Will replace %[tag]_stat_value_[id]% by [tag]'s stat's value.

[id] is the alias id of the stat.

Example :
You have %player_stat_value_kill% kill.

Suffix

Will replace %[tag]_suffix% by the [tag]'s suffix if not nicknamed.

Will replace %[tag]_suffix_"[replacement]"% by the [tag]'s suffix if not nicknamed or [replacement].

Note, replacement can't have "% inside you still can do something like this if you need it &7"&7% ( add the same color between them ). Since I added this fix, long replacement can overload your server, by long I mean thousands of char but be careful.

Example :
Hi %player_name%%player_suffix_"&7 <== this guy is nicknamed"%.

Suffix color

Will replace %[tag]_suffix_color% by the [tag]'s suffix color if not nicknamed.

Will replace %[tag]_suffix_color_"[replacement]"% by the [tag]'s suffix color if not nicknamed or [replacement].

Note, replacement can't have "% inside you still can do something like this if you need it &7"&7% ( add the same color between them ). Since I added this fix, long replacement can overload your server, by long I mean thousands of char but be careful.

Suffix color is the actives color at the end of the suffix.

Example :
Hi %player_name%%player_suffix_color_"&8[&c<&7-&8]&c"%.

Title amount ( Powered )

Will replace %[tag]_title_amount_[value]% by the [tag]'s title's amount.

[value] is title's rank, if 0 count all owned title.

Example :
You have %player_title_amount_0% title including %player_title_amount_1% in rank 1.

Title name

Will replace %[tag]_title_name% by the [tag]'s title's name.

Example :
Hi %player_title_name% %player_name%.

Title name format

Will replace %"[prefix]"_[tag]_title_name_form_"[suffix]"% by the [tag]'s title's name with prefixed by [prefix] and suffixed by [suffix].

Note, [prefix] can't have "_ inside you still can do something like this if you need it &7"&7_ ( add the same color between them ). Since I added this fix, long replacement can overload your server, by long I mean thousands of char but be careful.

Note, [suffix] can't have "% inside you still can do something like this if you need it &7"&7% ( add the same color between them ). Since I added this fix, long replacement can overload your server, by long I mean thousands of char but be careful.

Example :
Hi %"&8["_player_title_name_form_"&8]"%%player_name%.

Title description

Will replace %[tag]_title_lore% by the [tag]'s title's description.

Example :
%player_title_name_form% -> %player_title_lore%.

Finally, there are placeholders that are already created and usable and others that can be created in the configuration file.

PLACEHOLDER_LIST

Here you can configure placeholder that can be reused later in message components. Key can only have latin alphanumeric character, - or _ up to 24 character.

Common format is :

 #Key is just for bukkit config support here.
 `key`:
  TYPE: `placeholder's type`
  PLACEHOLDER: `placeholder`
  REPLACEMENT: `replacement`
 # for short format with only `BASE` placeholder.
 # Nb : with this format the `placeholder` is limited to 24 character
 `placeholder`: `replacement`

Nb : placeholder will be formated like this %placeholder% and search this exact char sequence.

Example
PLACEHOLDER_LIST:
 VPP: "&8[&cVanillaPlus&8]&7"
 networkname: VPServer
 1:
  TYPE: BASE
  PLACEHOLDER: "tipsurl"
  REPLACEMENT: "http://www.paypal.me/Soreth"
 twitterurl: "https://twitter.com/Soreth__"
 
Type list

BASE

This type allow you to create static placeholder.

Example
 ...
  TYPE: BASE
  PLACEHOLDER: "tipsurl"
  REPLACEMENT: "http://www.paypal.me/Soreth"

COMPONENT ( Powered )

This type allow you to create static translatable placeholder.

Example
 ...
  TYPE: COMPONENT
   PLACEHOLDER: "currencytag"
   REPLACEMENT: "FORMAT.CURRENCY"

Channel

To finish with this file, it is possible to create channels, this way you will be able to separate the different players in different channels if you want or simply change the appearance of the minecraft channel.

CHANNEL_SETTINGS

Here you will find the parameters related to the channels.

FALLBACK_PLUGIN

This option allow you to configure a FALLBACK_PLUGIN, that way if your channel ain't found, the API will search in the fallback plugin's channels, If the fallback plugin doesn't have the channel either, it will look in its fallback plugin if it has one and so on.

FALLBACK_PLUGIN: VanillaPlus

CHANNEL_LIST

This node is optional, it allow you add some requirement to join some channel on server join.

The node is the name of the channel.

Each node have :

REQUIREMENT is the requirement used to join this channel.

TALK if true will talk in this channel by default, otherwise will just listen in this channel.

Example
...
 CHANNEL_LIST:
  STAFF:
   REQUIREMENT: STAFF
   TALK: true

CHANNEL_LIST

Here you can configure channels. Key can only have latin alphanumeric character, - or _ up to 24 character. Each channel has node as name.

CHANNEL_LIST:
 `name`:
 ...
Type list

BASE

This channel will send message only to player who listen it.

ALLOW_IN default false, if true player will can talk in channel, else if ALLOW_OUT is true player will talk in broadcast.

ALLOW_OUT default false, if true player will can talk in broadcast with ! or *, if ALLOW_OUT and ALLOW_IN are false channel is muted.

TRY_OUT default false, if true instead of getting alone message, will first try if can send message in broadcast.

MIN_CHAR default 2, the amount of char required to send the message.

ALONE_MESSAGE message's path, will send to players who talk alone. sender as [tag] for sender placeholder.

JOIN_MESSAGE message's path, will send to channel's players when a player join the channel. sender as [tag] for joiner placeholder.

LEAVE_MESSAGE message's path, will send to channel's players when a player leave the channel. sender as [tag] for leaver placeholder.

PRIVATE_JOIN_MESSAGE message's, default VOID, will send to player who join the channel.

PRIVATE_LEAVE_MESSAGE message's default VOID, will send to player who leave the channel.

MUTED_MESSAGE message's path, default VOID, will send to players who talk without talk power. sender as [tag] for sender placeholder.

MUTE_IN_MESSAGE message's path, default VOID, will send to channel's players when private become muted.

MUTE_OUT_MESSAGE message's path, default VOID, will send to channel's players when broadcast become muted.

TALK_IN_MESSAGE message's path, default VOID, will send to channel's players. sender as [tag] for sender placeholder, %message% for sender's message.

TALK_OUT_MESSAGE message's path, will send to all players. sender for sender placeholder, %message% for sender's message.

UNMUTE_IN_MESSAGE message's path, will send to channel's players when private is no longer muted.

UNMUTE_OUT_MESSAGE message's path, will send to channel's players when broadcast is no longer muted.

Example
...
 STAFF:
  TYPE: BASE
  ALLOW_OUT: true
  ALLOW_IN: true
  TRY_OUT: false
  MIN_CHAR: 1
  ALONE_MESSAGE: "CHANNEL.STAFF.ALONE"
  JOIN_MESSAGE: "CHANNEL.STAFF.JOIN"
  LEAVE_MESSAGE: "CHANNEL.STAFF.LEAVE"
  PRIVATE_JOIN_MESSAGE: "CHANNEL.STAFF.P_JOIN"
  PRIVATE_LEAVE_MESSAGE: "CHANNEL.STAFF.P_LEAVE"
  MUTED_MESSAGE: "CHANNEL.STAFF.MUTED"
  MUTE_IN_MESSAGE: "CHANNEL.STAFF.MUTE_IN"
  MUTE_OUT_MESSAGE: "CHANNEL.STAFF.MUTE_OUT"
  TALK_IN_MESSAGE: "CHANNEL.STAFF.TALK_IN"
  TALK_OUT_MESSAGE: "CHANNEL.STAFF.TALK_OUT"
  UNMUTE_IN_MESSAGE: "CHANNEL.STAFF.UNMUTE_IN" 
  UNMUTE_OUT_MESSAGE: "CHANNEL.STAFF.UNMUTE_OUT" 

GLOBAL ( Powered )

This channel will send message to all player every time and has same fields as BASE.

Example
...
 GLOBAL:
  TYPE: GLOBAL
  ALLOW_OUT: true
  ALLOW_IN: true
  TRY_OUT: false
  MIN_CHAR: 1
  ALONE_MESSAGE: "CHANNEL. GLOBAL.ALONE"
  JOIN_MESSAGE: "CHANNEL. GLOBAL.JOIN"
  LEAVE_MESSAGE: "CHANNEL. GLOBAL.LEAVE"
  PRIVATE_JOIN_MESSAGE: "CHANNEL. GLOBAL.P_JOIN"
  PRIVATE_LEAVE_MESSAGE: "CHANNEL. GLOBAL.P_LEAVE"
  MUTED_MESSAGE: "CHANNEL. GLOBAL.MUTED"
  MUTE_IN_MESSAGE: "CHANNEL. GLOBAL.MUTE_IN"
  MUTE_OUT_MESSAGE: "CHANNEL. GLOBAL.MUTE_OUT"
  TALK_IN_MESSAGE: "CHANNEL. GLOBAL.TALK_IN"
  TALK_OUT_MESSAGE: "CHANNEL. GLOBAL.TALK_OUT"
  UNMUTE_IN_MESSAGE: "CHANNEL. GLOBAL.UNMUTE_IN" 
  UNMUTE_OUT_MESSAGE: "CHANNEL. GLOBAL.UNMUTE_OUT" 

PRIVATE ( Powered )

This channel will send message only to sender and has same fields as BASE.

Example
...
 PRIVATE:
  TYPE: PRIVATE
  ALLOW_OUT: true
  ALLOW_IN: true
  TRY_OUT: false
  MIN_CHAR: 1
  ALONE_MESSAGE: "CHANNEL. PRIVATE.ALONE"
  JOIN_MESSAGE: "CHANNEL. PRIVATE.JOIN"
  LEAVE_MESSAGE: "CHANNEL. PRIVATE.LEAVE"
  PRIVATE_JOIN_MESSAGE: " CHANNEL. PRIVATE.P_JOIN"
  PRIVATE_LEAVE_MESSAGE: " CHANNEL. PRIVATE.P_LEAVE"
  MUTED_MESSAGE: "CHANNEL. PRIVATE.MUTED"
  MUTE_IN_MESSAGE: "CHANNEL. PRIVATE.MUTE_IN"
  MUTE_OUT_MESSAGE: "CHANNEL. PRIVATE.MUTE_OUT"
  TALK_IN_MESSAGE: "CHANNEL. PRIVATE.TALK_IN"
  TALK_OUT_MESSAGE: "CHANNEL. PRIVATE.TALK_OUT"
  UNMUTE_IN_MESSAGE: "CHANNEL. PRIVATE.UNMUTE_IN" 
  UNMUTE_OUT_MESSAGE: "CHANNEL. PRIVATE.UNMUTE_OUT" 

PROXIMITY ( Powered )

This channel will send message only to nearby players and has same fields as BASE plus theses :

DISTANCE default 16, the distance in block to see message from the sender.

IGNORE_WORLD default false, if true will be only coordinate relative, otherwise should be in same wold.

Example
...
 PROXIMITY:
  TYPE: PROXIMITY
  ALLOW_OUT: true
  ALLOW_IN: true
  TRY_OUT: false
  MIN_CHAR: 1
  DISTANCE: 16
  IGNORE_WORLD: false
  ALONE_MESSAGE: "CHANNEL. PROXIMITY.ALONE"
  JOIN_MESSAGE: "CHANNEL. PROXIMITY.JOIN"
  LEAVE_MESSAGE: "CHANNEL. PROXIMITY.LEAVE"
  PRIVATE_JOIN_MESSAGE: " CHANNEL. PROXIMITY.P_JOIN"
  PRIVATE_LEAVE_MESSAGE: " CHANNEL. PROXIMITY.P_LEAVE"
  MUTED_MESSAGE: "CHANNEL. PROXIMITY.MUTED"
  MUTE_IN_MESSAGE: "CHANNEL. PROXIMITY.MUTE_IN"
  MUTE_OUT_MESSAGE: "CHANNEL. PROXIMITY.MUTE_OUT"
  TALK_IN_MESSAGE: "CHANNEL. PROXIMITY.TALK_IN"
  TALK_OUT_MESSAGE: "CHANNEL. PROXIMITY.TALK_OUT"
  UNMUTE_IN_MESSAGE: "CHANNEL. PROXIMITY.UNMUTE_IN" 
  UNMUTE_OUT_MESSAGE: "CHANNEL. PRIVATE.UNMUTE_OUT" 

TEAM ( Powered )

This channel will send message to player member of same vanilla team and has same fields as BASE.

Example
...
 TEAM:
  TYPE: TEAM
  ALLOW_OUT: true
  ALLOW_IN: true
  TRY_OUT: false
  MIN_CHAR: 1
  ALONE_MESSAGE: "CHANNEL. TEAM.ALONE"
  JOIN_MESSAGE: "CHANNEL. TEAM.JOIN"
  LEAVE_MESSAGE: "CHANNEL. TEAM.LEAVE"
  PRIVATE_JOIN_MESSAGE: " CHANNEL. TEAM.P_JOIN"
  PRIVATE_LEAVE_MESSAGE: " CHANNEL. TEAM.P_LEAVE"
  MUTED_MESSAGE: "CHANNEL. TEAM.MUTED"
  MUTE_IN_MESSAGE: "CHANNEL. TEAM.MUTE_IN"
  MUTE_OUT_MESSAGE: "CHANNEL. TEAM.MUTE_OUT"
  TALK_IN_MESSAGE: "CHANNEL. TEAM.TALK_IN"
  TALK_OUT_MESSAGE: "CHANNEL. TEAM.TALK_OUT"
  UNMUTE_IN_MESSAGE: "CHANNEL. TEAM.UNMUTE_IN" 
  UNMUTE_OUT_MESSAGE: "CHANNEL. TEAM.UNMUTE_OUT" 
Clone this wiki locally