From 645fea423764e9d91e46b84a63aba5a47b954c6a Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Fri, 6 Nov 2020 14:58:47 +0000 Subject: Players are no longer kicked when clicking on bedrock (#5023) * Players are no longer kicked when clicking on bedrock * Fixes #5022 --- src/Entities/Player.cpp | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) (limited to 'src/Entities/Player.cpp') diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp index 888792773..a8afb2b95 100644 --- a/src/Entities/Player.cpp +++ b/src/Entities/Player.cpp @@ -3228,21 +3228,15 @@ float cPlayer::GetMiningProgressPerTick(BLOCKTYPE a_Block) { return 1; } - float BlockHardness = cBlockInfo::GetHardness(a_Block); + + const bool CanHarvest = GetEquippedItem().GetHandler()->CanHarvestBlock(a_Block); + const float BlockHardness = cBlockInfo::GetHardness(a_Block) * (CanHarvest ? 1.5f : 5.0f); ASSERT(BlockHardness > 0); // Can't divide by 0 or less, IsOneHitDig should have returned true - if (GetEquippedItem().GetHandler()->CanHarvestBlock(a_Block)) - { - BlockHardness *= 1.5f; - } - else - { - BlockHardness *= 5.0f; - } - float DigSpeed = GetDigSpeed(a_Block); + // LOGD("Time to mine block = %f", BlockHardness/DigSpeed); // Number of ticks to mine = (20 * BlockHardness)/DigSpeed; // Therefore take inverse to get fraction mined per tick: - return DigSpeed / (20.0f * BlockHardness); + return GetDigSpeed(a_Block) / (20.0f * BlockHardness); } @@ -3252,13 +3246,9 @@ float cPlayer::GetMiningProgressPerTick(BLOCKTYPE a_Block) bool cPlayer::CanInstantlyMine(BLOCKTYPE a_Block) { // Based on: https://minecraft.gamepedia.com/Breaking#Calculation - // Check it has non-zero hardness - if (cBlockInfo::IsOneHitDig(a_Block)) - { - return true; - } - // If the dig speed is greater than 30 times the hardness, then the wiki says we can instantly mine - return GetDigSpeed(a_Block) > 30 * cBlockInfo::GetHardness(a_Block); + + // If the dig speed is greater than 30 times the hardness, then the wiki says we can instantly mine: + return GetDigSpeed(a_Block) > (30 * cBlockInfo::GetHardness(a_Block)); } -- cgit v1.2.3