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();
   }
}