From 20c2d11bde644baa96b184440b02c6ce3edc85a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=92=9F=E8=92=BB?= Date: Fri, 20 Jun 2025 10:37:08 +0800 Subject: [PATCH] configuration state --- codec/component/codecs.go | 176 +++---- .../configuration/client/clear_dialog.go | 17 + codec/packet/configuration/client/codecs.go | 432 ++++++++++++++++++ .../configuration/client/cookie_request.go | 18 + .../configuration/client/custom_payload.go | 19 + .../client/custom_report_details.go | 20 + .../packet/configuration/client/disconnect.go | 21 + .../client/finish_configuration.go | 17 + .../packet/configuration/client/keep_alive.go | 18 + codec/packet/configuration/client/packet.go | 19 + codec/packet/configuration/client/ping.go | 18 + .../configuration/client/registry_data.go | 30 ++ .../packet/configuration/client/reset_chat.go | 17 + .../configuration/client/resource_pack_pop.go | 20 + .../client/resource_pack_push.go | 20 + .../client/select_known_packs.go | 25 + .../configuration/client/server_links.go | 20 + .../configuration/client/show_dialog.go | 20 + .../configuration/client/store_cookie.go | 19 + codec/packet/configuration/client/transfer.go | 19 + .../client/update_enabled_features.go | 18 + .../configuration/client/update_tags.go | 20 + .../server/client_information.go | 20 + codec/packet/configuration/server/codecs.go | 103 +++++ .../configuration/server/cookie_response.go | 20 + .../server/custom_click_action.go | 22 + .../configuration/server/custom_payload.go | 20 + .../server/finish_configuration.go | 17 + .../packet/configuration/server/keep_alive.go | 18 + codec/packet/configuration/server/packet.go | 19 + codec/packet/configuration/server/pong.go | 18 + .../configuration/server/resource_pack.go | 20 + .../server/select_known_packs.go | 21 + codec/packet/game/client/codecs.go | 351 ++++++++------ codec/packet/game/client/server_links.go | 2 + 35 files changed, 1425 insertions(+), 229 deletions(-) create mode 100644 codec/packet/configuration/client/clear_dialog.go create mode 100644 codec/packet/configuration/client/codecs.go create mode 100644 codec/packet/configuration/client/cookie_request.go create mode 100644 codec/packet/configuration/client/custom_payload.go create mode 100644 codec/packet/configuration/client/custom_report_details.go create mode 100644 codec/packet/configuration/client/disconnect.go create mode 100644 codec/packet/configuration/client/finish_configuration.go create mode 100644 codec/packet/configuration/client/keep_alive.go create mode 100644 codec/packet/configuration/client/packet.go create mode 100644 codec/packet/configuration/client/ping.go create mode 100644 codec/packet/configuration/client/registry_data.go create mode 100644 codec/packet/configuration/client/reset_chat.go create mode 100644 codec/packet/configuration/client/resource_pack_pop.go create mode 100644 codec/packet/configuration/client/resource_pack_push.go create mode 100644 codec/packet/configuration/client/select_known_packs.go create mode 100644 codec/packet/configuration/client/server_links.go create mode 100644 codec/packet/configuration/client/show_dialog.go create mode 100644 codec/packet/configuration/client/store_cookie.go create mode 100644 codec/packet/configuration/client/transfer.go create mode 100644 codec/packet/configuration/client/update_enabled_features.go create mode 100644 codec/packet/configuration/client/update_tags.go create mode 100644 codec/packet/configuration/server/client_information.go create mode 100644 codec/packet/configuration/server/codecs.go create mode 100644 codec/packet/configuration/server/cookie_response.go create mode 100644 codec/packet/configuration/server/custom_click_action.go create mode 100644 codec/packet/configuration/server/custom_payload.go create mode 100644 codec/packet/configuration/server/finish_configuration.go create mode 100644 codec/packet/configuration/server/keep_alive.go create mode 100644 codec/packet/configuration/server/packet.go create mode 100644 codec/packet/configuration/server/pong.go create mode 100644 codec/packet/configuration/server/resource_pack.go create mode 100644 codec/packet/configuration/server/select_known_packs.go diff --git a/codec/component/codecs.go b/codec/component/codecs.go index 1496c27..7280d5f 100644 --- a/codec/component/codecs.go +++ b/codec/component/codecs.go @@ -3602,6 +3602,94 @@ func (c WrittenBookPage) WriteTo(w io.Writer) (n int64, err error) { return n, err } +// Int32VarIntArray a utility type for encoding/decoding packet.Int -> int32[packet.VarInt] slice. +type Int32VarIntArray []int32 + +func (a Int32VarIntArray) WriteTo(w io.Writer) (n int64, err error) { + size := len(a) + if nn, err := packet.VarInt(size).WriteTo(w); err != nil { + return n, err + } else { + n += nn + } + for i := 0; i < size; i++ { + nn, err := packet.Int(a[i]).WriteTo(w) + n += nn + if err != nil { + return n, err + } + } + return n, nil +} + +func (a *Int32VarIntArray) ReadFrom(r io.Reader) (n int64, err error) { + var size packet.VarInt + if nn, err := size.ReadFrom(r); err != nil { + return nn, err + } else { + n += nn + } + if size < 0 { + return n, errors.New("array length less than zero") + } + + for i := 0; i < int(size); i++ { + var elem packet.Int + if nn, err := elem.ReadFrom(r); err != nil { + return n, err + } else { + n += nn + } + *a = append(*a, int32(elem)) + } + + return n, err +} + +// Int32PrefixedArrayVarIntArray a utility type for encoding/decoding packet.Int -> int32[packet.VarInt] slice. +type Int32PrefixedArrayVarIntArray []int32 + +func (a Int32PrefixedArrayVarIntArray) WriteTo(w io.Writer) (n int64, err error) { + size := len(a) + if nn, err := packet.VarInt(size).WriteTo(w); err != nil { + return n, err + } else { + n += nn + } + for i := 0; i < size; i++ { + nn, err := packet.Int(a[i]).WriteTo(w) + n += nn + if err != nil { + return n, err + } + } + return n, nil +} + +func (a *Int32PrefixedArrayVarIntArray) ReadFrom(r io.Reader) (n int64, err error) { + var size packet.VarInt + if nn, err := size.ReadFrom(r); err != nil { + return nn, err + } else { + n += nn + } + if size < 0 { + return n, errors.New("array length less than zero") + } + + for i := 0; i < int(size); i++ { + var elem packet.Int + if nn, err := elem.ReadFrom(r); err != nil { + return n, err + } else { + n += nn + } + *a = append(*a, int32(elem)) + } + + return n, err +} + // BoolVarIntArray a utility type for encoding/decoding packet.Boolean -> bool[packet.VarInt] slice. type BoolVarIntArray []bool @@ -3734,94 +3822,6 @@ func (a *Int32VarIntVarIntArray) ReadFrom(r io.Reader) (n int64, err error) { return n, err } -// Int32VarIntArray a utility type for encoding/decoding packet.Int -> int32[packet.VarInt] slice. -type Int32VarIntArray []int32 - -func (a Int32VarIntArray) WriteTo(w io.Writer) (n int64, err error) { - size := len(a) - if nn, err := packet.VarInt(size).WriteTo(w); err != nil { - return n, err - } else { - n += nn - } - for i := 0; i < size; i++ { - nn, err := packet.Int(a[i]).WriteTo(w) - n += nn - if err != nil { - return n, err - } - } - return n, nil -} - -func (a *Int32VarIntArray) ReadFrom(r io.Reader) (n int64, err error) { - var size packet.VarInt - if nn, err := size.ReadFrom(r); err != nil { - return nn, err - } else { - n += nn - } - if size < 0 { - return n, errors.New("array length less than zero") - } - - for i := 0; i < int(size); i++ { - var elem packet.Int - if nn, err := elem.ReadFrom(r); err != nil { - return n, err - } else { - n += nn - } - *a = append(*a, int32(elem)) - } - - return n, err -} - -// Int32PrefixedArrayVarIntArray a utility type for encoding/decoding packet.Int -> int32[packet.VarInt] slice. -type Int32PrefixedArrayVarIntArray []int32 - -func (a Int32PrefixedArrayVarIntArray) WriteTo(w io.Writer) (n int64, err error) { - size := len(a) - if nn, err := packet.VarInt(size).WriteTo(w); err != nil { - return n, err - } else { - n += nn - } - for i := 0; i < size; i++ { - nn, err := packet.Int(a[i]).WriteTo(w) - n += nn - if err != nil { - return n, err - } - } - return n, nil -} - -func (a *Int32PrefixedArrayVarIntArray) ReadFrom(r io.Reader) (n int64, err error) { - var size packet.VarInt - if nn, err := size.ReadFrom(r); err != nil { - return nn, err - } else { - n += nn - } - if size < 0 { - return n, errors.New("array length less than zero") - } - - for i := 0; i < int(size); i++ { - var elem packet.Int - if nn, err := elem.ReadFrom(r); err != nil { - return n, err - } else { - n += nn - } - *a = append(*a, int32(elem)) - } - - return n, err -} - // Float32VarIntArray a utility type for encoding/decoding packet.Float -> float32[packet.VarInt] slice. type Float32VarIntArray []float32 diff --git a/codec/packet/configuration/client/clear_dialog.go b/codec/packet/configuration/client/clear_dialog.go new file mode 100644 index 0000000..5a307ec --- /dev/null +++ b/codec/packet/configuration/client/clear_dialog.go @@ -0,0 +1,17 @@ +package client + +import "github.com/Tnze/go-mc/data/packetid" + +//codec:gen +type ConfigClearDialog struct { +} + +func (ConfigClearDialog) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigClearDialog +} + +func init() { + registerPacket(packetid.ClientboundConfigClearDialog, func() ClientboundPacket { + return &ConfigClearDialog{} + }) +} diff --git a/codec/packet/configuration/client/codecs.go b/codec/packet/configuration/client/codecs.go new file mode 100644 index 0000000..0738e6f --- /dev/null +++ b/codec/packet/configuration/client/codecs.go @@ -0,0 +1,432 @@ +// Code generated by github.com/go-mc/packetizer; DO NOT EDIT. + +package client + +import ( + "errors" + "io" + + "github.com/Tnze/go-mc/net/packet" +) + +func (c *ConfigClearDialog) ReadFrom(r io.Reader) (n int64, err error) { + return 0, nil +} + +func (c ConfigClearDialog) WriteTo(w io.Writer) (n int64, err error) { + return 0, nil +} +func (c *ConfigCookieRequest) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (*packet.Identifier)(&c.Key).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ConfigCookieRequest) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (*packet.Identifier)(&c.Key).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} +func (c *ConfigCustomPayload) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (*packet.Identifier)(&c.Channel).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + temp, err = (*packet.ByteArray)(&c.Data).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ConfigCustomPayload) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (*packet.Identifier)(&c.Channel).WriteTo(w) + n += temp + if err != nil { + return n, err + } + temp, err = (*packet.ByteArray)(&c.Data).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} +func (c *ConfigDisconnect) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (&c.Reason).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ConfigDisconnect) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (&c.Reason).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} +func (c *ConfigFinishConfiguration) ReadFrom(r io.Reader) (n int64, err error) { + return 0, nil +} + +func (c ConfigFinishConfiguration) WriteTo(w io.Writer) (n int64, err error) { + return 0, nil +} +func (c *ConfigKeepAlive) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (*packet.Long)(&c.ID).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ConfigKeepAlive) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (*packet.Long)(&c.ID).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} +func (c *ConfigPing) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (*packet.Int)(&c.ID).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ConfigPing) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (*packet.Int)(&c.ID).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} +func (c *RegistryData) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (*packet.Identifier)(&c.Entry).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + temp, err = (*packet.Boolean)(&c.HasData).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + if c.HasData { + temp, err = packet.NBT(&c.Data).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + } + return n, err +} + +func (c RegistryData) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (*packet.Identifier)(&c.Entry).WriteTo(w) + n += temp + if err != nil { + return n, err + } + temp, err = (*packet.Boolean)(&c.HasData).WriteTo(w) + n += temp + if err != nil { + return n, err + } + if c.HasData { + temp, err = packet.NBT(&c.Data).WriteTo(w) + n += temp + if err != nil { + return n, err + } + } + return n, err +} +func (c *ConfigRegistryData) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (*packet.Identifier)(&c.RegistryID).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + temp, err = packet.Array(&c.Data).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ConfigRegistryData) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (*packet.Identifier)(&c.RegistryID).WriteTo(w) + n += temp + if err != nil { + return n, err + } + temp, err = packet.Array(&c.Data).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} +func (c *ConfigResetChat) ReadFrom(r io.Reader) (n int64, err error) { + return 0, nil +} + +func (c ConfigResetChat) WriteTo(w io.Writer) (n int64, err error) { + return 0, nil +} +func (c *KnownPack) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (*packet.String)(&c.Namespace).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + temp, err = (*packet.String)(&c.ID).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + temp, err = (*packet.String)(&c.Version).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c KnownPack) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (*packet.String)(&c.Namespace).WriteTo(w) + n += temp + if err != nil { + return n, err + } + temp, err = (*packet.String)(&c.ID).WriteTo(w) + n += temp + if err != nil { + return n, err + } + temp, err = (*packet.String)(&c.Version).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} +func (c *ConfigSelectKnownPacks) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = packet.Array(&c.KnownPacks).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ConfigSelectKnownPacks) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = packet.Array(&c.KnownPacks).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} +func (c *ConfigStoreCookie) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (*packet.Identifier)(&c.Key).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + temp, err = (*Int8VarIntArray)(&c.Payload).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ConfigStoreCookie) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (*packet.Identifier)(&c.Key).WriteTo(w) + n += temp + if err != nil { + return n, err + } + temp, err = (*Int8VarIntArray)(&c.Payload).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} +func (c *ConfigTransfer) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (*packet.String)(&c.Host).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + temp, err = (*packet.VarInt)(&c.Port).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ConfigTransfer) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (*packet.String)(&c.Host).WriteTo(w) + n += temp + if err != nil { + return n, err + } + temp, err = (*packet.VarInt)(&c.Port).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} +func (c *ConfigUpdateEnabledFeatures) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (*StringIdentifierVarIntArray)(&c.Features).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ConfigUpdateEnabledFeatures) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (*StringIdentifierVarIntArray)(&c.Features).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} + +// Int8VarIntArray a utility type for encoding/decoding packet.Byte -> int8[packet.VarInt] slice. +type Int8VarIntArray []int8 + +func (a Int8VarIntArray) WriteTo(w io.Writer) (n int64, err error) { + size := len(a) + if nn, err := packet.VarInt(size).WriteTo(w); err != nil { + return n, err + } else { + n += nn + } + for i := 0; i < size; i++ { + nn, err := packet.Byte(a[i]).WriteTo(w) + n += nn + if err != nil { + return n, err + } + } + return n, nil +} + +func (a *Int8VarIntArray) ReadFrom(r io.Reader) (n int64, err error) { + var size packet.VarInt + if nn, err := size.ReadFrom(r); err != nil { + return nn, err + } else { + n += nn + } + if size < 0 { + return n, errors.New("array length less than zero") + } + + for i := 0; i < int(size); i++ { + var elem packet.Byte + if nn, err := elem.ReadFrom(r); err != nil { + return n, err + } else { + n += nn + } + *a = append(*a, int8(elem)) + } + + return n, err +} + +// StringIdentifierVarIntArray a utility type for encoding/decoding packet.Identifier -> string[packet.VarInt] slice. +type StringIdentifierVarIntArray []string + +func (a StringIdentifierVarIntArray) WriteTo(w io.Writer) (n int64, err error) { + size := len(a) + if nn, err := packet.VarInt(size).WriteTo(w); err != nil { + return n, err + } else { + n += nn + } + for i := 0; i < size; i++ { + nn, err := packet.Identifier(a[i]).WriteTo(w) + n += nn + if err != nil { + return n, err + } + } + return n, nil +} + +func (a *StringIdentifierVarIntArray) ReadFrom(r io.Reader) (n int64, err error) { + var size packet.VarInt + if nn, err := size.ReadFrom(r); err != nil { + return nn, err + } else { + n += nn + } + if size < 0 { + return n, errors.New("array length less than zero") + } + + for i := 0; i < int(size); i++ { + var elem packet.Identifier + if nn, err := elem.ReadFrom(r); err != nil { + return n, err + } else { + n += nn + } + *a = append(*a, string(elem)) + } + + return n, err +} diff --git a/codec/packet/configuration/client/cookie_request.go b/codec/packet/configuration/client/cookie_request.go new file mode 100644 index 0000000..72e934a --- /dev/null +++ b/codec/packet/configuration/client/cookie_request.go @@ -0,0 +1,18 @@ +package client + +import "github.com/Tnze/go-mc/data/packetid" + +//codec:gen +type ConfigCookieRequest struct { + Key string `mc:"Identifier"` +} + +func (ConfigCookieRequest) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigCookieRequest +} + +func init() { + registerPacket(packetid.ClientboundConfigCookieRequest, func() ClientboundPacket { + return &ConfigCookieRequest{} + }) +} diff --git a/codec/packet/configuration/client/custom_payload.go b/codec/packet/configuration/client/custom_payload.go new file mode 100644 index 0000000..8fd76ac --- /dev/null +++ b/codec/packet/configuration/client/custom_payload.go @@ -0,0 +1,19 @@ +package client + +import "github.com/Tnze/go-mc/data/packetid" + +//codec:gen +type ConfigCustomPayload struct { + Channel string `mc:"Identifier"` + Data []byte `mc:"ByteArray"` +} + +func (ConfigCustomPayload) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigCustomPayload +} + +func init() { + registerPacket(packetid.ClientboundConfigCustomPayload, func() ClientboundPacket { + return &ConfigCustomPayload{} + }) +} diff --git a/codec/packet/configuration/client/custom_report_details.go b/codec/packet/configuration/client/custom_report_details.go new file mode 100644 index 0000000..a7c702b --- /dev/null +++ b/codec/packet/configuration/client/custom_report_details.go @@ -0,0 +1,20 @@ +package client + +import ( + "git.konjactw.dev/patyhank/minego/codec/packet/game/client" + "github.com/Tnze/go-mc/data/packetid" +) + +type ConfigCustomReportDetails struct { + client.CustomReportDetails +} + +func (ConfigCustomReportDetails) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigCustomReportDetails +} + +func init() { + registerPacket(packetid.ClientboundConfigCustomReportDetails, func() ClientboundPacket { + return &ConfigCustomReportDetails{} + }) +} diff --git a/codec/packet/configuration/client/disconnect.go b/codec/packet/configuration/client/disconnect.go new file mode 100644 index 0000000..ba3417e --- /dev/null +++ b/codec/packet/configuration/client/disconnect.go @@ -0,0 +1,21 @@ +package client + +import ( + "github.com/Tnze/go-mc/chat" + "github.com/Tnze/go-mc/data/packetid" +) + +//codec:gen +type ConfigDisconnect struct { + Reason chat.Message +} + +func (ConfigDisconnect) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigDisconnect +} + +func init() { + registerPacket(packetid.ClientboundConfigDisconnect, func() ClientboundPacket { + return &ConfigDisconnect{} + }) +} diff --git a/codec/packet/configuration/client/finish_configuration.go b/codec/packet/configuration/client/finish_configuration.go new file mode 100644 index 0000000..6526ca3 --- /dev/null +++ b/codec/packet/configuration/client/finish_configuration.go @@ -0,0 +1,17 @@ +package client + +import "github.com/Tnze/go-mc/data/packetid" + +//codec:gen +type ConfigFinishConfiguration struct { +} + +func (ConfigFinishConfiguration) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigFinishConfiguration +} + +func init() { + registerPacket(packetid.ClientboundConfigFinishConfiguration, func() ClientboundPacket { + return &ConfigFinishConfiguration{} + }) +} diff --git a/codec/packet/configuration/client/keep_alive.go b/codec/packet/configuration/client/keep_alive.go new file mode 100644 index 0000000..7b9a482 --- /dev/null +++ b/codec/packet/configuration/client/keep_alive.go @@ -0,0 +1,18 @@ +package client + +import "github.com/Tnze/go-mc/data/packetid" + +//codec:gen +type ConfigKeepAlive struct { + ID int64 +} + +func (ConfigKeepAlive) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigKeepAlive +} + +func init() { + registerPacket(packetid.ClientboundConfigKeepAlive, func() ClientboundPacket { + return &ConfigKeepAlive{} + }) +} diff --git a/codec/packet/configuration/client/packet.go b/codec/packet/configuration/client/packet.go new file mode 100644 index 0000000..cd05172 --- /dev/null +++ b/codec/packet/configuration/client/packet.go @@ -0,0 +1,19 @@ +package client + +import ( + "github.com/Tnze/go-mc/data/packetid" + pk "github.com/Tnze/go-mc/net/packet" +) + +type ClientboundPacket interface { + pk.Field + PacketID() packetid.ClientboundPacketID +} + +type packetCreator func() ClientboundPacket + +var packetRegistry = make(map[packetid.ClientboundPacketID]packetCreator) + +func registerPacket(id packetid.ClientboundPacketID, creator packetCreator) { + packetRegistry[id] = creator +} diff --git a/codec/packet/configuration/client/ping.go b/codec/packet/configuration/client/ping.go new file mode 100644 index 0000000..608f1f5 --- /dev/null +++ b/codec/packet/configuration/client/ping.go @@ -0,0 +1,18 @@ +package client + +import "github.com/Tnze/go-mc/data/packetid" + +//codec:gen +type ConfigPing struct { + ID int32 +} + +func (ConfigPing) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigPing +} + +func init() { + registerPacket(packetid.ClientboundConfigPing, func() ClientboundPacket { + return &ConfigPing{} + }) +} diff --git a/codec/packet/configuration/client/registry_data.go b/codec/packet/configuration/client/registry_data.go new file mode 100644 index 0000000..6fa2036 --- /dev/null +++ b/codec/packet/configuration/client/registry_data.go @@ -0,0 +1,30 @@ +package client + +import ( + "github.com/Tnze/go-mc/data/packetid" + "github.com/Tnze/go-mc/nbt" +) + +//codec:gen +type RegistryData struct { + Entry string `mc:"Identifier"` + HasData bool + //opt:optional:HasData + Data nbt.RawMessage `mc:"NBT"` +} + +//codec:gen +type ConfigRegistryData struct { + RegistryID string `mc:"Identifier"` + Data []RegistryData +} + +func (ConfigRegistryData) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigRegistryData +} + +func init() { + registerPacket(packetid.ClientboundConfigRegistryData, func() ClientboundPacket { + return &ConfigRegistryData{} + }) +} diff --git a/codec/packet/configuration/client/reset_chat.go b/codec/packet/configuration/client/reset_chat.go new file mode 100644 index 0000000..8d0bb49 --- /dev/null +++ b/codec/packet/configuration/client/reset_chat.go @@ -0,0 +1,17 @@ +package client + +import "github.com/Tnze/go-mc/data/packetid" + +//codec:gen +type ConfigResetChat struct { +} + +func (ConfigResetChat) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigResetChat +} + +func init() { + registerPacket(packetid.ClientboundConfigResetChat, func() ClientboundPacket { + return &ConfigResetChat{} + }) +} diff --git a/codec/packet/configuration/client/resource_pack_pop.go b/codec/packet/configuration/client/resource_pack_pop.go new file mode 100644 index 0000000..93e13fe --- /dev/null +++ b/codec/packet/configuration/client/resource_pack_pop.go @@ -0,0 +1,20 @@ +package client + +import ( + "git.konjactw.dev/patyhank/minego/codec/packet/game/client" + "github.com/Tnze/go-mc/data/packetid" +) + +type ConfigResourcePackPop struct { + client.RemoveResourcePack +} + +func (ConfigResourcePackPop) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigResourcePackPop +} + +func init() { + registerPacket(packetid.ClientboundConfigResourcePackPop, func() ClientboundPacket { + return &ConfigResourcePackPop{} + }) +} diff --git a/codec/packet/configuration/client/resource_pack_push.go b/codec/packet/configuration/client/resource_pack_push.go new file mode 100644 index 0000000..732a7cb --- /dev/null +++ b/codec/packet/configuration/client/resource_pack_push.go @@ -0,0 +1,20 @@ +package client + +import ( + "git.konjactw.dev/patyhank/minego/codec/packet/game/client" + "github.com/Tnze/go-mc/data/packetid" +) + +type ConfigResourcePackPush struct { + client.AddResourcePack +} + +func (ConfigResourcePackPush) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigResourcePackPush +} + +func init() { + registerPacket(packetid.ClientboundConfigResourcePackPush, func() ClientboundPacket { + return &ConfigResourcePackPush{} + }) +} diff --git a/codec/packet/configuration/client/select_known_packs.go b/codec/packet/configuration/client/select_known_packs.go new file mode 100644 index 0000000..85673a8 --- /dev/null +++ b/codec/packet/configuration/client/select_known_packs.go @@ -0,0 +1,25 @@ +package client + +import "github.com/Tnze/go-mc/data/packetid" + +//codec:gen +type KnownPack struct { + Namespace string + ID string + Version string +} + +//codec:gen +type ConfigSelectKnownPacks struct { + KnownPacks []KnownPack +} + +func (ConfigSelectKnownPacks) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigSelectKnownPacks +} + +func init() { + registerPacket(packetid.ClientboundConfigSelectKnownPacks, func() ClientboundPacket { + return &ConfigSelectKnownPacks{} + }) +} diff --git a/codec/packet/configuration/client/server_links.go b/codec/packet/configuration/client/server_links.go new file mode 100644 index 0000000..f3f78ea --- /dev/null +++ b/codec/packet/configuration/client/server_links.go @@ -0,0 +1,20 @@ +package client + +import ( + "git.konjactw.dev/patyhank/minego/codec/packet/game/client" + "github.com/Tnze/go-mc/data/packetid" +) + +type ConfigServerLinks struct { + client.ServerLinks +} + +func (ConfigServerLinks) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigServerLinks +} + +func init() { + registerPacket(packetid.ClientboundConfigServerLinks, func() ClientboundPacket { + return &ConfigServerLinks{} + }) +} diff --git a/codec/packet/configuration/client/show_dialog.go b/codec/packet/configuration/client/show_dialog.go new file mode 100644 index 0000000..e816b74 --- /dev/null +++ b/codec/packet/configuration/client/show_dialog.go @@ -0,0 +1,20 @@ +package client + +import ( + "git.konjactw.dev/patyhank/minego/codec/packet/game/client" + "github.com/Tnze/go-mc/data/packetid" +) + +type ConfigShowDialog struct { + client.ShowDialog +} + +func (ConfigShowDialog) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigShowDialog +} + +func init() { + registerPacket(packetid.ClientboundConfigShowDialog, func() ClientboundPacket { + return &ConfigShowDialog{} + }) +} diff --git a/codec/packet/configuration/client/store_cookie.go b/codec/packet/configuration/client/store_cookie.go new file mode 100644 index 0000000..b5253d4 --- /dev/null +++ b/codec/packet/configuration/client/store_cookie.go @@ -0,0 +1,19 @@ +package client + +import "github.com/Tnze/go-mc/data/packetid" + +//codec:gen +type ConfigStoreCookie struct { + Key string `mc:"Identifier"` + Payload []int8 +} + +func (ConfigStoreCookie) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigStoreCookie +} + +func init() { + registerPacket(packetid.ClientboundConfigStoreCookie, func() ClientboundPacket { + return &ConfigStoreCookie{} + }) +} diff --git a/codec/packet/configuration/client/transfer.go b/codec/packet/configuration/client/transfer.go new file mode 100644 index 0000000..715aae1 --- /dev/null +++ b/codec/packet/configuration/client/transfer.go @@ -0,0 +1,19 @@ +package client + +import "github.com/Tnze/go-mc/data/packetid" + +//codec:gen +type ConfigTransfer struct { + Host string + Port int32 `mc:"VarInt"` +} + +func (ConfigTransfer) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigTransfer +} + +func init() { + registerPacket(packetid.ClientboundConfigTransfer, func() ClientboundPacket { + return &ConfigTransfer{} + }) +} diff --git a/codec/packet/configuration/client/update_enabled_features.go b/codec/packet/configuration/client/update_enabled_features.go new file mode 100644 index 0000000..9dc1f9d --- /dev/null +++ b/codec/packet/configuration/client/update_enabled_features.go @@ -0,0 +1,18 @@ +package client + +import "github.com/Tnze/go-mc/data/packetid" + +//codec:gen +type ConfigUpdateEnabledFeatures struct { + Features []string `mc:"Identifier"` +} + +func (ConfigUpdateEnabledFeatures) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigUpdateEnabledFeatures +} + +func init() { + registerPacket(packetid.ClientboundConfigUpdateEnabledFeatures, func() ClientboundPacket { + return &ConfigUpdateEnabledFeatures{} + }) +} diff --git a/codec/packet/configuration/client/update_tags.go b/codec/packet/configuration/client/update_tags.go new file mode 100644 index 0000000..c376145 --- /dev/null +++ b/codec/packet/configuration/client/update_tags.go @@ -0,0 +1,20 @@ +package client + +import ( + "git.konjactw.dev/patyhank/minego/codec/packet/game/client" + "github.com/Tnze/go-mc/data/packetid" +) + +type ConfigUpdateTags struct { + client.UpdateTags +} + +func (ConfigUpdateTags) PacketID() packetid.ClientboundPacketID { + return packetid.ClientboundConfigUpdateTags +} + +func init() { + registerPacket(packetid.ClientboundConfigUpdateTags, func() ClientboundPacket { + return &ConfigUpdateTags{} + }) +} diff --git a/codec/packet/configuration/server/client_information.go b/codec/packet/configuration/server/client_information.go new file mode 100644 index 0000000..e957ce6 --- /dev/null +++ b/codec/packet/configuration/server/client_information.go @@ -0,0 +1,20 @@ +package server + +import ( + "git.konjactw.dev/patyhank/minego/codec/packet/game/server" + "github.com/Tnze/go-mc/data/packetid" +) + +type ConfigClientInformation struct { + server.ClientInformation +} + +func (ConfigClientInformation) PacketID() packetid.ServerboundPacketID { + return packetid.ServerboundConfigClientInformation +} + +func init() { + registerPacket(packetid.ServerboundConfigClientInformation, func() ServerboundPacket { + return &ConfigClientInformation{} + }) +} diff --git a/codec/packet/configuration/server/codecs.go b/codec/packet/configuration/server/codecs.go new file mode 100644 index 0000000..881a434 --- /dev/null +++ b/codec/packet/configuration/server/codecs.go @@ -0,0 +1,103 @@ +// Code generated by github.com/go-mc/packetizer; DO NOT EDIT. + +package server + +import ( + "io" + + "github.com/Tnze/go-mc/net/packet" +) + +func (c *ConfigCustomClickAction) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (*packet.Identifier)(&c.Action).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + temp, err = packet.NBT(&c.Data).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ConfigCustomClickAction) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (*packet.Identifier)(&c.Action).WriteTo(w) + n += temp + if err != nil { + return n, err + } + temp, err = packet.NBT(&c.Data).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} +func (c *ConfigFinishConfiguration) ReadFrom(r io.Reader) (n int64, err error) { + return 0, nil +} + +func (c ConfigFinishConfiguration) WriteTo(w io.Writer) (n int64, err error) { + return 0, nil +} +func (c *ConfigKeepAlive) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (*packet.Long)(&c.ID).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ConfigKeepAlive) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (*packet.Long)(&c.ID).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} +func (c *ConfigPong) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (*packet.Int)(&c.ID).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ConfigPong) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (*packet.Int)(&c.ID).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} +func (c *ConfigSelectKnownPacks) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = packet.Array(&c.Packs).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ConfigSelectKnownPacks) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = packet.Array(&c.Packs).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} diff --git a/codec/packet/configuration/server/cookie_response.go b/codec/packet/configuration/server/cookie_response.go new file mode 100644 index 0000000..9be5661 --- /dev/null +++ b/codec/packet/configuration/server/cookie_response.go @@ -0,0 +1,20 @@ +package server + +import ( + "git.konjactw.dev/patyhank/minego/codec/packet/game/server" + "github.com/Tnze/go-mc/data/packetid" +) + +type ConfigCookieResponse struct { + server.CookieResponse +} + +func (ConfigCookieResponse) PacketID() packetid.ServerboundPacketID { + return packetid.ServerboundConfigCookieResponse +} + +func init() { + registerPacket(packetid.ServerboundConfigCookieResponse, func() ServerboundPacket { + return &ConfigCookieResponse{} + }) +} diff --git a/codec/packet/configuration/server/custom_click_action.go b/codec/packet/configuration/server/custom_click_action.go new file mode 100644 index 0000000..6348510 --- /dev/null +++ b/codec/packet/configuration/server/custom_click_action.go @@ -0,0 +1,22 @@ +package server + +import ( + "github.com/Tnze/go-mc/data/packetid" + "github.com/Tnze/go-mc/nbt" +) + +//codec:gen +type ConfigCustomClickAction struct { + Action string `mc:"Identifier"` + Data nbt.RawMessage `mc:"NBT"` +} + +func (ConfigCustomClickAction) PacketID() packetid.ServerboundPacketID { + return packetid.ServerboundConfigCustomClickAction +} + +func init() { + registerPacket(packetid.ServerboundConfigCustomClickAction, func() ServerboundPacket { + return &ConfigCustomClickAction{} + }) +} diff --git a/codec/packet/configuration/server/custom_payload.go b/codec/packet/configuration/server/custom_payload.go new file mode 100644 index 0000000..8081e98 --- /dev/null +++ b/codec/packet/configuration/server/custom_payload.go @@ -0,0 +1,20 @@ +package server + +import ( + "git.konjactw.dev/patyhank/minego/codec/packet/game/server" + "github.com/Tnze/go-mc/data/packetid" +) + +type ConfigCustomPayload struct { + server.CustomPayload +} + +func (ConfigCustomPayload) PacketID() packetid.ServerboundPacketID { + return packetid.ServerboundConfigCustomPayload +} + +func init() { + registerPacket(packetid.ServerboundConfigCustomPayload, func() ServerboundPacket { + return &ConfigCustomPayload{} + }) +} diff --git a/codec/packet/configuration/server/finish_configuration.go b/codec/packet/configuration/server/finish_configuration.go new file mode 100644 index 0000000..7f0781c --- /dev/null +++ b/codec/packet/configuration/server/finish_configuration.go @@ -0,0 +1,17 @@ +package server + +import "github.com/Tnze/go-mc/data/packetid" + +//codec:gen +type ConfigFinishConfiguration struct { +} + +func (ConfigFinishConfiguration) PacketID() packetid.ServerboundPacketID { + return packetid.ServerboundConfigFinishConfiguration +} + +func init() { + registerPacket(packetid.ServerboundConfigFinishConfiguration, func() ServerboundPacket { + return &ConfigFinishConfiguration{} + }) +} diff --git a/codec/packet/configuration/server/keep_alive.go b/codec/packet/configuration/server/keep_alive.go new file mode 100644 index 0000000..9ffb0f0 --- /dev/null +++ b/codec/packet/configuration/server/keep_alive.go @@ -0,0 +1,18 @@ +package server + +import "github.com/Tnze/go-mc/data/packetid" + +//codec:gen +type ConfigKeepAlive struct { + ID int64 +} + +func (ConfigKeepAlive) PacketID() packetid.ServerboundPacketID { + return packetid.ServerboundConfigKeepAlive +} + +func init() { + registerPacket(packetid.ServerboundConfigKeepAlive, func() ServerboundPacket { + return &ConfigKeepAlive{} + }) +} diff --git a/codec/packet/configuration/server/packet.go b/codec/packet/configuration/server/packet.go new file mode 100644 index 0000000..3966541 --- /dev/null +++ b/codec/packet/configuration/server/packet.go @@ -0,0 +1,19 @@ +package server + +import ( + "github.com/Tnze/go-mc/data/packetid" + pk "github.com/Tnze/go-mc/net/packet" +) + +type ServerboundPacket interface { + pk.Field + PacketID() packetid.ServerboundPacketID +} + +type serverPacketCreator func() ServerboundPacket + +var packetRegistry = make(map[packetid.ServerboundPacketID]serverPacketCreator) + +func registerPacket(id packetid.ServerboundPacketID, creator serverPacketCreator) { + packetRegistry[id] = creator +} diff --git a/codec/packet/configuration/server/pong.go b/codec/packet/configuration/server/pong.go new file mode 100644 index 0000000..b7e9a3f --- /dev/null +++ b/codec/packet/configuration/server/pong.go @@ -0,0 +1,18 @@ +package server + +import "github.com/Tnze/go-mc/data/packetid" + +//codec:gen +type ConfigPong struct { + ID int32 +} + +func (ConfigPong) PacketID() packetid.ServerboundPacketID { + return packetid.ServerboundConfigPong +} + +func init() { + registerPacket(packetid.ServerboundConfigPong, func() ServerboundPacket { + return &ConfigPong{} + }) +} diff --git a/codec/packet/configuration/server/resource_pack.go b/codec/packet/configuration/server/resource_pack.go new file mode 100644 index 0000000..556907f --- /dev/null +++ b/codec/packet/configuration/server/resource_pack.go @@ -0,0 +1,20 @@ +package server + +import ( + "git.konjactw.dev/patyhank/minego/codec/packet/game/server" + "github.com/Tnze/go-mc/data/packetid" +) + +type ConfigResourcePack struct { + server.ResourcePack +} + +func (ConfigResourcePack) PacketID() packetid.ServerboundPacketID { + return packetid.ServerboundConfigResourcePack +} + +func init() { + registerPacket(packetid.ServerboundConfigResourcePack, func() ServerboundPacket { + return &ConfigResourcePack{} + }) +} diff --git a/codec/packet/configuration/server/select_known_packs.go b/codec/packet/configuration/server/select_known_packs.go new file mode 100644 index 0000000..101ed16 --- /dev/null +++ b/codec/packet/configuration/server/select_known_packs.go @@ -0,0 +1,21 @@ +package server + +import ( + "git.konjactw.dev/patyhank/minego/codec/packet/configuration/client" + "github.com/Tnze/go-mc/data/packetid" +) + +//codec:gen +type ConfigSelectKnownPacks struct { + Packs []client.KnownPack +} + +func (ConfigSelectKnownPacks) PacketID() packetid.ServerboundPacketID { + return packetid.ServerboundConfigSelectKnownPacks +} + +func init() { + registerPacket(packetid.ServerboundConfigSelectKnownPacks, func() ServerboundPacket { + return &ConfigSelectKnownPacks{} + }) +} diff --git a/codec/packet/game/client/codecs.go b/codec/packet/game/client/codecs.go index cccfe00..2cb7e0f 100644 --- a/codec/packet/game/client/codecs.go +++ b/codec/packet/game/client/codecs.go @@ -4255,12 +4255,81 @@ func (c ServerData) WriteTo(w io.Writer) (n int64, err error) { } return n, err } +func (c *ServerLinkData) ReadFrom(r io.Reader) (n int64, err error) { + var temp int64 + temp, err = (*packet.Boolean)(&c.IsBuiltin).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + if c.IsBuiltin == true { + temp, err = (*packet.VarInt)(&c.Type).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + } + if c.IsBuiltin == false { + temp, err = (&c.Name).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + } + temp, err = (*packet.String)(&c.URL).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err +} + +func (c ServerLinkData) WriteTo(w io.Writer) (n int64, err error) { + var temp int64 + temp, err = (*packet.Boolean)(&c.IsBuiltin).WriteTo(w) + n += temp + if err != nil { + return n, err + } + if c.IsBuiltin == true { + temp, err = (*packet.VarInt)(&c.Type).WriteTo(w) + n += temp + if err != nil { + return n, err + } + } + if c.IsBuiltin == false { + temp, err = (&c.Name).WriteTo(w) + n += temp + if err != nil { + return n, err + } + } + temp, err = (*packet.String)(&c.URL).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err +} func (c *ServerLinks) ReadFrom(r io.Reader) (n int64, err error) { - return 0, nil + var temp int64 + temp, err = packet.Array(&c.Links).ReadFrom(r) + n += temp + if err != nil { + return n, err + } + return n, err } func (c ServerLinks) WriteTo(w io.Writer) (n int64, err error) { - return 0, nil + var temp int64 + temp, err = packet.Array(&c.Links).WriteTo(w) + n += temp + if err != nil { + return n, err + } + return n, err } func (c *SetActionBarText) ReadFrom(r io.Reader) (n int64, err error) { var temp int64 @@ -7088,6 +7157,138 @@ func (c Waypoint) WriteTo(w io.Writer) (n int64, err error) { return n, err } +// Int8VarIntArray a utility type for encoding/decoding packet.Byte -> int8[packet.VarInt] slice. +type Int8VarIntArray []int8 + +func (a Int8VarIntArray) WriteTo(w io.Writer) (n int64, err error) { + size := len(a) + if nn, err := packet.VarInt(size).WriteTo(w); err != nil { + return n, err + } else { + n += nn + } + for i := 0; i < size; i++ { + nn, err := packet.Byte(a[i]).WriteTo(w) + n += nn + if err != nil { + return n, err + } + } + return n, nil +} + +func (a *Int8VarIntArray) ReadFrom(r io.Reader) (n int64, err error) { + var size packet.VarInt + if nn, err := size.ReadFrom(r); err != nil { + return nn, err + } else { + n += nn + } + if size < 0 { + return n, errors.New("array length less than zero") + } + + for i := 0; i < int(size); i++ { + var elem packet.Byte + if nn, err := elem.ReadFrom(r); err != nil { + return n, err + } else { + n += nn + } + *a = append(*a, int8(elem)) + } + + return n, err +} + +// StringVarIntArray a utility type for encoding/decoding packet.String -> string[packet.VarInt] slice. +type StringVarIntArray []string + +func (a StringVarIntArray) WriteTo(w io.Writer) (n int64, err error) { + size := len(a) + if nn, err := packet.VarInt(size).WriteTo(w); err != nil { + return n, err + } else { + n += nn + } + for i := 0; i < size; i++ { + nn, err := packet.String(a[i]).WriteTo(w) + n += nn + if err != nil { + return n, err + } + } + return n, nil +} + +func (a *StringVarIntArray) ReadFrom(r io.Reader) (n int64, err error) { + var size packet.VarInt + if nn, err := size.ReadFrom(r); err != nil { + return nn, err + } else { + n += nn + } + if size < 0 { + return n, errors.New("array length less than zero") + } + + for i := 0; i < int(size); i++ { + var elem packet.String + if nn, err := elem.ReadFrom(r); err != nil { + return n, err + } else { + n += nn + } + *a = append(*a, string(elem)) + } + + return n, err +} + +// StringIdentifierVarIntArray a utility type for encoding/decoding packet.Identifier -> string[packet.VarInt] slice. +type StringIdentifierVarIntArray []string + +func (a StringIdentifierVarIntArray) WriteTo(w io.Writer) (n int64, err error) { + size := len(a) + if nn, err := packet.VarInt(size).WriteTo(w); err != nil { + return n, err + } else { + n += nn + } + for i := 0; i < size; i++ { + nn, err := packet.Identifier(a[i]).WriteTo(w) + n += nn + if err != nil { + return n, err + } + } + return n, nil +} + +func (a *StringIdentifierVarIntArray) ReadFrom(r io.Reader) (n int64, err error) { + var size packet.VarInt + if nn, err := size.ReadFrom(r); err != nil { + return nn, err + } else { + n += nn + } + if size < 0 { + return n, errors.New("array length less than zero") + } + + for i := 0; i < int(size); i++ { + var elem packet.Identifier + if nn, err := elem.ReadFrom(r); err != nil { + return n, err + } else { + n += nn + } + *a = append(*a, string(elem)) + } + + return n, err +} + // Int32VarIntVarIntArray a utility type for encoding/decoding packet.VarInt -> int32[packet.VarInt] slice. type Int32VarIntVarIntArray []int32 @@ -7176,50 +7377,6 @@ func (a *Int8ByteVarIntArray) ReadFrom(r io.Reader) (n int64, err error) { return n, err } -// Int8VarIntArray a utility type for encoding/decoding packet.Byte -> int8[packet.VarInt] slice. -type Int8VarIntArray []int8 - -func (a Int8VarIntArray) WriteTo(w io.Writer) (n int64, err error) { - size := len(a) - if nn, err := packet.VarInt(size).WriteTo(w); err != nil { - return n, err - } else { - n += nn - } - for i := 0; i < size; i++ { - nn, err := packet.Byte(a[i]).WriteTo(w) - n += nn - if err != nil { - return n, err - } - } - return n, nil -} - -func (a *Int8VarIntArray) ReadFrom(r io.Reader) (n int64, err error) { - var size packet.VarInt - if nn, err := size.ReadFrom(r); err != nil { - return nn, err - } else { - n += nn - } - if size < 0 { - return n, errors.New("array length less than zero") - } - - for i := 0; i < int(size); i++ { - var elem packet.Byte - if nn, err := elem.ReadFrom(r); err != nil { - return n, err - } else { - n += nn - } - *a = append(*a, int8(elem)) - } - - return n, err -} - // Int64VarIntArray a utility type for encoding/decoding packet.Long -> int64[packet.VarInt] slice. type Int64VarIntArray []int64 @@ -7264,10 +7421,10 @@ func (a *Int64VarIntArray) ReadFrom(r io.Reader) (n int64, err error) { return n, err } -// StringIdentifierVarIntArray a utility type for encoding/decoding packet.Identifier -> string[packet.VarInt] slice. -type StringIdentifierVarIntArray []string +// UuidUUIDUUIDVarIntArray a utility type for encoding/decoding packet.UUID -> uuid.UUID[packet.VarInt] slice. +type UuidUUIDUUIDVarIntArray []uuid.UUID -func (a StringIdentifierVarIntArray) WriteTo(w io.Writer) (n int64, err error) { +func (a UuidUUIDUUIDVarIntArray) WriteTo(w io.Writer) (n int64, err error) { size := len(a) if nn, err := packet.VarInt(size).WriteTo(w); err != nil { return n, err @@ -7275,7 +7432,7 @@ func (a StringIdentifierVarIntArray) WriteTo(w io.Writer) (n int64, err error) { n += nn } for i := 0; i < size; i++ { - nn, err := packet.Identifier(a[i]).WriteTo(w) + nn, err := packet.UUID(a[i]).WriteTo(w) n += nn if err != nil { return n, err @@ -7284,7 +7441,7 @@ func (a StringIdentifierVarIntArray) WriteTo(w io.Writer) (n int64, err error) { return n, nil } -func (a *StringIdentifierVarIntArray) ReadFrom(r io.Reader) (n int64, err error) { +func (a *UuidUUIDUUIDVarIntArray) ReadFrom(r io.Reader) (n int64, err error) { var size packet.VarInt if nn, err := size.ReadFrom(r); err != nil { return nn, err @@ -7296,13 +7453,13 @@ func (a *StringIdentifierVarIntArray) ReadFrom(r io.Reader) (n int64, err error) } for i := 0; i < int(size); i++ { - var elem packet.Identifier + var elem packet.UUID if nn, err := elem.ReadFrom(r); err != nil { return n, err } else { n += nn } - *a = append(*a, string(elem)) + *a = append(*a, uuid.UUID(elem)) } return n, err @@ -7395,91 +7552,3 @@ func (a *StringStringVarIntArray) ReadFrom(r io.Reader) (n int64, err error) { return n, err } - -// StringVarIntArray a utility type for encoding/decoding packet.String -> string[packet.VarInt] slice. -type StringVarIntArray []string - -func (a StringVarIntArray) WriteTo(w io.Writer) (n int64, err error) { - size := len(a) - if nn, err := packet.VarInt(size).WriteTo(w); err != nil { - return n, err - } else { - n += nn - } - for i := 0; i < size; i++ { - nn, err := packet.String(a[i]).WriteTo(w) - n += nn - if err != nil { - return n, err - } - } - return n, nil -} - -func (a *StringVarIntArray) ReadFrom(r io.Reader) (n int64, err error) { - var size packet.VarInt - if nn, err := size.ReadFrom(r); err != nil { - return nn, err - } else { - n += nn - } - if size < 0 { - return n, errors.New("array length less than zero") - } - - for i := 0; i < int(size); i++ { - var elem packet.String - if nn, err := elem.ReadFrom(r); err != nil { - return n, err - } else { - n += nn - } - *a = append(*a, string(elem)) - } - - return n, err -} - -// UuidUUIDUUIDVarIntArray a utility type for encoding/decoding packet.UUID -> uuid.UUID[packet.VarInt] slice. -type UuidUUIDUUIDVarIntArray []uuid.UUID - -func (a UuidUUIDUUIDVarIntArray) WriteTo(w io.Writer) (n int64, err error) { - size := len(a) - if nn, err := packet.VarInt(size).WriteTo(w); err != nil { - return n, err - } else { - n += nn - } - for i := 0; i < size; i++ { - nn, err := packet.UUID(a[i]).WriteTo(w) - n += nn - if err != nil { - return n, err - } - } - return n, nil -} - -func (a *UuidUUIDUUIDVarIntArray) ReadFrom(r io.Reader) (n int64, err error) { - var size packet.VarInt - if nn, err := size.ReadFrom(r); err != nil { - return nn, err - } else { - n += nn - } - if size < 0 { - return n, errors.New("array length less than zero") - } - - for i := 0; i < int(size); i++ { - var elem packet.UUID - if nn, err := elem.ReadFrom(r); err != nil { - return n, err - } else { - n += nn - } - *a = append(*a, uuid.UUID(elem)) - } - - return n, err -} diff --git a/codec/packet/game/client/server_links.go b/codec/packet/game/client/server_links.go index 4806545..38fd2d0 100644 --- a/codec/packet/game/client/server_links.go +++ b/codec/packet/game/client/server_links.go @@ -2,6 +2,7 @@ package client import "github.com/Tnze/go-mc/chat" +//codec:gen type ServerLinkData struct { IsBuiltin bool //opt:enum:IsBuiltin:true @@ -13,4 +14,5 @@ type ServerLinkData struct { //codec:gen type ServerLinks struct { + Links []ServerLinkData }