package com.hypixel.hytale.builtin.adventure.objectivereputation;
import com.hypixel.hytale.builtin.adventure.objectivereputation.assets.ReputationCompletionAsset;
import com.hypixel.hytale.builtin.adventure.objectivereputation.historydata.ReputationObjectiveRewardHistoryData;
import com.hypixel.hytale.builtin.adventure.objectives.Objective;
import com.hypixel.hytale.builtin.adventure.objectives.completion.ObjectiveCompletion;
import com.hypixel.hytale.builtin.adventure.reputation.ReputationPlugin;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.server.core.entity.UUIDComponent;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class ReputationCompletion extends ObjectiveCompletion {
public ReputationCompletion(@Nonnull ReputationCompletionAsset asset) {
super(asset);
}
@Nonnull
public ReputationCompletionAsset getAsset() {
return (ReputationCompletionAsset)super.getAsset();
}
public void handle(@Nonnull Objective objective, @Nonnull ComponentAccessor<EntityStore> componentAccessor) {
ReputationPlugin reputationModule = ReputationPlugin.get();
objective.forEachParticipant((participantReference, asset, objectiveHistoryData) -> {
Player playerComponent = (Player)componentAccessor.getComponent(participantReference, Player.getComponentType());
if (playerComponent != null) {
UUIDComponent uuidComponent = (UUIDComponent)componentAccessor.getComponent(participantReference, UUIDComponent.getComponentType());
assert uuidComponent != null;
String reputationGroupId = asset.getReputationGroupId();
int amount = asset.getAmount();
reputationModule.changeReputation(playerComponent, reputationGroupId, amount, componentAccessor);
objectiveHistoryData.addRewardForPlayerUUID(uuidComponent.getUuid(), new ReputationObjectiveRewardHistoryData(reputationGroupId, amount));
}
}, this.getAsset(), objective.getObjectiveHistoryData());
}
@Nonnull
public String toString() {
return "ReputationCompletion{} " + super.toString();
}
}