fix some network issues (<1.13)

This commit is contained in:
Bixilon 2023-10-01 21:33:55 +02:00
parent a6c06d4d80
commit ad7354964d
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
3 changed files with 8 additions and 7 deletions

View File

@ -41,7 +41,7 @@ import de.bixilon.minosoft.data.registries.identified.ResourceLocation
import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.data.text.ChatComponent
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.ClientActionC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.ClientActionC2SP
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_8_9 import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_17W13B
import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.KUtil.toResourceLocation
// https://c4k3.github.io/wiki.vg/images/1/13/Inventory-slots.png // https://c4k3.github.io/wiki.vg/images/1/13/Inventory-slots.png
@ -104,7 +104,7 @@ class PlayerInventory(
} }
override fun onOpen() { override fun onOpen() {
if (connection.version <= V_1_8_9) { // TODO: find out version if (connection.version < V_17W13B) {
connection.network.send(ClientActionC2SP(ClientActionC2SP.ClientActions.OPEN_INVENTORY)) connection.network.send(ClientActionC2SP(ClientActionC2SP.ClientActions.OPEN_INVENTORY))
} }
} }

View File

@ -40,7 +40,7 @@ class ClientActionC2SP(
enum class ClientActions { enum class ClientActions {
PERFORM_RESPAWN, PERFORM_RESPAWN,
REQUEST_STATISTICS, REQUEST_STATISTICS,
OPEN_INVENTORY, OPEN_INVENTORY, // removed in 17w13b
; ;
companion object : ValuesEnum<ClientActions> { companion object : ValuesEnum<ClientActions> {

View File

@ -20,8 +20,9 @@ import de.bixilon.minosoft.modding.event.events.container.ContainerOpenEvent
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_14W03B import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_14W03B
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_19W11A import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_19W02A
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_14 import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_14
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_8_9
import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer
import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.Log
import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogLevels
@ -45,18 +46,18 @@ class OpenContainerS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
} }
} }
val title: ChatComponent = buffer.readChatComponent() val title: ChatComponent = buffer.readChatComponent()
val slotCount: Int = if (buffer.versionId <= V_19W11A) { // ToDo: This is completely guessed, it is not present in 1.16.5 (unchecked) val slotCount: Int = if (buffer.versionId <= V_19W02A) { // ToDo: This is completely guessed, it is not present in 1.16.5 (unchecked)
buffer.readUnsignedByte() buffer.readUnsignedByte()
} else { } else {
// ToDo: load from pixlyzer // ToDo: load from pixlyzer
0 0
} }
val hasTitle: Boolean = if (buffer.versionId > V_14W03B && buffer.versionId <= V_1_14) { // upper version completely guessed val hasTitle: Boolean = if (buffer.versionId > V_14W03B && buffer.versionId <= V_1_8_9) { // TODO: upper version (1.8) is probably worng. it changed between 1.7.10..1.8
buffer.readBoolean() buffer.readBoolean()
} else { } else {
true true
} }
var entityId: Int? = if (containerType.identifier == DefaultInventoryTypes.HORSE || buffer.versionId < V_14W03B) { // ToDo: This was removed at some point var entityId: Int? = if (buffer.versionId >= V_19W02A && (containerType.identifier == DefaultInventoryTypes.HORSE || buffer.versionId < V_14W03B)) {
buffer.readInt() buffer.readInt()
} else { } else {
null null