package joshie.progression.criteria.conditions; import joshie.progression.Progression; import joshie.progression.api.IPlayerTeam; import joshie.progression.api.criteria.ICriteria; import joshie.progression.api.criteria.ProgressionRule; import joshie.progression.api.special.ICustomDescription; import joshie.progression.api.special.IGetterCallback; import joshie.progression.api.special.IInit; import joshie.progression.handlers.APICache; import joshie.progression.player.PlayerTracker; import net.minecraft.util.text.TextFormatting; import java.util.UUID; @ProgressionRule(name="criteria", meta="ifCriteriaCompleted") public class ConditionHasCriteria extends ConditionBase implements IInit, ICustomDescription, IGetterCallback { private ICriteria criteria = null; private UUID criteriaID = UUID.randomUUID(); public String displayName = ""; @Override public void init(boolean isClient) { try { for (ICriteria c : APICache.getCache(isClient).getCriteriaSet()) { String display = c.getLocalisedName(); if (c.getLocalisedName().equals(displayName)) { criteria = c; criteriaID = c.getUniqueID(); break; } } } catch (Exception e) {} } @Override public String getDescription() { if (criteria != null) { if (getProvider().isInverted()) return Progression.format(getProvider().getUnlocalisedName() + ".description.inverted", criteria.getLocalisedName()); else return Progression.format(getProvider().getUnlocalisedName() + ".description", criteria.getLocalisedName()); } else return "BROKEN CRITERIA"; } @Override public String getField(String fieldName) { return criteria != null ? TextFormatting.GREEN + displayName : TextFormatting.RED + displayName; } @Override public boolean isSatisfied(IPlayerTeam team) { if (criteria != null) { return PlayerTracker.getServerPlayer(team.getOwner()).getMappings().getCompletedCriteria().keySet().contains(criteria); } return false; } }