package com.hypixel.hytale.builtin.adventure.reputation.choices;
import com.hypixel.hytale.builtin.adventure.reputation.ReputationPlugin;
import com.hypixel.hytale.builtin.adventure.reputation.assets.ReputationGroup;
import com.hypixel.hytale.builtin.adventure.reputation.assets.ReputationRank;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.core.entity.entities.player.pages.choices.ChoiceRequirement;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class ReputationRequirement extends ChoiceRequirement {
@Nonnull
public static final BuilderCodec<ReputationRequirement> CODEC;
protected String reputationGroupId;
protected String minRequiredRankId;
public ReputationRequirement(String reputationGroupId, String minRequiredRankId) {
this.reputationGroupId = reputationGroupId;
this.minRequiredRankId = minRequiredRankId;
}
protected ReputationRequirement() {
}
public boolean canFulfillRequirement(@Nonnull Store<EntityStore> store, @Nonnull Ref<EntityStore> ref, @Nonnull PlayerRef playerRef) {
ReputationPlugin reputationModule = ReputationPlugin.get();
int playerReputationValue = reputationModule.getReputationValue(store, ref, this.reputationGroupId);
if (playerReputationValue == -2147483648) {
return false;
} else {
ReputationRank minReputationRank = (ReputationRank)ReputationRank.getAssetMap().getAsset(this.minRequiredRankId);
if (minReputationRank == null) {
return false;
} else {
return playerReputationValue >= minReputationRank.getMinValue();
}
}
}
@Nonnull
public String toString() {
String var10000 = this.reputationGroupId;
return "ReputationRequirement{reputationGroupId='" + var10000 + "', minRequiredRankId='" + this.minRequiredRankId + "'} " + super.toString();
}
static {
CODEC = ((BuilderCodec.Builder)((BuilderCodec.Builder)BuilderCodec.builder(ReputationRequirement.class, ReputationRequirement::new, ChoiceRequirement.BASE_CODEC).append(new KeyedCodec("ReputationGroupId", Codec.STRING), (reputationRequirement, s) -> reputationRequirement.reputationGroupId = s, (reputationRequirement) -> reputationRequirement.reputationGroupId).addValidator(ReputationGroup.VALIDATOR_CACHE.getValidator()).add()).append(new KeyedCodec("MinRequiredRankId", Codec.STRING), (reputationRequirement, s) -> reputationRequirement.minRequiredRankId = s, (reputationRequirement) -> reputationRequirement.minRequiredRankId).addValidator(ReputationRank.VALIDATOR_CACHE.getValidator()).add()).build();
}
}