FirstClickInteraction class

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

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

extends: Interaction

Поля (9)

МодификаторыТипИмя
Label var2
com.hypixel.hytale.protocol.FirstClickInteraction var2
Label var3
Interaction var4
Interaction var5
InteractionSyncData var6
Ref var6
InteractionManager var7
IInteractionSimulationHandler var8

Методы (4)

МодификаторыВозвратСигнатура
if if(this.click == null && this.held == null)
if if(this.click != null)
if if(this.held != null)
if if(this.held != null)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.protocol.InteractionState;
class="kw">import com.hypixel.hytale.protocol.InteractionSyncData;
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.IInteractionSimulationHandler;
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.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.storage.EntityStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class FirstClickInteraction class="kw">extends Interaction {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<FirstClickInteraction> CODEC = BuilderCodec.builder(
         FirstClickInteraction.class, FirstClickInteraction::new, Interaction.ABSTRACT_CODEC
      )
      .documentation("An interaction that runs a different interaction based on if this chain was from a click or due to the key being held down.")
      .<String>appendInherited(
         new KeyedCodec<>("Click", Interaction.CHILD_ASSET_CODEC),
         (var0, var1) -> var0.click = var1,
         var0 -> var0.click,
         (var0, var1) -> var0.click = var1.click
      )
      .documentation("The interaction to run if this chain was initiated by a click.")
      .addValidatorLate(() -> VALIDATOR_CACHE.getValidator().late())
      .add()
      .<String>appendInherited(
         new KeyedCodec<>("Held", Interaction.CHILD_ASSET_CODEC), (var0, var1) -> var0.held = var1, var0 -> var0.held, (var0, var1) -> var0.held = var1.held
      )
      .documentation("The interaction to run if this chain was initiated by holding down the key.")
      .addValidatorLate(() -> VALIDATOR_CACHE.getValidator().late())
      .add()
      .build();
   @Nonnull
   class="kw">public class="kw">static class="kw">final StringTag TAG_CLICK = StringTag.of("Click");
   @Nonnull
   class="kw">public class="kw">static class="kw">final StringTag TAG_HELD = StringTag.of("Held");
   class="kw">private class="kw">static class="kw">final int HELD_LABEL_INDEX = 0;
   @Nullable
   class="kw">protected String click;
   @Nullable
   class="kw">protected String held;

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

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

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

   @Override
   class="kw">protected void simulateTick0(boolean var1, float var2, @Nonnull InteractionType var3, @Nonnull InteractionContext var4, @Nonnull CooldownHandler var5) {
      Ref var6 = var4.getEntity();
      InteractionManager var7 = var4.getInteractionManager();
      assert var7 != null;
      IInteractionSimulationHandler var8 = var7.getInteractionSimulationHandler();
      if (!var8.isCharging(var1, var2, var3, var4, var6, var5)) {
         var4.getState().state = InteractionState.Finished;
      } else {
         var4.getState().state = InteractionState.Failed;
      }
   }

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

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

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

         var1.resolveLabel(var3);
      }
   }

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

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

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

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

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "FirstClickInteraction{click='" + this.click + "', held='" + this.held + "'} " + super.toString();
   }
}