Fluid class
Пакет: com.hypixel.hytale.server.core.asset.type.fluid
Файл: com/hypixel/hytale/server/core/asset/type/fluid/Fluid.java
implements: JsonAssetWithMap<String, IndexedLookupTableAssetMap<String, Fluid>>, NetworkSerializable<com.hypixel.hytale.protocol.Fluid>
Поля (50)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
ASSET_STORE |
final |
AssetBuilderCodec<String, Fluid> |
CODEC |
|
public String |
blockTypeStr |
|
|
break |
|
public int |
fluidId |
|
public byte |
fluidLevel |
|
|
var0 |
|
|
var0 |
|
|
var0 |
|
|
var0 |
|
|
var0 |
|
|
var0 |
|
com.hypixel.hytale.protocol.Fluid |
var1 |
|
int |
var1 |
|
int |
var10 |
|
String |
var11 |
|
|
var11 |
|
|
var11 |
|
|
var11 |
|
String |
var13 |
|
byte |
var14 |
|
|
var14 |
|
|
var14 |
|
|
var14 |
|
int |
var16 |
|
int |
var17 |
|
int |
var18 |
|
String |
var2 |
|
Fluid |
var2 |
|
float |
var2 |
|
byte |
var2 |
|
|
var2 |
|
|
var2 |
|
|
var2 |
|
String |
var3 |
|
int |
var3 |
|
String |
var4 |
|
int |
var4 |
|
|
var4 |
|
int |
var4 |
|
int |
var5 |
|
String |
var5 |
|
|
var5 |
|
|
var5 |
|
int |
var6 |
|
String |
var7 |
|
|
var7 |
|
|
var7 |
|
IntSet |
var8 |
|
BlockTextures[] |
var9 |
Методы (45)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
ConversionResultpublic ConversionResult(String var1, int var2, byte var3) |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown key! " + var1) |
|
public int |
deserializepublic int deserialize(MemorySegment var1, int var2) |
|
|
for for(ShaderType var5 : this.effect) |
|
|
for for(BlockTypeTextures var6 : this.textures) |
|
|
for for(int var10 = 0; var10 < this.textures.length; var10++) |
|
|
for for(int var7 = 0; var7 < this.particles.length; var7++) |
static |
IndexedLookupTableAssetMap<String, Fluid> |
getAssetMapIndexedLookupTableAssetMap<String, Fluid> getAssetMap() |
static |
AssetStore<String, Fluid, IndexedLookupTableAssetMap<String, Fluid>> |
getAssetStoreAssetStore<String, Fluid, IndexedLookupTableAssetMap<String, Fluid>> getAssetStore() |
public |
int |
getDamageToEntitiesint getDamageToEntities() |
public |
AssetExtraInfo.Data |
getDataAssetExtraInfo.Data getData() |
public |
String |
getFluidFXIdString getFluidFXId() |
public |
int |
getFluidFXIndexint getFluidFXIndex() |
static |
int |
getFluidIdOrUnknownint getFluidIdOrUnknown(String var0, String var1, Object... var2) |
static |
int |
getFluidIdOrUnknownint getFluidIdOrUnknown(@Nonnull IndexedLookupTableAssetMap<String, Fluid> var0, String var1, String var2, Object... var3) |
public |
String |
getIdString getId() |
public |
Map<InteractionType, String> |
getInteractionsMap<InteractionType, String> getInteractions() |
public |
ColorLight |
getLightColorLight getLight() |
public |
int |
getMaxFluidLevelint getMaxFluidLevel() |
public |
Color |
getParticleColorColor getParticleColor() |
public |
FluidTicker |
getTickerFluidTicker getTicker() |
public |
boolean |
hasEffectboolean hasEffect(ShaderType var1) |
|
|
if if(ASSET_STORE == null) |
|
|
if if(this.effect == null) |
|
|
if if(var5 == var1) |
|
|
if if(var4 == Integer.MIN_VALUE) |
|
|
if if(var5 == Integer.MIN_VALUE) |
|
|
if if(this.effect != null && this.effect.length > 0) |
|
|
if if(this.textures != null && this.textures.length > 0) |
|
|
if if(this.particles != null && this.particles.length > 0) |
|
|
if if(this.data != null) |
|
|
if if(var8 != null) |
|
|
if if(var1 != -1) |
|
|
if if(var10 != -1) |
|
|
if if(var17 != -1) |
|
|
if if(var6 != -1) |
|
|
if if(var3 != -1) |
|
|
if if(var4 != -1) |
public |
boolean |
isTriggerboolean isTrigger() |
public |
boolean |
isUnknownboolean isUnknown() |
|
public int |
keySizepublic int keySize(int var1) |
|
public int |
keySizepublic int keySize(MemorySegment var1, int var2) |
protected |
void |
processConfigvoid processConfig() |
|
public int |
serializepublic int serialize(MemorySegment var1, int var2, int var3) |
|
return |
switchreturn switch(var0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.asset.type.fluid;
class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.AssetKeyValidator;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.AssetStore;
class="kw">import com.hypixel.hytale.assetstore.codec.AssetBuilderCodec;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.codecs.map.EnumMapCodec;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIDefaultCollapsedState;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIEditorSectionStart;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIPropertyTitle;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIRebuildCaches;
class="kw">import com.hypixel.hytale.codec.validation.ValidatorCache;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.protocol.BlockTextures;
class="kw">import com.hypixel.hytale.protocol.Color;
class="kw">import com.hypixel.hytale.protocol.ColorLight;
class="kw">import com.hypixel.hytale.protocol.FluidDrawType;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.protocol.Opacity;
class="kw">import com.hypixel.hytale.protocol.ShaderType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blockparticle.config.BlockParticleSet;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocksound.config.BlockSoundSet;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockTypeTextures;
class="kw">import com.hypixel.hytale.server.core.asset.type.fluidfx.config.FluidFX;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.ModelParticle;
class="kw">import com.hypixel.hytale.server.core.codec.ProtocolCodecs;
class="kw">import com.hypixel.hytale.server.core.io.NetworkSerializable;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.InteractionTypeUtils;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.RootInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.palette.AbstractSectionPalette;
class="kw">import com.hypixel.hytale.server.core.util.io.MemorySegmentUtil;
class="kw">import it.unimi.dsi.fastutil.ints.IntSet;
class="kw">import java.lang.foreign.MemorySegment;
class="kw">import java.util.Collections;
class="kw">import java.util.Map;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class Fluid class="kw">implements JsonAssetWithMap<String, IndexedLookupTableAssetMap<String, Fluid>>, NetworkSerializable<com.hypixel.hytale.protocol.Fluid> {
class="kw">public class="kw">static class="kw">final AssetBuilderCodec<String, Fluid> CODEC = AssetBuilderCodec.builder(
Fluid.class, Fluid::new, Codec.STRING, (var0, var1) -> var0.id = var1, var0 -> var0.id, (var0, var1) -> var0.data = var1, var0 -> var0.data
)
.appendInherited(
new KeyedCodec<>("MaxFluidLevel", Codec.INTEGER),
(var0, var1) -> var0.maxFluidLevel = var1,
var0 -> var0.maxFluidLevel,
(var0, var1) -> var0.maxFluidLevel = var1.maxFluidLevel
)
.addValidator(Validators.range(0, 15))
.add()
.<BlockTypeTextures[]>appendInherited(
new KeyedCodec<>("Textures", new ArrayCodec<>(BlockTypeTextures.CODEC, BlockTypeTextures[]::new)),
(var0, var1) -> var0.textures = var1,
var0 -> var0.textures,
(var0, var1) -> var0.textures = var1.textures
)
.metadata(new UIPropertyTitle("Fluid Textures"))
.metadata(new UIRebuildCaches(UIRebuildCaches.ClientCache.MODELS, UIRebuildCaches.ClientCache.BLOCK_TEXTURES))
.add()
.<ShaderType[]>appendInherited(
new KeyedCodec<>("Effect", new ArrayCodec<>(new EnumCodec<>(ShaderType.class), ShaderType[]::new)),
(var0, var1) -> var0.effect = var1,
var0 -> var0.effect,
(var0, var1) -> var0.effect = var1.effect
)
.metadata(new UIRebuildCaches(UIRebuildCaches.ClientCache.MODELS))
.add()
.<FluidDrawType>appendInherited(
new KeyedCodec<>("DrawType", new EnumCodec<>(FluidDrawType.class)),
(var0, var1) -> var0.drawType = var1,
var0 -> var0.drawType,
(var0, var1) -> var0.drawType = var1.drawType
)
.addValidator(Validators.nonNull())
.metadata(new UIRebuildCaches(UIRebuildCaches.ClientCache.MODELS, UIRebuildCaches.ClientCache.BLOCK_TEXTURES, UIRebuildCaches.ClientCache.MODEL_TEXTURES))
.metadata(new UIEditorSectionStart("Rendering"))
.add()
.<Opacity>appendInherited(
new KeyedCodec<>("Opacity", new EnumCodec<>(Opacity.class)),
(var0, var1) -> var0.opacity = var1,
var0 -> var0.opacity,
(var0, var1) -> var0.opacity = var1.opacity
)
.addValidator(Validators.nonNull())
.add()
.<Boolean>appendInherited(
new KeyedCodec<>("RequiresAlphaBlending", Codec.BOOLEAN),
(var0, var1) -> var0.requiresAlphaBlending = var1,
var0 -> var0.requiresAlphaBlending,
(var0, var1) -> var0.requiresAlphaBlending = var1.requiresAlphaBlending
)
.metadata(new UIRebuildCaches(UIRebuildCaches.ClientCache.MODELS))
.add()
.<String>appendInherited(
new KeyedCodec<>("FluidFXId", Codec.STRING),
(var0, var1) -> var0.fluidFXId = var1,
var0 -> var0.fluidFXId,
(var0, var1) -> var0.fluidFXId = var1.fluidFXId
)
.addValidator(FluidFX.VALIDATOR_CACHE.getValidator())
.add()
.<ModelParticle[]>appendInherited(
new KeyedCodec<>("Particles", ModelParticle.ARRAY_CODEC),
(var0, var1) -> var0.particles = var1,
var0 -> var0.particles,
(var0, var1) -> var0.particles = var1.particles
)
.documentation("The particles defined here will be spawned on top of fluids of this type placed in the world.")
.metadata(new UIPropertyTitle("Fluid Particles"))
.metadata(new UIRebuildCaches(UIRebuildCaches.ClientCache.MODELS))
.metadata(UIDefaultCollapsedState.UNCOLLAPSED)
.addValidator(Validators.nonNullArrayElements())
.add()
.appendInherited(
new KeyedCodec<>("Ticker", FluidTicker.CODEC), (var0, var1) -> var0.ticker = var1, var0 -> var0.ticker, (var0, var1) -> var0.ticker = var1.ticker
)
.add()
.appendInherited(
new KeyedCodec<>("Light", ProtocolCodecs.COLOR_LIGHT), (var0, var1) -> var0.light = var1, var0 -> var0.light, (var0, var1) -> var0.light = var1.light
)
.add()
.appendInherited(
new KeyedCodec<>("DamageToEntities", Codec.INTEGER),
(var0, var1) -> var0.damageToEntities = var1,
var0 -> var0.damageToEntities,
(var0, var1) -> var0.damageToEntities = var1.damageToEntities
)
.add()
.<String>appendInherited(
new KeyedCodec<>("BlockParticleSetId", Codec.STRING),
(var0, var1) -> var0.blockParticleSetId = var1,
var0 -> var0.blockParticleSetId,
(var0, var1) -> var0.blockParticleSetId = var1.blockParticleSetId
)
.documentation(
"The block particle set defined here defines which particles should be spawned when an entity interacts with this block (like when stepping on it for example"
)
.addValidator(BlockParticleSet.VALIDATOR_CACHE.getValidator())
.add()
.appendInherited(
new KeyedCodec<>("ParticleColor", ProtocolCodecs.COLOR),
(var0, var1) -> var0.particleColor = var1,
var0 -> var0.particleColor,
(var0, var1) -> var0.particleColor = var1.particleColor
)
.add()
.<String>appendInherited(
new KeyedCodec<>("BlockSoundSetId", Codec.STRING),
(var0, var1) -> var0.blockSoundSetId = var1,
var0 -> var0.blockSoundSetId,
(var0, var1) -> var0.blockSoundSetId = var1.blockSoundSetId
)
.documentation("Sets the **BlockSoundSet** that will be used for this block for various events e.g. placement, breaking")
.addValidator(BlockSoundSet.VALIDATOR_CACHE.getValidator())
.add()
.<Map<InteractionType, String>>appendInherited(
new KeyedCodec<>("Interactions", new EnumMapCodec<>(InteractionType.class, RootInteraction.CHILD_ASSET_CODEC)),
(var0, var1) -> var0.interactions = var1,
var0 -> var0.interactions,
(var0, var1) -> var0.interactions = var1.interactions
)
.addValidator(RootInteraction.VALIDATOR_CACHE.getMapValueValidator())
.metadata(new UIEditorSectionStart("Interactions"))
.add()
.afterDecode(Fluid::processConfig)
.build();
class="kw">public class="kw">static class="kw">final ValidatorCache<String> VALIDATOR_CACHE = new ValidatorCache<>(new AssetKeyValidator<>(Fluid::getAssetStore));
class="kw">public class="kw">static class="kw">final String UNKNOWN_TEXTURE = "BlockTextures/Unknown.png";
class="kw">public class="kw">static class="kw">final BlockTextures[] UNKNOWN_BLOCK_TEXTURES = new BlockTextures[]{
new BlockTextures(
"BlockTextures/Unknown.png",
"BlockTextures/Unknown.png",
"BlockTextures/Unknown.png",
"BlockTextures/Unknown.png",
"BlockTextures/Unknown.png",
"BlockTextures/Unknown.png",
1.0F
)
};
class="kw">public class="kw">static class="kw">final ShaderType[] DEFAULT_SHADER_EFFECTS = new ShaderType[]{ShaderType.None};
class="kw">public class="kw">static class="kw">final AbstractSectionPalette.KeyMemorySerializer KEY_MEMORY_SERIALIZER = new AbstractSectionPalette.KeyMemorySerializer() {
@Override
class="kw">public int serialize(MemorySegment var1, int var2, int var3) {
String var4 = Fluid.getAssetMap().getAssetOrDefault(var3, Fluid.UNKNOWN).getId();
class="kw">return MemorySegmentUtil.writeUTF(var1, var2, var4);
}
@Override
class="kw">public int keySize(int var1) {
String var2 = Fluid.getAssetMap().getAssetOrDefault(var1, Fluid.UNKNOWN).getId();
class="kw">return MemorySegmentUtil.utf8Size(var2);
}
};
class="kw">public class="kw">static class="kw">final AbstractSectionPalette.KeyMemoryDeserializer KEY_MEMORY_DESERIALIZER = new AbstractSectionPalette.KeyMemoryDeserializer() {
@Override
class="kw">public int deserialize(MemorySegment var1, int var2) {
String var3 = MemorySegmentUtil.readUTF(var1, var2);
class="kw">return Fluid.getFluidIdOrUnknown(var3, "Failed to find fluid '%s' in chunk section!", var3);
}
@Override
class="kw">public int keySize(MemorySegment var1, int var2) {
class="kw">return MemorySegmentUtil.utf8Size(var1, var2);
}
};
class="kw">public class="kw">static class="kw">final int EMPTY_ID = 0;
class="kw">public class="kw">static class="kw">final String EMPTY_KEY = "Empty";
class="kw">public class="kw">static class="kw">final Fluid EMPTY = new Fluid("Empty") {
{
this.processConfig();
}
};
class="kw">public class="kw">static class="kw">final int UNKNOWN_ID = 1;
class="kw">public class="kw">static class="kw">final Fluid UNKNOWN = new Fluid("Unknown") {
{
this.unknown = true;
this.processConfig();
}
};
class="kw">private class="kw">static AssetStore<String, Fluid, IndexedLookupTableAssetMap<String, Fluid>> ASSET_STORE;
class="kw">protected AssetExtraInfo.Data data;
class="kw">protected String id;
class="kw">protected boolean unknown;
class="kw">private int maxFluidLevel = 8;
class="kw">private BlockTypeTextures[] textures;
class="kw">private ShaderType[] effect;
class="kw">protected ModelParticle[] particles;
class="kw">private FluidDrawType drawType = FluidDrawType.Liquid;
@Nonnull
class="kw">private Opacity opacity = Opacity.Solid;
class="kw">private boolean requiresAlphaBlending = true;
class="kw">private String fluidFXId = "Empty";
class="kw">protected class="kw">transient int fluidFXIndex = 0;
class="kw">private FluidTicker ticker = DefaultFluidTicker.INSTANCE;
class="kw">protected int damageToEntities;
class="kw">protected ColorLight light;
class="kw">protected Color particleColor;
class="kw">protected String blockSoundSetId = "EMPTY";
class="kw">protected class="kw">transient int blockSoundSetIndex = 0;
class="kw">public String blockParticleSetId;
class="kw">protected Map<InteractionType, String> interactions = Collections.emptyMap();
class="kw">protected class="kw">transient boolean isTrigger;
class="kw">public class="kw">static AssetStore<String, Fluid, IndexedLookupTableAssetMap<String, Fluid>> getAssetStore() {
if (ASSET_STORE == null) {
ASSET_STORE = AssetRegistry.getAssetStore(Fluid.class);
}
class="kw">return ASSET_STORE;
}
class="kw">public class="kw">static IndexedLookupTableAssetMap<String, Fluid> getAssetMap() {
class="kw">return (IndexedLookupTableAssetMap<String, Fluid>)getAssetStore().getAssetMap();
}
class="kw">public Fluid() {
}
class="kw">public Fluid(String var1) {
this.id = var1;
}
class="kw">public Fluid(@Nonnull Fluid var1) {
this.data = var1.data;
this.id = var1.id;
this.unknown = var1.unknown;
this.maxFluidLevel = var1.maxFluidLevel;
this.textures = var1.textures;
this.effect = var1.effect;
this.opacity = var1.opacity;
this.requiresAlphaBlending = var1.requiresAlphaBlending;
this.fluidFXId = var1.fluidFXId;
this.particles = var1.particles;
this.drawType = var1.drawType;
this.damageToEntities = var1.damageToEntities;
this.light = var1.light;
this.particleColor = var1.particleColor;
this.blockSoundSetId = var1.blockSoundSetId;
this.interactions = var1.interactions;
this.isTrigger = var1.isTrigger;
this.processConfig();
}
class="kw">public AssetExtraInfo.Data getData() {
class="kw">return this.data;
}
class="kw">public String getId() {
class="kw">return this.id;
}
class="kw">public boolean isUnknown() {
class="kw">return this.unknown;
}
class="kw">public int getMaxFluidLevel() {
class="kw">return this.maxFluidLevel;
}
class="kw">public boolean hasEffect(ShaderType var1) {
if (this.effect == null) {
class="kw">return false;
}
for (ShaderType var5 : this.effect) {
if (var5 == var1) {
class="kw">return true;
}
}
class="kw">return false;
}
class="kw">public FluidTicker getTicker() {
class="kw">return this.ticker;
}
class="kw">public int getDamageToEntities() {
class="kw">return this.damageToEntities;
}
class="kw">public String getFluidFXId() {
class="kw">return this.fluidFXId;
}
class="kw">public int getFluidFXIndex() {
class="kw">return this.fluidFXIndex;
}
class="kw">public ColorLight getLight() {
class="kw">return this.light;
}
class="kw">public Color getParticleColor() {
class="kw">return this.particleColor;
}
class="kw">public boolean isTrigger() {
class="kw">return this.isTrigger;
}
class="kw">public Map<InteractionType, String> getInteractions() {
class="kw">return this.interactions;
}
class="kw">protected void processConfig() {
this.fluidFXIndex = this.fluidFXId.equals("Empty") ? 0 : FluidFX.getAssetMap().getIndex(this.fluidFXId);
this.blockSoundSetIndex = this.blockSoundSetId.equals("EMPTY") ? 0 : BlockSoundSet.getAssetMap().getIndex(this.blockSoundSetId);
for (InteractionType var2 : this.interactions.keySet()) {
if (InteractionTypeUtils.isCollisionType(var2)) {
this.isTrigger = true;
break;
}
}
}
@Nonnull
class="kw">public class="kw">static Fluid getUnknownFor(String var0) {
class="kw">return UNKNOWN.clone(var0);
}
@Nonnull
class="kw">public Fluid clone(String var1) {
if (this.id != null && this.id.equals(var1)) {
class="kw">return this;
}
Fluid var2 = new Fluid(this);
var2.id = var1;
class="kw">return var2;
}
class="kw">public class="kw">static int getFluidIdOrUnknown(String var0, String var1, Object... var2) {
class="kw">return getFluidIdOrUnknown(getAssetMap(), var0, var1, var2);
}
class="kw">public class="kw">static int getFluidIdOrUnknown(@Nonnull IndexedLookupTableAssetMap<String, Fluid> var0, String var1, String var2, Object... var3) {
int var4 = var0.getIndex(var1);
if (var4 == Integer.MIN_VALUE) {
HytaleLogger.getLogger().at(Level.WARNING).logVarargs(var2, var3);
AssetRegistry.getAssetStore(Fluid.class).loadAssets("Hytale:Hytale", Collections.singletonList(getUnknownFor(var1)));
int var5 = var0.getIndex(var1);
if (var5 == Integer.MIN_VALUE) {
throw new IllegalArgumentException("Unknown key! " + var1);
}
var4 = var5;
}
class="kw">return var4;
}
@Nonnull
class="kw">public com.hypixel.hytale.protocol.Fluid toPacket() {
com.hypixel.hytale.protocol.Fluid var1 = new com.hypixel.hytale.protocol.Fluid();
var1.id = this.id;
var1.maxFluidLevel = this.maxFluidLevel;
var1.fluidFXIndex = this.fluidFXIndex;
var1.opacity = this.opacity;
var1.light = this.light;
if (this.effect != null && this.effect.length > 0) {
var1.shaderEffect = this.effect;
} else {
var1.shaderEffect = DEFAULT_SHADER_EFFECTS;
}
if (this.textures != null && this.textures.length > 0) {
float var2 = 0.0F;
for (BlockTypeTextures var6 : this.textures) {
var2 += var6.getWeight();
}
BlockTextures[] var9 = new BlockTextures[this.textures.length];
for (int var10 = 0; var10 < this.textures.length; var10++) {
var9[var10] = this.textures[var10].toPacket(var2);
}
var1.cubeTextures = var9;
} else {
var1.cubeTextures = UNKNOWN_BLOCK_TEXTURES;
}
if (this.particles != null && this.particles.length > 0) {
var1.particles = new com.hypixel.hytale.protocol.ModelParticle[this.particles.length];
for (int var7 = 0; var7 < this.particles.length; var7++) {
var1.particles[var7] = this.particles[var7].toPacket();
}
}
var1.drawType = this.drawType;
var1.requiresAlphaBlending = this.requiresAlphaBlending;
var1.blockSoundSetIndex = this.blockSoundSetIndex;
var1.blockParticleSetId = this.blockParticleSetId;
var1.particleColor = this.particleColor;
var1.fluidFXIndex = this.fluidFXIndex;
if (this.data != null) {
IntSet var8 = this.data.getExpandedTagIndexes();
if (var8 != null) {
var1.tagIndexes = var8.toIntArray();
}
}
class="kw">return var1;
}
@Nullable
@Deprecated(forRemoval = true)
class="kw">public class="kw">static String convertLegacyName(@Nonnull String var0, byte var1) {
class="kw">return class="kw">switch (var0) {
case "Fluid_Water" -> var1 == 0 ? "Water_Source" : "Water";
case "Fluid_Water_Test" -> "Water_Finite";
case "Fluid_Lava" -> var1 == 0 ? "Lava_Source" : "Lava";
case "Fluid_Tar" -> var1 == 0 ? "Tar_Source" : "Tar";
case "Fluid_Slime" -> var1 == 0 ? "Slime_Source" : "Slime";
case "Fluid_Poison" -> var1 == 0 ? "Poison_Source" : "Poison";
class="kw">default -> null;
};
}
@Nullable
@Deprecated(forRemoval = true)
class="kw">public class="kw">static Fluid.ConversionResult convertBlockToFluid(@Nonnull String var0) {
int var1 = var0.indexOf("|Fluid=");
if (var1 != -1) {
int var10 = var0.indexOf(124, var1 + 2);
String var11;
if (var10 != -1) {
var11 = var0.substring(var1 + "|Fluid=".length(), var10);
var0 = var0.substring(0, var1) + var0.substring(var10);
} else {
var11 = var0.substring(var1 + "|Fluid=".length());
var0 = var0.substring(0, var1);
}
int var17 = var0.indexOf("|FluidLevel=");
byte var14;
if (var17 != -1) {
int var6 = var0.indexOf(124, var17 + 2);
String var7;
if (var6 != -1) {
var7 = var0.substring(var17 + "|FluidLevel=".length(), var6);
var0 = var0.substring(0, var17) + var0.substring(var6);
} else {
var7 = var0.substring(var17 + "|FluidLevel=".length());
var0 = var0.substring(0, var17);
}
var14 = Byte.parseByte(var7);
} else {
var14 = 0;
}
var11 = convertLegacyName(var11, var14);
int var18 = getFluidIdOrUnknown(var11, "Failed to find fluid '%s'", var11);
var14 = var14 == 0 ? (byte)getAssetMap().getAsset(var18).getMaxFluidLevel() : var14;
class="kw">return new Fluid.ConversionResult(var0, var18, var14);
} else if (var0.startsWith("Fluid_")) {
int var3 = var0.indexOf("|FluidLevel=");
byte var2;
if (var3 != -1) {
int var4 = var0.indexOf(124, var3 + 2);
String var5;
if (var4 != -1) {
var5 = var0.substring(var3 + "|FluidLevel=".length(), var4);
var0 = var0.substring(0, var3) + var0.substring(var4);
} else {
var5 = var0.substring(var3 + "|FluidLevel=".length());
var0 = var0.substring(0, var3);
}
var2 = Byte.parseByte(var5);
} else {
var2 = 0;
}
String var13 = convertLegacyName(var0, var2);
int var16 = getFluidIdOrUnknown(var13, "Failed to find fluid '%s'", var13);
var2 = var2 == 0 ? (byte)getAssetMap().getAsset(var16).getMaxFluidLevel() : var2;
class="kw">return new Fluid.ConversionResult(null, var16, var2);
} else {
class="kw">return null;
}
}
@Deprecated(forRemoval = true)
class="kw">public class="kw">static class ConversionResult {
class="kw">public String blockTypeStr;
class="kw">public int fluidId;
class="kw">public byte fluidLevel;
class="kw">public ConversionResult(String var1, int var2, byte var3) {
this.blockTypeStr = var1;
this.fluidId = var2;
this.fluidLevel = var3;
}
}
}