MemoriesConditionInteraction class

Пакет: com.hypixel.hytale.builtin.adventure.memories.interactions

Файл: com/hypixel/hytale/builtin/adventure/memories/interactions/MemoriesConditionInteraction.java

extends: Interaction

Поля (19)

МодификаторыТипИмя
Label var2
com.hypixel.hytale.protocol.MemoriesConditionInteraction var2
Label[] var3
ObjectIterator var3
ObjectIterator var3
Entry var4
Entry var4
int var5
CommandBuffer var6
int var6
Interaction var6
World var7
int var7
var7
int var8
int var8
int var9
var9
Interaction var9

Методы (6)

МодификаторыВозвратСигнатура
for for(int var1 = 0; var1 < var0.sortedKeys.length; var1++)
for for(int var4 = 0; var4 < var3.length; var4++)
for for(int var7 = 0; var7 < this.sortedKeys.length; var7++)
if if(var9 == -1)
if if(var7 == -1)
if if(this.failed != null)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.memories.interactions;

class="kw">import com.hypixel.hytale.builtin.adventure.memories.MemoriesPlugin;
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.map.Int2ObjectMapCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.protocol.InteractionState;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.protocol.WaitForDataFrom;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionManager;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.CooldownHandler;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.Interaction;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.data.Collector;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.data.CollectorTag;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.data.StringTag;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.operation.Label;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.operation.OperationsBuilder;
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.ints.Int2IntOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMaps;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMap.Entry;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectIterator;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class MemoriesConditionInteraction class="kw">extends Interaction {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<MemoriesConditionInteraction> CODEC = BuilderCodec.builder(
         MemoriesConditionInteraction.class, MemoriesConditionInteraction::new, ABSTRACT_CODEC
      )
      .appendInherited(
         new KeyedCodec<>("Next", new Int2ObjectMapCodec<>(Interaction.CHILD_ASSET_CODEC, Int2ObjectOpenHashMap::new)),
         (var0, var1) -> var0.next = var1,
         var0 -> var0.next,
         (var0, var1) -> var0.next = var1.next
      )
      .documentation("The interaction to run if the player's memories level matches the key.")
      .addValidator(Validators.nonNull())
      .add()
      .<String>appendInherited(
         new KeyedCodec<>("Failed", Interaction.CHILD_ASSET_CODEC),
         (var0, var1) -> var0.failed = var1,
         var0 -> var0.failed,
         (var0, var1) -> var0.failed = var1.failed
      )
      .documentation("The interaction to run if the player's memories level does not match any key.")
      .add()
      .afterDecode(var0 -> {
         var0.levelToLabel.defaultReturnValue(-1);
         var0.sortedKeys = var0.next.keySet().toIntArray();
         Arrays.sort(var0.sortedKeys);
         var0.levelToLabel.clear();

         for (int var1 = 0; var1 < var0.sortedKeys.length; var1++) {
            var0.levelToLabel.put(var0.sortedKeys[var1], var1);
         }
      })
      .build();
   @Nonnull
   class="kw">private class="kw">static class="kw">final StringTag TAG_FAILED = StringTag.of("Failed");
   @Nonnull
   class="kw">private Int2ObjectMap<String> next = Int2ObjectMaps.emptyMap();
   class="kw">private class="kw">transient int[] sortedKeys;
   @Nonnull
   class="kw">private class="kw">final Int2IntOpenHashMap levelToLabel = new Int2IntOpenHashMap();
   @Nullable
   class="kw">private String failed;

   class="kw">public MemoriesConditionInteraction() {
   }

   @Override
   class="kw">protected void tick0(boolean var1, float var2, @Nonnull InteractionType var3, @Nonnull InteractionContext var4, @Nonnull CooldownHandler var5) {
      CommandBuffer var6 = var4.getCommandBuffer();
      assert var6 != null;
      World var7 = var6.getExternalData().getWorld();
      int var8 = MemoriesPlugin.get().getMemoriesLevel(var7.getGameplayConfig());
      var4.getState().chainingIndex = var8;
      int var9 = this.levelToLabel.get(var8);
      if (var9 == -1) {
         var9 = this.sortedKeys.length;
         var4.getState().state = InteractionState.Failed;
      } else {
         var4.getState().state = InteractionState.Finished;
      }

      var4.jump(var4.getLabel(var9));
   }

   @Override
   class="kw">protected void simulateTick0(boolean var1, float var2, @Nonnull InteractionType var3, @Nonnull InteractionContext var4, @Nonnull CooldownHandler var5) {
      int var6 = var4.getServerState().chainingIndex;
      int var7 = this.levelToLabel.get(var6);
      if (var7 == -1) {
         var7 = this.sortedKeys.length;
         var4.getState().state = InteractionState.Failed;
      } else {
         var4.getState().state = InteractionState.Finished;
      }

      var4.jump(var4.getLabel(var7));
   }

   @Override
   class="kw">public void compile(@Nonnull OperationsBuilder var1) {
      Label var2 = var1.createUnresolvedLabel();
      Label[] var3 = new Label[this.next.size() + 1];

      for (int var4 = 0; var4 < var3.length; var4++) {
         var3[var4] = var1.createUnresolvedLabel();
      }

      var1.addOperation(this, var3);
      var1.jump(var2);

      for (int var7 = 0; var7 < this.sortedKeys.length; var7++) {
         int var5 = this.sortedKeys[var7];
         var1.resolveLabel(var3[var7]);
         Interaction var6 = Interaction.getInteractionOrUnknown((String)this.next.get(var5));
         var6.compile(var1);
         var1.jump(var2);
      }

      int var8 = this.sortedKeys.length;
      var1.resolveLabel(var3[var8]);
      if (this.failed != null) {
         Interaction var9 = Interaction.getInteractionOrUnknown(this.failed);
         var9.compile(var1);
      }

      var1.resolveLabel(var2);
   }

   @Nonnull
   @Override
   class="kw">protected com.hypixel.hytale.protocol.Interaction generatePacket() {
      class="kw">return new com.hypixel.hytale.protocol.MemoriesConditionInteraction();
   }

   @Override
   class="kw">protected void configurePacket(@Nonnull com.hypixel.hytale.protocol.Interaction var1) {
      super.configurePacket(var1);
      com.hypixel.hytale.protocol.MemoriesConditionInteraction var2 = (com.hypixel.hytale.protocol.MemoriesConditionInteraction)var1;
      var2.memoriesNext = new Int2IntOpenHashMap(this.next.size());
      ObjectIterator var3 = this.next.int2ObjectEntrySet().iterator();

      while (var3.hasNext()) {
         Entry var4 = (Entry<String>)var3.next();
         var2.memoriesNext.put(var4.getIntKey(), Interaction.getInteractionIdOrUnknown((String)var4.getValue()));
      }

      var2.failed = Interaction.getInteractionIdOrUnknown(this.failed);
   }

   @Override
   class="kw">public boolean walk(@Nonnull Collector var1, @Nonnull InteractionContext var2) {
      ObjectIterator var3 = this.next.int2ObjectEntrySet().iterator();

      while (var3.hasNext()) {
         Entry var4 = (Entry<String>)var3.next();
         if (InteractionManager.walkInteraction(var1, var2, new MemoriesConditionInteraction.MemoriesTag(var4.getIntKey()), (String)var4.getValue())) {
            class="kw">return true;
         }
      }

      class="kw">return this.failed != null ? InteractionManager.walkInteraction(var1, var2, TAG_FAILED, this.failed) : false;
   }

   @Override
   class="kw">public boolean needsRemoteSync() {
      class="kw">return false;
   }

   @Nonnull
   @Override
   class="kw">public WaitForDataFrom getWaitForDataFrom() {
      class="kw">return WaitForDataFrom.Server;
   }

   class="kw">private record MemoriesTag(int memoryLevel) class="kw">implements CollectorTag {
      class="kw">private MemoriesTag {
      }
   }
}