fix multiple block placing packets when right-clicking once

This commit is contained in:
Bixilon 2021-10-23 15:59:03 +02:00
parent 7e6fc7c933
commit c08d5936f8
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
3 changed files with 4 additions and 17 deletions

View File

@ -25,8 +25,6 @@ import de.bixilon.minosoft.gui.rendering.input.camera.hit.BlockRaycastHit
import de.bixilon.minosoft.gui.rendering.input.camera.hit.RaycastHit
import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
import de.bixilon.minosoft.protocol.packets.c2s.play.BlockPlaceC2SP
import glm_.vec3.Vec3
open class BlockItem(
resourceLocation: ResourceLocation,
@ -72,16 +70,6 @@ open class BlockItem(
placeBlockState.placeSoundEvent?.let {
connection.world.playSoundEvent(it, placePosition, placeBlockState.soundEventVolume, placeBlockState.soundEventPitch)
}
connection.sendPacket(BlockPlaceC2SP(
position = placePosition,
direction = raycastHit.hitDirection,
cursorPosition = Vec3(raycastHit.hitPosition),
item = connection.player.inventory.getHotbarSlot(),
hand = Hands.MAIN_HAND,
insideBlock = false, // ToDo
))
return BlockUsages.SUCCESS
}
}

View File

@ -106,12 +106,11 @@ class World(
VersionTweaker.transformBlock(blockState, sections, blockPosition.inChunkSectionPosition, blockPosition.sectionHeight)
}
val inChunkPosition = blockPosition.inChunkPosition
if (it[inChunkPosition] == blockState) {
val previousBlock = it[inChunkPosition]
if (previousBlock == transformedBlockState) {
return
}
it[inChunkPosition]?.let { oldBlockState ->
oldBlockState.block.onBreak(connection, blockPosition, oldBlockState, it.getBlockEntity(inChunkPosition))
}
previousBlock?.block?.onBreak(connection, blockPosition, previousBlock, it.getBlockEntity(inChunkPosition))
blockState?.block?.onPlace(connection, blockPosition, blockState)
it[inChunkPosition] = transformedBlockState
connection.fireEvent(BlockSetEvent(

View File

@ -41,6 +41,6 @@ class BlockSetS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
}
override fun log() {
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Block change (position=${blockPosition}, block=$blockState)" }
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Block set (position=${blockPosition}, blockState=$blockState)" }
}
}