mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-18 11:54:59 -04:00
network: 23w40a
New game state: `receive_chunks`, json chat was replaced with nbt on network
This commit is contained in:
parent
6955fae49e
commit
d143b98a63
@ -19,6 +19,8 @@ import de.bixilon.kutil.json.JsonObject
|
|||||||
import de.bixilon.kutil.uuid.UUIDUtil.toUUID
|
import de.bixilon.kutil.uuid.UUIDUtil.toUUID
|
||||||
import de.bixilon.minosoft.data.registries.identified.ResourceLocation
|
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.protocol.buffers.InByteBuffer
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.buffers.OutByteBuffer
|
||||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||||
import de.bixilon.minosoft.util.json.Jackson
|
import de.bixilon.minosoft.util.json.Jackson
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -48,7 +50,10 @@ data class EntityHoverEvent(
|
|||||||
type = it.toResourceLocation()
|
type = it.toResourceLocation()
|
||||||
}
|
}
|
||||||
|
|
||||||
return EntityHoverEvent(json["id"].toString().toUUID(), type, ChatComponent.of(json["name"]))
|
val rawUUID = json["id"]
|
||||||
|
val uuid = if (rawUUID is IntArray) InByteBuffer(OutByteBuffer().apply { writeBareIntArray(rawUUID) }.toArray()).readUUID() else rawUUID.toString().toUUID()
|
||||||
|
|
||||||
|
return EntityHoverEvent(uuid, type, ChatComponent.of(json["name"]))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ import de.bixilon.minosoft.util.logging.LogLevels
|
|||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
|
|
||||||
class KickS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
class KickS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
||||||
val reason: ChatComponent = buffer.readChatComponent()
|
val reason: ChatComponent = if (buffer.connection.network.state == ProtocolStates.LOGIN) buffer.readChatComponent() else buffer.readNbtChatComponent()
|
||||||
|
|
||||||
override fun handle(connection: PlayConnection) {
|
override fun handle(connection: PlayConnection) {
|
||||||
if (!connection.network.connected) {
|
if (!connection.network.connected) {
|
||||||
|
@ -39,7 +39,7 @@ class ResourcepackS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
if (buffer.versionId >= ProtocolVersions.V_21W15A) {
|
if (buffer.versionId >= ProtocolVersions.V_21W15A) {
|
||||||
promptText = buffer.readOptional { buffer.readChatComponent() }
|
promptText = buffer.readOptional { buffer.readNbtChatComponent() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ import de.bixilon.minosoft.util.logging.LogLevels
|
|||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
|
|
||||||
class PlayStatusS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
class PlayStatusS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
||||||
val motd = if (buffer.versionId >= ProtocolVersions.V_23W07A) buffer.readChatComponent() else buffer.readOptional { buffer.readChatComponent() }
|
val motd = if (buffer.versionId >= ProtocolVersions.V_23W07A) buffer.readNbtChatComponent() else buffer.readOptional { buffer.readNbtChatComponent() }
|
||||||
val favicon = if (buffer.versionId >= ProtocolVersions.V_23W07A) buffer.readOptional { buffer.readByteArray() } else buffer.readOptional { buffer.readString().toFavicon() }
|
val favicon = if (buffer.versionId >= ProtocolVersions.V_23W07A) buffer.readOptional { buffer.readByteArray() } else buffer.readOptional { buffer.readString().toFavicon() }
|
||||||
val previewsChat = if (buffer.versionId < ProtocolVersions.V_22W42A) buffer.readBoolean() else false
|
val previewsChat = if (buffer.versionId < ProtocolVersions.V_22W42A) buffer.readBoolean() else false
|
||||||
val forcesSecureChat = if (buffer.versionId >= ProtocolVersions.V_1_19_1_RC2) buffer.readBoolean() else null
|
val forcesSecureChat = if (buffer.versionId >= ProtocolVersions.V_1_19_1_RC2) buffer.readBoolean() else null
|
||||||
|
@ -19,7 +19,7 @@ import de.bixilon.minosoft.data.bossbar.BossbarFlags
|
|||||||
import de.bixilon.minosoft.data.bossbar.BossbarNotches
|
import de.bixilon.minosoft.data.bossbar.BossbarNotches
|
||||||
import de.bixilon.minosoft.modding.event.events.bossbar.BossbarAddEvent
|
import de.bixilon.minosoft.modding.event.events.bossbar.BossbarAddEvent
|
||||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||||
import de.bixilon.minosoft.protocol.protocol.buffers.InByteBuffer
|
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
|
||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
@ -27,9 +27,9 @@ import java.util.*
|
|||||||
|
|
||||||
class AddBossbarS2CP(
|
class AddBossbarS2CP(
|
||||||
val uuid: UUID,
|
val uuid: UUID,
|
||||||
buffer: InByteBuffer,
|
buffer: PlayInByteBuffer,
|
||||||
) : BossbarS2CP {
|
) : BossbarS2CP {
|
||||||
val title = buffer.readChatComponent()
|
val title = buffer.readNbtChatComponent()
|
||||||
val value = buffer.readFloat()
|
val value = buffer.readFloat()
|
||||||
val color = BossbarColors[buffer.readVarInt()]
|
val color = BossbarColors[buffer.readVarInt()]
|
||||||
val notches = BossbarNotches[buffer.readVarInt()]
|
val notches = BossbarNotches[buffer.readVarInt()]
|
||||||
|
@ -15,7 +15,7 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.bossbar
|
|||||||
|
|
||||||
import de.bixilon.minosoft.modding.event.events.bossbar.BossbarTitleSetEvent
|
import de.bixilon.minosoft.modding.event.events.bossbar.BossbarTitleSetEvent
|
||||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||||
import de.bixilon.minosoft.protocol.protocol.buffers.InByteBuffer
|
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
|
||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
@ -23,9 +23,9 @@ import java.util.*
|
|||||||
|
|
||||||
class TitleBossbarS2CP(
|
class TitleBossbarS2CP(
|
||||||
val uuid: UUID,
|
val uuid: UUID,
|
||||||
buffer: InByteBuffer,
|
buffer: PlayInByteBuffer,
|
||||||
) : BossbarS2CP {
|
) : BossbarS2CP {
|
||||||
val title = buffer.readChatComponent()
|
val title = buffer.readNbtChatComponent()
|
||||||
|
|
||||||
override fun handle(connection: PlayConnection) {
|
override fun handle(connection: PlayConnection) {
|
||||||
val bossbar = connection.bossbarManager.bossbars[uuid] ?: return
|
val bossbar = connection.bossbarManager.bossbars[uuid] ?: return
|
||||||
|
@ -32,7 +32,7 @@ import de.bixilon.minosoft.util.logging.LogMessageType
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class ChatMessageS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
class ChatMessageS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
||||||
val text: ChatComponent = buffer.readChatComponent()
|
val text: ChatComponent = buffer.readNbtChatComponent()
|
||||||
var type: ChatMessageType = buffer.connection.registries.messageType[DefaultMessageTypes.CHAT]!!
|
var type: ChatMessageType = buffer.connection.registries.messageType[DefaultMessageTypes.CHAT]!!
|
||||||
private set
|
private set
|
||||||
var sender: UUID? = null
|
var sender: UUID? = null
|
||||||
|
@ -98,7 +98,7 @@ class SignedChatMessageS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
|||||||
|
|
||||||
val message = readChatComponent().message
|
val message = readChatComponent().message
|
||||||
if (versionId >= ProtocolVersions.V_1_19_1_PRE5 && versionId < ProtocolVersions.V_22W42A) {
|
if (versionId >= ProtocolVersions.V_1_19_1_PRE5 && versionId < ProtocolVersions.V_22W42A) {
|
||||||
readOptional { readChatComponent() } // formatted text
|
readOptional { readNbtChatComponent() } // formatted text
|
||||||
}
|
}
|
||||||
|
|
||||||
val sent = readInstant()
|
val sent = readInstant()
|
||||||
@ -106,7 +106,7 @@ class SignedChatMessageS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
|||||||
val lastSeen = readArray { if (versionId >= ProtocolVersions.V_22W42A) readIndexedLastSeenMessage() else readLastSeenMessage() }
|
val lastSeen = readArray { if (versionId >= ProtocolVersions.V_22W42A) readIndexedLastSeenMessage() else readLastSeenMessage() }
|
||||||
|
|
||||||
parameters[ChatParameter.CONTENT] = TextComponent(message)
|
parameters[ChatParameter.CONTENT] = TextComponent(message)
|
||||||
val unsigned = readOptional { readChatComponent() }
|
val unsigned = readOptional { readNbtChatComponent() }
|
||||||
var filter: Filter? = null
|
var filter: Filter? = null
|
||||||
if (versionId >= ProtocolVersions.V_1_19_1_RC3) {
|
if (versionId >= ProtocolVersions.V_1_19_1_RC3) {
|
||||||
filter = ChatFilter[readVarInt()].reader.invoke(this)
|
filter = ChatFilter[readVarInt()].reader.invoke(this)
|
||||||
|
@ -24,7 +24,7 @@ import de.bixilon.minosoft.util.logging.LogLevels
|
|||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
|
|
||||||
class UnsignedChatMessageS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
class UnsignedChatMessageS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
||||||
val text: ChatComponent = buffer.readChatComponent()
|
val text: ChatComponent = buffer.readNbtChatComponent()
|
||||||
val type = buffer.readRegistryItem(buffer.connection.registries.messageType)
|
val type = buffer.readRegistryItem(buffer.connection.registries.messageType)
|
||||||
val parameters: Map<ChatParameter, ChatComponent> = mutableMapOf<ChatParameter, ChatComponent>().apply {
|
val parameters: Map<ChatParameter, ChatComponent> = mutableMapOf<ChatParameter, ChatComponent>().apply {
|
||||||
buffer.readChatMessageParameters(this)
|
buffer.readChatMessageParameters(this)
|
||||||
|
@ -22,7 +22,7 @@ import de.bixilon.minosoft.util.logging.LogMessageType
|
|||||||
class KillCombatEventS2CP(buffer: PlayInByteBuffer) : CombatEventS2CP {
|
class KillCombatEventS2CP(buffer: PlayInByteBuffer) : CombatEventS2CP {
|
||||||
val deadEntityId = buffer.readVarInt()
|
val deadEntityId = buffer.readVarInt()
|
||||||
val killerEntityId = if (buffer.versionId >= V_1_20_PRE3) -1 else buffer.readInt()
|
val killerEntityId = if (buffer.versionId >= V_1_20_PRE3) -1 else buffer.readInt()
|
||||||
val message = buffer.readChatComponent()
|
val message = buffer.readNbtChatComponent()
|
||||||
|
|
||||||
override fun log(reducedLog: Boolean) {
|
override fun log(reducedLog: Boolean) {
|
||||||
Log.log(LogMessageType.NETWORK_IN, level = LogLevels.VERBOSE) { "Combat event kill (deadEntityId=$deadEntityId, killerEntityId=$killerEntityId, message=$message )" }
|
Log.log(LogMessageType.NETWORK_IN, level = LogLevels.VERBOSE) { "Combat event kill (deadEntityId=$deadEntityId, killerEntityId=$killerEntityId, message=$message )" }
|
||||||
|
@ -35,7 +35,7 @@ class OpenContainerS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
|||||||
buffer.versionId < V_1_14 -> buffer.readLegacyRegistryItem(buffer.connection.registries.containerType)!! // TODO: version completely guessed
|
buffer.versionId < V_1_14 -> buffer.readLegacyRegistryItem(buffer.connection.registries.containerType)!! // TODO: version completely guessed
|
||||||
else -> buffer.readRegistryItem(buffer.connection.registries.containerType)
|
else -> buffer.readRegistryItem(buffer.connection.registries.containerType)
|
||||||
}
|
}
|
||||||
val title: ChatComponent = buffer.readChatComponent()
|
val title: ChatComponent = buffer.readNbtChatComponent()
|
||||||
val slotCount: Int = if (buffer.versionId <= V_19W02A) buffer.readUnsignedByte() else 0 // ToDo: This is completely guessed, it is not present in 1.16.5 (unchecked)
|
val slotCount: Int = if (buffer.versionId <= V_19W02A) buffer.readUnsignedByte() else 0 // ToDo: This is completely guessed, it is not present in 1.16.5 (unchecked)
|
||||||
val hasTitle: Boolean = if (buffer.versionId > V_14W03B && buffer.versionId <= V_1_8_9) buffer.readBoolean() else true // TODO: upper version (1.8) is probably worng. it changed between 1.7.10..1.8
|
val hasTitle: Boolean = if (buffer.versionId > V_14W03B && buffer.versionId <= V_1_8_9) buffer.readBoolean() else true // TODO: upper version (1.8) is probably worng. it changed between 1.7.10..1.8
|
||||||
var entityId: Int? = if ((buffer.versionId >= V_19W02A && containerType.identifier == DefaultInventoryTypes.HORSE) || buffer.versionId < V_14W03B) {
|
var entityId: Int? = if ((buffer.versionId >= V_19W02A && containerType.identifier == DefaultInventoryTypes.HORSE) || buffer.versionId < V_14W03B) {
|
||||||
|
@ -37,7 +37,7 @@ class CreateObjectiveS2CP(
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
if (buffer.versionId >= ProtocolVersions.V_14W04A) { // ToDo
|
if (buffer.versionId >= ProtocolVersions.V_14W04A) { // ToDo
|
||||||
this._displayName = buffer.readChatComponent()
|
this._displayName = buffer.readNbtChatComponent()
|
||||||
}
|
}
|
||||||
if (buffer.versionId >= ProtocolVersions.V_14W08A) {
|
if (buffer.versionId >= ProtocolVersions.V_14W08A) {
|
||||||
when {
|
when {
|
||||||
|
@ -24,7 +24,7 @@ object ObjectiveS2CF : PlayPacketFactory {
|
|||||||
override fun create(buffer: PlayInByteBuffer): ObjectiveS2CP {
|
override fun create(buffer: PlayInByteBuffer): ObjectiveS2CP {
|
||||||
val objective = buffer.readString()
|
val objective = buffer.readString()
|
||||||
val displayName = if (buffer.versionId < ProtocolVersions.V_14W04A) { // ToDo
|
val displayName = if (buffer.versionId < ProtocolVersions.V_14W04A) { // ToDo
|
||||||
buffer.readChatComponent()
|
buffer.readNbtChatComponent()
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ class UpdateObjectiveS2CP(
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
if (buffer.versionId >= ProtocolVersions.V_14W04A) { // ToDo
|
if (buffer.versionId >= ProtocolVersions.V_14W04A) { // ToDo
|
||||||
this._displayName = buffer.readChatComponent()
|
this._displayName = buffer.readNbtChatComponent()
|
||||||
}
|
}
|
||||||
if (buffer.versionId >= ProtocolVersions.V_14W08A) {
|
if (buffer.versionId >= ProtocolVersions.V_14W08A) {
|
||||||
when {
|
when {
|
||||||
|
@ -33,7 +33,7 @@ class CreateTeamS2CP(
|
|||||||
val name: String,
|
val name: String,
|
||||||
buffer: PlayInByteBuffer,
|
buffer: PlayInByteBuffer,
|
||||||
) : TeamsS2CP {
|
) : TeamsS2CP {
|
||||||
val displayName = buffer.readChatComponent()
|
val displayName = buffer.readNbtChatComponent()
|
||||||
lateinit var prefix: ChatComponent
|
lateinit var prefix: ChatComponent
|
||||||
private set
|
private set
|
||||||
lateinit var suffix: ChatComponent
|
lateinit var suffix: ChatComponent
|
||||||
@ -53,8 +53,8 @@ class CreateTeamS2CP(
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
if (buffer.versionId < ProtocolVersions.V_18W01A) {
|
if (buffer.versionId < ProtocolVersions.V_18W01A) {
|
||||||
this.prefix = buffer.readChatComponent()
|
this.prefix = buffer.readNbtChatComponent()
|
||||||
this.suffix = buffer.readChatComponent()
|
this.suffix = buffer.readNbtChatComponent()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buffer.versionId < ProtocolVersions.V_16W06A) { // ToDo
|
if (buffer.versionId < ProtocolVersions.V_16W06A) { // ToDo
|
||||||
@ -79,8 +79,8 @@ class CreateTeamS2CP(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (buffer.versionId >= ProtocolVersions.V_18W20A) {
|
if (buffer.versionId >= ProtocolVersions.V_18W20A) {
|
||||||
prefix = buffer.readChatComponent()
|
prefix = buffer.readNbtChatComponent()
|
||||||
suffix = buffer.readChatComponent()
|
suffix = buffer.readNbtChatComponent()
|
||||||
}
|
}
|
||||||
|
|
||||||
members = buffer.readArray(
|
members = buffer.readArray(
|
||||||
|
@ -21,8 +21,8 @@ import de.bixilon.minosoft.util.logging.LogLevels
|
|||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
|
|
||||||
class TabListTextS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
class TabListTextS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
||||||
val header: ChatComponent = buffer.readChatComponent()
|
val header: ChatComponent = buffer.readNbtChatComponent()
|
||||||
val footer: ChatComponent = buffer.readChatComponent()
|
val footer: ChatComponent = buffer.readNbtChatComponent()
|
||||||
|
|
||||||
override fun handle(connection: PlayConnection) {
|
override fun handle(connection: PlayConnection) {
|
||||||
connection.tabList.header = header
|
connection.tabList.header = header
|
||||||
|
@ -23,7 +23,7 @@ import de.bixilon.minosoft.util.logging.LogLevels
|
|||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
|
|
||||||
class HotbarTextS2CP(buffer: PlayInByteBuffer) : TitleS2CP {
|
class HotbarTextS2CP(buffer: PlayInByteBuffer) : TitleS2CP {
|
||||||
val text = buffer.readChatComponent()
|
val text = buffer.readNbtChatComponent()
|
||||||
|
|
||||||
override fun log(reducedLog: Boolean) {
|
override fun log(reducedLog: Boolean) {
|
||||||
Log.log(LogMessageType.NETWORK_IN, level = LogLevels.VERBOSE) { "Hotbar text (text=$text)" }
|
Log.log(LogMessageType.NETWORK_IN, level = LogLevels.VERBOSE) { "Hotbar text (text=$text)" }
|
||||||
|
@ -21,7 +21,7 @@ import de.bixilon.minosoft.util.logging.LogLevels
|
|||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
|
|
||||||
class SubtitleS2CP(buffer: PlayInByteBuffer) : TitleS2CP {
|
class SubtitleS2CP(buffer: PlayInByteBuffer) : TitleS2CP {
|
||||||
val text = buffer.readChatComponent()
|
val text = buffer.readNbtChatComponent()
|
||||||
|
|
||||||
override fun handle(connection: PlayConnection) {
|
override fun handle(connection: PlayConnection) {
|
||||||
connection.events.fire(TitleSubtitleSetEvent(connection, this))
|
connection.events.fire(TitleSubtitleSetEvent(connection, this))
|
||||||
|
@ -21,7 +21,7 @@ import de.bixilon.minosoft.util.logging.LogLevels
|
|||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
|
|
||||||
class TitleTextS2CP(buffer: PlayInByteBuffer) : TitleS2CP {
|
class TitleTextS2CP(buffer: PlayInByteBuffer) : TitleS2CP {
|
||||||
val text = buffer.readChatComponent()
|
val text = buffer.readNbtChatComponent()
|
||||||
|
|
||||||
override fun handle(connection: PlayConnection) {
|
override fun handle(connection: PlayConnection) {
|
||||||
connection.events.fire(TitleSetEvent(connection, this))
|
connection.events.fire(TitleSetEvent(connection, this))
|
||||||
|
@ -14,6 +14,7 @@ package de.bixilon.minosoft.protocol.protocol
|
|||||||
|
|
||||||
@Suppress("UNUSED")
|
@Suppress("UNUSED")
|
||||||
object ProtocolVersions {
|
object ProtocolVersions {
|
||||||
|
const val V_23W40A = 916
|
||||||
const val V_1_20_2 = 915
|
const val V_1_20_2 = 915
|
||||||
const val V_1_20_2_RC2 = 914
|
const val V_1_20_2_RC2 = 914
|
||||||
const val V_1_20_2_RC1 = 913
|
const val V_1_20_2_RC1 = 913
|
||||||
|
@ -15,9 +15,10 @@ package de.bixilon.minosoft.protocol.protocol
|
|||||||
|
|
||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_13W41B
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_13W41B
|
||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_20_2
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_20_2
|
||||||
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_23W40A
|
||||||
|
|
||||||
object VersionSupport {
|
object VersionSupport {
|
||||||
const val MINIMUM_VERSION = V_13W41B
|
const val MINIMUM_VERSION = V_13W41B
|
||||||
const val LATEST_VERSION = V_1_20_2
|
const val LATEST_VERSION = V_23W40A
|
||||||
const val LATEST_RELEASE = V_1_20_2
|
const val LATEST_RELEASE = V_1_20_2
|
||||||
}
|
}
|
||||||
|
@ -107,6 +107,14 @@ class PlayInByteBuffer : InByteBuffer {
|
|||||||
return ChatComponent.of(string, connection.language, null, restricted = true)
|
return ChatComponent.of(string, connection.language, null, restricted = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun readNbtChatComponent(): ChatComponent {
|
||||||
|
if (versionId < ProtocolVersions.V_23W40A) {
|
||||||
|
return readChatComponent()
|
||||||
|
}
|
||||||
|
val nbt = readNBT()
|
||||||
|
return ChatComponent.of(nbt, connection.language, null, restricted = true)
|
||||||
|
}
|
||||||
|
|
||||||
fun readParticleData(): ParticleData {
|
fun readParticleData(): ParticleData {
|
||||||
val type = connection.registries.particleType[readVarInt()]
|
val type = connection.registries.particleType[readVarInt()]
|
||||||
return readParticleData(type)
|
return readParticleData(type)
|
||||||
@ -333,8 +341,8 @@ class PlayInByteBuffer : InByteBuffer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun readChatMessageParameters(parameters: MutableMap<ChatParameter, ChatComponent>) {
|
fun readChatMessageParameters(parameters: MutableMap<ChatParameter, ChatComponent>) {
|
||||||
parameters[ChatParameter.SENDER] = readChatComponent()
|
parameters[ChatParameter.SENDER] = readNbtChatComponent()
|
||||||
readOptional { readChatComponent() }?.let { parameters[ChatParameter.TARGET] = it }
|
readOptional { readNbtChatComponent() }?.let { parameters[ChatParameter.TARGET] = it }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun readSoundPitch(): Float {
|
fun readSoundPitch(): Float {
|
||||||
|
File diff suppressed because one or more lines are too long
@ -627,6 +627,50 @@
|
|||||||
"minecraft:limited_crafting": {
|
"minecraft:limited_crafting": {
|
||||||
"id": 12
|
"id": 12
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"916": {
|
||||||
|
"minecraft:bed_break": {
|
||||||
|
"id": 0
|
||||||
|
},
|
||||||
|
"minecraft:rain_start": {
|
||||||
|
"id": 1
|
||||||
|
},
|
||||||
|
"minecraft:rain_stop": {
|
||||||
|
"id": 2
|
||||||
|
},
|
||||||
|
"minecraft:gamemode_change": {
|
||||||
|
"id": 3
|
||||||
|
},
|
||||||
|
"minecraft:win_game": {
|
||||||
|
"id": 4
|
||||||
|
},
|
||||||
|
"minecraft:hide_demo_messages": {
|
||||||
|
"id": 5
|
||||||
|
},
|
||||||
|
"minecraft:arrow_player_hit": {
|
||||||
|
"id": 6
|
||||||
|
},
|
||||||
|
"minecraft:rain_gradient_set": {
|
||||||
|
"id": 7
|
||||||
|
},
|
||||||
|
"minecraft:thunder_gradient_set": {
|
||||||
|
"id": 8
|
||||||
|
},
|
||||||
|
"minecraft:pufferfish_sting": {
|
||||||
|
"id": 9
|
||||||
|
},
|
||||||
|
"minecraft:elder_guardian_effect": {
|
||||||
|
"id": 10
|
||||||
|
},
|
||||||
|
"minecraft:immediate_respawn": {
|
||||||
|
"id": 11
|
||||||
|
},
|
||||||
|
"minecraft:limited_crafting": {
|
||||||
|
"id": 12
|
||||||
|
},
|
||||||
|
"minecraft:receive_chunks": {
|
||||||
|
"id": 13
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"minecraft:world_events": {
|
"minecraft:world_events": {
|
||||||
|
@ -1,4 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"916": {
|
||||||
|
"name": "23w40a",
|
||||||
|
"protocol_id": 1073741978,
|
||||||
|
"packets": 910
|
||||||
|
},
|
||||||
"915": {
|
"915": {
|
||||||
"name": "1.20.2",
|
"name": "1.20.2",
|
||||||
"protocol_id": 764,
|
"protocol_id": 764,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user