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_FLY_DOWN = ResourceLocation("minosoft:move_fly_down")
|
||||||
val MOVE_JUMP = ResourceLocation("minosoft:move_jump")
|
val MOVE_JUMP = ResourceLocation("minosoft:move_jump")
|
||||||
|
|
||||||
|
val DESTROY_BLOCK = ResourceLocation("minosoft:destroy_block")
|
||||||
|
|
||||||
val ZOOM = ResourceLocation("minosoft:zoom")
|
val ZOOM = ResourceLocation("minosoft:zoom")
|
||||||
|
|
||||||
val QUIT_RENDERING = ResourceLocation("minosoft:quit_rendering")
|
val QUIT_RENDERING = ResourceLocation("minosoft:quit_rendering")
|
||||||
@ -103,6 +105,11 @@ object KeyBindingsNames {
|
|||||||
KeyAction.CHANGE to mutableSetOf(KeyCodes.KEY_LEFT_SHIFT)
|
KeyAction.CHANGE to mutableSetOf(KeyCodes.KEY_LEFT_SHIFT)
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
DESTROY_BLOCK to KeyBinding(
|
||||||
|
mutableMapOf(
|
||||||
|
KeyAction.CHANGE to mutableSetOf(KeyCodes.MOUSE_BUTTON_LEFT)
|
||||||
|
),
|
||||||
|
),
|
||||||
ZOOM to KeyBinding(
|
ZOOM to KeyBinding(
|
||||||
mutableMapOf(
|
mutableMapOf(
|
||||||
KeyAction.CHANGE to mutableSetOf(KeyCodes.KEY_C)
|
KeyAction.CHANGE to mutableSetOf(KeyCodes.KEY_C)
|
||||||
|
@ -57,7 +57,7 @@ object RenderConstants {
|
|||||||
|
|
||||||
const val MAXIMUM_CALLS_PER_FRAME = 10
|
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_BLOCKS = true
|
||||||
const val RENDER_FLUIDS = true
|
const val RENDER_FLUIDS = true
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.input
|
package de.bixilon.minosoft.gui.rendering.input
|
||||||
|
|
||||||
import de.bixilon.minosoft.config.config.game.controls.KeyBindingsNames
|
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.abilities.Gamemodes
|
||||||
import de.bixilon.minosoft.data.mappings.blocks.BlockUsages
|
import de.bixilon.minosoft.data.mappings.blocks.BlockUsages
|
||||||
import de.bixilon.minosoft.data.mappings.items.BlockItem
|
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.RenderWindow
|
||||||
import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus
|
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.ArmSwingC2SP
|
||||||
|
import de.bixilon.minosoft.protocol.packets.c2s.play.BlockBreakC2SP
|
||||||
import de.bixilon.minosoft.protocol.packets.c2s.play.BlockPlaceC2SP
|
import de.bixilon.minosoft.protocol.packets.c2s.play.BlockPlaceC2SP
|
||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||||
|
|
||||||
@ -34,6 +36,20 @@ class InteractionHandler(
|
|||||||
|
|
||||||
fun init() {
|
fun init() {
|
||||||
renderWindow.inputHandler.registerCheckCallback(KeyBindingsNames.BLOCK_INTERACT)
|
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) {
|
private fun checkInteraction(isKeyDown: Boolean) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user