hytale-server/com/hypixel/hytale/builtin/adventure/objectives/config/task/UseEntityObjectiveTaskAsset...

167 lines
5.5 KiB
Java

package com.hypixel.hytale.builtin.adventure.objectives.config.task;
import com.hypixel.hytale.builtin.adventure.objectives.config.taskcondition.TaskConditionAsset;
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;
import javax.annotation.Nullable;
public class UseEntityObjectiveTaskAsset extends CountObjectiveTaskAsset {
public static final BuilderCodec<UseEntityObjectiveTaskAsset> CODEC = BuilderCodec.builder(
UseEntityObjectiveTaskAsset.class, UseEntityObjectiveTaskAsset::new, CountObjectiveTaskAsset.CODEC
)
.append(
new KeyedCodec<>("TaskId", Codec.STRING),
(useEntityObjectiveTaskAsset, s) -> useEntityObjectiveTaskAsset.taskId = s,
useEntityObjectiveTaskAsset -> useEntityObjectiveTaskAsset.taskId
)
.addValidator(Validators.nonNull())
.add()
.append(
new KeyedCodec<>("AnimationIdToPlay", Codec.STRING),
(useEntityObjectiveTaskAsset, s) -> useEntityObjectiveTaskAsset.animationIdToPlay = s,
useEntityObjectiveTaskAsset -> useEntityObjectiveTaskAsset.animationIdToPlay
)
.add()
.append(
new KeyedCodec<>("Dialog", UseEntityObjectiveTaskAsset.DialogOptions.CODEC),
(useEntityObjectiveTask, dialogOptions) -> useEntityObjectiveTask.dialogOptions = dialogOptions,
useEntityObjectiveTask -> useEntityObjectiveTask.dialogOptions
)
.add()
.build();
protected String taskId;
protected String animationIdToPlay;
protected UseEntityObjectiveTaskAsset.DialogOptions dialogOptions;
public UseEntityObjectiveTaskAsset(
String descriptionId,
TaskConditionAsset[] taskConditions,
Vector3i[] mapMarkers,
int count,
String taskId,
String animationIdToPlay,
UseEntityObjectiveTaskAsset.DialogOptions dialogOptions
) {
super(descriptionId, taskConditions, mapMarkers, count);
this.taskId = taskId;
this.animationIdToPlay = animationIdToPlay;
this.dialogOptions = dialogOptions;
}
protected UseEntityObjectiveTaskAsset() {
}
@Nonnull
@Override
public ObjectiveTaskAsset.TaskScope getTaskScope() {
return ObjectiveTaskAsset.TaskScope.PLAYER_AND_MARKER;
}
public String getTaskId() {
return this.taskId;
}
public String getAnimationIdToPlay() {
return this.animationIdToPlay;
}
public UseEntityObjectiveTaskAsset.DialogOptions getDialogOptions() {
return this.dialogOptions;
}
@Override
protected boolean matchesAsset0(ObjectiveTaskAsset task) {
if (!super.matchesAsset0(task)) {
return false;
} else if (task instanceof UseEntityObjectiveTaskAsset asset) {
if (!Objects.equals(asset.animationIdToPlay, this.animationIdToPlay)) {
return false;
} else {
return !Objects.equals(asset.dialogOptions, this.dialogOptions) ? false : asset.taskId.equals(this.taskId);
}
} else {
return false;
}
}
@Nonnull
@Override
public String toString() {
return "UseEntityObjectiveTaskAsset{taskId='"
+ this.taskId
+ "', animationIdToPlay='"
+ this.animationIdToPlay
+ "', dialogOptions="
+ this.dialogOptions
+ "} "
+ super.toString();
}
public static class DialogOptions {
@Nonnull
public static BuilderCodec<UseEntityObjectiveTaskAsset.DialogOptions> CODEC = BuilderCodec.builder(
UseEntityObjectiveTaskAsset.DialogOptions.class, UseEntityObjectiveTaskAsset.DialogOptions::new
)
.append(
new KeyedCodec<>("EntityNameKey", Codec.STRING),
(dialogOptions, s) -> dialogOptions.entityNameKey = s,
dialogOptions -> dialogOptions.entityNameKey
)
.addValidator(Validators.nonNull())
.add()
.<String>append(
new KeyedCodec<>("DialogKey", Codec.STRING), (dialogOptions, s) -> dialogOptions.dialogKey = s, dialogOptions -> dialogOptions.dialogKey
)
.addValidator(Validators.nonNull())
.add()
.build();
protected String entityNameKey;
protected String dialogKey;
public DialogOptions(String entityNameKey, String dialogKey) {
this.entityNameKey = entityNameKey;
this.dialogKey = dialogKey;
}
protected DialogOptions() {
}
public String getEntityNameKey() {
return this.entityNameKey;
}
public String getDialogKey() {
return this.dialogKey;
}
@Override
public boolean equals(@Nullable Object o) {
if (this == o) {
return true;
} else if (o != null && this.getClass() == o.getClass()) {
UseEntityObjectiveTaskAsset.DialogOptions that = (UseEntityObjectiveTaskAsset.DialogOptions)o;
return !this.entityNameKey.equals(that.entityNameKey) ? false : this.dialogKey.equals(that.dialogKey);
} else {
return false;
}
}
@Override
public int hashCode() {
int result = this.entityNameKey.hashCode();
return 31 * result + this.dialogKey.hashCode();
}
@Nonnull
@Override
public String toString() {
return "DialogOptions{entityNameKey='" + this.entityNameKey + "', dialogKey='" + this.dialogKey + "'}";
}
}
}