Cauldron fills with powder snow in frozen ocean biome while it's visually raining
The bug
Cauldrons are supposed to be filled with water while it's raining, and powder snow while it is snowing. Frozen oceans have a unique temperature gradient that makes it snow in certain places and rain in others. However, whenever a cauldron is placed in this biome, it is filled with powder snow regardless of which local region it is in, even if it is visually raining. Ice and snow are formed as normal (i.e. following the boundaries of the local temperature values).
How to reproduce
- Find a frozen ocean, or create a superflat world with just frozen ocean
- Use /fill command to create a large layer of cauldrons under open sky
- Change weather to raining/snowing
- Observe that some cauldrons are filled with powder snow even if it is raining
- Replace the platform with solid blocks, and see how snow layers are formed normally
This bug does not exist for the deep frozen ocean biome.
Code analysis
Code analysis can be found in this comment.
Linked Issues
relates to5
Created Issue:
Cauldron fills with powder snow in frozen ocean biomes while it's visually raining
Cauldrons are supposed to be filled with water while it's raining, and powder snow while it is snowing. Frozen oceans have a unique temperature gradient that makes it snow in certain places and rain in others. However, whenever a cauldron is placed in these biomes, it is filled with powder snow regardless of which local region it is in, even if it is visually raining. Ice and snow are formed as normal (i.e. following the boundaries of the local temperature values).
How to confirm:
1. Find a frozen ocean, or create a superflat world with just frozen ocean.
2. Use /fill command to create a large layer of cauldrons under open sky.
3. Change weather to raining/snowing.
4. Observe that some cauldrons are filled with powder snow even if it is raining.
5. Replace the platform with solid blocks, and see how snow layers are formed normally.
Cauldron fills with powder snow in frozen ocean biomeswhile it's visually raining
Cauldrons are supposed to be filled with water while it's raining, and powder snow while it is snowing. Frozen oceans have a unique temperature gradient that makes it snow in certain places and rain in others. However, whenever a cauldron is placed in these biomes, it is filled with powder snow regardless of which local region it is in, even if it is visually raining. Ice and snow are formed as normal (i.e. following the boundaries of the local temperature values).
How to confirm:
1. Find a frozen ocean, or create a superflat world with just frozen ocean.
2. Use /fill command to create a large layer of cauldrons under open sky.
3. Change weather to raining/snowing.
4. Observe that some cauldrons are filled with powder snow even if it is raining.
5. Replace the platform with solid blocks, and see how snow layers are formed normally.This bug does not exist for the deep frozen ocean biome.
Cauldrons are supposed to be filled with water while it's raining, and powder snow while it is snowing. Frozen oceans have a unique temperature gradient that makes it snow in certain places and rain in others. However, whenever a cauldron is placed in th
esebiomes, it is filled with powder snow regardless of which local region it is in, even if it is visually raining. Ice and snow are formed as normal (i.e. following the boundaries of the local temperature values).How to confirm:
1. Find a frozen ocean, or create a superflat world with just frozen ocean.
2. Use /fill command to create a large layer of cauldrons under open sky.
3. Change weather to raining/snowing.
4. Observe that some cauldrons are filled with powder snow even if it is raining.
5. Replace the platform with solid blocks, and see how snow layers are formed normally.This bug does not exist for the deep frozen ocean biome.
Cauldrons are supposed to be filled with water while it's raining, and powder snow while it is snowing. Frozen oceans have a unique temperature gradient that makes it snow in certain places and rain in others. However, whenever a cauldron is placed in this biome, it is filled with powder snow regardless of which local region it is in, even if it is visually raining. Ice and snow are formed as normal (i.e. following the boundaries of the local temperature values).
How to confirm:
1. Find a frozen ocean, or create a superflat world with just frozen ocean.
2. Use /fill command to create a large layer of cauldrons under open sky.
3. Change weather to raining/snowing.
4. Observe that some cauldrons are filled with powder snow even if it is raining.
5. Replace the platform with solid blocks, and see how snow layers are formed normally.This bug does not exist for the deep frozen ocean biome.
Cauldrons are supposed to be filled with water while it's raining, and powder snow while it is snowing. Frozen oceans have a unique temperature gradient that makes it snow in certain places and rain in others. However, whenever a cauldron is placed in this biome, it is filled with powder snow regardless of which local region it is in, even if it is visually raining. Ice and snow are formed as normal (i.e. following the boundaries of the local temperature values).
How to confirm:
1. Find a frozen ocean, or create a superflat world with just frozen ocean.
2. Use /fill command to create a large layer of cauldrons under open sky.
3. Change weather to raining/snowing.
4. Observe that some cauldrons are filled with powder snow even if it is raining.
5. Replace the platform with solid blocks, and see how snow layers are formed normally.This bug does not exist for the deep frozen ocean biome.
The bug
Cauldrons are supposed to be filled with water while it's raining, and powder snow while it is snowing. Frozen oceans have a unique temperature gradient that makes it snow in certain places and rain in others. However, whenever a cauldron is placed in this biome, it is filled with powder snow regardless of which local region it is in, even if it is visually raining. Ice and snow are formed as normal (i.e. following the boundaries of the local temperature values).
How to reproduce
- Find a frozen ocean, or create a superflat world with just frozen ocean
- Use /fill command to create a large layer of cauldrons under open sky
- Change weather to raining/snowing
- Observe that some cauldrons are filled with powder snow even if it is raining
- Replace the platform with solid blocks, and see how snow layers are formed normally
This bug does not exist for the deep frozen ocean biome.
The bug
Cauldrons are supposed to be filled with water while it's raining, and powder snow while it is snowing. Frozen oceans have a unique temperature gradient that makes it snow in certain places and rain in others. However, whenever a cauldron is placed in this biome, it is filled with powder snow regardless of which local region it is in, even if it is visually raining. Ice and snow are formed as normal (i.e. following the boundaries of the local temperature values).
How to reproduce
- Find a frozen ocean, or create a superflat world with just frozen ocean
- Use /fill command to create a large layer of cauldrons under open sky
- Change weather to raining/snowing
- Observe that some cauldrons are filled with powder snow even if it is raining
- Replace the platform with solid blocks, and see how snow layers are formed normally
This bug does not exist for the deep frozen ocean biome.
Code analysis
Code analysis ca be found in this comment.
The bug
Cauldrons are supposed to be filled with water while it's raining, and powder snow while it is snowing. Frozen oceans have a unique temperature gradient that makes it snow in certain places and rain in others. However, whenever a cauldron is placed in this biome, it is filled with powder snow regardless of which local region it is in, even if it is visually raining. Ice and snow are formed as normal (i.e. following the boundaries of the local temperature values).
How to reproduce
- Find a frozen ocean, or create a superflat world with just frozen ocean
- Use /fill command to create a large layer of cauldrons under open sky
- Change weather to raining/snowing
- Observe that some cauldrons are filled with powder snow even if it is raining
- Replace the platform with solid blocks, and see how snow layers are formed normally
This bug does not exist for the deep frozen ocean biome.
Code analysis
Code analysis can be found in this comment.
The bug
Cauldrons are supposed to be filled with water while it's raining, and powder snow while it is snowing. Frozen oceans have a unique temperature gradient that makes it snow in certain places and rain in others. However, whenever a cauldron is placed in this biome, it is filled with powder snow regardless of which local region it is in, even if it is visually raining. Ice and snow are formed as normal (i.e. following the boundaries of the local temperature values).
How to reproduce
- Find a frozen ocean, or create a superflat world with just frozen ocean
- Use /fill command to create a large layer of cauldrons under open sky
- Change weather to raining/snowing
- Observe that some cauldrons are filled with powder snow even if it is raining
- Replace the platform with solid blocks, and see how snow layers are formed normally
This bug does not exist for the deep frozen ocean biome.
Code analysis
Code analysis can be found in this comment.
The issue is that cauldrons ignore temperature gradients for handling precipitation; they instead get the information from the biome file (Biome.Precipitation). frozen_ocean has "precipitation" set to "snow", so cauldrons will always be filled with powder snow in frozen oceans.
net.minecraft.world.level.block.CauldronBlock.java (1.18.1, Mojang mappings)... protected static boolean shouldHandlePrecipitation(Level $$0, Biome.Precipitation $$1) { if ($$1 == Biome.Precipitation.RAIN) { return $$0.getRandom().nextFloat() < 0.05f; } if ($$1 == Biome.Precipitation.SNOW) { return $$0.getRandom().nextFloat() < 0.1f; } return false; } @Override public void handlePrecipitation(BlockState $$0, Level $$1, BlockPos $$2, Biome.Precipitation $$3) { if (!CauldronBlock.shouldHandlePrecipitation($$1, $$3)) { return; } if ($$3 == Biome.Precipitation.RAIN) { $$1.setBlockAndUpdate($$2, Blocks.WATER_CAULDRON.defaultBlockState()); $$1.gameEvent(null, GameEvent.FLUID_PLACE, $$2); } else if ($$3 == Biome.Precipitation.SNOW) { $$1.setBlockAndUpdate($$2, Blocks.POWDER_SNOW_CAULDRON.defaultBlockState()); $$1.gameEvent(null, GameEvent.FLUID_PLACE, $$2); } } ...
The bug
Cauldrons are supposed to be filled with water while it's raining, and powder snow while it is snowing. Frozen oceans have a unique temperature gradient that makes it snow in certain places and rain in others. However, whenever a cauldron is placed in this biome, it is filled with powder snow regardless of which local region it is in, even if it is visually raining. Ice and snow are formed as normal (i.e. following the boundaries of the local temperature values).
How to reproduce
- Find a frozen ocean, or create a superflat world with just frozen ocean
- Use /fill command to create a large layer of cauldrons under open sky
- Change weather to raining/snowing
- Observe that some cauldrons are filled with powder snow even if it is raining
- Replace the platform with solid blocks, and see how snow layers are formed normally
This bug does not exist for the deep frozen ocean biome.
Code analysis
Code analysis can be found in this comment.
relates to
relates to
relates to
relates to
relates to
Bug description
- Rain in warm patches of Frozen Ocean appears to be rain, but ...
- The rain do NOT extinguish burning mobs.
How to reproduce
- Create a Buffet world with biome 'Frozen Ocean' and allow cheats.
- Find an area with unfrozen water (which is the warm patches of Frozen Ocean)
- Use the command
/weather rain 1000000
to make rain.
- Use the command
/summon minecraft:armor_stand ~ ~ ~ {Fire:1000s}The armor stand won't stop burning and will eventually break due to fire damage. (In normal rain the armor stand will get extinguished.)
Related bugs
I guess the bug is caused by deciding rain/snow only according to the biome and ignoring anything else.
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:









