Riptide doesn't work in rain within a frozen ocean biome
In certain spots in frozen oceans, namely the gaps between icebergs where the water isn't frozen, the riptide enchantment does not activate when it is raining
Expected behavior:
Usually, a player can use riptide while not touching water so long as it is raining, except in snowy biomes or biomes that don't get downfall. When I went to use riptide over a small, unfrozen patch of a frozen ocean, where the snow particles were replaced with rain, I expected to be able to get the riptide boost without issue.
Actual behavior:
However, the trident did not pull back, as if I was still in the snow rather than the rain
Steps to Reproduce:
1. Obtain a trident with Riptide I or greater
2. Find a frozen ocean biome
3. Look for liquid water within that frozen ocean biome (use the f3 menu to double-check)
4. Wait for it to rain or make it rain using commands. If done correctly, the icy area should have snowflakes falling on it, but the area with liquid water has rain.
5. Attempt to use your riptide trident while in the rain in the frozen ocean, while not touching the water (For example, place a block over the water)
Linked Issues
is caused by1
relates to4
Created Issue:
Visual Riptide Glitch in frozen oceans
In certain spots in frozen oceans, namely the gaps between icebergs where the water isn't frozen, the riptide enchantment does not activate when it is raining
Expected behavior:
Usually, a player can use riptide while not touching water so long as it is raining, except in snowy biomes or biomes that don't get downfall. When I went to use riptide over a small, unfrozen patch of a frozen ocean, where the snow particles were replaced with rain, I expected to be able to get the riptide boost without issue.Actual behavior:
However, the trident did not pull back, as if I was still in the snow rather than the rainSteps to Reproduce:
1. Obtain a trident with Riptide I or greater
2. Find a frozen ocean biome
3. Look for liquid water within that frozen ocean biome (use the f3 menu to double-check)
4. Wait for it to rain or make it rain using commands. If done correctly, the icy area should have snowflakes falling on it, but the area with liquid water has rain.
5. Attempt to use your riptide trident while in the rain in the frozen ocean, while not touching the water (For example, place a block over the water)Environment
Windows 11, Java edition 1.18.1
VisualRiptideGlitch infrozen oceansRiptide doesn't work in rain within a frozen ocean biome
Windows 11, Java edition 1.18.1
relates to
is caused by
The bug
In frozen biomes, it looks like it's raining in some places and snowing in other places. But where it looks like it's raining, there are some glitches.
- Cauldrons catch powder snow instead of water (
MC-230678) - No particles when hit block.
- No snow layer and ice generating when ticking chunks
- Farmland cannot get water
- Riptide trident doesn't work (
MC-247836) - Zombies still burn in the daytime (
MC-233893) - Endermen, snow golems, blazes and striders do not take damage
- and so on
Code analysis
The reason is because the snowy (Biome.Precipitation.SNOW in the code) biomes can't rain (Level.isRainingAt in the code), but the frozen (Biome.TemperatureModifier.FROZEN) biomes are warm enough to rain at random places.
Using Mojang mappings, 22w42a: In Level#isRainingAt(BlockPos):
...
public boolean isRainingAt(BlockPos $$0) {
if (!this.isRaining()) {
return false;
}
if (!this.canSeeSky($$0)) {
return false;
}
if (this.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING, $$0).getY() > $$0.getY()) {
return false;
}
Biome $$1 = this.getBiome($$0).value();
return $$1.getPrecipitation() == Biome.Precipitation.RAIN && $$1.warmEnoughToRain($$0);
}
...
We can see that the function only returns true if the biome precipitation is RAIN. Frozen oceans have a biome precipitation of SNOW, so this will always be false for frozen oceans. This return statement should probably be changed to something like
return ($$1.getPrecipitation() == Biome.Precipitation.RAIN || $$1.getPrecipitation() == Biome.Precipitation.SNOW) && $$1.warmEnoughToRain($$0);
How to reproduce
- Create a new flat world with preset string:
minecraft:bedrock,5*minecraft:stone;minecraft:frozen_ocean
- Run /weather rain
- Find a places where it's raining rather than snowing
Attachments:
Code analysis (Mojang mappings, 22w42a): In Wolf#tick(), Entity#isInWaterRainOrBubble() is called, which in turn calls Level#isRainingAt(BlockPos). Taking a look at the function:
...
public boolean isRainingAt(BlockPos $$0) {
if (!this.isRaining()) {
return false;
}
if (!this.canSeeSky($$0)) {
return false;
}
if (this.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING, $$0).getY() > $$0.getY()) {
return false;
}
Biome $$1 = this.getBiome($$0).value();
return $$1.getPrecipitation() == Biome.Precipitation.RAIN && $$1.warmEnoughToRain($$0);
}
...
We can see that the function only returns true if the biome precipitation is RAIN. Frozen oceans have a biome precipitation of SNOW, so this will always be false for frozen oceans. This return statement should probably be changed to something like
return ($$1.getPrecipitation() == Biome.Precipitation.RAIN || $$1.getPrecipitation() == Biome.Precipitation.SNOW) && $$1.warmEnoughToRain($$0);
Edit: I have tested this in 1.19.2 with my extremely limited modding capabilities and verified that this fixes this issue, MC-233893, and MC-247836. I am unsure if it causes other issues, however.
Edit 2: this is now tracked separately at MC-255811.





Additionally, rain sfx are missing in this biome
Image of rain sfx working in normal ocean biome
image of rain sfx not workin in frozen ocean biome
Could you attach the seed and coordinates where you experienced this so it can be easier to confirm? Thanks.
Seed: 7581941128484006545
Coordinates: 1612 x 65 y -222 z
Can confirm as of 1.18.2
Can confirm in 1.19. MC-247836.png