package net.glowstone.net.codec.play.game; import com.flowpowered.networking.Codec; import com.flowpowered.networking.util.ByteBufUtils; import io.netty.buffer.ByteBuf; import net.glowstone.net.message.play.game.TitleMessage; import net.glowstone.util.TextMessage; import java.io.IOException; public final class TitleCodec implements Codec<TitleMessage> { @Override public TitleMessage decode(ByteBuf buffer) throws IOException { int actionId = ByteBufUtils.readVarInt(buffer); TitleMessage.Action action = TitleMessage.Action.getAction(actionId); switch (action) { case TITLE: case SUBTITLE: String text = ByteBufUtils.readUTF8(buffer); return new TitleMessage(action, TextMessage.decode(text)); case TIMES: int fadeIn = buffer.readInt(); int stay = buffer.readInt(); int fadeOut = buffer.readInt(); return new TitleMessage(action, fadeIn, stay, fadeOut); default: return new TitleMessage(action); } } @Override public ByteBuf encode(ByteBuf buf, TitleMessage message) throws IOException { ByteBufUtils.writeVarInt(buf, message.getAction().ordinal()); switch (message.getAction()) { case TITLE: case SUBTITLE: ByteBufUtils.writeUTF8(buf, message.getText().encode()); break; case TIMES: buf.writeInt(message.getFadeIn()); buf.writeInt(message.getStay()); buf.writeInt(message.getFadeOut()); break; } return buf; } }