ObjectiveTask class

Пакет: com.hypixel.hytale.builtin.adventure.objectives.task

Файл: com/hypixel/hytale/builtin/adventure/objectives/task/ObjectiveTask.java

implements: NetworkSerializer<Objective, com.hypixel.hytale.protocol.ObjectiveTask>

Поля (16)

МодификаторыТипИмя
return
String var13
TransactionRecord[] var14
int var15
int var17
int var19
UpdateObjectiveTask var2
World var3
Universe var3
Vector3i[] var4
TaskConditionAsset[] var4
TaskConditionAsset[] var4
String var5
PlayerRef var6
Transform var7
String var8

Методы (32)

МодификаторыВозвратСигнатура
public void addMarkervoid addMarker(@Nonnull ObjectiveTaskMarker var1)
public boolean areTaskConditionsFulfilledboolean areTaskConditionsFulfilled(@Nullable ComponentAccessor<EntityStore> var1, @Nullable Ref<EntityStore> var2, @Nullable Set<UUID> var3)
public void assetChangedvoid assetChanged(@Nonnull Objective var1)
abstract abstract boolean checkCompletionboolean checkCompletion()
public void completevoid complete(@Nonnull Objective var1, @Nullable ComponentAccessor<EntityStore> var2)
public void completeTransactionRecordsvoid completeTransactionRecords()
public void consumeTaskConditionsvoid consumeTaskConditions(@Nullable ComponentAccessor<EntityStore> var1, @Nullable Ref<EntityStore> var2, @Nonnull Set<UUID> var3)
for for(ObjectiveTaskMarker var3 : this.markers)
for for(int var6 = 0; var6 < var4.length; var6++)
for for(TransactionRecord var10 : var14)
for for(TransactionRecord var12 : var14)
for for(TaskConditionAsset var8 : var4)
for for(TaskConditionAsset var8 : var4)
if if(var3 == null)
if if(this.eventRegistry != null)
if if(var4 != null)
if if(var14 == null)
if if(!this.complete)
if if(this.eventRegistry != null)
if if(!this.complete)
if if(var6 != null)
if if(var4 == null)
if if(var4 != null)
public boolean isCompleteboolean isComplete()
private void registerTaskRefvoid registerTaskRef()
public void removeMarkervoid removeMarker(String var1)
public void revertTransactionRecordsvoid revertTransactionRecords()
public void sendUpdateObjectiveTaskPacketvoid sendUpdateObjectiveTaskPacket(@Nonnull Objective var1)
public void setAssetvoid setAsset(@Nonnull ObjectiveTaskAsset var1)
private void shutdownEventRegistryvoid shutdownEventRegistry()
public void unloadTransactionRecordsvoid unloadTransactionRecords()
private void unregisterTaskRefvoid unregisterTaskRef()

Исходный код

Показать/скрыть
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.ObjectivePlugin;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.config.task.ObjectiveTaskAsset;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.config.taskcondition.TaskConditionAsset;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.markers.ObjectiveTaskMarker;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.transaction.TransactionRecord;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.transaction.TransactionUtil;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.transaction.WorldTransactionRecord;
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.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.lookup.CodecMapCodec;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.event.EventRegistry;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.protocol.packets.assets.UpdateObjectiveTask;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.io.NetworkSerializer;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
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.ObjectArrayList;
class="kw">import java.util.Arrays;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import java.util.concurrent.CopyOnWriteArrayList;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;

class="kw">public class="kw">abstract class ObjectiveTask class="kw">implements NetworkSerializer<Objective, com.hypixel.hytale.protocol.ObjectiveTask> {
   @Nonnull
   class="kw">public class="kw">static class="kw">final CodecMapCodec<ObjectiveTask> CODEC = new CodecMapCodec<>("Type");
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<ObjectiveTask> BASE_CODEC = BuilderCodec.abstractBuilder(ObjectiveTask.class)
      .append(new KeyedCodec<>("Task", ObjectiveTaskAsset.CODEC), (var0, var1) -> var0.asset = var1, var0 -> var0.asset)
      .add()
      .append(new KeyedCodec<>("Complete", Codec.BOOLEAN), (var0, var1) -> var0.complete = var1, var0 -> var0.complete)
      .add()
      .append(
         new KeyedCodec<>("TransactionRecords", new ArrayCodec<>(TransactionRecord.CODEC, TransactionRecord[]::new)),
         (var0, var1) -> var0.serializedTransactionRecords = var1,
         var0 -> var0.serializedTransactionRecords
      )
      .add()
      .append(new KeyedCodec<>("TaskIndex", Codec.INTEGER), (var0, var1) -> var0.taskIndex = var1, var0 -> var0.taskIndex)
      .add()
      .append(new KeyedCodec<>("TaskSetIndex", Codec.INTEGER), (var0, var1) -> var0.taskSetIndex = var1, var0 -> var0.taskSetIndex)
      .add()
      .append(
         new KeyedCodec<>("Markers", ObjectiveTaskMarker.ARRAY_CODEC),
         (var0, var1) -> var0.markers = new ObjectArrayList(Arrays.asList(var1)),
         var0 -> var0.markers.toArray(ObjectiveTaskMarker[]::new)
      )
      .add()
      .build();
   class="kw">protected ObjectiveTaskAsset asset;
   class="kw">protected boolean complete = false;
   @Nullable
   class="kw">protected EventRegistry eventRegistry;
   @Nullable
   class="kw">protected TransactionRecord[] serializedTransactionRecords;
   @Nullable
   class="kw">protected TransactionRecord[] nonSerializedTransactionRecords;
   class="kw">protected int taskIndex;
   @Nonnull
   class="kw">protected List<ObjectiveTaskMarker> markers = new ObjectArrayList();
   class="kw">protected int taskSetIndex;
   class="kw">protected ObjectiveTaskRef<? class="kw">extends ObjectiveTask> taskRef;

