SimpleInteraction class

Пакет: com.hypixel.hytale.server.core.modules.interaction.interaction.config

Файл: com/hypixel/hytale/server/core/modules/interaction/interaction/config/SimpleInteraction.java

extends: Interaction

Поля (6)

МодификаторыТипИмя
final BuilderCodec<SimpleInteraction> CODEC
Label var2
com.hypixel.hytale.protocol.SimpleInteraction var2
Label var3
Interaction var4
Interaction var5

Методы (5)

МодификаторыВозвратСигнатура
if if(this.next == null && this.failed == null)
if if(this.next != null)
if if(this.failed != null)
if if(this.failed != null)
abstract super super(var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.interaction.interaction.config;

class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
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.data.Collector;
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 javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class SimpleInteraction class="kw">extends Interaction {
   class="kw">public class="kw">static class="kw">final BuilderCodec<SimpleInteraction> CODEC = BuilderCodec.<Interaction>builder(
         SimpleInteraction.class, SimpleInteraction::new, Interaction.ABSTRACT_CODEC
      )
      .documentation(
         "A interaction that does nothing other than base interaction features. Can be used for simple delays or triggering animations in between other interactions."
      )
      .<String>appendInherited(
         new KeyedCodec<>("Next", Interaction.CHILD_ASSET_CODEC), (var0, var1) -> var0.next = var1, var0 -> var0.next, (var0, var1) -> var0.next = var1.next
      )
      .documentation("The interactions to run when this interaction succeeds.")
      .addValidatorLate(() -> VALIDATOR_CACHE.getValidator().late())
      .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 interactions to run when this interaction fails.")
      .addValidatorLate(() -> VALIDATOR_CACHE.getValidator().late())
      .add()
      .build();
   class="kw">private class="kw">static class="kw">final StringTag TAG_NEXT = StringTag.of("Next");
   class="kw">private class="kw">static class="kw">final StringTag TAG_FAILED = StringTag.of("Failed");
   class="kw">private class="kw">static class="kw">final int FAILED_LABEL_INDEX = 0;
   @Nullable
   class="kw">protected String next;
   @Nullable
   class="kw">protected String failed;

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

   class="kw">public SimpleInteraction(String var1) {
      super(var1);
   }

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

   @Override
   class="kw">protected void tick0(boolean var1, float var2, @Nonnull InteractionType var3, @Nonnull InteractionContext var4, @Nonnull CooldownHandler var5) {
      if (var4.getState().state == InteractionState.Failed && var4.hasLabels()) {
         var4.jump(var4.getLabel(0));
      }
   }

   @Override
   class="kw">protected void simulateTick0(boolean var1, float var2, @Nonnull InteractionType var3, @Nonnull InteractionContext var4, @Nonnull CooldownHandler var5) {
      if (this.getWaitForDataFrom() == WaitForDataFrom.Server && var4.getServerState() != null && var4.getServerState().state == InteractionState.Failed) {
         var4.getState().state = InteractionState.Failed;
      }

      this.tick0(var1, var2, var3, var4, var5);
   }

   @Override
   class="kw">public void compile(@Nonnull OperationsBuilder var1) {
      if (this.next == null && this.failed == null) {
         var1.addOperation(this);
      } else {
         Label var2 = var1.createUnresolvedLabel();
         Label var3 = var1.createUnresolvedLabel();
         var1.addOperation(this, var2);
         if (this.next != null) {
            Interaction var4 = Interaction.getInteractionOrUnknown(this.next);
            var4.compile(var1);
         }

         if (this.failed != null) {
            var1.jump(var3);
         }

         var1.resolveLabel(var2);
         if (this.failed != null) {
            Interaction var5 = Interaction.getInteractionOrUnknown(this.failed);
            var5.compile(var1);
         }

         var1.resolveLabel(var3);
      }
   }

   @Override
   class="kw">public boolean walk(@Nonnull Collector var1, @Nonnull InteractionContext var2) {
      class="kw">return this.next != null && InteractionManager.walkInteraction(var1, var2, TAG_NEXT, this.next)
         ? true
         : this.failed != null && InteractionManager.walkInteraction(var1, var2, TAG_FAILED, this.failed);
   }

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

   @Override
   class="kw">protected void configurePacket(com.hypixel.hytale.protocol.Interaction var1) {
      super.configurePacket(var1);
      com.hypixel.hytale.protocol.SimpleInteraction var2 = (com.hypixel.hytale.protocol.SimpleInteraction)var1;
      var2.next = Interaction.getInteractionIdOrUnknown(this.next);
      var2.failed = Interaction.getInteractionIdOrUnknown(this.failed);
   }

   @Override
   class="kw">public boolean needsRemoteSync() {
      class="kw">return needsRemoteSync(this.next) || needsRemoteSync(this.failed);
   }

   @Override
   class="kw">public String toString() {
      class="kw">return "SimpleInteraction{next='" + this.next + "', failed='" + this.failed + "'} " + super.toString();
   }
}