Implement generator and type for packet IDs
This commit is contained in:
@ -64,8 +64,8 @@ func (c *Client) handlePacket(p pk.Packet) (disconnect bool, err error) {
|
||||
}
|
||||
}
|
||||
|
||||
switch p.ID {
|
||||
case data.JoinGame:
|
||||
switch data.PktID(p.ID) {
|
||||
case data.Login:
|
||||
err = handleJoinGamePacket(c, p)
|
||||
|
||||
if err == nil && c.Events.GameStart != nil {
|
||||
@ -75,7 +75,7 @@ func (c *Client) handlePacket(p pk.Packet) (disconnect bool, err error) {
|
||||
_ = c.conn.WritePacket(
|
||||
//PluginMessage packet (serverbound) - sending minecraft brand.
|
||||
pk.Marshal(
|
||||
data.PluginMessageServerbound,
|
||||
data.CustomPayloadServerbound,
|
||||
pk.Identifier("minecraft:brand"),
|
||||
pk.String(c.settings.Brand),
|
||||
),
|
||||
@ -83,9 +83,9 @@ func (c *Client) handlePacket(p pk.Packet) (disconnect bool, err error) {
|
||||
if err2 := c.Events.updateSeenPackets(seenJoinGame); err == nil {
|
||||
err = err2
|
||||
}
|
||||
case data.PluginMessageClientbound:
|
||||
case data.CustomPayloadClientbound:
|
||||
err = handlePluginPacket(c, p)
|
||||
case data.ServerDifficulty:
|
||||
case data.Difficulty:
|
||||
err = handleServerDifficultyPacket(c, p)
|
||||
if err == nil && c.Events.ServerDifficultyChange != nil {
|
||||
err = c.Events.ServerDifficultyChange(c.Difficulty)
|
||||
@ -98,12 +98,12 @@ func (c *Client) handlePacket(p pk.Packet) (disconnect bool, err error) {
|
||||
if err2 := c.Events.updateSeenPackets(seenSpawnPos); err == nil {
|
||||
err = err2
|
||||
}
|
||||
case data.PlayerAbilitiesClientbound:
|
||||
case data.AbilitiesClientbound:
|
||||
err = handlePlayerAbilitiesPacket(c, p)
|
||||
_ = c.conn.WritePacket(
|
||||
//ClientSettings packet (serverbound)
|
||||
pk.Marshal(
|
||||
data.ClientSettings,
|
||||
data.Settings,
|
||||
pk.String(c.settings.Locale),
|
||||
pk.Byte(c.settings.ViewDistance),
|
||||
pk.VarInt(c.settings.ChatMode),
|
||||
@ -115,16 +115,16 @@ func (c *Client) handlePacket(p pk.Packet) (disconnect bool, err error) {
|
||||
if err2 := c.Events.updateSeenPackets(seenPlayerAbilities); err == nil {
|
||||
err = err2
|
||||
}
|
||||
case data.HeldItemChangeClientbound:
|
||||
case data.HeldItemSlotClientbound:
|
||||
err = handleHeldItemPacket(c, p)
|
||||
case data.UpdateLight:
|
||||
err = c.Events.updateSeenPackets(seenUpdateLight)
|
||||
case data.ChunkData:
|
||||
case data.MapChunk:
|
||||
err = handleChunkDataPacket(c, p)
|
||||
if err2 := c.Events.updateSeenPackets(seenChunkData); err == nil {
|
||||
err = err2
|
||||
}
|
||||
case data.PlayerPositionAndLookClientbound:
|
||||
case data.PositionClientbound:
|
||||
err = handlePlayerPositionAndLookPacket(c, p)
|
||||
sendPlayerPositionAndLookPacket(c) // to confirm the position
|
||||
if err2 := c.Events.updateSeenPackets(seenPlayerPositionAndLook); err == nil {
|
||||
@ -132,29 +132,23 @@ func (c *Client) handlePacket(p pk.Packet) (disconnect bool, err error) {
|
||||
}
|
||||
case data.DeclareRecipes:
|
||||
// handleDeclareRecipesPacket(g, reader)
|
||||
case data.EntityLookAndRelativeMove:
|
||||
// err = handleEntityLookAndRelativeMove(g, reader)
|
||||
case data.EntityHeadLook:
|
||||
// handleEntityHeadLookPacket(g, reader)
|
||||
case data.EntityRelativeMove:
|
||||
// err = handleEntityRelativeMovePacket(g, reader)
|
||||
case data.KeepAliveClientbound:
|
||||
err = handleKeepAlivePacket(c, p)
|
||||
case data.Entity:
|
||||
//handleEntityPacket(g, reader)
|
||||
case data.SpawnPlayer:
|
||||
case data.NamedEntitySpawn:
|
||||
// err = handleSpawnPlayerPacket(g, reader)
|
||||
case data.WindowItems:
|
||||
err = handleWindowItemsPacket(c, p)
|
||||
case data.UpdateHealth:
|
||||
err = handleUpdateHealthPacket(c, p)
|
||||
case data.ChatMessageClientbound:
|
||||
case data.ChatClientbound:
|
||||
err = handleChatMessagePacket(c, p)
|
||||
case data.BlockChange:
|
||||
////err = handleBlockChangePacket(c, p)
|
||||
case data.MultiBlockChange:
|
||||
////err = handleMultiBlockChangePacket(c, p)
|
||||
case data.DisconnectPlay:
|
||||
case data.KickDisconnect:
|
||||
err = handleDisconnectPacket(c, p)
|
||||
disconnect = true
|
||||
case data.SetSlot:
|
||||
@ -163,7 +157,7 @@ func (c *Client) handlePacket(p pk.Packet) (disconnect bool, err error) {
|
||||
err = handleSoundEffect(c, p)
|
||||
case data.NamedSoundEffect:
|
||||
err = handleNamedSoundEffect(c, p)
|
||||
case data.SetExperience:
|
||||
case data.Experience:
|
||||
err = handleSetExperience(c, p)
|
||||
default:
|
||||
// fmt.Printf("ignore pack id %X\n", p.ID)
|
||||
@ -694,7 +688,7 @@ func handleSetExperience(c *Client, p pk.Packet) (err error) {
|
||||
|
||||
func sendPlayerPositionAndLookPacket(c *Client) {
|
||||
c.conn.WritePacket(pk.Marshal(
|
||||
data.PlayerPositionAndLookServerbound,
|
||||
data.PositionLook,
|
||||
pk.Double(c.X),
|
||||
pk.Double(c.Y),
|
||||
pk.Double(c.Z),
|
||||
|
@ -13,7 +13,7 @@ import (
|
||||
// It's just animation.
|
||||
func (c *Client) SwingArm(hand int) error {
|
||||
return c.conn.WritePacket(pk.Marshal(
|
||||
data.AnimationServerbound,
|
||||
data.ArmAnimation,
|
||||
pk.VarInt(hand),
|
||||
))
|
||||
}
|
||||
@ -21,7 +21,7 @@ func (c *Client) SwingArm(hand int) error {
|
||||
// Respawn the player when it was dead.
|
||||
func (c *Client) Respawn() error {
|
||||
return c.conn.WritePacket(pk.Marshal(
|
||||
data.ClientStatus,
|
||||
data.ClientCommand,
|
||||
pk.VarInt(0),
|
||||
))
|
||||
}
|
||||
@ -77,7 +77,7 @@ func (c *Client) Chat(msg string) error {
|
||||
}
|
||||
|
||||
return c.conn.WritePacket(pk.Marshal(
|
||||
data.ChatMessageServerbound,
|
||||
data.ChatServerbound,
|
||||
pk.String(msg),
|
||||
))
|
||||
}
|
||||
@ -85,7 +85,7 @@ func (c *Client) Chat(msg string) error {
|
||||
// PluginMessage is used by mods and plugins to send their data.
|
||||
func (c *Client) PluginMessage(channal string, msg []byte) error {
|
||||
return c.conn.WritePacket(pk.Marshal(
|
||||
data.PluginMessageServerbound,
|
||||
data.CustomPayloadServerbound,
|
||||
pk.Identifier(channal),
|
||||
pluginMessageData(msg),
|
||||
))
|
||||
@ -103,7 +103,7 @@ func (c *Client) PluginMessage(channal string, msg []byte) error {
|
||||
// insideBlock is true when the player's head is inside of a block's collision.
|
||||
func (c *Client) UseBlock(hand, locX, locY, locZ, face int, cursorX, cursorY, cursorZ float32, insideBlock bool) error {
|
||||
return c.conn.WritePacket(pk.Marshal(
|
||||
data.PlayerBlockPlacement,
|
||||
data.UseItem,
|
||||
pk.VarInt(hand),
|
||||
pk.Position{X: locX, Y: locY, Z: locZ},
|
||||
pk.VarInt(face),
|
||||
@ -120,7 +120,7 @@ func (c *Client) SelectItem(slot int) error {
|
||||
}
|
||||
|
||||
return c.conn.WritePacket(pk.Marshal(
|
||||
data.HeldItemChangeServerbound,
|
||||
data.HeldItemSlotServerbound,
|
||||
pk.Short(slot),
|
||||
))
|
||||
}
|
||||
@ -144,7 +144,7 @@ func (c *Client) PickItem(slot int) error {
|
||||
|
||||
func (c *Client) playerAction(status, locX, locY, locZ, face int) error {
|
||||
return c.conn.WritePacket(pk.Marshal(
|
||||
data.PlayerDigging,
|
||||
data.BlockDig,
|
||||
pk.VarInt(status),
|
||||
pk.Position{X: locX, Y: locY, Z: locZ},
|
||||
pk.Byte(face),
|
||||
|
@ -1,9 +1,10 @@
|
||||
package world
|
||||
|
||||
import (
|
||||
"github.com/Tnze/go-mc/data"
|
||||
"math/rand"
|
||||
"testing"
|
||||
|
||||
"github.com/Tnze/go-mc/data"
|
||||
)
|
||||
|
||||
func newDirectSection(bpb int) Section {
|
||||
|
Reference in New Issue
Block a user