0
This repository has been archived on 2022-03-24. You can view files and clone it, but cannot push or open issues or pull requests.
Files
mc-protocol/src/main/java/mc/protocol/text/TextStyle.java
DmitriyMX ce76e5d5c7 add Text component
реализация скопирована из mc-core
(mc-server, g1/master)
2020-05-12 11:34:40 +03:00

67 lines
2.5 KiB
Java

package mc.protocol.text;
import lombok.Getter;
import lombok.Setter;
import javax.annotation.Nullable;
import java.util.Optional;
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
@Getter
@Setter
public class TextStyle {
public static final TextStyle BOLD = new TextStyle(true, null, null, null, null);
public static final TextStyle ITALIC = new TextStyle(null, true, null, null, null);
public static final TextStyle UNDERLINE = new TextStyle(null, null, true, null, null);
public static final TextStyle STRIKETHOUGH = new TextStyle(null, null, null, true, null);
public static final TextStyle OBFUSCATED = new TextStyle(null, null, null, null, true);
public static final TextStyle RESET = new TextStyle(false, false, false, false, false);
private static class OptionalBoolean {
private static final Optional<Boolean> TRUE = Optional.of(true);
private static final Optional<Boolean> FALSE = Optional.of(false);
private static final Optional<Boolean> NONE = Optional.empty();
static Optional<Boolean> of(boolean bool) {
return bool ? TRUE : FALSE;
}
static Optional<Boolean> of(@Nullable Boolean bool) {
if (bool != null) {
return of(bool.booleanValue());
}
return NONE;
}
}
private Optional<Boolean> bold;
private Optional<Boolean> italic;
private Optional<Boolean> underline;
private Optional<Boolean> strikethrough;
private Optional<Boolean> obfuscated;
public TextStyle(@Nullable Boolean bold,
@Nullable Boolean italic,
@Nullable Boolean underline,
@Nullable Boolean strikethrough,
@Nullable Boolean obfuscated) {
this.bold = OptionalBoolean.of(bold);
this.italic = OptionalBoolean.of(italic);
this.underline = OptionalBoolean.of(underline);
this.strikethrough = OptionalBoolean.of(strikethrough);
this.obfuscated = OptionalBoolean.of(obfuscated);
}
public void merge(TextStyle style) {
if (style.bold.isPresent()) this.bold = style.bold;
if (style.italic.isPresent()) this.italic = style.italic;
if (style.underline.isPresent()) this.underline = style.underline;
if (style.strikethrough.isPresent()) this.strikethrough = style.strikethrough;
if (style.obfuscated.isPresent()) this.obfuscated = style.obfuscated;
}
public static TextStyle none() {
return new TextStyle(null,null,null,null, null);
}
}