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);
}
}
}