diff --git a/game/client/src/main/java/net/minecraft/client/render/particle/ParticleFluidDrip.java b/game/client/src/main/java/net/minecraft/client/render/particle/ParticleFluidDrip.java
index 01c99d495..a319b1db4 100644
--- a/game/client/src/main/java/net/minecraft/client/render/particle/ParticleFluidDrip.java
+++ b/game/client/src/main/java/net/minecraft/client/render/particle/ParticleFluidDrip.java
@@ -67,7 +67,7 @@ public class ParticleFluidDrip extends Particle {
             MathHelper.lerp(this.xo, this.x, partialTick),
             MathHelper.lerp(this.yo, this.y, partialTick),
             MathHelper.lerp(this.zo, this.z, partialTick), this.size * 0.1f,
-            this.tex.getIconUMin() + (this.tex.getIconUSize() * this.uo / 4F), this.tex.getIconVMin() + (this.tex.getIconVSize() * this.uo / 4F), this.tex.getIconUSize() * 0.25f, this.tex.getIconVSize() * 0.25f);
+            this.tex.getIconUMin() + (this.tex.getIconUSize() * this.uo / 4F), this.tex.getIconVMin() + (this.tex.getIconVSize() * this.uo / 4F), this.tex.getIconUSize() * (1.0f / 512.0f), this.tex.getIconVSize() * (1.0f / 512.0f));
     }
 
     public ParticleFluidDrip setFullBright() {
diff --git a/game/core/src/main/java/net/minecraft/core/block/BlockLogicSponge.java b/game/core/src/main/java/net/minecraft/core/block/BlockLogicSponge.java
index 507c71d73..ab07439c0 100644
--- a/game/core/src/main/java/net/minecraft/core/block/BlockLogicSponge.java
+++ b/game/core/src/main/java/net/minecraft/core/block/BlockLogicSponge.java
@@ -93,7 +93,7 @@ public class BlockLogicSponge extends BlockLogic {
             if (side == Side.TOP || world.isBlockOpaqueCube(tilePos.add(side.getDirection(), new TilePos()))) return;
             float off1 = rand.nextFloat() * 0.9f + 0.05f;
             float off2 = rand.nextFloat() * 0.9f + 0.05f;
-            float lOff = 0.1f; // Dumb offset to fix bad lighting
+            float lOff = 0.01f; // Dumb offset to fix bad lighting
             switch (side) {
                 case BOTTOM:
                     world.spawnParticle("dripWater", tilePos.x() + off1, tilePos.y() - lOff, tilePos.z() + off2, 0, 0, 0, 0);
diff --git a/game/core/src/main/java/net/minecraft/core/block/FluidLava.java b/game/core/src/main/java/net/minecraft/core/block/FluidLava.java
index df9175d55..bf4a80095 100644
--- a/game/core/src/main/java/net/minecraft/core/block/FluidLava.java
+++ b/game/core/src/main/java/net/minecraft/core/block/FluidLava.java
@@ -28,6 +28,12 @@ public class FluidLava
             final double zOff = (double) tilePos.z() + rand.nextFloat();
             world.spawnParticle("lava", xOff, yOff, zOff, 0.0D, 0.0D, 0.0D, 0);
         }
+
+        if (rand.nextInt(4) == 0 && world.getBlockType(tilePos.down(new TilePos())).solid() && !world.getBlockType(tilePos.down(new TilePos()).down()).solid()) {
+            float off1 = rand.nextFloat() * 0.9f + 0.05f;
+            float off2 = rand.nextFloat() * 0.9f + 0.05f;
+            world.spawnParticle("dripLava", tilePos.x() + off1, tilePos.y() - 1, tilePos.z() + off2, 0, 0, 0, 0);
+        }
     }
 
     @Override
diff --git a/game/core/src/main/java/net/minecraft/core/block/FluidWater.java b/game/core/src/main/java/net/minecraft/core/block/FluidWater.java
index 1f7f3d6c7..3ce94ffda 100644
--- a/game/core/src/main/java/net/minecraft/core/block/FluidWater.java
+++ b/game/core/src/main/java/net/minecraft/core/block/FluidWater.java
@@ -24,8 +24,8 @@ public class FluidWater
         final int data = world.getBlockData(tilePos) & 0x0F;
         TilePos up = tilePos.up(new TilePos());
         final boolean isTop = world.getBlockMaterial(up) == Materials.AIR && !world.isBlockOpaqueCube(up);
-        if (rand.nextInt(64) == 0) {
-            if (data > 0 && data < 8) {
+        if (data > 0 && data < 8) {
+            if (rand.nextInt(64) == 0) {
                 world.playSoundEffect(null, SoundCategory.WORLD_SOUNDS, (float) tilePos.x() + 0.5F, (float) tilePos.y() + 0.5F, (float) tilePos.z() + 0.5F, "liquid.water", rand.nextFloat() * 0.25F + 0.75F, rand.nextFloat() * 1.0F + 0.5F);
             }
         }
@@ -33,6 +33,12 @@ public class FluidWater
             world.spawnParticle("smoke", tilePos.x() + Math.random(), tilePos.y() + (14f / 16f), tilePos.z() + Math.random(), 0.0D, 0.0D, 0.0D, 1);
         }
 
+        if (rand.nextInt(4) == 0 && world.getBlockType(tilePos.down(new TilePos())).solid() && !world.getBlockType(tilePos.down(new TilePos()).down()).solid()) {
+            float off1 = rand.nextFloat() * 0.9f + 0.05f;
+            float off2 = rand.nextFloat() * 0.9f + 0.05f;
+            float lOff = 0.01f; // Dumb offset to fix bad lighting
+            world.spawnParticle("dripWater", tilePos.x() + off1, (tilePos.y() - 1) - lOff, tilePos.z() + off2, 0, 0, 0, 0);
+        }
     }
 
     @Override
