68 lines
1.7 KiB
Go
68 lines
1.7 KiB
Go
package bot
|
|
|
|
import (
|
|
"github.com/Tnze/go-mc/data/packetid"
|
|
"github.com/Tnze/go-mc/nbt"
|
|
"github.com/Tnze/go-mc/net"
|
|
pk "github.com/Tnze/go-mc/net/packet"
|
|
)
|
|
|
|
func (c *Client) joinConfiguration(conn *net.Conn) error {
|
|
receiving := "config custom payload"
|
|
for {
|
|
var p pk.Packet
|
|
if err := conn.ReadPacket(&p); err != nil {
|
|
return LoginErr{receiving, err}
|
|
}
|
|
|
|
switch packetid.ClientboundPacketID(p.ID) {
|
|
case packetid.ClientboundConfigCustomPayload:
|
|
var channel pk.Identifier
|
|
var data pk.PluginMessageData
|
|
err := p.Scan(&channel, &data)
|
|
if err != nil {
|
|
return LoginErr{"custom payload", err}
|
|
}
|
|
// TODO: Provide configuration custom data handling interface
|
|
|
|
case packetid.ClientboundConfigDisconnect:
|
|
case packetid.ClientboundConfigFinishConfiguration:
|
|
err := conn.WritePacket(pk.Marshal(
|
|
packetid.ServerboundConfigFinishConfiguration,
|
|
))
|
|
if err != nil {
|
|
return LoginErr{"finish config", err}
|
|
}
|
|
return nil
|
|
|
|
case packetid.ClientboundConfigKeepAlive:
|
|
var keepAliveID pk.Long
|
|
err := p.Scan(&keepAliveID)
|
|
if err != nil {
|
|
return LoginErr{"keep alive", err}
|
|
}
|
|
// send it back
|
|
err = conn.WritePacket(pk.Marshal(
|
|
packetid.ServerboundConfigKeepAlive,
|
|
keepAliveID,
|
|
))
|
|
if err != nil {
|
|
return LoginErr{"keep alive", err}
|
|
}
|
|
|
|
case packetid.ClientboundConfigPing:
|
|
case packetid.ClientboundConfigRegistryData:
|
|
var registryCodec nbt.RawMessage
|
|
err := p.Scan(pk.NBT(®istryCodec))
|
|
if err != nil {
|
|
return LoginErr{"registry data", err}
|
|
}
|
|
// TODO: Handle registries
|
|
|
|
case packetid.ClientboundConfigResourcePack:
|
|
case packetid.ClientboundConfigUpdateEnabledFeatures:
|
|
case packetid.ClientboundConfigUpdateTags:
|
|
}
|
|
}
|
|
}
|