MaterialCache class

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

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

Поля (31)

МодификаторыТипИмя
private int blockId
private int filler
private int fluidId
private final MaterialCache.FluidKey fluidKey
private byte fluidLevel
private Holder<ChunkStore> holder
private int rotation
private final MaterialCache.SolidKey solidKey
private int support
int var1
int var1
int var1
var1
var1
var1
Material var2
SolidMaterial var2
FluidMaterial var2
Fluid var2
SolidMaterial var2
FluidMaterial var3
RotationTuple var3
int var3
BlockType var3
int var4
byte var4
int var4
int var5
MaterialCache.FluidKey var5
MaterialCache.SolidKey var5
SolidMaterial var6

Методы (41)

МодификаторыВозвратСигнатура
public FluidKeypublic FluidKey()
public FluidKeypublic FluidKey(@Nonnull FluidMaterial var1)
public FluidKeypublic FluidKey(int var1, byte var2)
public FluidKeypublic FluidKey(@Nonnull MaterialCache.FluidKey var1)
abstract return new Materialreturn new Material(var2, var3)
public MaterialKeypublic MaterialKey()
public MaterialKeypublic MaterialKey(@Nonnull MaterialCache.MaterialKey var1)
public MaterialKeypublic MaterialKey(@Nonnull MaterialCache.SolidKey var1, @Nonnull MaterialCache.FluidKey var2)
public SolidKeypublic SolidKey()
public SolidKeypublic SolidKey(@Nonnull SolidMaterial var1)
public SolidKeypublic SolidKey(int var1, int var2, int var3, int var4, @Nullable Holder<ChunkStore> var5)
public SolidKeypublic SolidKey(@Nonnull MaterialCache.SolidKey var1)
public final boolean equalspublic final boolean equals(Object var1)
public final boolean equalspublic final boolean equals(Object var1)
public final boolean equalspublic final boolean equals(Object var1)
public int getBlockIdpublic int getBlockId()
public int getFillerpublic int getFiller()
public int getFluidIdpublic int getFluidId()
public MaterialCache.FluidKey getFluidKeypublic MaterialCache.FluidKey getFluidKey()
public byte getFluidLevelpublic byte getFluidLevel()
public Holder<ChunkStore> getHolderpublic Holder<ChunkStore> getHolder()
public int getRotationpublic int getRotation()
public MaterialCache.SolidKey getSolidKeypublic MaterialCache.SolidKey getSolidKey()
public int getSupportpublic int getSupport()
public int hashCodepublic int hashCode()
public int hashCodepublic int hashCode()
public int hashCodepublic int hashCode()
if if(var2 == null)
if if(var3 == null)
public void setpublic void set(int var1, byte var2)
public void setpublic void set(@Nonnull FluidMaterial var1)
public void setpublic void set(@Nonnull Material var1)
public void setpublic void set(int var1, int var2, int var3, int var4, @Nullable Holder<ChunkStore> var5)
public void setpublic void set(@Nonnull SolidMaterial var1)
public void setBlockIdpublic void setBlockId(int var1)
public void setFillerpublic void setFiller(int var1)
public void setFluidIdpublic void setFluidId(int var1)
public void setFluidLevelpublic void setFluidLevel(byte var1)
public void setHolderpublic void setHolder(@Nullable Holder<ChunkStore> var1)
public void setRotationpublic void setRotation(int var1)
public void setSupportpublic void setSupport(int var1)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.LoggerUtil;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.RotationTuple;
class="kw">import com.hypixel.hytale.server.core.asset.type.fluid.Fluid;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.BlockRotationUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import java.util.Map;
class="kw">import java.util.Objects;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class MaterialCache {
   @Nonnull
   class="kw">private class="kw">final Map<MaterialCache.SolidKey, SolidMaterial> solidMap = new ConcurrentHashMap<>();
   @Nonnull
   class="kw">private class="kw">final Map<MaterialCache.FluidKey, FluidMaterial> fluidMap = new ConcurrentHashMap<>();
   @Nonnull
   class="kw">private class="kw">final Map<MaterialCache.MaterialKey, Material> materialMap = new ConcurrentHashMap<>();
   @Nonnull
   class="kw">public class="kw">final SolidMaterial UNKNOWN_SOLID = this.getSolidMaterial(new MaterialCache.SolidKey(1, 0, 0, 0, null));
   @Nonnull
   class="kw">public class="kw">final SolidMaterial EMPTY_AIR = this.getSolidMaterial("Empty");
   @Nonnull
   class="kw">public class="kw">final SolidMaterial ROCK_STONE = this.getSolidMaterial("Rock_Stone");
   @Nonnull
   class="kw">public class="kw">final SolidMaterial SOIL_GRASS = this.getSolidMaterial("Soil_Grass");
   @Nonnull
   class="kw">public class="kw">final SolidMaterial SOIL_DIRT = this.getSolidMaterial("Soil_Dirt");
   @Nonnull
   class="kw">public class="kw">final SolidMaterial SOIL_MUD = this.getSolidMaterial("Soil_Mud");
   @Nonnull
   class="kw">public class="kw">final SolidMaterial SOIL_NEEDLES = this.getSolidMaterial("Soil_Needles");
   @Nonnull
   class="kw">public class="kw">final SolidMaterial SOIL_GRAVEL = this.getSolidMaterial("Soil_Gravel");
   @Nonnull
   class="kw">public class="kw">final SolidMaterial ROCK_QUARTZITE = this.getSolidMaterial("Rock_Quartzite");
   @Nonnull
   class="kw">public class="kw">final SolidMaterial ROCK_MARBLE = this.getSolidMaterial("Rock_Marble");
   @Nonnull
   class="kw">public class="kw">final SolidMaterial ROCK_SHALE = this.getSolidMaterial("Rock_Shale");
   @Nonnull
   class="kw">public class="kw">final SolidMaterial FLUID_WATER = this.getSolidMaterial("Fluid_Water");
   @Nonnull
   class="kw">public class="kw">final SolidMaterial BEDROCK = this.getSolidMaterial("Rock_Volcanic");
   @Nonnull
   class="kw">public class="kw">final FluidMaterial UNKNOWN_FLUID = this.getFluidMaterial(new MaterialCache.FluidKey(1, (byte)0));
   @Nonnull
   class="kw">public class="kw">final FluidMaterial EMPTY_FLUID = this.getFluidMaterial(Fluid.EMPTY.getId());
   @Nonnull
   class="kw">public class="kw">final Material EMPTY;
   @Nonnull
   class="kw">public class="kw">final Material FALLBACK_MATERIAL = this.getMaterial(
      new MaterialCache.MaterialKey(new MaterialCache.SolidKey(this.UNKNOWN_SOLID), new MaterialCache.FluidKey(this.UNKNOWN_FLUID))
   );

