Polished TrafficLightRace
This commit is contained in:
@ -5,13 +5,18 @@ import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.ComponentLike;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.minestom.server.entity.Player;
|
||||
import org.apache.commons.text.WordUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class TranslatedComponent implements ComponentLike, Translatable {
|
||||
private final String mapId;
|
||||
private String result;
|
||||
|
||||
private NamedTextColor color;
|
||||
private int wrap = 0;
|
||||
|
||||
public static TranslatedComponent byId(String mapId) {
|
||||
return new TranslatedComponent(mapId);
|
||||
@ -27,10 +32,17 @@ public class TranslatedComponent implements ComponentLike, Translatable {
|
||||
|
||||
public void assemble(Player p) {
|
||||
result = Languages.getInstance().getLanguage(p).getEntry(mapId);
|
||||
if(wrap > 0) {
|
||||
result = WordUtils.wrap(result, wrap, "\n", false);
|
||||
}
|
||||
}
|
||||
|
||||
public void assemble(String language) {
|
||||
result = Languages.getInstance().getLanguage(language).getEntry(mapId);
|
||||
public TranslatedComponent addWrap() {
|
||||
return this.addWrap(30);
|
||||
}
|
||||
public TranslatedComponent addWrap(int wrap) {
|
||||
this.wrap = wrap;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Component getAssembled(Player p) {
|
||||
@ -38,6 +50,11 @@ public class TranslatedComponent implements ComponentLike, Translatable {
|
||||
return asComponent();
|
||||
}
|
||||
|
||||
public List<Component> getWrappedAssembled(Player p) {
|
||||
this.assemble(p);
|
||||
return asWrappedComponent();
|
||||
}
|
||||
|
||||
public TranslatedComponent setColor(NamedTextColor color) {
|
||||
this.color = color;
|
||||
return this;
|
||||
@ -45,10 +62,17 @@ public class TranslatedComponent implements ComponentLike, Translatable {
|
||||
|
||||
@Override
|
||||
public @NotNull Component asComponent() {
|
||||
//assemble(Languages.getInstance().getLanguage(Languages.defaultLanguage).getEntry(mapId));
|
||||
return this.componentFromString(result);
|
||||
}
|
||||
|
||||
public List<Component> asWrappedComponent() {
|
||||
return Arrays.stream(result.split("\n")).map(this::componentFromString).toList();
|
||||
}
|
||||
|
||||
private Component componentFromString(String data) {
|
||||
if(color != null)
|
||||
return Component.text(result, color);
|
||||
return Component.text(data, color);
|
||||
else
|
||||
return Component.text(result);
|
||||
return Component.text(data);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user