package joshie.progression.network; import io.netty.buffer.ByteBuf; import joshie.progression.api.criteria.ITriggerProvider; 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.HashSet; import java.util.Set; import java.util.UUID; @Packet(isSided = true, side = Side.CLIENT) public class PacketSyncTriggers extends PenguinPacket { private Set<ITriggerProvider> triggers; private boolean overwrite; public PacketSyncTriggers() {} public PacketSyncTriggers(Set<ITriggerProvider> triggers) { this.overwrite = true; this.triggers = triggers; } public PacketSyncTriggers(ITriggerProvider trigger) { this.overwrite = false; this.triggers = new HashSet(); this.triggers.add(trigger); } @Override public void toBytes(ByteBuf buf) { buf.writeBoolean(overwrite); buf.writeInt(triggers.size()); for (ITriggerProvider trigger: triggers) { writeGzipString(buf, trigger.getUniqueID().toString()); } } @Override public void fromBytes(ByteBuf buf) { overwrite = buf.readBoolean(); int size = buf.readInt(); triggers = new HashSet(); for (int i = 0; i < size; i++) { String uuid = readGzipString(buf); if (uuid.matches("[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}")) { ITriggerProvider trigger = APICache.getClientCache().getTriggerFromUUID(UUID.fromString(uuid)); if (trigger != null) { triggers.add(trigger); } } } } @Override public void handlePacket(EntityPlayer player) { PlayerTracker.getClientPlayer().getMappings().markTriggerAsCompleted(overwrite, triggers); } }