hytale-server/com/hypixel/hytale/builtin/adventure/npcobjectives/assets/BountyObjectiveTaskAsset.java

75 lines
2.8 KiB
Java

package com.hypixel.hytale.builtin.adventure.npcobjectives.assets;
import com.hypixel.hytale.builtin.adventure.objectives.config.task.ObjectiveTaskAsset;
import com.hypixel.hytale.builtin.adventure.objectives.config.taskcondition.TaskConditionAsset;
import com.hypixel.hytale.builtin.adventure.objectives.config.worldlocationproviders.WorldLocationProvider;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.math.vector.Vector3i;
import java.util.Objects;
import javax.annotation.Nonnull;
public class BountyObjectiveTaskAsset extends ObjectiveTaskAsset {
public static final BuilderCodec<BountyObjectiveTaskAsset> CODEC = BuilderCodec.builder(
BountyObjectiveTaskAsset.class, BountyObjectiveTaskAsset::new, ObjectiveTaskAsset.BASE_CODEC
)
.append(
new KeyedCodec<>("NpcId", Codec.STRING),
(bountyObjectiveTaskAsset, s) -> bountyObjectiveTaskAsset.npcId = s,
bountyObjectiveTaskAsset -> bountyObjectiveTaskAsset.npcId
)
.add()
.<WorldLocationProvider>append(
new KeyedCodec<>("WorldLocationCondition", WorldLocationProvider.CODEC),
(bountyObjectiveTaskAsset, worldLocationCondition) -> bountyObjectiveTaskAsset.worldLocationProvider = worldLocationCondition,
bountyObjectiveTaskAsset -> bountyObjectiveTaskAsset.worldLocationProvider
)
.addValidator(Validators.nonNull())
.add()
.build();
protected String npcId;
protected WorldLocationProvider worldLocationProvider;
public BountyObjectiveTaskAsset(
String descriptionId, TaskConditionAsset[] taskConditions, Vector3i[] mapMarkers, String npcId, WorldLocationProvider worldLocationProvider
) {
super(descriptionId, taskConditions, mapMarkers);
this.npcId = npcId;
this.worldLocationProvider = worldLocationProvider;
}
protected BountyObjectiveTaskAsset() {
}
@Nonnull
@Override
public ObjectiveTaskAsset.TaskScope getTaskScope() {
return ObjectiveTaskAsset.TaskScope.PLAYER;
}
public String getNpcId() {
return this.npcId;
}
public WorldLocationProvider getWorldLocationProvider() {
return this.worldLocationProvider;
}
@Override
protected boolean matchesAsset0(ObjectiveTaskAsset task) {
if (task instanceof BountyObjectiveTaskAsset asset) {
return !Objects.equals(asset.npcId, this.npcId) ? false : Objects.equals(asset.worldLocationProvider, this.worldLocationProvider);
} else {
return false;
}
}
@Nonnull
@Override
public String toString() {
return "BountyObjectiveTaskAsset{npcId='" + this.npcId + "', worldLocationCondition=" + this.worldLocationProvider + "} " + super.toString();
}
}