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)