package joshie.progression.player.nbt;
import joshie.progression.api.criteria.ICriteria;
import joshie.progression.api.criteria.ITriggerProvider;
import joshie.progression.handlers.APICache;
import joshie.progression.helpers.NBTHelper.ICollectionHelper;
import joshie.progression.helpers.TriggerHelper;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import java.util.Collection;
import java.util.UUID;
public class TriggerNBT implements ICollectionHelper<ITriggerProvider> {
public static final TriggerNBT INSTANCE = new TriggerNBT();
private Collection collection;
@Override
public Collection getSet() {
return collection;
}
public TriggerNBT setCollection(Collection collection) {
this.collection = collection;
return this;
}
@Override
public NBTBase write(ITriggerProvider t) {
NBTTagCompound tag = new NBTTagCompound();
tag.setString("Criteria", t.getCriteria().getUniqueID().toString());
tag.setInteger("Value", TriggerHelper.getInternalID(t));
return tag;
}
@Override
public ITriggerProvider read(NBTTagList list, int i) {
NBTTagCompound tag = list.getCompoundTagAt(i);
ICriteria criteria = APICache.getServerCache().getCriteria(UUID.fromString(tag.getString("Criteria")));
if (criteria == null) return null;
int value = tag.getInteger("Value");
if (value < criteria.getTriggers().size()) {
return criteria.getTriggers().get(value);
} else return null;
}
}