diff --git a/src/main/java/de/bixilon/minosoft/config/config/game/controls/KeyBindingsNames.kt b/src/main/java/de/bixilon/minosoft/config/config/game/controls/KeyBindingsNames.kt index c1bae1e46..303633c43 100644 --- a/src/main/java/de/bixilon/minosoft/config/config/game/controls/KeyBindingsNames.kt +++ b/src/main/java/de/bixilon/minosoft/config/config/game/controls/KeyBindingsNames.kt @@ -29,6 +29,8 @@ object KeyBindingsNames { val MOVE_FLY_DOWN = ResourceLocation("minosoft:move_fly_down") val MOVE_JUMP = ResourceLocation("minosoft:move_jump") + val DESTROY_BLOCK = ResourceLocation("minosoft:destroy_block") + val ZOOM = ResourceLocation("minosoft:zoom") val QUIT_RENDERING = ResourceLocation("minosoft:quit_rendering") @@ -103,6 +105,11 @@ object KeyBindingsNames { KeyAction.CHANGE to mutableSetOf(KeyCodes.KEY_LEFT_SHIFT) ), ), + DESTROY_BLOCK to KeyBinding( + mutableMapOf( + KeyAction.CHANGE to mutableSetOf(KeyCodes.MOUSE_BUTTON_LEFT) + ), + ), ZOOM to KeyBinding( mutableMapOf( KeyAction.CHANGE to mutableSetOf(KeyCodes.KEY_C) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/RenderConstants.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/RenderConstants.kt index a4453f946..f3e67481d 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/RenderConstants.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/RenderConstants.kt @@ -57,7 +57,7 @@ object RenderConstants { const val MAXIMUM_CALLS_PER_FRAME = 10 - const val DISABLE_LIGHTING = false + const val DISABLE_LIGHTING = true const val RENDER_BLOCKS = true const val RENDER_FLUIDS = true diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/InteractionHandler.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/InteractionHandler.kt index a30a9eae9..f5ddd9d10 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/input/InteractionHandler.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/InteractionHandler.kt @@ -14,6 +14,7 @@ package de.bixilon.minosoft.gui.rendering.input import de.bixilon.minosoft.config.config.game.controls.KeyBindingsNames +import de.bixilon.minosoft.data.Directions import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.mappings.blocks.BlockUsages import de.bixilon.minosoft.data.mappings.items.BlockItem @@ -22,6 +23,7 @@ import de.bixilon.minosoft.gui.rendering.RenderConstants import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus import de.bixilon.minosoft.protocol.packets.c2s.play.ArmSwingC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.BlockBreakC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.BlockPlaceC2SP import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition @@ -34,6 +36,20 @@ class InteractionHandler( fun init() { renderWindow.inputHandler.registerCheckCallback(KeyBindingsNames.BLOCK_INTERACT) + renderWindow.inputHandler.registerKeyCallback(KeyBindingsNames.DESTROY_BLOCK) { + if (!it) { + return@registerKeyCallback + } + val raycastHit = renderWindow.inputHandler.camera.getTargetBlock() + raycastHit?.let { + if (raycastHit.distance > RenderConstants.MAX_BLOCK_OUTLINE_RAYCAST_DISTANCE) { + return@let + } + connection.sendPacket(BlockBreakC2SP(BlockBreakC2SP.BreakType.START_DIGGING, raycastHit.blockPosition, Directions.UP)) + connection.sendPacket(BlockBreakC2SP(BlockBreakC2SP.BreakType.FINISHED_DIGGING, raycastHit.blockPosition, Directions.UP)) + connection.world.setBlock(raycastHit.blockPosition, null) + } + } } private fun checkInteraction(isKeyDown: Boolean) {