DurabilityConditionInteraction class

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

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

extends: SimpleInstantInteraction

Поля (5)

МодификаторыТипИмя
ItemStack var2
com.hypixel.hytale.protocol.DurabilityConditionInteraction var2
double var3
double var5
double var7

Методы (3)

МодификаторыВозвратСигнатура
if if(var2 == null)
protected boolean matchesboolean matches(@Nonnull InteractionContext var1)
return switchreturn switch(this.operator)

Исходный код

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

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.EnumCodec;
class="kw">import com.hypixel.hytale.protocol.DurabilityOperator;
class="kw">import com.hypixel.hytale.protocol.Interaction;
class="kw">import com.hypixel.hytale.protocol.InteractionState;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.protocol.ValueType;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
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 javax.annotation.Nonnull;

class="kw">public class DurabilityConditionInteraction class="kw">extends SimpleInstantInteraction {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<DurabilityConditionInteraction> CODEC = BuilderCodec.builder(
         DurabilityConditionInteraction.class, DurabilityConditionInteraction::new, SimpleInstantInteraction.CODEC
      )
      .documentation("Gates the interaction chain on the held item's durability.")
      .<Float>appendInherited(
         new KeyedCodec<>("Threshold", Codec.FLOAT),
         (var0, var1) -> var0.threshold = var1,
         var0 -> var0.threshold,
         (var0, var1) -> var0.threshold = var1.threshold
      )
      .documentation("Durability value to compare against. Interpreted as Absolute (raw durability) or Percent (durability/maxDurability * 100) per ValueType.")
      .add()
      .<ValueType>appendInherited(
         new KeyedCodec<>("ValueType", new EnumCodec<>(ValueType.class)),
         (var0, var1) -> var0.valueType = var1,
         var0 -> var0.valueType,
         (var0, var1) -> var0.valueType = var1.valueType
      )
      .documentation("Whether Threshold is interpreted as an Absolute durability value or a Percent of MaxDurability. Default: Absolute.")
      .add()
      .<DurabilityOperator>appendInherited(
         new KeyedCodec<>("Operator", new EnumCodec<>(DurabilityOperator.class)),
         (var0, var1) -> var0.operator = var1,
         var0 -> var0.operator,
         (var0, var1) -> var0.operator = var1.operator
      )
      .documentation(
         "How to compare the item's durability to Threshold. Default: LessOrEqual (succeeds when durability <= Threshold). Choices: LessThan, LessOrEqual, GreaterThan, GreaterOrEqual, Equal, NotEqual."
      )
      .add()
      .build();
   class="kw">protected float threshold;
   @Nonnull
   class="kw">protected ValueType valueType = ValueType.Absolute;
   @Nonnull
   class="kw">protected DurabilityOperator operator = DurabilityOperator.LessOrEqual;

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

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

   class="kw">protected boolean matches(@Nonnull InteractionContext var1) {
      ItemStack var2 = var1.getHeldItem();
      if (var2 == null) {
         class="kw">return false;
      }

      if (var2.isUnbreakable()) {
         class="kw">return true;
      }

      double var3 = var2.getMaxDurability();
      double var5 = var2.getDurability();
      double var7 = this.valueType == ValueType.Absolute ? var5 : (var3 > 0.0 ? var5 / var3 * 100.0 : 0.0);

      class="kw">return class="kw">switch (this.operator) {
         case LessThan -> var7 < this.threshold;
         case LessOrEqual -> var7 <= this.threshold;
         case GreaterThan -> var7 > this.threshold;
         case GreaterOrEqual -> var7 >= this.threshold;
         case Equal -> var7 == this.threshold;
         case NotEqual -> var7 != this.threshold;
      };
   }

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

   @Override
   class="kw">protected void configurePacket(Interaction var1) {
      super.configurePacket(var1);
      com.hypixel.hytale.protocol.DurabilityConditionInteraction var2 = (com.hypixel.hytale.protocol.DurabilityConditionInteraction)var1;
      var2.threshold = this.threshold;
      var2.valueType = this.valueType;
      var2.operator = this.operator;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "DurabilityConditionInteraction{threshold="
         + this.threshold
         + ", valueType="
         + this.valueType
         + ", operator="
         + this.operator
         + "} "
         + super.toString();
   }
}