CalculationType enum

Пакет: com.hypixel.hytale.server.core.modules.entitystats.modifier

Файл: com/hypixel/hytale/server/core/modules/entitystats/modifier/StaticModifier.java

Методы (4)

МодификаторыВозвратСигнатура
public float computepublic float compute(float var1, float var2)
public float computepublic float compute(float var1, float var2)
abstract public abstract float computepublic abstract float compute(float var1, float var2)
public String createKeypublic String createKey(String var1)

Исходный код

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

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 javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class StaticModifier class="kw">extends Modifier {
   class="kw">public class="kw">static class="kw">final BuilderCodec<StaticModifier> CODEC = BuilderCodec.builder(StaticModifier.class, StaticModifier::new, BASE_CODEC)
      .append(
         new KeyedCodec<>("CalculationType", new EnumCodec<>(StaticModifier.CalculationType.class)),
         (var0, var1) -> var0.calculationType = var1,
         var0 -> var0.calculationType
      )
      .addValidator(Validators.nonNull())
      .add()
      .append(new KeyedCodec<>("Amount", Codec.FLOAT), (var0, var1) -> var0.amount = var1, var0 -> var0.amount)
      .add()
      .build();
   class="kw">public class="kw">static class="kw">final BuilderCodec<StaticModifier> ENTITY_CODEC = BuilderCodec.builder(StaticModifier.class, StaticModifier::new)
      .append(
         new KeyedCodec<>("CalculationType", new EnumCodec<>(StaticModifier.CalculationType.class, EnumCodec.EnumStyle.LEGACY)),
         (var0, var1) -> var0.calculationType = var1,
         var0 -> var0.calculationType
      )
      .setVersionRange(0, 3)
      .addValidator(Validators.nonNull())
      .add()
      .<StaticModifier.CalculationType>append(
         new KeyedCodec<>("CalculationType", new EnumCodec<>(StaticModifier.CalculationType.class)),
         (var0, var1) -> var0.calculationType = var1,
         var0 -> var0.calculationType
      )
      .setVersionRange(4, 5)
      .addValidator(Validators.nonNull())
      .add()
      .addField(new KeyedCodec<>("Amount", Codec.FLOAT), (var0, var1) -> var0.amount = var1, var0 -> var0.amount)
      .build();
   class="kw">protected StaticModifier.CalculationType calculationType;
   class="kw">protected float amount;

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

   class="kw">public StaticModifier(Modifier.ModifierTarget var1, StaticModifier.CalculationType var2, float var3) {
      super(var1);
      this.calculationType = var2;
      this.amount = var3;
   }

   class="kw">public StaticModifier.CalculationType getCalculationType() {
      class="kw">return this.calculationType;
   }

   class="kw">public float getAmount() {
      class="kw">return this.amount;
   }

   @Override
   class="kw">public float apply(float var1) {
      class="kw">return this.calculationType.compute(var1, this.amount);
   }

   @Nonnull
   @Override
   class="kw">public com.hypixel.hytale.protocol.Modifier toPacket() {
      com.hypixel.hytale.protocol.Modifier var1 = super.toPacket();

      var1.calculationType = class="kw">switch (this.calculationType) {
         case ADDITIVE -> com.hypixel.hytale.protocol.CalculationType.Additive;
         case MULTIPLICATIVE -> com.hypixel.hytale.protocol.CalculationType.Multiplicative;
      };
      var1.amount = this.amount;
      class="kw">return var1;
   }

   @Override
   class="kw">public boolean equals(@Nullable Object var1) {
      if (this == var1) {
         class="kw">return true;
      }

      if (var1 == null || this.getClass() != var1.getClass()) {
         class="kw">return false;
      }

      if (!super.equals(var1)) {
         class="kw">return false;
      }

      StaticModifier var2 = (StaticModifier)var1;
      class="kw">return Float.compare(var2.amount, this.amount) != 0 ? false : this.calculationType == var2.calculationType;
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = super.hashCode();
      var1 = 31 * var1 + (this.calculationType != null ? this.calculationType.hashCode() : 0);
      class="kw">return 31 * var1 + (this.amount != 0.0F ? Float.floatToIntBits(this.amount) : 0);
   }

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

   class="kw">public enum CalculationType {
      ADDITIVE {
         @Override
         class="kw">public float compute(float var1, float var2) {
            class="kw">return var1 + var2;
         }
      },
      MULTIPLICATIVE {
         @Override
         class="kw">public float compute(float var1, float var2) {
            class="kw">return var1 * var2;
         }
      };

      CalculationType() {
      }

      class="kw">public class="kw">abstract float compute(float var1, float var2);

      @Nonnull
      class="kw">public String createKey(String var1) {
         class="kw">return var1 + "_" + this;
      }
   }
}