ReachLocationTask class
Пакет: com.hypixel.hytale.builtin.adventure.objectives.task
Файл: com/hypixel/hytale/builtin/adventure/objectives/task/ReachLocationTask.java
extends: ObjectiveTask
Поля (25)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Vector3d |
var10 |
|
|
var10 |
|
double |
var11 |
|
|
var11 |
|
String |
var13 |
|
|
var13 |
|
Ref |
var15 |
|
TransformComponent |
var16 |
|
ReachLocationMarker |
var17 |
|
Vector3d |
var18 |
|
double |
var19 |
|
com.hypixel.hytale.protocol.ObjectiveTask |
var2 |
|
String |
var21 |
|
ObjectiveTaskMarker |
var22 |
|
String |
var4 |
|
List |
var5 |
|
ReachLocationMarker |
var5 |
|
String |
var5 |
|
UUIDComponent |
var5 |
|
Vector3d |
var6 |
|
String |
var6 |
|
Ref |
var7 |
|
ObjectiveTaskMarker |
var7 |
|
TransformComponent |
var8 |
|
ReachLocationMarker |
var9 |
Методы (9)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
|
for for(int var4 = 0; var4 < var2x.size() |
abstract |
|
for for(int var14 = 1; var14 < var5.size() |
|
|
if if(var19 < var11 && var21 != null) |
|
|
if if(var13 != null) |
|
|
if if(!this.markerLoaded) |
|
|
if if(var6 != null) |
public |
void |
onPlayerReachLocationMarkervoid onPlayerReachLocationMarker(@Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull String var3, @Nonnull Objective var4) |
public |
void |
setupMarkervoid setupMarker(@Nonnull Objective var1, @Nonnull ReachLocationMarker var2, @Nonnull Vector3d var3, @Nonnull CommandBuffer<EntityStore> var4) |
abstract |
|
super super(var1, var2, var3) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.objectives.task;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.Objective;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.config.task.ObjectiveTaskAsset;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.config.task.ReachLocationTaskAsset;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.markers.ObjectiveTaskMarker;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.markers.reachlocation.ReachLocationMarker;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.transaction.TransactionRecord;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class ReachLocationTask class="kw">extends ObjectiveTask {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<ReachLocationTask> CODEC = BuilderCodec.builder(ReachLocationTask.class, ReachLocationTask::new, BASE_CODEC)
.append(new KeyedCodec<>("Completed", Codec.BOOLEAN), (var0, var1) -> var0.completed = var1, var0 -> var0.completed)
.add()
.append(new KeyedCodec<>("MarkerLoaded", Codec.BOOLEAN), (var0, var1) -> var0.markerLoaded = var1, var0 -> var0.markerLoaded)
.add()
.build();
@Nonnull
class="kw">public class="kw">static class="kw">final String MARKER_ICON = "Home.png";
@Nonnull
class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();
@Nonnull
class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, ReachLocationMarker> REACH_LOCATION_MARKER_COMPONENT_TYPE = ReachLocationMarker.getComponentType();
class="kw">private boolean completed;
class="kw">private boolean markerLoaded;
class="kw">public ReachLocationTask(@Nonnull ObjectiveTaskAsset var1, int var2, int var3) {
super(var1, var2, var3);
}
class="kw">protected ReachLocationTask() {
}
@Override
class="kw">public boolean checkCompletion() {
class="kw">return this.completed;
}
@Nonnull
class="kw">public ReachLocationTaskAsset getAsset() {
class="kw">return (ReachLocationTaskAsset)this.asset;
}
@Nonnull
class="kw">private String getMarkerId(@Nonnull Objective var1) {
class="kw">return String.format("ReachLocation_%s_%d", var1.getObjectiveUUID(), this.taskIndex);
}
@Nullable
@Override
class="kw">protected TransactionRecord[] setup0(@Nonnull Objective var1, @Nonnull World var2, @Nonnull Store<EntityStore> var3) {
if (!this.markers.isEmpty()) {
class="kw">return null;
}
String var4 = this.getAsset().getTargetLocationId();
List var5 = new ReferenceArrayList();
var3.forEachChunk(REACH_LOCATION_MARKER_COMPONENT_TYPE, (var2x, var3x) -> {
for (int var4 = 0; var4 < var2x.size(); var4++) {
ReachLocationMarker var5 = var2x.getComponent(var4, REACH_LOCATION_MARKER_COMPONENT_TYPE);
if (var5 != null && var5.getMarkerId().equals(var4)) {
var5.add(var2x.getReferenceTo(var4));
}
}
});
if (!var5.isEmpty()) {
Vector3d var6 = var1.getPosition(var3);
Ref var7 = var5.getFirst();
TransformComponent var8 = var3.getComponent(var7, TRANSFORM_COMPONENT_TYPE);
assert var8 != null;
ReachLocationMarker var9 = var3.getComponent(var7, REACH_LOCATION_MARKER_COMPONENT_TYPE);
assert var9 != null;
Vector3d var10 = var8.getPosition();
double var11 = var10.distanceSquared(var6);
String var13 = var9.getLocationName();
for (int var14 = 1; var14 < var5.size(); var14++) {
Ref var15 = var5.get(var14);
TransformComponent var16 = var3.getComponent(var15, TRANSFORM_COMPONENT_TYPE);
assert var16 != null;
ReachLocationMarker var17 = var3.getComponent(var15, REACH_LOCATION_MARKER_COMPONENT_TYPE);
assert var17 != null;
Vector3d var18 = var16.getPosition();
double var19 = var18.distanceSquared(var6);
String var21 = var17.getLocationName();
if (var19 < var11 && var21 != null) {
var11 = var19;
var10 = var18;
var13 = var21;
}
}
if (var13 != null) {
ObjectiveTaskMarker var22 = new ObjectiveTaskMarker(this.getMarkerId(var1), new Transform(var10), "Home.png", Message.raw(var13));
this.addMarker(var22);
this.markerLoaded = true;
class="kw">return null;
}
}
class="kw">return null;
}
class="kw">public void setupMarker(@Nonnull Objective var1, @Nonnull ReachLocationMarker var2, @Nonnull Vector3d var3, @Nonnull CommandBuffer<EntityStore> var4) {
if (!this.markerLoaded) {
String var5 = var2.getMarkerId();
if (var5.equals(this.getAsset().getTargetLocationId())) {
String var6 = var2.getLocationName();
if (var6 != null) {
ObjectiveTaskMarker var7 = new ObjectiveTaskMarker(this.getMarkerId(var1), new Transform(var3), "Home.png", Message.raw(var6));
this.addMarker(var7);
this.markerLoaded = true;
}
}
}
}
@Nonnull
class="kw">public com.hypixel.hytale.protocol.ObjectiveTask toPacket(@Nonnull Objective var1) {
com.hypixel.hytale.protocol.ObjectiveTask var2 = new com.hypixel.hytale.protocol.ObjectiveTask();
var2.taskDescriptionKey = Message.translation(this.asset.getDescriptionKey(var1.getObjectiveId(), this.taskSetIndex, this.taskIndex))
.getFormattedMessage();
var2.currentCompletion = this.completed ? 1 : 0;
var2.completionNeeded = 1;
class="kw">return var2;
}
class="kw">public void onPlayerReachLocationMarker(@Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull String var3, @Nonnull Objective var4) {
if (var3.equals(this.getAsset().getTargetLocationId())) {
UUIDComponent var5 = var1.getComponent(var2, UUIDComponent.getComponentType());
assert var5 != null;
if (var4.getActivePlayerUUIDs().contains(var5.getUuid())) {
if (this.areTaskConditionsFulfilled(var1, var2, null)) {
this.completed = true;
var4.markDirty();
this.sendUpdateObjectiveTaskPacket(var4);
this.consumeTaskConditions(var1, var2, var4.getActivePlayerUUIDs());
this.complete(var4, var1);
var4.checkTaskSetCompletion(var1);
}
}
}
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "ReachLocationTask{completed=" + this.completed + "} " + super.toString();
}
}