package net.minecraft.network.chat; import com.google.common.collect.Lists; import java.util.List; import java.util.function.UnaryOperator; import net.minecraft.ChatFormatting; import net.minecraft.locale.Language; import net.minecraft.util.FormattedCharSequence; import org.jspecify.annotations.Nullable; public final class MutableComponent implements Component { private final ComponentContents contents; private final List siblings; private Style style; private FormattedCharSequence visualOrderText = FormattedCharSequence.EMPTY; @Nullable private Language decomposedWith; MutableComponent(final ComponentContents contents, final List siblings, final Style style) { this.contents = contents; this.siblings = siblings; this.style = style; } public static MutableComponent create(final ComponentContents contents) { return new MutableComponent(contents, Lists.newArrayList(), Style.EMPTY); } @Override public ComponentContents getContents() { return this.contents; } @Override public List getSiblings() { return this.siblings; } public MutableComponent setStyle(final Style style) { this.style = style; return this; } @Override public Style getStyle() { return this.style; } public MutableComponent append(final String text) { return text.isEmpty() ? this : this.append(Component.literal(text)); } public MutableComponent append(final Component component) { this.siblings.add(component); return this; } public MutableComponent withStyle(final UnaryOperator