interaction: forbid block breaking through entities

This commit is contained in:
Bixilon 2021-12-02 16:35:20 +01:00
parent 31045a0b3a
commit 298c27bcd1
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4

View File

@ -24,6 +24,7 @@ import de.bixilon.minosoft.data.registries.enchantment.DefaultEnchantments
import de.bixilon.minosoft.data.registries.fluid.DefaultFluids
import de.bixilon.minosoft.data.registries.items.tools.MiningToolItem
import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.input.camera.hit.BlockRaycastHit
import de.bixilon.minosoft.modding.event.events.BlockBreakAckEvent
import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker
import de.bixilon.minosoft.protocol.packets.c2s.play.ArmSwingC2SP
@ -70,10 +71,9 @@ class BreakInteractionHandler(
}
private fun cancelDigging() {
breakPosition?.let {
connection.sendPacket(PlayerActionC2SP(PlayerActionC2SP.Actions.CANCELLED_DIGGING, it))
clearDigging()
}
val breakPosition = breakPosition ?: return
connection.sendPacket(PlayerActionC2SP(PlayerActionC2SP.Actions.CANCELLED_DIGGING, breakPosition))
clearDigging()
}
private fun swingArm() {
@ -98,9 +98,9 @@ class BreakInteractionHandler(
cancelDigging()
return false
}
val raycastHit = renderWindow.inputHandler.camera.blockTarget
val raycastHit = renderWindow.inputHandler.camera.nonFluidTarget
if (raycastHit == null) {
if (raycastHit !is BlockRaycastHit) {
cancelDigging()
return false
}