Level#isRainingAt(BlockPos) always returns false for snowy and frozen biomes, even when it is raining
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:
Linked Issues
causes3
Created Issue:
Rain-snow duality in snowy & frozen biomes
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.
- Looks like it's raining
- Cauldrons catch snow
- No particles when hit block.
- No snow layer and ice generating when ticking chunks
- Farmland cannot get water
- Riptide trident doesn't work
- Zombies still burn in the daytime
- and so on
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.
How to reproduce:
- Create a new flat world with preset string:
minecraft:bedrock,5*minecraft:stone,100*minecraft:dirt;minecraft:frozen_ocean
- Run /weather rain
- Find a places where it's raining rather than snowing
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.
- Looks like it's raining
- Cauldrons catch snow
- No particles when hit block.
- No snow layer and ice generating when ticking chunks
- Farmland cannot get water
- Riptide trident doesn't work
- Zombies still burn in the daytime
- and so on
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.
How to reproduce:
- Create a new flat world with preset string:
minecraft:bedrock,5*minecraft:stone,100*minecraft:dirt;minecraft:frozen_ocean
- Run /weather rain
- Find a places where it's raining rather than snowing
Attachments:
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.
- Looks like it's raining
- Cauldrons catch snow
- No particles when hit block.
- No snow layer and ice generating when ticking chunks
- Farmland cannot get water
- Riptide trident doesn't work
- Zombies still burn in the daytime
- and so on
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.
How to reproduce:
- Create a new flat world with preset string:
minecraft:bedrock,5*minecraft:stone,100*minecraft:dirt;minecraft:frozen_ocean
- Run /weather rain
- Find a places where it's raining rather than snowing
Attachments:
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.
- Looks like it's raining
- Cauldrons catch snow
- No particles when hit block.
- No snow layer and ice generating when ticking chunks
- Farmland cannot get water
- Riptide trident doesn't work
- Zombies still burn in the daytime
- and so on
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.
How to reproduce:
- Create a new flat world with preset string:
minecraft:bedrock,5*minecraft:stone,100*minecraft:dirt;minecraft:frozen_ocean
- Run /weather rain
- Find a places where it's raining rather than snowing
Attachments:
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.
- Looks like it's raining
- Cauldrons catch snow
- No particles when hit block.
- No snow layer and ice generating when ticking chunks
- Farmland cannot get water
- Riptide trident doesn't work
- Zombies still burn in the daytime
- and so on
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.
How to reproduce:
- Create a new flat world with preset string:
minecraft:bedrock,5*minecraft:stone,100*minecraft:dirt;minecraft:frozen_ocean
- Run /weather rain
- Find a places where it's raining rather than snowing
Attachments:
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.
- Looks like it's raining
- Cauldrons catch snow
- No particles when hit block.
- No snow layer and ice generating when ticking chunks
- Farmland cannot get water
- Riptide trident doesn't work
- Zombies still burn in the daytime
- and so on
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.
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:
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.
- Looks like it's raining
- Cauldrons catch snow
- No particles when hit block.
- No snow layer and ice generating when ticking chunks
- Farmland cannot get water
- Riptide trident doesn't work
- Zombies still burn in the daytime
- and so on
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.
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:
I don't think splitting it into 8 or more issues would be very unfriendly to developers.
And I do think its a single bug. How to split this?
Rain-snow duality insnowy&frozen biomesLevel#isRainingAt(BlockPos) returns incorrect values for snowy and frozen biomes
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.
- Looks like it's raining
- Cauldrons catch snow
- No particles when hit block.
- No snow layer and ice generating when ticking chunks
- Farmland cannot get water
- Riptide trident doesn't work
- Zombies still burn in the daytime
- and so on
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.
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:
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.
- Looks like it's raining
- Cauldrons catch snow (
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)- and so on
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.
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:
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.
- Looks like it's raining
- Cauldrons catch snow (
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)- and so on
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.
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:
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.
- Looks like it's raining
- Cauldrons catch snow (
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)- 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:
Level#isRainingAt(BlockPos) returnsincorrect valuesfor snowy and frozen biomesLevel#isRainingAt(BlockPos) always returns false for snowy and frozen biomes
Level#isRainingAt(BlockPos) always returns false for snowy and frozen biomes, even when it is raining
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.
- Looks like it's raining
Cauldrons catch snow (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)- 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:
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 snow (
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)- 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:
causes
relates to
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
snow(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)- 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:
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:
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:
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.
Appears to be fixed for me in 23w03, most likely due to MC-255811 being fixed. Someone please double check.
Appears to be fixed for me in 23w03, most likely due to MC-255811 being fixed. Someone please double check.


I have reopened this ticket as there are other unreported bugs caused by this issue, and I believe it would be counterproductive to split this into several tickets that are caused by the same piece of code.
Do snow golems, blazes, endermen and other such mobs receive damage from this rain?
No, they don't.