53 lines
1.6 KiB
Java
53 lines
1.6 KiB
Java
package net.minecraft.network.chat.contents;
|
|
|
|
import com.mojang.serialization.Codec;
|
|
import com.mojang.serialization.MapCodec;
|
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
|
import java.util.Optional;
|
|
import net.minecraft.network.chat.ComponentContents;
|
|
import net.minecraft.network.chat.FormattedText;
|
|
import net.minecraft.network.chat.Style;
|
|
|
|
public interface PlainTextContents extends ComponentContents {
|
|
MapCodec<PlainTextContents> CODEC = RecordCodecBuilder.mapCodec(
|
|
instance -> instance.group(Codec.STRING.fieldOf("text").forGetter(PlainTextContents::text)).apply(instance, PlainTextContents::create)
|
|
);
|
|
ComponentContents.Type<PlainTextContents> TYPE = new ComponentContents.Type<>(CODEC, "text");
|
|
PlainTextContents EMPTY = new PlainTextContents() {
|
|
public String toString() {
|
|
return "empty";
|
|
}
|
|
|
|
@Override
|
|
public String text() {
|
|
return "";
|
|
}
|
|
};
|
|
|
|
static PlainTextContents create(String text) {
|
|
return (PlainTextContents)(text.isEmpty() ? EMPTY : new PlainTextContents.LiteralContents(text));
|
|
}
|
|
|
|
String text();
|
|
|
|
@Override
|
|
default ComponentContents.Type<?> type() {
|
|
return TYPE;
|
|
}
|
|
|
|
public record LiteralContents(String text) implements PlainTextContents {
|
|
@Override
|
|
public <T> Optional<T> visit(FormattedText.ContentConsumer<T> contentConsumer) {
|
|
return contentConsumer.accept(this.text);
|
|
}
|
|
|
|
@Override
|
|
public <T> Optional<T> visit(FormattedText.StyledContentConsumer<T> styledContentConsumer, Style style) {
|
|
return styledContentConsumer.accept(style, this.text);
|
|
}
|
|
|
|
public String toString() {
|
|
return "literal{" + this.text + "}";
|
|
}
|
|
}
|
|
}
|