package joshie.harvest.quests.packet;
import io.netty.buffer.ByteBuf;
import joshie.harvest.HarvestFestival;
import joshie.harvest.api.quests.Quest;
import joshie.harvest.core.handlers.GuiHandler;
import joshie.harvest.core.helpers.MCServerHelper;
import joshie.harvest.core.network.Packet;
import joshie.harvest.core.network.Packet.Side;
import joshie.harvest.quests.data.QuestData;
import joshie.harvest.town.TownHelper;
import joshie.harvest.town.data.TownDataServer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
import static joshie.harvest.town.TownHelper.getClosestTownToEntity;
@Packet(Side.SERVER)
public class PacketQuestStart extends PacketSyncData {
private BlockPos pos;
@SuppressWarnings("unused")
public PacketQuestStart() {}
public PacketQuestStart(BlockPos pos, Quest quest) {
super(quest, null);
this.pos = pos;
}
@Override
public void toBytes(ByteBuf buf) {
super.toBytes(buf);
buf.writeLong(pos.toLong());
}
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
pos = BlockPos.fromLong(buf.readLong());
}
@Override
public void handlePacket(EntityPlayer player) {
TownDataServer town = TownHelper.getClosestTownToEntity(player, false);
QuestData data = town.getQuests();
Quest quest = getClosestTownToEntity(player, false).getDailyQuest();
if (quest != null && !data.getCurrent().contains(quest)) {
data.startQuest(quest, true, town.getDailyQuest().writeToNBT(new NBTTagCompound()));
player.openGui(HarvestFestival.instance, GuiHandler.QUEST_BOARD, player.worldObj, pos.getX(), pos.getY(), pos.getZ());
town.clearDailyQuest(player.worldObj);
MCServerHelper.markTileForUpdate(player.worldObj, pos);
}
}
}