This commit is contained in:
Tnze
2019-08-09 18:17:50 +08:00
parent 3aa48ab1be
commit c667d86153
2 changed files with 16 additions and 30 deletions

View File

@ -2,7 +2,6 @@ package bot
import (
"bytes"
"errors"
"fmt"
"io/ioutil"
@ -101,7 +100,7 @@ func (c *Client) handlePacket(p pk.Packet) (disconnect bool, err error) {
case data.SpawnPlayer:
// err = handleSpawnPlayerPacket(g, reader)
case data.WindowItems:
//err = handleWindowItemsPacket(c, p)
err = handleWindowItemsPacket(c, p)
case data.UpdateHealth:
err = handleUpdateHealthPacket(c, p)
case data.ChatMessageClientbound:
@ -114,7 +113,7 @@ func (c *Client) handlePacket(p pk.Packet) (disconnect bool, err error) {
err = handleDisconnectPacket(c, p)
disconnect = true
case data.SetSlot:
//err = handleSetSlotPacket(c, p)
err = handleSetSlotPacket(c, p)
case data.SoundEffect:
err = handleSoundEffect(c, p)
case data.NamedSoundEffect:
@ -184,6 +183,9 @@ func handleDisconnectPacket(c *Client, p pk.Packet) error {
}
func handleSetSlotPacket(c *Client, p pk.Packet) error {
if c.Events.WindowsItemChange == nil {
return nil
}
var (
windowID pk.Byte
slotI pk.Short
@ -193,22 +195,7 @@ func handleSetSlotPacket(c *Client, p pk.Packet) error {
return err
}
switch int8(windowID) {
case -1:
// set cursor slot
case 0:
if slotI >= 36 && slotI < 45 {
// Update Cooldown
}
fallthrough
case -2:
// set inventory
c.Inventory[slotI] = slot
default:
//other window
}
return nil
return c.Events.WindowsItemChange(byte(windowID), int(slotI), slot)
}
// func handleMultiBlockChangePacket(c *Client, p pk.Packet) error {
@ -366,7 +353,7 @@ func (p *pluginMessageData) Decode(r pk.DecodeReader) error {
if err != nil {
return err
}
*p = pluginMessageData(data)
*p = data
return nil
}
@ -553,6 +540,10 @@ func handleKeepAlivePacket(c *Client, p pk.Packet) error {
}
func handleWindowItemsPacket(c *Client, p pk.Packet) (err error) {
if c.Events.WindowsItem == nil {
return nil
}
r := bytes.NewReader(p.Data)
var (
windowID pk.Byte
@ -573,16 +564,7 @@ func handleWindowItemsPacket(c *Client, p pk.Packet) (err error) {
slots = append(slots, slot)
}
switch windowID {
case 0: //is player's inventory
if len(slots) != len(c.Inventory) {
return errors.New("inventory len not match")
}
for i, v := range slots { //copy this Inventory to player's Inventory
c.Inventory[i] = v
}
}
return nil
return c.Events.WindowsItem(byte(windowID), slots)
}
func sendPlayerPositionAndLookPacket(c *Client) {