package joshie.harvest.town.packet; import io.netty.buffer.ByteBuf; import joshie.harvest.api.quests.Quest; import joshie.harvest.core.HFTrackers; import joshie.harvest.core.network.Packet; import joshie.harvest.core.network.Packet.Side; import joshie.harvest.core.network.PenguinPacket; import joshie.harvest.town.TownHelper; import joshie.harvest.town.data.TownData; import joshie.harvest.town.tracker.TownTrackerClient; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.network.ByteBufUtils; import java.util.UUID; @Packet(Side.CLIENT) public class PacketDailyQuest extends PenguinPacket { private UUID uuid; private Quest quest; @SuppressWarnings("unused") public PacketDailyQuest() {} public PacketDailyQuest(UUID uuid, Quest quest) { this.uuid = uuid; this.quest = quest; } @Override public void toBytes(ByteBuf buf) { ByteBufUtils.writeUTF8String(buf, uuid.toString()); 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) { uuid = UUID.fromString(ByteBufUtils.readUTF8String(buf)); if (buf.readBoolean()) { quest = Quest.REGISTRY.getValue(new ResourceLocation(ByteBufUtils.readUTF8String(buf))); quest.readFromNBT(ByteBufUtils.readTag(buf)); } } @Override public void handlePacket(EntityPlayer player) { TownData data = TownHelper.getTownByID(player.worldObj, uuid); if (data != null) { HFTrackers.<TownTrackerClient>getTowns(player.worldObj).getTownByID(uuid).setDailyQuest(quest); } } }