package joshie.harvest.quests.packet;
import io.netty.buffer.ByteBuf;
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.knowledge.letter.LetterData;
import joshie.harvest.quests.data.QuestData;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import java.util.UUID;
@Packet(Side.CLIENT)
public class PacketSharedSync extends PenguinPacket {
protected UUID uuid;
public PacketSharedSync() {}
public PacketSharedSync setUUID(UUID uuid) {
this.uuid = uuid;
return this;
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeBoolean(uuid != null);
if (uuid != null) {
ByteBufUtils.writeUTF8String(buf, uuid.toString());
}
}
@Override
public void fromBytes(ByteBuf buf) {
if (buf.readBoolean()) {
uuid = UUID.fromString(ByteBufUtils.readUTF8String(buf));
}
}
@SuppressWarnings("unchecked")
public <Q extends QuestData> Q getQuestDataFromPlayer(EntityPlayer player) {
if (uuid == null) return (Q) HFTrackers.getPlayerTrackerFromPlayer(player).getQuests();
else return (Q) HFTrackers.getTowns(player.worldObj).getTownByID(uuid).getQuests();
}
@SuppressWarnings("unchecked")
public <L extends LetterData> L getLetterDataFromPlayer(EntityPlayer player) {
if (uuid == null) return (L) HFTrackers.getPlayerTrackerFromPlayer(player).getLetters();
else return (L) HFTrackers.getTowns(player.worldObj).getTownByID(uuid).getLetters();
}
}