package joshie.progression.network; import io.netty.buffer.ByteBuf; import joshie.progression.api.criteria.IRewardProvider; import joshie.progression.handlers.APICache; import joshie.progression.network.core.PenguinPacket; import joshie.progression.player.CriteriaMappings; import joshie.progression.player.PlayerTracker; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraftforge.fml.relauncher.Side; import java.util.LinkedHashSet; import java.util.Set; import java.util.UUID; @Packet(isSided = true, side = Side.SERVER) public class PacketSelectRewards extends PenguinPacket { private Set<IRewardProvider> rewards; public PacketSelectRewards() {} public PacketSelectRewards(Set<IRewardProvider> rewards) { this.rewards = rewards; } @Override public void toBytes(ByteBuf buf) { buf.writeInt(rewards.size()); for (IRewardProvider provider: rewards) { writeGzipString(buf, provider.getUniqueID().toString()); } } @Override public void fromBytes(ByteBuf buf) { rewards = new LinkedHashSet(); int length = buf.readInt(); for (int i = 0; i < length; i++) { rewards.add(APICache.getCache(false).getRewardFromUUID(UUID.fromString(readGzipString(buf)))); } } @Override public void handlePacket(EntityPlayer player) { for (IRewardProvider reward: rewards) { CriteriaMappings mappings = PlayerTracker.getServerPlayer(player).getMappings(); if (mappings.claimReward((EntityPlayerMP) player, reward)) { mappings.remapAfterClaiming(reward.getCriteria()); } } } }