From bcce83c829b6b5eda012fda54c441fa0c4c2ae0d Mon Sep 17 00:00:00 2001
From: Virtuoel <Virtuoel@users.noreply.github.com>
Date: Thu, 12 Sep 2019 05:09:40 +0300
Subject: [PATCH] Fix NPE in fluid renderer mixin (#361)

* Fix NPE in fluid renderer mixin
* Ensure state, view, and pos are never null
* Bump fabric-rendering-fluids-v1 version
---
 fabric-rendering-fluids-v1/build.gradle       |  2 +-
 .../render/fluid/MixinFluidRenderer.java      | 21 ++++++++++---------
 2 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/fabric-rendering-fluids-v1/build.gradle b/fabric-rendering-fluids-v1/build.gradle
index 1046ac5b4..6c2ef5727 100644
--- a/fabric-rendering-fluids-v1/build.gradle
+++ b/fabric-rendering-fluids-v1/build.gradle
@@ -1,5 +1,5 @@
 archivesBaseName = "fabric-rendering-fluids-v1"
-version = getSubprojectVersion(project, "0.1.1")
+version = getSubprojectVersion(project, "0.1.2")
 
 dependencies {
 	compile project(path: ':fabric-api-base', configuration: 'dev')
diff --git a/fabric-rendering-fluids-v1/src/main/java/net/fabricmc/fabric/mixin/client/render/fluid/MixinFluidRenderer.java b/fabric-rendering-fluids-v1/src/main/java/net/fabricmc/fabric/mixin/client/render/fluid/MixinFluidRenderer.java
index 8b3557fcf..cf5251ba1 100644
--- a/fabric-rendering-fluids-v1/src/main/java/net/fabricmc/fabric/mixin/client/render/fluid/MixinFluidRenderer.java
+++ b/fabric-rendering-fluids-v1/src/main/java/net/fabricmc/fabric/mixin/client/render/fluid/MixinFluidRenderer.java
@@ -52,20 +52,21 @@ public class MixinFluidRenderer {
     public void tesselate(ExtendedBlockView view, BlockPos pos, BufferBuilder bufferBuilder, FluidState state, CallbackInfoReturnable<Boolean> info) {
         FluidRendererHookContainer ctr = fabric_renderHandler.get();
         FluidRenderHandler handler = FluidRenderHandlerRegistryImpl.INSTANCE.getOverride(state.getFluid());
-        if (handler == null) {
-            return;
-        }
-
-        /* ActionResult hResult = handler.tesselate(view, pos, bufferBuilder, state);
-        if (hResult != ActionResult.PASS) {
-            info.setReturnValue(hResult == ActionResult.SUCCESS);
-            return;
-        } */
 
         ctr.view = view;
         ctr.pos = pos;
         ctr.state = state;
         ctr.handler = handler;
+
+        /* if (handler == null) {
+            return;
+        }
+
+        ActionResult hResult = handler.tesselate(view, pos, bufferBuilder, state);
+        if (hResult != ActionResult.PASS) {
+            info.setReturnValue(hResult == ActionResult.SUCCESS);
+            return;
+        } */
     }
 
     @Inject(at = @At("RETURN"), method = "tesselate")
@@ -81,7 +82,7 @@ public class MixinFluidRenderer {
         
         // Has other uses but those have already happened by the time the hook is called.
         final FluidRendererHookContainer ctr = fabric_renderHandler.get();
-        return chk || (ctr != null && !ctr.state.matches(FluidTags.WATER));
+        return chk || !ctr.state.matches(FluidTags.WATER);
     }
 
     @ModifyVariable(at = @At(value = "INVOKE", target = "net/minecraft/client/render/block/FluidRenderer.isSameFluid(Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/Direction;Lnet/minecraft/fluid/FluidState;)Z"), method = "tesselate", ordinal = 0)