Can confirm in 1.17.1 Pre-release 2.
Can confirm in 1.17.1.
Can confirm in 21w37a.
Can confirm in 21w39a.
Ampolive, thanks for the code analysis. I was wondering, can you do some more code-digging to figure out why deep frozen ocean doesn't have this problem? You can post the code analysis for that under this issue as well.
I imagine it doesn't happen because the deep frozen ocean precipitation is set to "rain" in its biome file.
I don't think a single biome precipitation value explains how this bug doesn't exist for deep frozen ocean. In the image I just attached, you can see that in a superflat world I have created, cauldrons can collect powder snow or water according to the local temperature gradient.
Thanks for the new info! My initial analysis is incorrect, I overlooked some details.
In ServerLevel#tickChunk(...), this code sets the precipitation to SNOW when the temperature is below 0.15, even if the biome has RAIN.
So, the temperature gradient is only respected if the biome precipitation is set to RAIN. If the biome precipitation is set to SNOW, then the cauldron will always fill with powder snow. Frozen oceans (not deep frozen oceans) have a biome precipitation set to SNOW, so they never fill up with water.
... @Override public void handlePrecipitation(BlockState $$0, Level $$1, BlockPos $$2, Biome.Precipitation $$3) { if (!CauldronBlock.shouldHandlePrecipitation($$1, $$3)) { return; } if ($$3 == Biome.Precipitation.RAIN) { $$1.setBlockAndUpdate($$2, Blocks.WATER_CAULDRON.defaultBlockState()); $$1.gameEvent(null, GameEvent.FLUID_PLACE, $$2); } else if ($$3 == Biome.Precipitation.SNOW) { $$1.setBlockAndUpdate($$2, Blocks.POWDER_SNOW_CAULDRON.defaultBlockState()); $$1.gameEvent(null, GameEvent.FLUID_PLACE, $$2); } } ...Upon closer inspection, it seems that the opposite may happen in deep frozen oceans: cauldrons fill with water while it's snowing. It might be a different issue.
Can confirm in 1.19. MC-230678.png
Can confirm in 1.19.1.