package joshie.harvest.quests.packet; import io.netty.buffer.ByteBuf; import joshie.harvest.api.quests.Quest; import joshie.harvest.core.network.Packet; import joshie.harvest.core.network.Packet.Side; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.network.ByteBufUtils; @Packet(Side.CLIENT) public class PacketSyncData extends PacketSharedSync { protected Quest quest; private NBTTagCompound tag; public PacketSyncData() {} public PacketSyncData(Quest quest, NBTTagCompound tag) { this.quest = quest; this.tag = tag; } @Override public void toBytes(ByteBuf buf) { super.toBytes(buf); ByteBufUtils.writeUTF8String(buf, quest.getRegistryName().toString()); buf.writeBoolean(tag != null); if (tag != null) ByteBufUtils.writeTag(buf, tag); } @Override public void fromBytes(ByteBuf buf) { super.fromBytes(buf); quest = Quest.REGISTRY.getValue(new ResourceLocation(ByteBufUtils.readUTF8String(buf))); if (buf.readBoolean()) tag = ByteBufUtils.readTag(buf); } @Override public void handlePacket(EntityPlayer player) { Quest real = getQuestDataFromPlayer(player).getAQuest(quest); if (real != null && tag != null) { real.readFromNBT(tag); } } }