   class="kw">public ObjectiveTask(@Nonnull ObjectiveTaskAsset var1, int var2, int var3) {
      this.asset = var1;
      this.taskIndex = var3;
      this.taskSetIndex = var2;
   }

   class="kw">protected ObjectiveTask() {
   }

   @Nonnull
   class="kw">public ObjectiveTaskAsset getAsset() {
      class="kw">return this.asset;
   }

   class="kw">public void setAsset(@Nonnull ObjectiveTaskAsset var1) {
      this.asset = var1;
   }

   class="kw">public boolean isComplete() {
      class="kw">return this.complete;
   }

   @Nullable
   class="kw">public TransactionRecord[] getSerializedTransactionRecords() {
      class="kw">return this.serializedTransactionRecords;
   }

   @Nullable
   class="kw">public TransactionRecord[] getNonSerializedTransactionRecords() {
      class="kw">return this.nonSerializedTransactionRecords;
   }

   @Nonnull
   class="kw">public List<ObjectiveTaskMarker> getMarkers() {
      class="kw">return this.markers;
   }

   class="kw">public void addMarker(@Nonnull ObjectiveTaskMarker var1) {
      this.markers.add(var1);
   }

   class="kw">public void removeMarker(String var1) {
      for (ObjectiveTaskMarker var3 : this.markers) {
         if (var3.getId().equals(var1)) {
            this.markers.remove(var3);
            class="kw">return;
         }
      }
   }

   class="kw">public class="kw">abstract boolean checkCompletion();

   @Nullable
   class="kw">protected class="kw">abstract TransactionRecord[] setup0(@Nonnull Objective var1, @Nonnull World var2, @Nonnull Store<EntityStore> var3);

   @Nullable
   class="kw">public class="kw">final TransactionRecord[] setup(@Nonnull Objective var1, @Nonnull Store<EntityStore> var2) {
      World var3 = Universe.get().getWorld(var1.getWorldUUID());
      if (var3 == null) {
         String var13 = "This World doesn't exist in this Universe: " + var1.getWorldUUID();
         class="kw">return TransactionRecord.appendFailedTransaction(this.nonSerializedTransactionRecords, new WorldTransactionRecord(), var13);
      }

      if (this.eventRegistry != null) {
         throw new IllegalStateException("ObjectiveTask.eventRegistry is not null, setup() shouldn't be run more than once!");
      }

      this.eventRegistry = new EventRegistry(new CopyOnWriteArrayList<>(), () -> true, null, var3.getEventRegistry());
      Vector3i[] var4 = this.asset.getMapMarkers();
      if (var4 != null) {
         String var5 = var1.getObjectiveUUID().toString();

         for (int var6 = 0; var6 < var4.length; var6++) {
            Transform var7 = new Transform(var4[var6]);
            String var8 = "ObjectiveMarker_" + var5 + "_" + var6;
            this.addMarker(new ObjectiveTaskMarker(var8, var7, "Home.png", Message.translation("server.assetTypes.ObjectiveAsset.title")));
         }
      }

      this.taskRef = new ObjectiveTaskRef<>(var1.getObjectiveUUID(), this);
      this.registerTaskRef();
      TransactionRecord[] var14 = this.setup0(var1, var3, var2);
      if (var14 == null) {
         class="kw">return null;
      }

      int var15 = 0;

      for (TransactionRecord var10 : var14) {
         if (var10.shouldBeSerialized()) {
            var15++;
         }
      }

