22
33import net .fabricmc .fabric .api .client .render .fluid .v1 .FluidRenderHandler ;
44import net .fabricmc .fabric .api .client .render .fluid .v1 .FluidRenderHandlerRegistry ;
5+ import net .minecraft .client .Minecraft ;
56import net .minecraft .client .renderer .texture .TextureAtlasSprite ;
67import net .minecraft .core .BlockPos ;
78import net .minecraft .core .registries .BuiltInRegistries ;
2021import java .util .Arrays ;
2122import java .util .HashMap ;
2223import java .util .Map ;
24+ import java .util .Objects ;
2325
2426public final class FluidRendererCompat {
2527
@@ -38,15 +40,22 @@ public static void onClientSetup(FMLClientSetupEvent event) {
3840 }
3941
4042 private record ForgeFluidRenderHandler (FluidType fluidType ) implements FluidRenderHandler {
43+ // view and pos are nullable here, but Neo does not allow null values
44+ // We take a "best effort" approach and replace them with dummies if necessary
45+ // Don't worry, this shouldn't break anything :)
4146 @ Override
4247 public TextureAtlasSprite [] getFluidSprites (@ Nullable BlockAndTintGetter view , @ Nullable BlockPos pos , FluidState state ) {
43- TextureAtlasSprite [] forgeSprites = FluidSpriteCache .getFluidSprites (view , pos , state );
48+ BlockAndTintGetter actualView = Objects .requireNonNullElseGet (view , () -> Minecraft .getInstance ().level );
49+ BlockPos actualPos = Objects .requireNonNullElse (pos , BlockPos .ZERO );
50+ TextureAtlasSprite [] forgeSprites = FluidSpriteCache .getFluidSprites (actualView , actualPos , state );
4451 return forgeSprites [2 ] == null ? Arrays .copyOfRange (forgeSprites , 0 , 2 ) : forgeSprites ;
4552 }
4653
4754 @ Override
4855 public int getFluidColor (@ Nullable BlockAndTintGetter view , @ Nullable BlockPos pos , FluidState state ) {
49- int color = IClientFluidTypeExtensions .of (this .fluidType ).getTintColor (state , view , pos );
56+ BlockAndTintGetter actualView = Objects .requireNonNullElseGet (view , () -> Minecraft .getInstance ().level );
57+ BlockPos actualPos = Objects .requireNonNullElse (pos , BlockPos .ZERO );
58+ int color = IClientFluidTypeExtensions .of (this .fluidType ).getTintColor (state , actualView , actualPos );
5059 return 0x00FFFFFF & color ;
5160 }
5261 }
0 commit comments