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.quests.data.QuestDataClient; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.network.ByteBufUtils; @Packet(Packet.Side.CLIENT) public class PacketQuestSetCurrent extends PacketSharedSync { private Quest quest; @SuppressWarnings("unused") public PacketQuestSetCurrent() {} public PacketQuestSetCurrent(Quest quest) { this.quest = quest; } @Override public void toBytes(ByteBuf buf) { super.toBytes(buf); buf.writeBoolean(quest == null); if (quest != null) { ByteBufUtils.writeUTF8String(buf, quest.getRegistryName().toString()); ByteBufUtils.writeTag(buf, quest.writeToNBT(new NBTTagCompound())); } } @Override public void fromBytes(ByteBuf buf) { super.fromBytes(buf); boolean isNull = buf.readBoolean(); if (!isNull) { Quest q = Quest.REGISTRY.getValue(new ResourceLocation(ByteBufUtils.readUTF8String(buf))); try { quest = q.getClass().newInstance().setRegistryName(q.getRegistryName()); quest.readFromNBT(ByteBufUtils.readTag(buf)); quest.onQuestActivated(); } catch (Exception e) {} } } @Override public void handlePacket(EntityPlayer player) { this.<QuestDataClient>getQuestDataFromPlayer(player).addAsCurrent(quest); } }