From f012250219abcdb0d07cd60ca2089fbb63dc222c Mon Sep 17 00:00:00 2001 From: Marlian <84173858+MCbabel@users.noreply.github.com> Date: Fri, 6 Mar 2026 01:25:37 +0100 Subject: Fix creative mode double block break on single click (#640) --- Minecraft.Client/MultiPlayerGameMode.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'Minecraft.Client/MultiPlayerGameMode.cpp') diff --git a/Minecraft.Client/MultiPlayerGameMode.cpp b/Minecraft.Client/MultiPlayerGameMode.cpp index 9c4b0795..8cbd1b91 100644 --- a/Minecraft.Client/MultiPlayerGameMode.cpp +++ b/Minecraft.Client/MultiPlayerGameMode.cpp @@ -133,6 +133,9 @@ void MultiPlayerGameMode::startDestroyBlock(int x, int y, int z, int face) if (localPlayerMode->isCreative()) { + // Skip if we just broke a block — prevents double-break on single clicks + if (destroyDelay > 0) return; + connection->send(shared_ptr( new PlayerActionPacket(PlayerActionPacket::START_DESTROY_BLOCK, x, y, z, face) )); creativeDestroyBlock(minecraft, this, x, y, z, face); destroyDelay = 5; @@ -178,6 +181,7 @@ void MultiPlayerGameMode::stopDestroyBlock() isDestroying = false; destroyProgress = 0; + destroyDelay = 0; minecraft->level->destroyTileProgress(minecraft->player->entityId, xDestroyBlock, yDestroyBlock, zDestroyBlock, -1); } -- cgit v1.2.3 From b7b29c0b7b191313a9ac9cb33696577ab324fd70 Mon Sep 17 00:00:00 2001 From: Marvelco Date: Fri, 6 Mar 2026 02:48:27 +0200 Subject: Fixed the double block break in Creative mode (#642) * this seems unnecessary * fixed the double block break on single click --- Minecraft.Client/Minecraft.cpp | 5 ++++- Minecraft.Client/MultiPlayerGameMode.cpp | 7 ------- 2 files changed, 4 insertions(+), 8 deletions(-) (limited to 'Minecraft.Client/MultiPlayerGameMode.cpp') diff --git a/Minecraft.Client/Minecraft.cpp b/Minecraft.Client/Minecraft.cpp index b197638c..b87745f0 100644 --- a/Minecraft.Client/Minecraft.cpp +++ b/Minecraft.Client/Minecraft.cpp @@ -3530,11 +3530,14 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures) } #ifdef _WINDOWS64 + bool actionPressed = InputManager.ButtonPressed(iPad, MINECRAFT_ACTION_ACTION) || (iPad == 0 && g_KBMInput.IsKBMActive() && g_KBMInput.IsMouseButtonPressed(KeyboardMouseInput::MOUSE_LEFT)); bool actionHeld = InputManager.ButtonDown(iPad, MINECRAFT_ACTION_ACTION) || (iPad == 0 && g_KBMInput.IsKBMActive() && g_KBMInput.IsMouseButtonDown(KeyboardMouseInput::MOUSE_LEFT)); #else + bool actionPressed = InputManager.ButtonPressed(iPad, MINECRAFT_ACTION_ACTION); bool actionHeld = InputManager.ButtonDown(iPad, MINECRAFT_ACTION_ACTION); #endif - if (actionHeld && ticks - player->lastClickTick[0] >= timer->ticksPerSecond / 4) + + if (actionPressed) { //printf("MINECRAFT_ACTION_ACTION ButtonDown"); player->handleMouseClick(0); diff --git a/Minecraft.Client/MultiPlayerGameMode.cpp b/Minecraft.Client/MultiPlayerGameMode.cpp index 8cbd1b91..5f9fc9de 100644 --- a/Minecraft.Client/MultiPlayerGameMode.cpp +++ b/Minecraft.Client/MultiPlayerGameMode.cpp @@ -86,13 +86,6 @@ bool MultiPlayerGameMode::destroyBlock(int x, int y, int z, int face) if (oldTile == NULL) return false; -#ifdef _WINDOWS64 - if (g_NetworkManager.IsHost()) - { - level->levelEvent(LevelEvent::PARTICLES_DESTROY_BLOCK, x, y, z, oldTile->id + (level->getData(x, y, z) << Tile::TILE_NUM_SHIFT)); - } -#endif - level->levelEvent(LevelEvent::PARTICLES_DESTROY_BLOCK, x, y, z, oldTile->id + (level->getData(x, y, z) << Tile::TILE_NUM_SHIFT)); int data = level->getData(x, y, z); -- cgit v1.2.3