package joshie.progression.network;
import io.netty.buffer.ByteBuf;
import joshie.progression.api.criteria.IRewardProvider;
import joshie.progression.api.special.IRequestItem;
import joshie.progression.handlers.APICache;
import joshie.progression.network.core.PenguinPacket;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import java.util.UUID;
@Packet
public class PacketRequestItem extends PenguinPacket {
private UUID uuid;
private ItemStack stack;
public PacketRequestItem() {}
public PacketRequestItem(UUID uuid, ItemStack stack) {
this.uuid = uuid;
this.stack = stack;
}
public PacketRequestItem(UUID uuid) {
this.uuid = uuid;
}
@Override
public void toBytes(ByteBuf buf) {
ByteBufUtils.writeUTF8String(buf, uuid.toString());
buf.writeBoolean(stack != null);
if (stack != null) {
ByteBufUtils.writeItemStack(buf, stack);
buf.writeInt(stack.stackSize);
}
}
@Override
public void fromBytes(ByteBuf buf) {
uuid = UUID.fromString(ByteBufUtils.readUTF8String(buf));
if (buf.readBoolean()) {
stack = ByteBufUtils.readItemStack(buf);
stack.stackSize = buf.readInt();
}
}
@Override
public void handlePacket(EntityPlayer player) {
IRewardProvider provider = APICache.getCache(player.worldObj.isRemote).getRewardFromUUID(uuid);
if (provider.getProvided() instanceof IRequestItem) {
IRequestItem request = ((IRequestItem)provider.getProvided());
if (player.worldObj.isRemote) PacketHandler.sendToServer(new PacketRequestItem(uuid, request.getRequestedStack(player)));
else request.reward(player, stack);
}
}
}