   class="kw">public MaterialCache() {
      this.EMPTY = this.getMaterial(new MaterialCache.MaterialKey(new MaterialCache.SolidKey(this.EMPTY_AIR), new MaterialCache.FluidKey(this.EMPTY_FLUID)));
   }

   @Nonnull
   class="kw">public Material getMaterial(@Nonnull MaterialCache.MaterialKey var1) {
      Material var2 = this.materialMap.get(var1);
      class="kw">return var2 != null ? var2 : this.materialMap.computeIfAbsent(new MaterialCache.MaterialKey(var1), var1x -> {
         SolidMaterial var2 = this.getSolidMaterial(var1x.solidKey);
         FluidMaterial var3 = this.getFluidMaterial(var1x.fluidKey);
         class="kw">return new Material(var2, var3);
      });
   }

   @Nonnull
   class="kw">public Material getMaterialRotated(@Nonnull MaterialCache.MaterialKey var1, @Nonnull RotationTuple var2) {
      RotationTuple var3 = RotationTuple.compose(var2, RotationTuple.get(var1.solidKey.rotation));
      int var4 = var3.index();
      int var5 = BlockRotationUtil.getRotatedFiller(var1.solidKey.filler, var2);
      var1.solidKey.setRotation(var4);
      var1.solidKey.setFiller(var5);
      class="kw">return this.getMaterial(var1);
   }

   @Nonnull
   class="kw">public FluidMaterial getFluidMaterial(@Nonnull MaterialCache.FluidKey var1) {
      FluidMaterial var2 = this.fluidMap.get(var1);
      class="kw">return var2 != null ? var2 : this.fluidMap.computeIfAbsent(new MaterialCache.FluidKey(var1), var1x -> new FluidMaterial(this, var1x));
   }

   @Nonnull
   class="kw">public FluidMaterial getFluidMaterial(@Nonnull String var1) {
      Fluid var2 = Fluid.getAssetMap().getAsset(var1);
      if (var2 == null) {
         LoggerUtil.getLogger().warning("Attempted to register a Fluid with an invalid name " + var1 + ": using Unknown instead.");
         class="kw">return this.UNKNOWN_FLUID;
      } else {
         int var3 = Fluid.getAssetMap().getIndex(var1);
         byte var4 = var3 == 0 ? 0 : (byte)var2.getMaxFluidLevel();
         MaterialCache.FluidKey var5 = new MaterialCache.FluidKey(var3, var4);
         class="kw">return this.getFluidMaterial(var5);
      }
   }

