From a9f220b2f767c34d342649fda1638af67bc204d1 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 1 Oct 2026 14:35:11 +0000 Subject: [PATCH 1/2] Fix Fabric crash when rendering fluids without tint source FluidModel#tintSource is null for untinted fluids such as lava, which caused an NPE in RenderHelpersFabric#getFluidVertexBufferColor, e.g. when rendering lava in a Flopper. Related to CyclopsMC/Flopper#47 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TVes4otYKR6fj4dbo5sZhD --- .../org/cyclops/cyclopscore/helper/RenderHelpersFabric.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/loader-fabric/src/main/java/org/cyclops/cyclopscore/helper/RenderHelpersFabric.java b/loader-fabric/src/main/java/org/cyclops/cyclopscore/helper/RenderHelpersFabric.java index c6862fa8baa..f065c209892 100644 --- a/loader-fabric/src/main/java/org/cyclops/cyclopscore/helper/RenderHelpersFabric.java +++ b/loader-fabric/src/main/java/org/cyclops/cyclopscore/helper/RenderHelpersFabric.java @@ -3,6 +3,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; import net.minecraft.client.Minecraft; +import net.minecraft.client.color.block.BlockTintSource; import net.minecraft.client.renderer.block.FluidModel; import net.minecraft.client.renderer.block.FluidStateModelSet; import net.minecraft.client.renderer.texture.TextureAtlasSprite; @@ -51,7 +52,9 @@ public void renderFluidContext(FluidVariant fluidVariant, PoseStack matrixStack, public Triple getFluidVertexBufferColor(FluidVariant fluidVariant) { FluidStateModelSet fluidModels = Minecraft.getInstance().getModelManager().getFluidStateModelSet(); FluidModel model = fluidModels.get(fluidVariant.getFluid().defaultFluidState()); - int color = model.tintSource().color(fluidVariant.getFluid().defaultFluidState().createLegacyBlock()); + BlockTintSource tintSource = model.tintSource(); + // Untinted fluids (such as lava) have no tint source + int color = tintSource == null ? 0xFFFFFF : tintSource.color(fluidVariant.getFluid().defaultFluidState().createLegacyBlock()); return this.modHelpers.getBaseHelpers().intToRGB(color); } From 12ce50c452ba5657abc02e8a8fad162ca0c1a6ac Mon Sep 17 00:00:00 2001 From: Ruben Taelman Date: Thu, 1 Oct 2026 16:53:50 +0200 Subject: [PATCH 2/2] Apply suggestion from @rubensworks --- .../java/org/cyclops/cyclopscore/helper/RenderHelpersFabric.java | 1 - 1 file changed, 1 deletion(-) diff --git a/loader-fabric/src/main/java/org/cyclops/cyclopscore/helper/RenderHelpersFabric.java b/loader-fabric/src/main/java/org/cyclops/cyclopscore/helper/RenderHelpersFabric.java index f065c209892..cc67ea24c95 100644 --- a/loader-fabric/src/main/java/org/cyclops/cyclopscore/helper/RenderHelpersFabric.java +++ b/loader-fabric/src/main/java/org/cyclops/cyclopscore/helper/RenderHelpersFabric.java @@ -53,7 +53,6 @@ public Triple getFluidVertexBufferColor(FluidVariant fluidV FluidStateModelSet fluidModels = Minecraft.getInstance().getModelManager().getFluidStateModelSet(); FluidModel model = fluidModels.get(fluidVariant.getFluid().defaultFluidState()); BlockTintSource tintSource = model.tintSource(); - // Untinted fluids (such as lava) have no tint source int color = tintSource == null ? 0xFFFFFF : tintSource.color(fluidVariant.getFluid().defaultFluidState().createLegacyBlock()); return this.modHelpers.getBaseHelpers().intToRGB(color); }