AugmentConditionInteraction class

Пакет: com.hypixel.hytale.builtin.augmentblocks

Файл: com/hypixel/hytale/builtin/augmentblocks/AugmentConditionInteraction.java

extends: SimpleInstantInteraction

Поля (3)

МодификаторыТипИмя
final String[] EMPTY_STRING_ARRAY
BlockPosition var2
Store var3

Методы (2)

МодификаторыВозвратСигнатура
if if(var2 == null)
private boolean passesboolean passes(@Nonnull InteractionContext var1)

Исходный код

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

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.validation.Validators;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.protocol.BlockPosition;
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.modules.interaction.interaction.CooldownHandler;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.SimpleInstantInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;

class="kw">public class AugmentConditionInteraction class="kw">extends SimpleInstantInteraction {
   class="kw">private class="kw">static class="kw">final String[] EMPTY_STRING_ARRAY = new String[0];
   class="kw">private class="kw">static class="kw">final double DEFAULT_RADIUS = 100.0;
   class="kw">public class="kw">static class="kw">final BuilderCodec<AugmentConditionInteraction> CODEC = BuilderCodec.builder(
         AugmentConditionInteraction.class, AugmentConditionInteraction::new, SimpleInstantInteraction.CODEC
      )
      .documentation("An interaction that is successful while every required tag is granted by augment blocks around the target block.")
      .<String[]>appendInherited(
         new KeyedCodec<>("RequiredAugmentTags", Codec.STRING_ARRAY),
         (var0, var1) -> var0.requiredAugmentTags = var1,
         var0 -> var0.requiredAugmentTags,
         (var0, var1) -> var0.requiredAugmentTags = var1.requiredAugmentTags
      )
      .addValidator(Validators.nonNull())
      .add()
      .appendInherited(
         new KeyedCodec<>("Radius", Codec.DOUBLE), (var0, var1) -> var0.radius = var1, var0 -> var0.radius, (var0, var1) -> var0.radius = var1.radius
      )
      .add()
      .build();
   class="kw">private String[] requiredAugmentTags = EMPTY_STRING_ARRAY;
   class="kw">private double radius = 100.0;

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

   @Override
   class="kw">protected void firstRun(@Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nonnull CooldownHandler var3) {
      var2.getState().state = this.passes(var2) ? InteractionState.Finished : InteractionState.Failed;
   }

   class="kw">private boolean passes(@Nonnull InteractionContext var1) {
      BlockPosition var2 = var1.getTargetBlock();
      if (var2 == null) {
         class="kw">return false;
      }

      Store var3 = var1.getCommandBuffer().getExternalData().getWorld().getChunkStore().getStore();
      class="kw">return AugmentBlocksUtils.requirementsMet(var3, new Vector3i(var2.x, var2.y, var2.z), this.radius, this.requiredAugmentTags);
   }

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