From ba048e2101d42af53f2ac7a9a3ed04c194918136 Mon Sep 17 00:00:00 2001 From: Alexander Harkness Date: Fri, 3 Apr 2020 20:24:49 +0000 Subject: New hotfix to prevent calling OnBroken (#4600) * Fix stack overflow in breaking ice. Stupid fix, but it does work and is used in other places too... * Replace hotfix for pistons with better one * Fix comments in BlockBed handler --- src/Blocks/BlockPiston.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/Blocks/BlockPiston.cpp') diff --git a/src/Blocks/BlockPiston.cpp b/src/Blocks/BlockPiston.cpp index 5a18cffac..8c6940454 100644 --- a/src/Blocks/BlockPiston.cpp +++ b/src/Blocks/BlockPiston.cpp @@ -297,9 +297,10 @@ void cBlockPistonHandler::RetractPiston(Vector3i a_BlockPos, cWorld & a_World) return; } - // Remove extension, update base state - World.SetBlock(extensionPos.x, extensionPos.y, extensionPos.z, E_BLOCK_AIR, 0); - World.SetBlock(a_BlockPos.x, a_BlockPos.y, a_BlockPos.z, pistonBlock, pistonMeta & ~(8)); + // Remove extension, update base state. Calling FastSetBlock inhibits OnBroken being called by SetBlock. + World.FastSetBlock(extensionPos, E_BLOCK_AIR, 0); + World.SetBlock(extensionPos, E_BLOCK_AIR, 0); + World.SetBlock(a_BlockPos, pistonBlock, pistonMeta & ~(8)); // (Retraction is always successful, but play in the task for consistency) World.BroadcastSoundEffect("block.piston.contract", a_BlockPos, 0.5f, 0.7f); -- cgit v1.2.3