package joshie.harvest.knowledge.packet;
import io.netty.buffer.ByteBuf;
import joshie.harvest.api.core.Letter;
import joshie.harvest.core.helpers.NBTHelper;
import joshie.harvest.core.network.Packet;
import joshie.harvest.core.network.Packet.Side;
import joshie.harvest.knowledge.letter.LetterDataClient;
import joshie.harvest.quests.packet.PacketSharedSync;
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.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
@Packet(Side.CLIENT)
public class PacketSyncLetters extends PacketSharedSync {
private Set<ResourceLocation> set;
public PacketSyncLetters(){}
public PacketSyncLetters(Set<Letter> set) {
this.set = new HashSet<>();
this.set.addAll(set.stream().map(Letter::getResource).collect(Collectors.toList()));
}
@Override
public void toBytes(ByteBuf buf) {
super.toBytes(buf);
NBTTagCompound tag = new NBTTagCompound();
tag.setTag("Letters", NBTHelper.writeResourceSet(set));
ByteBufUtils.writeTag(buf, tag);
}
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
set = NBTHelper.readResourceSet(ByteBufUtils.readTag(buf), "Letters");
}
@Override
public void handlePacket(EntityPlayer player) {
this.<LetterDataClient>getLetterDataFromPlayer(player).setLetters(set);
}
}