- Added LanguageManager class from AreaShop to manage saving/loading language files - Added Transifex class from AreaShop to convert language files downloaded from Transifex - Added Message class from AreaShop to process messages: - Easily get, modify and send messages by a builder pattern - Insert message variables (allows message composition) - Insert variables based on index of the argument - Insert variables from a given ReplacementProvider - Split the parser, internal representation and generators into seperate classes: - The internal representation (InteractiveMessage) only encodes the structure and formatting of a message, knowing nothing about how it got build and nothing about sending it - The parser takes some input and builds an InteractiveMessage (this way multiple parsers can be implemented) - Generators take care of producing something that can be sent by reading an InteractiveMessage (ConsoleGenerator and TellrawGenerator are available) - Should make it easier to setup unit testing (implement equals() of InteractiveMessage and after that test parsers and generators separately) - Refactor and improve performance
4.4 KiB
4.4 KiB
Specifications
Colors & Formatting:
- Colors and formatting normally go on until changed/removed, but they reset on new lines
- Color tags:
[white],[black],[yellow],[gold],[aqua],[dark_aqua],[blue],[dark_blue],[light_purple],[dark_purple],[red],[dark_red],[green],[dark_green],[gray],[dark_gray]- When you use a color it will override the last one
- Formatting tags:
[bold],[italic],[underlined],[strikethrough],[obfuscated]- When you use a formatting tag it will enable this formatting
- When you use a close tag of a format it will disable that formatting
- The color and formatting inside a hover is seperate (start with nothing, resets each line)
- Tags are not case sensitive
- The following tags are equivalents:
[strikethrough]=[s][bold]=[b][italic]=[i][underline]=[u]
Breaks (newlines):
- The break symbol is:
[break] - Using it will cause the text to wrap to the next line in chat, so if
[break][break]is used it will leave an empty line - The end of a list element (string) does NOT automatically result in a break in the chat
- After using
[break]there may not be more text in this line, from there only more[break]tags are allowed (more text can go in a new list entry)
Special effect tags:
- Tags are for adding special effects to a part of the text, used as the following:
link: http://google.com - Supported tags:
- Link: If clicked it will cause a “Do you want to visit this website?” popup
- Hover: If hovered over with the mouse it will give information in a little box
- You can use multiple lines with this tag to get multi-line hover popups
- Suggest: If clicked it will put a string into the chat box
- Command: If clicked it will execute a command as the player
- The hover tag supports all colors and formatting like with normal text
- Tags do not need to be indented, but normally are for readability
- Tags are not case sensitive
Escaping:
[esc]can be used to escape 1 character, so if you want to havelink: example.comas text you need a[esc]in front of this. Then the first character will be escaped and sinceink:is not a valid tag anymore it will be shown as text instead of being used as link on the previous text part.- Placing
[esc][esc]in the text will result in the text[esc]being printed, the first escape will be handled as such, this will escape[and therefore the text behind this will beesc]and this is just text - Also works for variables
Guidelines
- Use lowercase characters for tags
- When using a special effect tag indent the line by 4 spaces (up for debate)
Examples
The below examples assume writing the format in YAML format.
Simple messages
A simple message without any formatting.
message: "You do not have permission to use that command!"
A message that is bold and red to make it look more serious.
message: "[red][bold]You really do not have permission!"
A message with more color and format changes.
message: "[red][bold]You[/bold] really do not have [green][underline]permission[reset]!"
A multi-line message.
message:
- "First line"
- "[red], still on the first line[break]"
- "Second line because of the break above"
- ", but no color."
Using hover/click parts
A message with some hover tooltips, each hover will start on a new line.
message:
- "Hello there!"
- " hover: Have a good day!"
- " hover: Second tooltip line :)"
A message with a tooltip and command.
message:
- "Hello there!"
- " hover: Click me to use /help!"
- " command: /help"





