diff --git a/common/src/terrain/block.rs b/common/src/terrain/block.rs index 8cb8c73aea..3a5db4cf69 100644 --- a/common/src/terrain/block.rs +++ b/common/src/terrain/block.rs @@ -225,15 +225,24 @@ impl Block { /// arbitrary and only important when compared to one-another. #[inline] pub fn explode_power(&self) -> Option { + // Explodable means that the terrain sprite will get removed anyway, + // so all is good for empty fluids. match self.kind() { BlockKind::Leaves => Some(0.25), BlockKind::Grass => Some(0.5), BlockKind::WeakRock => Some(0.75), BlockKind::Snow => Some(0.1), - // Explodable means that the terrain sprite will get removed anyway, so all is good for - // empty fluids. - // TODO: Handle the case of terrain sprites we don't want to have explode - _ => self.get_sprite().map(|_| 0.25), + _ => self.get_sprite().and_then(|sprite| match sprite { + SpriteKind::Anvil + | SpriteKind::Cauldron + | SpriteKind::CookingPot + | SpriteKind::CraftingBench + | SpriteKind::Forge + | SpriteKind::Loom + | SpriteKind::SpinningWheel + | SpriteKind::TanningRack => None, + _ => Some(0.25), + }), } }