package joshie.progression.network; import io.netty.buffer.ByteBuf; import joshie.progression.api.criteria.ICriteria; import joshie.progression.handlers.APICache; import joshie.progression.network.core.PenguinPacket; import joshie.progression.player.PlayerTracker; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.fml.relauncher.Side; import java.util.UUID; @Packet(isSided = true, side = Side.CLIENT) public class PacketSyncCriteria extends PenguinPacket { private ICriteria[] criteria; private Integer[] integers; private boolean overwrite; public PacketSyncCriteria() {} public PacketSyncCriteria(boolean overwrite, Integer[] values, ICriteria[] criteria) { this.criteria = criteria; this.integers = values; this.overwrite = overwrite; } @Override public void toBytes(ByteBuf buf) { buf.writeBoolean(overwrite); buf.writeInt(criteria.length); for (ICriteria tech : criteria) { writeGzipString(buf, tech.getUniqueID().toString()); } for (Integer i : integers) { buf.writeInt(i); } } @Override public void fromBytes(ByteBuf buf) { overwrite = buf.readBoolean(); int size = buf.readInt(); criteria = new ICriteria[size]; for (int i = 0; i < size; i++) { criteria[i] = APICache.getClientCache().getCriteria(UUID.fromString(readGzipString(buf))); } integers = new Integer[size]; for (int i = 0; i < size; i++) { integers[i] = buf.readInt(); } } @Override public void handlePacket(EntityPlayer player) { PlayerTracker.getClientPlayer().getMappings().markCriteriaAsCompleted(overwrite, integers, criteria); } }