Ice with non-solid blocks below them doesn't create water when mined by players
The Bug:
Ice with non-solid blocks below them doesn't create water when mined by players.
Steps to Reproduce:
- Place down some ice and ensure that there's air below it.
- Break the ice.
- Take note as to whether or not ice with non-solid blocks below them doesn't create water when mined by players.
Observed Behavior:
No water is created.
Expected Behavior:
Water would be created.
Code Analysis:
Code analysis by [Mod] Avoma can be found below. An additional code analysis by [Mod] Chandler can be found in this comment.
The following is based on a decompiled version of Minecraft 1.19.2 using MCP-Reborn.
public class IceBlock extends HalfTransparentBlock { ... public void playerDestroy(Level level, Player player, BlockPos blockPos, BlockState blockState, @Nullable BlockEntity blockEntity, ItemStack itemStack) { super.playerDestroy(level, player, blockPos, blockState, blockEntity, itemStack); if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, itemStack) == 0) { if (level.dimensionType().ultraWarm()) { level.removeBlock(blockPos, false); return; } Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } } } ...
If we look at the above class, we can see that there are two checks that are carried out before allowing ice blocks to be converted into water upon being mined by players. One of these checks is to make sure that the player isn't holding an item enchanted with silk touch at the time of the interaction, and the other is to check if the material below the ice block blocks motion or is a liquid. Because of the material check that's in place here, when ice with non-solid blocks below them is mined by players, it doesn't create water, therefore resulting in this problem occurring.
Fix:
Simply removing the material check within this piece of code before allowing ice blocks to be converted into water upon being mined by players will resolve this problem.
...
Material material = level.getBlockState(blockPos.below()).getMaterial();
if (material.blocksMotion() || material.isLiquid()) {
level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState());
}
...
... level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); ...
Linked Issues
is duplicated by5
- Unresolved
[Mod] AvomaJesus Lopez
- 19
- 10
- Confirmed
Low
- Gameplay
- Block states
- ice
1.7.9 - 1.21.4
1.7.9 1.7.10-pre4 14w25b 1.13.1 1.13.2 18w45a 18w46a 18w48a 18w48b 18w49a 18w50a 19w02a 19w03a 19w03b 19w03c 1.15.1 1.16-pre3 1.16.2 1.16.4 20w46a 20w48a 20w51a 21w03a 1.16.5 21w05a 21w05b 21w06a 21w07a 21w08b 21w10a 21w11a 21w13a 21w14a 21w15a 21w16a 21w17a 21w19a 21w20a 1.17-pre1 1.17-pre3 1.17-pre4 1.17-pre5 1.17-rc1 1.17-rc2 1.17 1.17.1-pre1 1.17.1-pre2 1.17.1-pre3 1.17.1-rc1 1.17.1 21w38a 21w39a 21w41a 21w42a 21w43a 1.18-pre1 1.18-pre7 1.18 1.18.1 22w03a 22w05a 22w06a 22w07a 1.18.2-rc1 1.18.2 22w17a 22w18a 1.19 1.19.1 1.19.2 22w43a 1.19.3 1.19.4 1.20 1.20.1 23w51b 24w11a 1.21 1.21.1 1.21.3 1.21.4
Created Issue:
Ice don't spawn water if there is a block of air under
I don't know if this is "Work as intended" but I see that this happend in all minecraft versions. The problem is,when you have an ice block with an air block under it and you try to breack the ice, water don't spawn.
is duplicated by
I don't know if this is "Work as intended" but I see that this happend in all minecraft versions. The problem is,when you have an ice block with an air blockunderit and you try to breack the ice,water don't spawn.
Ice don't spawn water if there is a block of air underBreaking ice with an air block beneath it won't create a water source
is duplicated by
Breaking ice with an airblock beneath it won't create a water sourceBreaking ice with a non-solid block beneath it won't create a water source
is duplicated by
The bug
When you have an ice block with an air block beneath it, and you try to break the ice, it won't create a water source block.
Code analysis
Code analysis by [Mod] Chandler can be found in this comment.
The bug
When you have an ice block with an air block beneath it, and you try to break the ice, it won't create a water source block.
Code analysis
Code analysis by [Mod] Chandler can be found in this comment.
The Bug:
Breaking ice with a non-solid block below it won't create any water.
Steps to Reproduce:
- Place down some ice.
- Make sure that there is air below it.
- Break the ice.
- →
Notice how breaking ice with a non-solid block below it won't create any water.
Code Analysis:
Code analysis by [Mod] Chandler can be found in this comment.
The Bug:
Breaking ice with a non-solid block below it won't create any water.
Steps to Reproduce:
- Place down some ice.
- Make sure that there is air below it.
- Break the ice.
- →
Notice how breaking ice with a non-solid block below it won't create any water.
Code Analysis:
Code analysis by [Mod] Chandler can be found in
this comment.The Bug:
Breaking ice with a non-solid block below it won't create any water.
Steps to Reproduce:
- Place down some ice.
- Make sure that there is air below it.
- Break the ice.
- →
Notice how breaking ice with a non-solid block below it won't create any water.
Code Analysis:
Code analysis by [Mod] Chandler can be found in this comment.
The Bug:
Breaking ice with a non-solid block below it won't create any water.
Steps to Reproduce:
- Place down some ice.
- Make sure that there is air below it.
- Break the ice.
- →
Notice how breaking ice with a non-solid block below it won't create any water.
Code Analysis:Code analysis by [Mod] Chandler can be found in
this comment.The Bug:
Breaking ice with a non-solid block below it won't create any water.
Steps to Reproduce:
- Place down some ice.
- Make sure that there is air below it.
- Break the ice.
- →
Notice how breaking ice with a non-solid block below it won't create any water.
Expected Behavior:
The expected behavior would be that breaking ice with a non-solid block below it would create water.
Code Analysis:
Code analysis by [Mod] Chandler can be found in this comment.
The Bug:
Breaking ice with a non-solid block below it won't create any water.
Steps to Reproduce:
- Place down some ice.
- Make sure that there is air below it.
- Break the ice.
- →
Notice how breaking ice with a non-solid block below it won't create any water.
Expected Behavior:
The expected behavior would be that breaking ice with a non-solid block below it would create water.
Code Analysis:
Code analysis by [Mod] Chandler can be found in
this comment.The Bug:
Breaking ice with a non-solid block below it won't create any water.
Steps to Reproduce:
- Place down some ice.
- Make sure that there is air below it.
- Break the ice.
- →
Notice how breaking ice with a non-solid block below it won't create any water.
Expected Behavior:
The expected behavior would be that breaking ice with a non-solid block below it would create water.
Code Analysis:
Code analysis by [Mod] Chandler can be found in this comment.
relates to
The Bug:
Breaking ice with a non-solid block below it won't create any water.
Steps to Reproduce:
- Place down some ice.
- Make sure that there is air below it.
- Break the ice.
- →
Notice how breaking ice with a non-solid block below it won't create any water.
Expected Behavior:
The expected behavior would be that breakingice with a non-solid block below it wouldcreate water.
Code Analysis:Code analysis by [Mod] Chandler can be found in
this comment.The Bug:
Breaking ice with a non-solid block below it won't create any water.
Steps to Reproduce:
- Place down some ice.
- Make sure that there is air below it.
- Break the ice.
Observed Behavior:
Breaking ice with a non-solid block below it won't create any water.
Expected Behavior:
Breaking ice with a non-solid block below it would create some water.
Code Analysis:
Code analysis by [Mod] Chandler can be found in this comment.
The Bug:
Breaking ice with a non-solid block below it won't create any water.
Steps to Reproduce:
- Place down some ice.
- Make sure that there is air below it.
- Break the ice.
Observed Behavior:
Breaking ice with a non-solid block below it won't create any water.
Expected Behavior:
Breaking ice with a non-solid block below it would create some water.
Code Analysis:
Code analysis by [Mod] Chandler can be found in
this comment.The Bug:
Breaking ice with a non-solid block below it won't create any water.
Steps to Reproduce:
- Place down some ice.
- Make sure that there is air below it.
- Break the ice.
Observed Behavior:
Breaking ice with a non-solid block below it won't create any water.
Expected Behavior:
Breaking ice with a non-solid block below it would create some water.
Code Analysis:
Code analysis by [Mod] Chandler can be found in this comment.
The Bug:
Breaking ice with
anon-solid block below itwon't create any water.Steps to Reproduce:
- Place down some ice.
Makesure that thereis air below it.- Break the ice.
Observed Behavior:
Breaking ice with
anon-solid block below itwon't create any water.Expected Behavior:
Breaking ice with
anon-solid block below it would createsomewater.Code Analysis:
Code analysis by [Mod] Chandler can be found in this comment.
The Bug:
Breaking ice with non-solid blocks below it doesn't create any water.
Steps to Reproduce:
- Place down some ice and ensure that there's air below it.
- Break the ice.
- Take note as to whether or not breaking ice with non-solid blocks below it creates any water.
Observed Behavior:
Breaking ice with non-solid blocks below it doesn't create any water.
Expected Behavior:
Breaking ice with non-solid blocks below it would create water.
Code Analysis:
Code analysis by [Mod] Chandler can be found in this comment.
Breaking ice withanon-solid block beneath it won't create a watersourceBreaking ice with non-solid blocks below it doesn't create any water
The Bug:
Breaking ice with non-solid blocks belowit doesn't createany water.Steps to Reproduce:
- Place down some ice and ensure that there's air below it.
- Break the ice.
- Take note as to whether or not
breakingice with non-solid blocks belowit creates any water.Observed Behavior:
Breaking ice with non-solid blocks below it doesn't create any water.
Expected Behavior:
Breaking ice with non-solid blocks below it wouldcreatewater.Code Analysis:
Code analysis by
[Mod]Chandlercan be foundinthis comment.The Bug:
Ice with non-solid blocks below them doesn't create water when mined by players.
Steps to Reproduce:
- Place down some ice and ensure that there's air below it.
- Break the ice and watch closely.
- Take note as to whether or not ice with non-solid blocks below them doesn't create water when mined by players.
Observed Behavior:
No water is created.
Expected Behavior:
Water would be created.
Code Analysis:
Code analysis by [Mod] Avoma can be found below. An additional code analysis by [Mod] Chandler can also be found in this comment.
The following is based on a decompiled version of Minecraft 1.18.1 using MCP-Reborn.
net.minecraft.world.level.block.IceBlock.javapublic class IceBlock extends HalfTransparentBlock { ... public void playerDestroy(Level $l, Player $p, BlockPos $bp, BlockState $bs, @Nullable BlockEntity $be, ItemStack $is) { super.playerDestroy($l, $p, $bp, $bs, $be, $is); if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, $is) == 0) { if ($l.dimensionType().ultraWarm()) { $l.removeBlock($bp, false); return; } Material material = $l.getBlockState($bp.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { $l.setBlockAndUpdate($bp, Blocks.WATER.defaultBlockState()); } } } ...If we look at the above class, we can see that certain requirements need to be met in order for an ice block to convert into water when destroyed by the player. These criteria are as follows:
- The player must not destroy the ice whilst holding an item enchanted with silk touch.
- The material (block) below the ice must prevent motion or must be a liquid.
If these criteria are met, the ice block will convert into water when destroyed by the player. As a result of these requirements being in place, ice with non-solid blocks below them won't create water when mined by players.
The Bug:
Ice with non-solid blocks below them doesn't create water when mined by players.
Steps to Reproduce:
- Place down some ice and ensure that there's air below it.
- Break the ice and watch closely.
- Take note as to whether or not ice with non-solid blocks below them doesn't create water when mined by players.
Observed Behavior:
No water is created.
Expected Behavior:
Water would be created.
Code Analysis:
Code analysis by [Mod] Avoma can be found below. An additional code analysis by [Mod] Chandler can also be found in
this comment.The following is based on a decompiled version of Minecraft 1.18.1 using MCP-Reborn.
net.minecraft.world.level.block.IceBlock.javapublic class IceBlock extends HalfTransparentBlock { ... public void playerDestroy(Level $l, Player $p, BlockPos $bp, BlockState $bs, @Nullable BlockEntity $be, ItemStack $is) { super.playerDestroy($l, $p, $bp, $bs, $be, $is); if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, $is) == 0) { if ($l.dimensionType().ultraWarm()) { $l.removeBlock($bp, false); return; } Material material = $l.getBlockState($bp.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { $l.setBlockAndUpdate($bp, Blocks.WATER.defaultBlockState()); } } } ...If we look at the above class, we can see that certain requirements need to be met in order for an ice block to convert into water when destroyed by the player. These criteria are as follows:
- The player must not destroy the ice whilst holding an item enchanted with silk touch.
- The material (block) below the ice must prevent motion or must be a liquid.
If these criteria are met, the ice block will convert into water when destroyed by the player. As a result of these requirements being in place, ice with non-solid blocks below them won't create water when mined by players.
The Bug:
Ice with non-solid blocks below them doesn't create water when mined by players.
Steps to Reproduce:
- Place down some ice and ensure that there's air below it.
- Break the ice and watch closely.
- Take note as to whether or not ice with non-solid blocks below them doesn't create water when mined by players.
Observed Behavior:
No water is created.
Expected Behavior:
Water would be created.
Code Analysis:
Code analysis by [Mod] Avoma can be found below. An additional code analysis by [Mod] Chandler can also be found in this comment.
The following is based on a decompiled version of Minecraft 1.18.1 using MCP-Reborn.
net.minecraft.world.level.block.IceBlock.javapublic class IceBlock extends HalfTransparentBlock { ... public void playerDestroy(Level $l, Player $p, BlockPos $bp, BlockState $bs, @Nullable BlockEntity $be, ItemStack $is) { super.playerDestroy($l, $p, $bp, $bs, $be, $is); if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, $is) == 0) { if ($l.dimensionType().ultraWarm()) { $l.removeBlock($bp, false); return; } Material material = $l.getBlockState($bp.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { $l.setBlockAndUpdate($bp, Blocks.WATER.defaultBlockState()); } } } ...If we look at the above class, we can see that certain requirements need to be met in order for an ice block to convert into water when destroyed by the player. These criteria are as follows:
- The player must not destroy the ice whilst holding an item enchanted with silk touch.
- The material (block) below the ice must prevent motion or must be a liquid.
If these criteria are met, the ice block will convert into water when destroyed by the player. As a result of these requirements being in place, ice with non-solid blocks below them won't create water when mined by players.
Breaking ice with non-solid blocks belowit doesn't createany waterIce with non-solid blocks below them doesn't create water when mined by players
relates to
The Bug:
Ice with non-solid blocks below them doesn't create water when mined by players.
Steps to Reproduce:
- Place down some ice and ensure that there's air below it.
- Break the ice and watch closely.
- Take note as to whether or not ice with non-solid blocks below them doesn't create water when mined by players.
Observed Behavior:
No water is created.
Expected Behavior:
Water would be created.
Code Analysis:
Code analysis by [Mod] Avoma can be found below. An additional code analysis by [Mod] Chandler can also be found in this comment.
The following is based on a decompiled version of Minecraft 1.1
8.1using MCP-Reborn.net.minecraft.world.level.block.IceBlock.javapublic class IceBlock extends HalfTransparentBlock { ... public void playerDestroy(Level$l, Player$p, BlockPos$bp, BlockState$bs, @Nullable BlockEntity$be, ItemStack$is) { super.playerDestroy($l, $p, $bp, $bs, $be, $is); if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH,$is) == 0) { if ($l.dimensionType().ultraWarm()) {$l.removeBlock($bp, false); return; } Material material =$l.getBlockState($bp.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) {$l.setBlockAndUpdate($bp, Blocks.WATER.defaultBlockState()); } } } ...If we look at the above class, we can see that certain requirements need to be met in order for an ice block to convert into water when destroyed by the player. These criteria are as follows:
- The player must not destroy the ice whilst holding an item enchanted with silk touch.
- The material (block) below the ice must prevent motion or must be a liquid.
If
these criteria are met, theice blockwillconvert into waterwhen destroyed by the player. As a result of these requirements being in place, ice with non-solid blocks below them won't create water when mined by players.The Bug:
Ice with non-solid blocks below them doesn't create water when mined by players.
Steps to Reproduce:
- Place down some ice and ensure that there's air below it.
- Break the ice and watch closely.
- Take note as to whether or not ice with non-solid blocks below them doesn't create water when mined by players.
Observed Behavior:
No water is created.
Expected Behavior:
Water would be created.
Code Analysis:
Code analysis by [Mod] Avoma can be found below. An additional code analysis by [Mod] Chandler can also be found in this comment.
The following is based on a decompiled version of Minecraft 1.19.2 using MCP-Reborn.
net.minecraft.world.level.block.IceBlock.javapublic class IceBlock extends HalfTransparentBlock { ... public void playerDestroy(Level level, Player player, BlockPos blockPos, BlockState blockState, @Nullable BlockEntity blockEntity, ItemStack itemStack) { super.playerDestroy(level, player, blockPos, blockState, blockEntity, itemStack); if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, itemStack) == 0) { if (level.dimensionType().ultraWarm()) { level.removeBlock(blockPos, false); return; } Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } } } ...If we look at the above class, we can see that there are two checks that are carried out before allowing ice blocks to be converted into water upon being mined by players. One of these checks is to make sure that the player isn't holding an item enchanted with silk touch at the time of the interaction, and the other is to check if the material below the ice block blocks motion or is a liquid. Because of the material check that's in place here, when ice with non-solid blocks below them is mined by players, it doesn't create water, therefore resulting in this problem occurring.
Fix:
Simply removing the material check within this piece of code before allowing ice blocks to be converted into water upon being mined by players will resolve this problem.
Current Code:... Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } ...Fixed Code:...
level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState());
...
The Bug:
Ice with non-solid blocks below them doesn't create water when mined by players.
Steps to Reproduce:
- Place down some ice and ensure that there's air below it.
- Break the ice and watch closely.
- Take note as to whether or not ice with non-solid blocks below them doesn't create water when mined by players.
Observed Behavior:
No water is created.
Expected Behavior:
Water would be created.
Code Analysis:
Code analysis by [Mod] Avoma can be found below. An additional code analysis by [Mod] Chandler can also be found in this comment.
The following is based on a decompiled version of Minecraft 1.19.2 using MCP-Reborn.
net.minecraft.world.level.block.IceBlock.javapublic class IceBlock extends HalfTransparentBlock { ... public void playerDestroy(Level level, Player player, BlockPos blockPos, BlockState blockState, @Nullable BlockEntity blockEntity, ItemStack itemStack) { super.playerDestroy(level, player, blockPos, blockState, blockEntity, itemStack); if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, itemStack) == 0) { if (level.dimensionType().ultraWarm()) { level.removeBlock(blockPos, false); return; } Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } } } ...If we look at the above class, we can see that there are two checks that are carried out before allowing ice blocks to be converted into water upon being mined by players. One of these checks is to make sure that the player isn't holding an item enchanted with silk touch at the time of the interaction, and the other is to check if the material below the ice block blocks motion or is a liquid. Because of the material check that's in place here, when ice with non-solid blocks below them is mined by players, it doesn't create water, therefore resulting in this problem occurring.
Fix:
Simply removing the material check within this piece of code before allowing ice blocks to be converted into water upon being mined by players will resolve this problem.
Current Code:... Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } ...Fixed Code:...
level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState());
...The Bug:
Ice with non-solid blocks below them doesn't create water when mined by players.
Steps to Reproduce:
- Place down some ice and ensure that there's air below it.
- Break the ice and watch closely.
- Take note as to whether or not ice with non-solid blocks below them doesn't create water when mined by players.
Observed Behavior:
No water is created.
Expected Behavior:
Water would be created.
Code Analysis:
Code analysis by [Mod] Avoma can be found below. An additional code analysis by [Mod] Chandler can also be found in this comment.
The following is based on a decompiled version of Minecraft 1.19.2 using MCP-Reborn.
net.minecraft.world.level.block.IceBlock.javapublic class IceBlock extends HalfTransparentBlock { ... public void playerDestroy(Level level, Player player, BlockPos blockPos, BlockState blockState, @Nullable BlockEntity blockEntity, ItemStack itemStack) { super.playerDestroy(level, player, blockPos, blockState, blockEntity, itemStack); if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, itemStack) == 0) { if (level.dimensionType().ultraWarm()) { level.removeBlock(blockPos, false); return; } Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } } } ...If we look at the above class, we can see that there are two checks that are carried out before allowing ice blocks to be converted into water upon being mined by players. One of these checks is to make sure that the player isn't holding an item enchanted with silk touch at the time of the interaction, and the other is to check if the material below the ice block blocks motion or is a liquid. Because of the material check that's in place here, when ice with non-solid blocks below them is mined by players, it doesn't create water, therefore resulting in this problem occurring.
Fix:
Simply removing the material check within this piece of code before allowing ice blocks to be converted into water upon being mined by players will resolve this problem.
Current Code:... Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } ...Fixed Code:... level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); ...
The Bug:
Ice with non-solid blocks below them doesn't create water when mined by players.
Steps to Reproduce:
- Place down some ice and ensure that there's air below it.
- Break the ice and watch closely.
- Take note as to whether or not ice with non-solid blocks below them doesn't create water when mined by players.
Observed Behavior:
No water is created.
Expected Behavior:
Water would be created.
Code Analysis:
Code analysis by [Mod] Avoma can be found below. An additional code analysis by [Mod] Chandler can also be found in
this comment.The following is based on a decompiled version of Minecraft 1.19.2 using MCP-Reborn.
net.minecraft.world.level.block.IceBlock.javapublic class IceBlock extends HalfTransparentBlock { ... public void playerDestroy(Level level, Player player, BlockPos blockPos, BlockState blockState, @Nullable BlockEntity blockEntity, ItemStack itemStack) { super.playerDestroy(level, player, blockPos, blockState, blockEntity, itemStack); if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, itemStack) == 0) { if (level.dimensionType().ultraWarm()) { level.removeBlock(blockPos, false); return; } Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } } } ...If we look at the above class, we can see that there are two checks that are carried out before allowing ice blocks to be converted into water upon being mined by players. One of these checks is to make sure that the player isn't holding an item enchanted with silk touch at the time of the interaction, and the other is to check if the material below the ice block blocks motion or is a liquid. Because of the material check that's in place here, when ice with non-solid blocks below them is mined by players, it doesn't create water, therefore resulting in this problem occurring.
Fix:
Simply removing the material check within this piece of code before allowing ice blocks to be converted into water upon being mined by players will resolve this problem.
Current Code:... Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } ...Fixed Code:... level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); ...The Bug:
Ice with non-solid blocks below them doesn't create water when mined by players.
Steps to Reproduce:
- Place down some ice and ensure that there's air below it.
- Break the ice and watch closely.
- Take note as to whether or not ice with non-solid blocks below them doesn't create water when mined by players.
Observed Behavior:
No water is created.
Expected Behavior:
Water would be created.
Code Analysis:
Code analysis by [Mod] Avoma can be found below. An additional code analysis by [Mod] Chandler can also be found in this comment.
The following is based on a decompiled version of Minecraft 1.19.2 using MCP-Reborn.
net.minecraft.world.level.block.IceBlock.javapublic class IceBlock extends HalfTransparentBlock { ... public void playerDestroy(Level level, Player player, BlockPos blockPos, BlockState blockState, @Nullable BlockEntity blockEntity, ItemStack itemStack) { super.playerDestroy(level, player, blockPos, blockState, blockEntity, itemStack); if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, itemStack) == 0) { if (level.dimensionType().ultraWarm()) { level.removeBlock(blockPos, false); return; } Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } } } ...If we look at the above class, we can see that there are two checks that are carried out before allowing ice blocks to be converted into water upon being mined by players. One of these checks is to make sure that the player isn't holding an item enchanted with silk touch at the time of the interaction, and the other is to check if the material below the ice block blocks motion or is a liquid. Because of the material check that's in place here, when ice with non-solid blocks below them is mined by players, it doesn't create water, therefore resulting in this problem occurring.
Fix:
Simply removing the material check within this piece of code before allowing ice blocks to be converted into water upon being mined by players will resolve this problem.
Current Code:... Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } ...Fixed Code:... level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); ...
The Bug:
Ice with non-solid blocks below them doesn't create water when mined by players.
Steps to Reproduce:
- Place down some ice and ensure that there's air below it.
- Break the ice and watch closely.
- Take note as to whether or not ice with non-solid blocks below them doesn't create water when mined by players.
Observed Behavior:
No water is created.
Expected Behavior:
Water would be created.
Code Analysis:
Code analysis by [Mod] Avoma can be found below. An additional code analysis by [Mod] Chandler can
alsobe found in this comment.The following is based on a decompiled version of Minecraft 1.19.2 using MCP-Reborn.
net.minecraft.world.level.block.IceBlock.javapublic class IceBlock extends HalfTransparentBlock { ... public void playerDestroy(Level level, Player player, BlockPos blockPos, BlockState blockState, @Nullable BlockEntity blockEntity, ItemStack itemStack) { super.playerDestroy(level, player, blockPos, blockState, blockEntity, itemStack); if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, itemStack) == 0) { if (level.dimensionType().ultraWarm()) { level.removeBlock(blockPos, false); return; } Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } } } ...If we look at the above class, we can see that there are two checks that are carried out before allowing ice blocks to be converted into water upon being mined by players. One of these checks is to make sure that the player isn't holding an item enchanted with silk touch at the time of the interaction, and the other is to check if the material below the ice block blocks motion or is a liquid. Because of the material check that's in place here, when ice with non-solid blocks below them is mined by players, it doesn't create water, therefore resulting in this problem occurring.
Fix:
Simply removing the material check within this piece of code before allowing ice blocks to be converted into water upon being mined by players will resolve this problem.
Current Code:... Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } ...Fixed Code:... level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); ...
The Bug:
Ice with non-solid blocks below them doesn't create water when mined by players.
Steps to Reproduce:
- Place down some ice and ensure that there's air below it.
- Break the ice
and watch closely.- Take note as to whether or not ice with non-solid blocks below them doesn't create water when mined by players.
Observed Behavior:
No water is created.
Expected Behavior:
Water would be created.
Code Analysis:
Code analysis by [Mod] Avoma can be found below. An additional code analysis by [Mod] Chandler can be found in this comment.
The following is based on a decompiled version of Minecraft 1.19.2 using MCP-Reborn.
net.minecraft.world.level.block.IceBlock.javapublic class IceBlock extends HalfTransparentBlock { ... public void playerDestroy(Level level, Player player, BlockPos blockPos, BlockState blockState, @Nullable BlockEntity blockEntity, ItemStack itemStack) { super.playerDestroy(level, player, blockPos, blockState, blockEntity, itemStack); if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, itemStack) == 0) { if (level.dimensionType().ultraWarm()) { level.removeBlock(blockPos, false); return; } Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } } } ...If we look at the above class, we can see that there are two checks that are carried out before allowing ice blocks to be converted into water upon being mined by players. One of these checks is to make sure that the player isn't holding an item enchanted with silk touch at the time of the interaction, and the other is to check if the material below the ice block blocks motion or is a liquid. Because of the material check that's in place here, when ice with non-solid blocks below them is mined by players, it doesn't create water, therefore resulting in this problem occurring.
Fix:
Simply removing the material check within this piece of code before allowing ice blocks to be converted into water upon being mined by players will resolve this problem.
Current Code:... Material material = level.getBlockState(blockPos.below()).getMaterial(); if (material.blocksMotion() || material.isLiquid()) { level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); } ...Fixed Code:... level.setBlockAndUpdate(blockPos, Blocks.WATER.defaultBlockState()); ...
is duplicated by
Thank you for your report!
However, we are already tracking this issue, and this report is a Duplicate of MC-58208, which is a report that has not been resolved yet.
If you want, you can upvote the parent ticket, and enable watching to receive any updates about it - if you believe you have any information that may be important for this issue, please leave a comment on the parent. Please also use the search function in the future to prevent duplicate reports.
Quick Links:
📓 Issue Guidelines – 🛠 Community Support – 📧 Customer Support – ✍️ Feedback and Suggestions – 📖 Game Wiki
💬 Mojira Subreddit – 💬 Mojira Discord
Duplicate of MC-58208?
Does MC-58208 describe your issue?






Please don't put down the affected version as a future version, as you DON'T have access to it yet!
If I'm right this is intended, correct me if I'm wrong though.
Is there anyone that still thinks that this is a bug, or is the community consensous that this is Intended?
Version 1.15.2
This still happens.
Yes i view it as a bug. Breaking ice without silk touch is supposed to cause a water block, not vanish.
Still having this problem in 1.16.1.
Can confirm in 20w46a.
Can confirm in 20w48a.
Can confirm in 20w51a. I'd like to request ownership of this ticket since the reporter has been inactive since July 2014.
Using yarn mappings for 21w05b, at net.minecraft.block.IceBlock.afterBreak() there seems to be a check specifically making sure the block beneath the ice is not air as seen in the last if statement here:
I am pretty sure this is WAI
Can confirm in 21w06a.
Relates to MC-206185
Following on from my code analysis, I've double-checked my proposed fix and I can confidently confirm that it's fully functioning and works as expected, so I've attached two screenshots to this report, one of which shows the current code and the other that shows the fixed code. I feel this information may be quite insightful hence my reasoning for providing it.
MC-58208 - Current Code.png

MC-58208 - Fixed Code.png