fabric-rendering-fluids-v1-3.1.38+86b3ae576f.jar

Download file
    package net.fabricmc.fabric.impl.client.rendering.fluid;

import it.unimi.dsi.fastutil.objects.Object2BooleanMap;
import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap;
import java.util.IdentityHashMap;
import java.util.Map;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandler;
import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandlerRegistry;
import net.minecraft.class_1058;
import net.minecraft.class_1059;
import net.minecraft.class_10725;
import net.minecraft.class_1163;
import net.minecraft.class_1920;
import net.minecraft.class_2248;
import net.minecraft.class_2338;
import net.minecraft.class_2373;
import net.minecraft.class_2397;
import net.minecraft.class_310;
import net.minecraft.class_3610;
import net.minecraft.class_3611;
import net.minecraft.class_3612;
import net.minecraft.class_775;
import org.jetbrains.annotations.Nullable;

@Environment(EnvType.CLIENT)
public class FluidRenderHandlerRegistryImpl implements FluidRenderHandlerRegistry {
   private final Map<class_3611, FluidRenderHandler> handlers = new IdentityHashMap();
   private final Map<class_3611, FluidRenderHandler> modHandlers = new IdentityHashMap();
   private final Object2BooleanMap<class_2248> transparencyForOverlay = new Object2BooleanOpenHashMap();

   public FluidRenderHandlerRegistryImpl() {
      this.handlers.put(class_3612.field_15910, FluidRenderHandlerRegistryImpl.WaterRenderHandler.INSTANCE);
      this.handlers.put(class_3612.field_15909, FluidRenderHandlerRegistryImpl.WaterRenderHandler.INSTANCE);
      this.handlers.put(class_3612.field_15908, FluidRenderHandlerRegistryImpl.LavaRenderHandler.INSTANCE);
      this.handlers.put(class_3612.field_15907, FluidRenderHandlerRegistryImpl.LavaRenderHandler.INSTANCE);
   }

   public @Nullable FluidRenderHandler get(class_3611 fluid) {
      return (FluidRenderHandler)this.handlers.get(fluid);
   }

   public @Nullable FluidRenderHandler getOverride(class_3611 fluid) {
      return (FluidRenderHandler)this.modHandlers.get(fluid);
   }

   public void register(class_3611 fluid, FluidRenderHandler renderer) {
      this.handlers.put(fluid, renderer);
      this.modHandlers.put(fluid, renderer);
   }

   public void setBlockTransparency(class_2248 block, boolean transparent) {
      this.transparencyForOverlay.put(block, transparent);
   }

   public boolean isBlockTransparent(class_2248 block) {
      return this.transparencyForOverlay.getOrDefault(block, block instanceof class_2373 || block instanceof class_2397);
   }

   public void onFluidRendererReload(class_775 renderer, class_1058[] waterSprites, class_1058[] lavaSprites, class_1058 waterOverlay) {
      FluidRenderingImpl.setVanillaRenderer(renderer);
      FluidRenderHandlerRegistryImpl.WaterRenderHandler.INSTANCE.updateSprites(waterSprites, waterOverlay);
      FluidRenderHandlerRegistryImpl.LavaRenderHandler.INSTANCE.updateSprites(lavaSprites);
      class_1059 texture = class_310.method_1551().method_72703().method_73025(class_10725.field_56382);

      for(FluidRenderHandler handler : this.handlers.values()) {
         handler.reloadTextures(texture);
      }

   }

   @Environment(EnvType.CLIENT)
   private static class WaterRenderHandler implements FluidRenderHandler {
      public static final WaterRenderHandler INSTANCE = new WaterRenderHandler();
      private static final int DEFAULT_WATER_COLOR = 4159204;
      private final class_1058[] sprites = new class_1058[3];

      public class_1058[] getFluidSprites(@Nullable class_1920 view, @Nullable class_2338 pos, class_3610 state) {
         return this.sprites;
      }

      public int getFluidColor(@Nullable class_1920 view, @Nullable class_2338 pos, class_3610 state) {
         return view != null && pos != null ? class_1163.method_4961(view, pos) : 4159204;
      }

      public void updateSprites(class_1058[] waterSprites, class_1058 waterOverlay) {
         this.sprites[0] = waterSprites[0];
         this.sprites[1] = waterSprites[1];
         this.sprites[2] = waterOverlay;
      }
   }

   @Environment(EnvType.CLIENT)
   private static class LavaRenderHandler implements FluidRenderHandler {
      public static final LavaRenderHandler INSTANCE = new LavaRenderHandler();
      private class_1058[] sprites;

      public class_1058[] getFluidSprites(@Nullable class_1920 view, @Nullable class_2338 pos, class_3610 state) {
         return this.sprites;
      }

      public void updateSprites(class_1058[] lavaSprites) {
         this.sprites = lavaSprites;
      }
   }
}
    
Download file