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