Add option for queue (#262)
This commit is contained in:
@ -49,11 +49,11 @@ type Conn struct {
|
||||
rerr error
|
||||
}
|
||||
|
||||
func warpConn(c *net.Conn) *Conn {
|
||||
func warpConn(c *net.Conn, qr, qw queue.Queue[pk.Packet]) *Conn {
|
||||
wc := Conn{
|
||||
Conn: c,
|
||||
send: make(queue.ChannelQueue[pk.Packet], 256),
|
||||
recv: make(queue.ChannelQueue[pk.Packet], 256),
|
||||
send: qw,
|
||||
recv: qr,
|
||||
rerr: nil,
|
||||
}
|
||||
go func() {
|
||||
|
15
bot/mcbot.go
15
bot/mcbot.go
@ -16,6 +16,7 @@ import (
|
||||
"github.com/Tnze/go-mc/data/packetid"
|
||||
mcnet "github.com/Tnze/go-mc/net"
|
||||
pk "github.com/Tnze/go-mc/net/packet"
|
||||
"github.com/Tnze/go-mc/net/queue"
|
||||
"github.com/Tnze/go-mc/yggdrasil/user"
|
||||
)
|
||||
|
||||
@ -35,6 +36,9 @@ type JoinOptions struct {
|
||||
// Specify the player PubKey to use.
|
||||
// If nil, it will be obtained from Mojang when joining
|
||||
KeyPair *user.KeyPairResp
|
||||
|
||||
QueueRead queue.Queue[pk.Packet]
|
||||
QueueWrite queue.Queue[pk.Packet]
|
||||
}
|
||||
|
||||
// JoinServer connect a Minecraft server for playing the game.
|
||||
@ -48,8 +52,7 @@ func (c *Client) JoinServer(addr string) (err error) {
|
||||
|
||||
// JoinServerWithDialer is similar to JoinServer but using a net.Dialer.
|
||||
func (c *Client) JoinServerWithDialer(dialer *net.Dialer, addr string) (err error) {
|
||||
return c.join(addr, JoinOptions{
|
||||
Context: context.Background(),
|
||||
return c.JoinServerWithOptions(addr, JoinOptions{
|
||||
MCDialer: (*mcnet.Dialer)(dialer),
|
||||
})
|
||||
}
|
||||
@ -61,6 +64,12 @@ func (c *Client) JoinServerWithOptions(addr string, options JoinOptions) (err er
|
||||
if options.Context == nil {
|
||||
options.Context = context.Background()
|
||||
}
|
||||
if options.QueueRead == nil {
|
||||
options.QueueRead = queue.NewLinkedQueue[pk.Packet]()
|
||||
}
|
||||
if options.QueueWrite == nil {
|
||||
options.QueueWrite = queue.NewLinkedQueue[pk.Packet]()
|
||||
}
|
||||
return c.join(addr, options)
|
||||
}
|
||||
|
||||
@ -150,7 +159,7 @@ func (c *Client) join(addr string, options JoinOptions) error {
|
||||
if err != nil {
|
||||
return LoginErr{"login success", err}
|
||||
}
|
||||
c.Conn = warpConn(conn)
|
||||
c.Conn = warpConn(conn, options.QueueRead, options.QueueWrite)
|
||||
return nil
|
||||
|
||||
case packetid.LoginCompression: // Set Compression
|
||||
|
Reference in New Issue
Block a user