-
Notifications
You must be signed in to change notification settings - Fork 0
VPMessage.yml
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.
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.
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.
Here you will find the parameters related to the message components.
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 |
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
All the additional languages on your server. If you don't want translation you can remove this.
LANG_LIST:
- fr_FR
Boolean value, default is true. This option allows the use of default translation paths for certain message components.
USE_DEFAULT_PATH: true
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
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
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.
Will send message in client chat.
Example :
...
BASE: "A basic message."
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%"
Will execute the command as the client.
Example :
...
COMMAND: "teleport %sender_name%"
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"
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"
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"
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"
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"
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"
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.
Here you will find the parameters related to the messages.
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
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
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."
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."
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."
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."
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"
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."
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"
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."
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.
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.
There are the static placeholders which will be replaced directly at the plugin startup because they will always return the same thing.
The general placeholders, which will display the same thing regardless of the player, depending or independently of the language.
Type list
Will replace `%java_version% by the server java version .
Example :
Your server use java version %java_version%.
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
- Achievement ISO date
- Border radius
- Currency
- Currency amount
- Id
- Life
- Name
- Ping
- Position (x,y,z)
- Prefix
- Prefix color
- Real name
- Real prefix
- Real prefix color
- Real suffix
- Real suffix color
- Setting current
- Setting next
- Setting previous
- Stat ratio
- Stat session
- Stat value
- Suffix
- Suffix color
- Title amount
- Title name
- Title name format
- Title description
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.
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%.
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.
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%.
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.
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.
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.
Will replace %[tag]_name%
by the [tag]'s name or nickname if is nicknamed.
Example :
Hi %player_name% and welcome on my server.
Will replace %[tag]_ping%
by the [tag]'s ping in millisecond.
Example :
Your ping is %player_ping% ms.
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%.
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%.
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%.
Will replace %[tag]_real_name%
by the [tag]'s name even if nicknamed.
Example :
Hi %player_real_name%.
Will replace %[tag]_real_prefix%
by the [tag]'s prefix even if nicknamed.
Example :
Hi %player_real_prefix%%player_real_name%.
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%.
Will replace %[tag]_real_suffix%
by the [tag]'s suffix even if nicknamed.
Example :
Hi %player_real_suffix%%player_real_name%.
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%.
Will replace %[tag]_current_setting_[setting]%
by the [tag]'s [setting]'s value.
Example :
Your mp are %player_current_setting_MP%.
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%.
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%.
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%.
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.
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.
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"%.
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"%.
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.
Will replace %[tag]_title_name%
by the [tag]'s title's name.
Example :
Hi %player_title_name% %player_name%.
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%.
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.
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
This type allow you to create static placeholder.
Example
...
TYPE: BASE
PLACEHOLDER: "tipsurl"
REPLACEMENT: "http://www.paypal.me/Soreth"
This type allow you to create static translatable placeholder.
Example
...
TYPE: COMPONENT
PLACEHOLDER: "currencytag"
REPLACEMENT: "FORMAT.CURRENCY"
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.
Here you will find the parameters related to the channels.
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
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
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
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"
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"
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"
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"
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"
- Global configuration
- Translation
- Message component
- Message
- Placeholder
- Channel
- Requirement
- Requirement config
- Currencies
- Statistics
- Titles
- Achievements
- Commands
- Damages
- Heal
- Connection / Storage
- Reward
- Icon
- Menu
- Custom food
- Remove craft
- Add craft
- Customize blocks
- Damage modifier
- Death message
- Generic format
- Logger