Skip to content

Commit d847fa1

Browse files
committed
Update the fluid render overlay texture as it now requires using the full path (#8099) Also apply a fog color so that the fluid's color is more visible while inside of it
1 parent 1cd71e8 commit d847fa1

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

src/main/java/mekanism/common/registration/impl/FluidDeferredRegister.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package mekanism.common.registration.impl;
22

3+
import com.mojang.blaze3d.shaders.FogShape;
4+
import com.mojang.blaze3d.systems.RenderSystem;
35
import java.util.Collection;
46
import java.util.function.BiFunction;
57
import java.util.function.Consumer;
68
import java.util.function.UnaryOperator;
9+
import mekanism.client.render.MekanismRenderer;
710
import mekanism.common.Mekanism;
811
import mekanism.common.base.IChemicalConstant;
912
import mekanism.common.registration.MekanismDeferredRegister;
1013
import net.minecraft.Util;
14+
import net.minecraft.client.Camera;
1115
import net.minecraft.client.Minecraft;
16+
import net.minecraft.client.multiplayer.ClientLevel;
17+
import net.minecraft.client.renderer.FogRenderer;
1218
import net.minecraft.core.BlockPos;
1319
import net.minecraft.core.Holder;
1420
import net.minecraft.core.dispenser.BlockSource;
@@ -45,11 +51,12 @@
4551
import net.neoforged.neoforge.registries.NeoForgeRegistries;
4652
import org.jetbrains.annotations.NotNull;
4753
import org.jetbrains.annotations.Nullable;
54+
import org.joml.Vector3f;
4855

4956
public class FluidDeferredRegister {
5057

5158
private static final ResourceLocation OVERLAY = ResourceLocation.withDefaultNamespace("block/water_overlay");
52-
private static final ResourceLocation RENDER_OVERLAY = ResourceLocation.withDefaultNamespace("misc/underwater");
59+
private static final ResourceLocation RENDER_OVERLAY = ResourceLocation.withDefaultNamespace("textures/misc/underwater.png");
5360
private static final ResourceLocation LIQUID = Mekanism.rl("liquid/liquid");
5461
private static final ResourceLocation LIQUID_FLOW = Mekanism.rl("liquid/liquid_flow");
5562
//Copy of/based off of vanilla's lava/water bucket dispense behavior
@@ -279,11 +286,13 @@ public boolean isVaporizedOnPlacement(Level level, BlockPos pos, FluidStack stac
279286
@Override
280287
public void initializeClient(Consumer<IClientFluidTypeExtensions> consumer) {
281288
consumer.accept(new IClientFluidTypeExtensions() {
289+
@NotNull
282290
@Override
283291
public ResourceLocation getStillTexture() {
284292
return stillTexture;
285293
}
286294

295+
@NotNull
287296
@Override
288297
public ResourceLocation getFlowingTexture() {
289298
return flowingTexture;
@@ -300,6 +309,28 @@ public ResourceLocation getRenderOverlayTexture(Minecraft mc) {
300309
return renderOverlayTexture;
301310
}
302311

312+
@NotNull
313+
@Override
314+
public Vector3f modifyFogColor(@NotNull Camera camera, float partialTick, @NotNull ClientLevel level, int renderDistance, float darkenWorldAmount,
315+
@NotNull Vector3f fluidFogColor) {
316+
return new Vector3f(MekanismRenderer.getRed(color), MekanismRenderer.getGreen(color), MekanismRenderer.getBlue(color));
317+
}
318+
319+
@Override
320+
public void modifyFogRender(@NotNull Camera camera, @NotNull FogRenderer.FogMode mode, float renderDistance, float partialTick, float nearDistance,
321+
float farDistance, @NotNull FogShape shape) {
322+
//Copy of logic for water except always treating it as if it was a player who has no water vision
323+
// and does not take the biome's closer water fog into account
324+
farDistance = 24F;
325+
if (farDistance > renderDistance) {
326+
farDistance = renderDistance;
327+
shape = FogShape.CYLINDER;
328+
}
329+
RenderSystem.setShaderFogStart(-8);
330+
RenderSystem.setShaderFogEnd(farDistance);
331+
RenderSystem.setShaderFogShape(shape);
332+
}
333+
303334
@Override
304335
public int getTintColor() {
305336
return color;

0 commit comments

Comments
 (0)