   @Nonnull
   class="kw">public SolidMaterial getSolidMaterial(@Nonnull MaterialCache.SolidKey var1) {
      SolidMaterial var2 = this.solidMap.get(var1);
      class="kw">return var2 != null ? var2 : this.solidMap.computeIfAbsent(new MaterialCache.SolidKey(var1), var1x -> new SolidMaterial(this, var1x));
   }

   @Nonnull
   class="kw">public SolidMaterial getSolidMaterial(@Nonnull String var1) {
      class="kw">return this.getSolidMaterial(var1, RotationTuple.NONE);
   }

   @Nonnull
   class="kw">public SolidMaterial getSolidMaterial(@Nonnull String var1, @Nonnull RotationTuple var2) {
      BlockType var3 = BlockType.fromString(var1);
      if (var3 == null) {
         HytaleLogger.getLogger().at(Level.WARNING).log("Attempted to register a Solid Material with invalid name %s: using Unknown instead.", var1);
         class="kw">return this.UNKNOWN_SOLID;
      } else {
         int var4 = BlockType.getAssetMap().getIndex(var3.getId());
         if (BlockType.getAssetMap().getAsset(var4) == null) {
            HytaleLogger.getLogger().at(Level.WARNING).log("Attempted to register an invalid Solid Material ID %d: using Unknown instead.", var4);
            class="kw">return this.UNKNOWN_SOLID;
         } else {
            MaterialCache.SolidKey var5 = new MaterialCache.SolidKey(var4, 0, var2.index(), 0, null);
            SolidMaterial var6 = this.solidMap.get(var5);
            class="kw">return var6 != null ? var6 : this.solidMap.computeIfAbsent(var5, var1x -> new SolidMaterial(this, var1x));
         }
      }
   }

   class="kw">public class="kw">static class FluidKey {
      class="kw">private int fluidId;
      class="kw">private byte fluidLevel;

      class="kw">public FluidKey() {
         this.fluidId = 0;
         this.fluidLevel = 0;
      }

      class="kw">public FluidKey(@Nonnull FluidMaterial var1) {
         this.fluidId = var1.fluidId;
         this.fluidLevel = var1.fluidLevel;
      }

      class="kw">public FluidKey(int var1, byte var2) {
         this.fluidId = var1;
         this.fluidLevel = var2;
      }

      class="kw">public FluidKey(@Nonnull MaterialCache.FluidKey var1) {
         this.fluidId = var1.fluidId;
         this.fluidLevel = var1.fluidLevel;
      }

      class="kw">public int getFluidId() {
         class="kw">return this.fluidId;
      }

      class="kw">public byte getFluidLevel() {
         class="kw">return this.fluidLevel;
      }

      class="kw">public void set(int var1, byte var2) {
         this.fluidId = var1;
         this.fluidLevel = var2;
      }

      class="kw">public void set(@Nonnull FluidMaterial var1) {
         this.fluidId = var1.fluidId;
         this.fluidLevel = var1.fluidLevel;
      }

      class="kw">public void setFluidId(int var1) {
         this.fluidId = var1;
      }

      class="kw">public void setFluidLevel(byte var1) {
         this.fluidLevel = var1;
      }

      @Override
      class="kw">public class="kw">final boolean equals(Object var1) {
         class="kw">return !(var1 class="kw">instanceof MaterialCache.FluidKey var2) ? false : this.fluidId == var2.fluidId && this.fluidLevel == var2.fluidLevel;
      }

      @Override
      class="kw">public int hashCode() {
         int var1 = this.fluidId;
         class="kw">return 31 * var1 + this.fluidLevel;
      }
   }

   class="kw">public class="kw">static class MaterialKey {
      @Nonnull
      class="kw">private class="kw">final MaterialCache.SolidKey solidKey;
      @Nonnull
      class="kw">private class="kw">final MaterialCache.FluidKey fluidKey;

      class="kw">public MaterialKey() {
         this.solidKey = new MaterialCache.SolidKey();
         this.fluidKey = new MaterialCache.FluidKey();
      }

      class="kw">public MaterialKey(@Nonnull MaterialCache.MaterialKey var1) {
         this.solidKey = new MaterialCache.SolidKey(var1.solidKey);
         this.fluidKey = new MaterialCache.FluidKey(var1.fluidKey);
      }

