StatCondition class

Пакет: com.hypixel.hytale.server.core.modules.entity.condition

Файл: com/hypixel/hytale/server/core/modules/entity/condition/StatCondition.java

extends: EntityStatBoundCondition

Поля (2)

МодификаторыТипИмя
private final String prefix
private final BiFloatPredicate satisfies

Методы (4)

МодификаторыВозвратСигнатура
StatComparisonType StatComparisonType(String nullxx, BiFloatPredicate nullxxx)
public String getPrefixpublic String getPrefix()
public boolean satisfiespublic boolean satisfies(float var1, float var2)
abstract super super(var1, var2)

Исходный код

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

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.codec.validation.Validators;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.function.predicate.BiFloatPredicate;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatValue;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.time.Instant;
class="kw">import javax.annotation.Nonnull;

class="kw">public class StatCondition class="kw">extends EntityStatBoundCondition {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<StatCondition> CODEC = BuilderCodec.builder(StatCondition.class, StatCondition::new, EntityStatBoundCondition.CODEC)
      .append(new KeyedCodec<>("Amount", Codec.FLOAT), (var0, var1) -> var0.amount = var1, var0 -> var0.amount)
      .documentation("The amount to compare the entity's stat against.")
      .addValidator(Validators.nonNull())
      .add()
      .<StatCondition.StatComparisonType>appendInherited(
         new KeyedCodec<>("Comparison", new EnumCodec<>(StatCondition.StatComparisonType.class)),
         (var0, var1) -> var0.comparison = var1,
         var0 -> var0.comparison,
         (var0, var1) -> var0.comparison = var1.comparison
      )
      .documentation("The comparison type used for evaluating the stat condition.")
      .add()
      .build();
   class="kw">protected StatCondition.StatComparisonType comparison = StatCondition.StatComparisonType.GTE;
   class="kw">protected float amount;

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

   class="kw">public StatCondition(boolean var1, int var2, float var3) {
      super(var1, var2);
      this.amount = var3;
   }

   @Override
   class="kw">public boolean eval0(@Nonnull Ref<EntityStore> var1, @Nonnull Instant var2, @Nonnull EntityStatValue var3) {
      class="kw">return this.comparison.satisfies(var3.get(), this.amount);
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "StatCondition{amount=" + this.amount + ", comparison=" + this.comparison.name() + "} " + super.toString();
   }

   class="kw">public enum StatComparisonType {
      GTE(">=", (var0, var1) -> var0 >= var1),
      GT(">", (var0, var1) -> var0 > var1),
      LTE("<=", (var0, var1) -> var0 <= var1),
      LT("<", (var0, var1) -> var0 < var1),
      EQUAL("=", (var0, var1) -> var0 == var1);

      class="kw">private class="kw">final String prefix;
      class="kw">private class="kw">final BiFloatPredicate satisfies;

      StatComparisonType(String nullxx, BiFloatPredicate nullxxx) {
         this.prefix = nullxx;
         this.satisfies = nullxxx;
      }

      class="kw">public String getPrefix() {
         class="kw">return this.prefix;
      }

      class="kw">public boolean satisfies(float var1, float var2) {
         class="kw">return this.satisfies.test(var1, var2);
      }
   }
}