package net.minecraft.client.multiplayer.chat; import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; import java.util.function.Supplier; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.multiplayer.chat.LoggedChatMessage.Player; import net.minecraft.client.multiplayer.chat.LoggedChatMessage.System; import net.minecraft.util.StringRepresentable; @Environment(EnvType.CLIENT) public interface LoggedChatEvent { Codec CODEC = StringRepresentable.fromEnum(LoggedChatEvent.Type::values).dispatch(LoggedChatEvent::type, LoggedChatEvent.Type::codec); LoggedChatEvent.Type type(); @Environment(EnvType.CLIENT) public static enum Type implements StringRepresentable { PLAYER("player", () -> Player.CODEC), SYSTEM("system", () -> System.CODEC); private final String serializedName; private final Supplier> codec; private Type(final String serializedName, final Supplier> codec) { this.serializedName = serializedName; this.codec = codec; } private MapCodec codec() { return (MapCodec)this.codec.get(); } @Override public String getSerializedName() { return this.serializedName; } } }