minecraft-src/net/minecraft/network/chat/contents/PlainTextContents.java
2025-07-04 01:41:11 +03:00

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 + "}";
}
}
}