mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-18 11:54:59 -04:00
rendering: add block breaking
This commit is contained in:
parent
90a3ef4e7f
commit
0ae43f4e85
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user