mirror of
https://github.com/Minestom/Minestom.git
synced 2025-03-02 11:21:15 +01:00
Add support for arguments in translatable text
This commit is contained in:
parent
7b9c093709
commit
bd3aa9881e
@ -4,7 +4,9 @@ import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class ColoredText {
|
||||
|
||||
@ -164,8 +166,27 @@ public class ColoredText {
|
||||
}
|
||||
// Translatable component
|
||||
if (formatString.startsWith("@")) {
|
||||
String translatableCode = formatString.substring(1);
|
||||
objects.add(getMessagePart(MessageType.TRANSLATABLE, translatableCode, currentColor));
|
||||
final String translatableCode = formatString.substring(1);
|
||||
final boolean hasArgs = translatableCode.contains(",");
|
||||
if (!hasArgs) {
|
||||
objects.add(getMessagePart(MessageType.TRANSLATABLE, translatableCode, currentColor));
|
||||
} else {
|
||||
// Arguments parsing
|
||||
// ex: {@translatable.key,arg1,arg2,etc}
|
||||
final String[] split = translatableCode.split(Pattern.quote(","));
|
||||
final String finalTranslatableCode = split[0];
|
||||
final String[] arguments = Arrays.copyOfRange(split, 1, split.length);
|
||||
|
||||
JsonObject translatableObject = getMessagePart(MessageType.TRANSLATABLE, finalTranslatableCode, currentColor);
|
||||
if (arguments.length > 0) {
|
||||
JsonArray argArray = new JsonArray();
|
||||
for (String arg : arguments) {
|
||||
argArray.add(getMessagePart(MessageType.RAW, arg, currentColor));
|
||||
}
|
||||
translatableObject.add("with", argArray);
|
||||
objects.add(translatableObject);
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
// Keybind component
|
||||
@ -186,6 +207,14 @@ public class ColoredText {
|
||||
return objects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the object representing a message (raw/keybind/translatable)
|
||||
*
|
||||
* @param messageType the message type
|
||||
* @param message the message
|
||||
* @param color the last color
|
||||
* @return a json object representing a message
|
||||
*/
|
||||
private JsonObject getMessagePart(MessageType messageType, String message, String color) {
|
||||
JsonObject object = new JsonObject();
|
||||
switch (messageType) {
|
||||
|
32
src/main/java/net/minestom/server/chat/TranslatableText.java
Normal file
32
src/main/java/net/minestom/server/chat/TranslatableText.java
Normal file
@ -0,0 +1,32 @@
|
||||
package net.minestom.server.chat;
|
||||
|
||||
public class TranslatableText {
|
||||
|
||||
private String code;
|
||||
private String[] arguments;
|
||||
|
||||
private TranslatableText(String code, String[] arguments) {
|
||||
this.code = code;
|
||||
this.arguments = arguments;
|
||||
}
|
||||
|
||||
public static TranslatableText TranslatableText(String code, String... arguments) {
|
||||
return new TranslatableText(code, arguments);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
final String prefix = "{@";
|
||||
final String suffix = "}";
|
||||
|
||||
String content = code;
|
||||
|
||||
if (arguments != null && arguments.length > 0) {
|
||||
for (String arg : arguments) {
|
||||
content += "," + arg;
|
||||
}
|
||||
}
|
||||
|
||||
return prefix + content + suffix;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user