      class="kw">public MaterialKey(@Nonnull MaterialCache.SolidKey var1, @Nonnull MaterialCache.FluidKey var2) {
         this.solidKey = var1;
         this.fluidKey = var2;
      }

      @Nonnull
      class="kw">public MaterialCache.SolidKey getSolidKey() {
         class="kw">return this.solidKey;
      }

      @Nonnull
      class="kw">public MaterialCache.FluidKey getFluidKey() {
         class="kw">return this.fluidKey;
      }

      class="kw">public void set(@Nonnull Material var1) {
         this.solidKey.set(var1.solid());
         this.fluidKey.set(var1.fluid());
      }

      @Override
      class="kw">public class="kw">final boolean equals(Object var1) {
         class="kw">return !(var1 class="kw">instanceof MaterialCache.MaterialKey var2) ? false : this.solidKey.equals(var2.solidKey) && this.fluidKey.equals(var2.fluidKey);
      }

      @Override
      class="kw">public int hashCode() {
         int var1 = this.solidKey.hashCode();
         class="kw">return 31 * var1 + this.fluidKey.hashCode();
      }
   }

   class="kw">public class="kw">static class SolidKey {
      class="kw">private int blockId;
      class="kw">private int support;
      class="kw">private int rotation;
      class="kw">private int filler;
      @Nullable
      class="kw">private Holder<ChunkStore> holder;

      class="kw">public SolidKey() {
         this.blockId = 0;
         this.support = 0;
         this.rotation = 0;
         this.filler = 0;
         this.holder = null;
      }

      class="kw">public SolidKey(@Nonnull SolidMaterial var1) {
         this.blockId = var1.blockId;
         this.support = var1.support;
         this.rotation = var1.rotation;
         this.filler = var1.filler;
         this.holder = var1.holder;
      }

      class="kw">public SolidKey(int var1, int var2, int var3, int var4, @Nullable Holder<ChunkStore> var5) {
         this.blockId = var1;
         this.support = var2;
         this.rotation = var3;
         this.filler = var4;
         this.holder = var5;
      }

      class="kw">public SolidKey(@Nonnull MaterialCache.SolidKey var1) {
         this.blockId = var1.blockId;
         this.support = var1.support;
         this.rotation = var1.rotation;
         this.filler = var1.filler;
         this.holder = var1.holder;
      }

      class="kw">public int getBlockId() {
         class="kw">return this.blockId;
      }

      class="kw">public int getSupport() {
         class="kw">return this.support;
      }

      class="kw">public int getRotation() {
         class="kw">return this.rotation;
      }

      class="kw">public int getFiller() {
         class="kw">return this.filler;
      }

      @Nullable
      class="kw">public Holder<ChunkStore> getHolder() {
         class="kw">return this.holder;
      }

      class="kw">public void set(int var1, int var2, int var3, int var4, @Nullable Holder<ChunkStore> var5) {
         this.blockId = var1;
         this.support = var2;
         this.rotation = var3;
         this.filler = var4;
         this.holder = var5;
      }

      class="kw">public void set(@Nonnull SolidMaterial var1) {
         this.blockId = var1.blockId;
         this.support = var1.support;
         this.rotation = var1.rotation;
         this.filler = var1.filler;
         this.holder = var1.holder;
      }

      class="kw">public void setBlockId(int var1) {
         this.blockId = var1;
      }

      class="kw">public void setSupport(int var1) {
         this.support = var1;
      }

      class="kw">public void setRotation(int var1) {
         this.rotation = var1;
      }

      class="kw">public void setFiller(int var1) {
         this.filler = var1;
      }

      class="kw">public void setHolder(@Nullable Holder<ChunkStore> var1) {
         this.holder = var1;
      }

      @Override
      class="kw">public class="kw">final boolean equals(Object var1) {
         class="kw">return !(var1 class="kw">instanceof MaterialCache.SolidKey var2)
            ? false
            : this.blockId == var2.blockId
               && this.support == var2.support
               && this.rotation == var2.rotation
               && this.filler == var2.filler
               && Objects.equals(this.holder, var2.holder);
      }

      @Override
      class="kw">public int hashCode() {
         int var1 = this.blockId;
         var1 = 31 * var1 + this.support;
         var1 = 31 * var1 + this.rotation;
         var1 = 31 * var1 + this.filler;
         class="kw">return 31 * var1 + Objects.hashCode(this.holder);
      }
   }
}