Basic support for 1.16.1
This commit is contained in:
@ -53,9 +53,12 @@ type PlayInfo struct {
|
|||||||
Hardcore bool //是否是极限模式
|
Hardcore bool //是否是极限模式
|
||||||
Dimension int //维度
|
Dimension int //维度
|
||||||
Difficulty int //难度
|
Difficulty int //难度
|
||||||
LevelType string //地图类型
|
// LevelType string //地图类型 1.16删了
|
||||||
ViewDistance int //视距
|
ViewDistance int //视距
|
||||||
ReducedDebugInfo bool //减少调试信息
|
ReducedDebugInfo bool //减少调试信息
|
||||||
|
WorldName string //当前世界的名字
|
||||||
|
IsDebug bool //调试
|
||||||
|
IsFlat bool //超平坦世界
|
||||||
// SpawnPosition Position //主世界出生点
|
// SpawnPosition Position //主世界出生点
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ import (
|
|||||||
|
|
||||||
type eventBroker struct {
|
type eventBroker struct {
|
||||||
GameStart func() error
|
GameStart func() error
|
||||||
ChatMsg func(msg chat.Message, pos byte) error
|
ChatMsg func(msg chat.Message, pos byte, sender string) error
|
||||||
Disconnect func(reason chat.Message) error
|
Disconnect func(reason chat.Message) error
|
||||||
HealthChange func() error
|
HealthChange func() error
|
||||||
Die func() error
|
Die func() error
|
||||||
|
@ -279,13 +279,13 @@ func handleChatMessagePacket(c *Client, p pk.Packet) (err error) {
|
|||||||
sender pk.UUID
|
sender pk.UUID
|
||||||
)
|
)
|
||||||
|
|
||||||
err = p.Scan(&s, &pos)
|
err = p.Scan(&s, &pos, &sender)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.Events.ChatMsg != nil {
|
if c.Events.ChatMsg != nil {
|
||||||
err = c.Events.ChatMsg(s, byte(pos))
|
err = c.Events.ChatMsg(s, byte(pos), string(sender.Encode()))
|
||||||
}
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
@ -329,15 +329,23 @@ func handleJoinGamePacket(c *Client, p pk.Packet) error {
|
|||||||
var (
|
var (
|
||||||
eid pk.Int
|
eid pk.Int
|
||||||
gamemode pk.UnsignedByte
|
gamemode pk.UnsignedByte
|
||||||
|
previousGm pk.UnsignedByte
|
||||||
|
worldCount pk.VarInt
|
||||||
|
worldNames pk.Identifier
|
||||||
|
_ pk.NBT
|
||||||
|
//dimensionCodec pk.NBT
|
||||||
dimension pk.Int
|
dimension pk.Int
|
||||||
|
worldName pk.Identifier
|
||||||
hashedSeed pk.Long
|
hashedSeed pk.Long
|
||||||
maxPlayers pk.UnsignedByte
|
maxPlayers pk.UnsignedByte
|
||||||
levelType pk.String
|
|
||||||
viewDistance pk.VarInt
|
viewDistance pk.VarInt
|
||||||
rdi pk.Boolean // Reduced Debug Info
|
rdi pk.Boolean // Reduced Debug Info
|
||||||
ers pk.Boolean // Enable respawn screen
|
ers pk.Boolean // Enable respawn screen
|
||||||
|
isDebug pk.Boolean
|
||||||
|
isFlat pk.Boolean
|
||||||
)
|
)
|
||||||
err := p.Scan(&eid, &gamemode, &dimension, &hashedSeed, &maxPlayers, &levelType, &rdi, &ers)
|
err := p.Scan(&eid, &gamemode, &previousGm, &worldCount, &worldNames, &dimension, &worldName,
|
||||||
|
&hashedSeed, &maxPlayers, &rdi, &ers, &isDebug, &isFlat)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -346,9 +354,12 @@ func handleJoinGamePacket(c *Client, p pk.Packet) error {
|
|||||||
c.Gamemode = int(gamemode & 0x7)
|
c.Gamemode = int(gamemode & 0x7)
|
||||||
c.Hardcore = gamemode&0x8 != 0
|
c.Hardcore = gamemode&0x8 != 0
|
||||||
c.Dimension = int(dimension)
|
c.Dimension = int(dimension)
|
||||||
c.LevelType = string(levelType)
|
c.WorldName = string(worldName)
|
||||||
c.ViewDistance = int(viewDistance)
|
c.ViewDistance = int(viewDistance)
|
||||||
c.ReducedDebugInfo = bool(rdi)
|
c.ReducedDebugInfo = bool(rdi)
|
||||||
|
c.IsDebug = bool(isDebug)
|
||||||
|
c.IsFlat = bool(isFlat)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -442,13 +453,14 @@ func handleChunkDataPacket(c *Client, p pk.Packet) error {
|
|||||||
var (
|
var (
|
||||||
X, Z pk.Int
|
X, Z pk.Int
|
||||||
FullChunk pk.Boolean
|
FullChunk pk.Boolean
|
||||||
|
IgnoreOldData pk.Boolean
|
||||||
PrimaryBitMask pk.VarInt
|
PrimaryBitMask pk.VarInt
|
||||||
Heightmaps struct{}
|
Heightmaps struct{}
|
||||||
Biomes = biomesData{fullChunk: (*bool)(&FullChunk)}
|
Biomes = biomesData{fullChunk: (*bool)(&FullChunk)}
|
||||||
Data chunkData
|
Data chunkData
|
||||||
BlockEntities blockEntities
|
BlockEntities blockEntities
|
||||||
)
|
)
|
||||||
if err := p.Scan(&X, &Z, &FullChunk, &PrimaryBitMask, pk.NBT{V: &Heightmaps}, &Biomes, &Data, &BlockEntities); err != nil {
|
if err := p.Scan(&X, &Z, &FullChunk, &IgnoreOldData, &PrimaryBitMask, pk.NBT{V: &Heightmaps}, &Biomes, &Data, &BlockEntities); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
chunk, err := world.DecodeChunkColumn(int32(PrimaryBitMask), Data)
|
chunk, err := world.DecodeChunkColumn(int32(PrimaryBitMask), Data)
|
||||||
|
@ -13,7 +13,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// ProtocolVersion , the protocol version number of minecraft net protocol
|
// ProtocolVersion , the protocol version number of minecraft net protocol
|
||||||
const ProtocolVersion = 578
|
const ProtocolVersion = 736
|
||||||
|
|
||||||
// JoinServer connect a Minecraft server for playing the game.
|
// JoinServer connect a Minecraft server for playing the game.
|
||||||
func (c *Client) JoinServer(addr string, port int) (err error) {
|
func (c *Client) JoinServer(addr string, port int) (err error) {
|
||||||
|
@ -38,7 +38,7 @@ func onGameStart() error {
|
|||||||
return nil //if err isn't nil, HandleGame() will return it.
|
return nil //if err isn't nil, HandleGame() will return it.
|
||||||
}
|
}
|
||||||
|
|
||||||
func onChatMsg(c chat.Message, pos byte) error {
|
func onChatMsg(c chat.Message, pos byte, uuid string) error {
|
||||||
log.Println("Chat:", c.ClearString()) // output chat message without any format code (like color or bold)
|
log.Println("Chat:", c.ClearString()) // output chat message without any format code (like color or bold)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -37,11 +37,11 @@ const (
|
|||||||
OpenHorseWindow
|
OpenHorseWindow
|
||||||
|
|
||||||
KeepAliveClientbound //0x20
|
KeepAliveClientbound //0x20
|
||||||
ChunkData // TODO Pre
|
ChunkData
|
||||||
Effect
|
Effect
|
||||||
Particle
|
Particle
|
||||||
UpdateLight
|
UpdateLight
|
||||||
JoinGame // TODO Pre
|
JoinGame
|
||||||
MapData
|
MapData
|
||||||
TradeList
|
TradeList
|
||||||
EntityRelativeMove
|
EntityRelativeMove
|
||||||
@ -97,7 +97,7 @@ const (
|
|||||||
Advancements
|
Advancements
|
||||||
EntityProperties
|
EntityProperties
|
||||||
EntityEffect
|
EntityEffect
|
||||||
DeclareRecipes // TODO Pre
|
DeclareRecipes
|
||||||
Tags //0x5B
|
Tags //0x5B
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user