Hash class

Пакет: com.hypixel.hytale.builtin.hytalegenerator.material

Файл: com/hypixel/hytale/builtin/hytalegenerator/material/Material.java

Поля (2)

МодификаторыТипИмя
boolean isCalculated
int value

Исходный код

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

class="kw">import java.util.Objects;
class="kw">import javax.annotation.Nonnull;

class="kw">public class="kw">final class Material {
   @Nonnull
   class="kw">private class="kw">final SolidMaterial solid;
   @Nonnull
   class="kw">private class="kw">final FluidMaterial fluid;
   class="kw">private Material.Hash hashCode;
   class="kw">private Material.Hash materialIdsHash;

   class="kw">public Material(@Nonnull SolidMaterial var1, @Nonnull FluidMaterial var2) {
      this.solid = var1;
      this.fluid = var2;
      this.hashCode = new Material.Hash();
      this.materialIdsHash = new Material.Hash();
   }

   @Override
   class="kw">public boolean equals(Object var1) {
      class="kw">return !(var1 class="kw">instanceof Material var2) ? false : Objects.equals(this.solid, var2.solid) && Objects.equals(this.fluid, var2.fluid);
   }

   @Override
   class="kw">public int hashCode() {
      if (this.hashCode.isCalculated) {
         class="kw">return this.hashCode.value;
      }

      this.hashCode.value = hashCode(this.solid, this.fluid);
      this.hashCode.isCalculated = true;
      class="kw">return this.hashCode.value;
   }

   class="kw">public int hashMaterialIds() {
      if (this.materialIdsHash.isCalculated) {
         class="kw">return this.materialIdsHash.value;
      }

      this.materialIdsHash.value = hashMaterialIds(this.solid, this.fluid);
      this.materialIdsHash.isCalculated = true;
      class="kw">return this.materialIdsHash.value;
   }

   class="kw">public class="kw">static int hashCode(@Nonnull SolidMaterial var0, @Nonnull FluidMaterial var1) {
      class="kw">return Objects.hash(var0.hashCode(), var1.hashCode());
   }

   class="kw">public class="kw">static int hashMaterialIds(@Nonnull SolidMaterial var0, @Nonnull FluidMaterial var1) {
      class="kw">return Objects.hash(var0.blockId, var1.fluidId);
   }

   @Nonnull
   class="kw">public SolidMaterial solid() {
      class="kw">return this.solid;
   }

   @Nonnull
   class="kw">public FluidMaterial fluid() {
      class="kw">return this.fluid;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "Material[solid=" + this.solid + ", fluid=" + this.fluid + "]";
   }

   class="kw">private class="kw">static class Hash {
      int value = 0;
      boolean isCalculated = false;

      class="kw">private Hash() {
      }
   }
}