      this.serializedTransactionRecords = new TransactionRecord[var15];
      this.nonSerializedTransactionRecords = new TransactionRecord[var14.length - var15];
      int var17 = 0;
      int var19 = 0;

      for (TransactionRecord var12 : var14) {
         if (var12.shouldBeSerialized()) {
            this.serializedTransactionRecords[var17++] = var12;
         } else {
            this.nonSerializedTransactionRecords[var19++] = var12;
         }
      }

      class="kw">return var14;
   }

   class="kw">public void complete(@Nonnull Objective var1, @Nullable ComponentAccessor<EntityStore> var2) {
      if (!this.complete) {
         this.markers.clear();
         this.complete = true;
         this.completeTransactionRecords();
      }
   }

   class="kw">private void registerTaskRef() {
      ObjectivePlugin.get().getObjectiveDataStore().addTaskRef(this.taskRef);
   }

   class="kw">private void unregisterTaskRef() {
      ObjectivePlugin.get().getObjectiveDataStore().removeTaskRef(this.taskRef);
   }

   class="kw">public void completeTransactionRecords() {
      TransactionUtil.completeAll(this.serializedTransactionRecords);
      this.serializedTransactionRecords = null;
      TransactionUtil.completeAll(this.nonSerializedTransactionRecords);
      this.nonSerializedTransactionRecords = null;
      this.shutdownEventRegistry();
      this.unregisterTaskRef();
   }

   class="kw">public void revertTransactionRecords() {
      TransactionUtil.revertAll(this.serializedTransactionRecords);
      this.serializedTransactionRecords = null;
      TransactionUtil.revertAll(this.nonSerializedTransactionRecords);
      this.nonSerializedTransactionRecords = null;
      this.shutdownEventRegistry();
      this.unregisterTaskRef();
   }

   class="kw">public void unloadTransactionRecords() {
      TransactionUtil.unloadAll(this.serializedTransactionRecords);
      this.serializedTransactionRecords = null;
      TransactionUtil.unloadAll(this.nonSerializedTransactionRecords);
      this.nonSerializedTransactionRecords = null;
      this.shutdownEventRegistry();
      this.unregisterTaskRef();
   }

   class="kw">private void shutdownEventRegistry() {
      if (this.eventRegistry != null) {
         this.eventRegistry.shutdownAndCleanup(true);
         this.eventRegistry = null;
      }
   }

   class="kw">public void assetChanged(@Nonnull Objective var1) {
      if (!this.complete) {
         if (this.checkCompletion()) {
            this.consumeTaskConditions(null, null, var1.getActivePlayerUUIDs());
            this.complete(var1, null);
         }
      }
   }

   class="kw">public void sendUpdateObjectiveTaskPacket(@Nonnull Objective var1) {
      UpdateObjectiveTask var2 = new UpdateObjectiveTask(var1.getObjectiveUUID(), this.taskIndex, this.toPacket(var1));
      Universe var3 = Universe.get();

      for (UUID var5 : var1.getActivePlayerUUIDs()) {
         PlayerRef var6 = var3.getPlayer(var5);
         if (var6 != null) {
            var6.getPacketHandler().writeNoCache(var2);
         }
      }
   }

   class="kw">public boolean areTaskConditionsFulfilled(@Nullable ComponentAccessor<EntityStore> var1, @Nullable Ref<EntityStore> var2, @Nullable Set<UUID> var3) {
      TaskConditionAsset[] var4 = this.asset.getTaskConditions();
      if (var4 == null) {
         class="kw">return true;
      }

      for (TaskConditionAsset var8 : var4) {
         if (!var8.isConditionFulfilled(var1, var2, var3)) {
            class="kw">return false;
         }
      }

      class="kw">return true;
   }

   class="kw">public void consumeTaskConditions(@Nullable ComponentAccessor<EntityStore> var1, @Nullable Ref<EntityStore> var2, @Nonnull Set<UUID> var3) {
      TaskConditionAsset[] var4 = this.asset.getTaskConditions();
      if (var4 != null) {
         for (TaskConditionAsset var8 : var4) {
            var8.consumeCondition(var1, var2, var3);
         }
      }
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "ObjectiveTask{asset="
         + this.asset
         + ", complete="
         + this.complete
         + ", eventRegistry="
         + this.eventRegistry
         + ", serializedTransactionRecords="
         + Arrays.toString(this.serializedTransactionRecords)
         + ", nonSerializedTransactionRecords="
         + Arrays.toString(this.nonSerializedTransactionRecords)
         + ", taskIndex="
         + this.taskIndex
         + ", markers="
         + this.markers
         + ", taskSetIndex="
         + this.taskSetIndex
         + "}";
   }
}