update to 1.18.2 & fix bug in snbt encoding

This commit is contained in:
Tnze
2022-03-10 12:29:03 +08:00
parent 0bbd279dd1
commit 46b021e1ef
18 changed files with 70 additions and 2147 deletions

View File

@ -1,17 +1,17 @@
{
piglin_safe: 0b,
natural: 1b,
ambient_light: 0.0f,
infiniburn: "minecraft:infiniburn_overworld",
respawn_anchor_works: 0b,
has_skylight: 1b,
bed_works: 1b,
effects: "minecraft:overworld",
has_raids: 1b,
min_y: 0,
height: 256,
logical_height: 256,
coordinate_scale: 1.0d,
ultrawarm: 0b,
has_ceiling: 0b
piglin_safe:0B,
natural:1B,
ambient_light:0.0000000000F,
infiniburn:"#minecraft:infiniburn_overworld",
respawn_anchor_works:0B,
has_skylight:1B,
bed_works:1B,
effects:"minecraft:overworld",
has_raids:1B,
logical_height:384,
coordinate_scale:1.0000000000D,
min_y:-64,
has_ceiling:0B,
ultrawarm:0B,
height:384
}

File diff suppressed because one or more lines are too long

View File

@ -35,7 +35,7 @@ func NewGlobalChat() *GlobalChat {
func (g *GlobalChat) Init(game *Game) {
game.AddHandler(&PacketHandler{
ID: packetid.ServerboundChat,
F: func(player *Player, packet Packet757) error {
F: func(player *Player, packet Packet758) error {
var msg pk.String
if err := pk.Packet(packet).Scan(&msg); err != nil {
return err
@ -59,14 +59,14 @@ func (g *GlobalChat) Run(ctx context.Context) {
case <-ctx.Done():
return
case item := <-g.msg:
g.broadcast(Packet757(pk.Marshal(
g.broadcast(Packet758(pk.Marshal(
packetid.ClientboundChat,
item.toMessage(),
pk.Byte(chatPosChat),
pk.UUID(item.p.UUID),
)))
case p := <-g.join:
g.broadcast(Packet757(pk.Marshal(
g.broadcast(Packet758(pk.Marshal(
packetid.ClientboundChat,
chat.TranslateMsg("multiplayer.player.joined", chat.Text(p.Name)).SetColor(chat.Yellow),
pk.Byte(chatPosSystem),
@ -74,7 +74,7 @@ func (g *GlobalChat) Run(ctx context.Context) {
)))
g.players[p.UUID] = p
case p := <-g.quit:
g.broadcast(Packet757(pk.Marshal(
g.broadcast(Packet758(pk.Marshal(
packetid.ClientboundChat,
chat.TranslateMsg("multiplayer.player.left", chat.Text(p.Name)).SetColor(chat.Yellow),
pk.Byte(chatPosSystem),
@ -85,7 +85,7 @@ func (g *GlobalChat) Run(ctx context.Context) {
}
}
func (g *GlobalChat) broadcast(packet Packet757) {
func (g *GlobalChat) broadcast(packet Packet758) {
for _, p := range g.players {
p.WritePacket(packet)
}

View File

@ -13,7 +13,7 @@ import (
func (g *Graph) Init(game *server.Game) {
game.AddHandler(&server.PacketHandler{
ID: packetid.ServerboundChat,
F: func(player *server.Player, packet server.Packet757) error {
F: func(player *server.Player, packet server.Packet758) error {
var msg pk.String
if err := pk.Packet(packet).Scan(&msg); err != nil {
return err
@ -35,7 +35,7 @@ func (g *Graph) Run(ctx context.Context) {}
// AddPlayer implement server.Component for Graph
func (g *Graph) AddPlayer(p *server.Player) {
p.WritePacket(server.Packet757(pk.Marshal(
p.WritePacket(server.Packet758(pk.Marshal(
packetid.ClientboundCommands, g,
)))
}

View File

@ -50,10 +50,10 @@ func (s *SimpleDim) PlayerJoin(p *Player) {
)
column.Unlock()
p.WritePacket(Packet757(packet))
p.WritePacket(Packet758(packet))
}
p.WritePacket(Packet757(pk.Marshal(
p.WritePacket(Packet758(pk.Marshal(
packetid.ClientboundPlayerPosition,
pk.Double(0), pk.Double(143), pk.Double(0),
pk.Float(0), pk.Float(0),

View File

@ -42,7 +42,7 @@ type PacketHandler struct {
F packetHandlerFunc
}
type packetHandlerFunc func(player *Player, packet Packet757) error
type packetHandlerFunc func(player *Player, packet Packet758) error
//go:embed DimensionCodec.snbt
var dimensionCodecSNBT string
@ -95,7 +95,9 @@ func (g *Game) AcceptPlayer(name string, id uuid.UUID, protocol int32, conn *net
pk.Boolean(false), // Is hardcore
pk.Byte(p.Gamemode), // Gamemode
pk.Byte(-1), // Prev Gamemode
pk.Array([]pk.Identifier{pk.Identifier(dimInfo.Name)}),
pk.Array([]pk.Identifier{
pk.Identifier(dimInfo.Name),
}),
pk.NBT(nbt.StringifiedMessage(dimensionCodecSNBT)),
pk.NBT(nbt.StringifiedMessage(dimensionSNBT)),
pk.Identifier(dimInfo.Name), // World Name
@ -145,7 +147,7 @@ func (g *Game) AcceptPlayer(name string, id uuid.UUID, protocol int32, conn *net
return
}
for _, ph := range g.handlers[packet.ID] {
if err := ph.F(p, Packet757(packet)); err != nil {
if err := ph.F(p, Packet758(packet)); err != nil {
return
}
if err := p.GetErr(); err != nil {

View File

@ -60,7 +60,7 @@ func (k *KeepAlive) AddPlayerDelayUpdateHandler(f func(p *Player, delay time.Dur
func (k *KeepAlive) Init(g *Game) {
g.AddHandler(&PacketHandler{
ID: packetid.ServerboundKeepAlive,
F: func(player *Player, packet Packet757) error {
F: func(player *Player, packet Packet758) error {
var KeepAliveID pk.Long
if err := pk.Packet(packet).Scan(&KeepAliveID); err != nil {
return err
@ -121,7 +121,7 @@ func (k *KeepAlive) pingPlayer(now time.Time) {
if elem := k.pingList.Front(); elem != nil {
p := k.pingList.Remove(elem).(keepAliveItem).player
// Send Clientbound KeepAlive packet.
p.WritePacket(Packet757(pk.Marshal(
p.WritePacket(Packet758(pk.Marshal(
packetid.ClientboundKeepAlive,
pk.Long(k.keepAliveID),
)))

View File

@ -22,12 +22,13 @@ type Player struct {
errChan chan error
}
// Packet757 is a packet in protocol 757.
// Packet758 is a packet in protocol 757.
// We are using type system to force programmers to update packets.
type Packet758 pk.Packet
type Packet757 pk.Packet
// WritePacket to player client. The type of parameter will update per version.
func (p *Player) WritePacket(packet Packet757) {
func (p *Player) WritePacket(packet Packet758) {
p.packetQueue.Push(pk.Packet(packet))
}

View File

@ -42,7 +42,7 @@ func (p *PlayerList) AddPlayer(player *Player) {
defer p.playersLock.Unlock()
if len(p.players) >= p.maxPlayer {
player.WritePacket(Packet757(pk.Marshal(
player.WritePacket(Packet758(pk.Marshal(
packetid.ClientboundDisconnect,
chat.TranslateMsg("multiplayer.disconnect.server_full"),
)))

View File

@ -30,8 +30,8 @@ import (
"github.com/Tnze/go-mc/net"
)
const ProtocolName = "1.18.1"
const ProtocolVersion = 757
const ProtocolName = "1.18.2"
const ProtocolVersion = 758
type Server struct {
ListPingHandler