fix dimension registry handling

This commit is contained in:
Tnze
2024-06-16 02:29:25 +08:00
parent bbb19c38b7
commit 73717c3e62
2 changed files with 6 additions and 6 deletions

View File

@ -9,7 +9,7 @@ import (
// WorldInfo content player info in server. // WorldInfo content player info in server.
type WorldInfo struct { type WorldInfo struct {
DimensionType string DimensionType int32
DimensionNames []string // Identifiers for all worlds on the server. DimensionNames []string // Identifiers for all worlds on the server.
DimensionName string // Name of the world being spawned into. DimensionName string // Name of the world being spawned into.
HashedSeed int64 // First 8 bytes of the SHA-256 hash of the world's seed. Used client side for biome noise HashedSeed int64 // First 8 bytes of the SHA-256 hash of the world's seed. Used client side for biome noise
@ -41,7 +41,7 @@ func (p *Player) handleLoginPacket(packet pk.Packet) error {
(*pk.Boolean)(&p.ReducedDebugInfo), (*pk.Boolean)(&p.ReducedDebugInfo),
(*pk.Boolean)(&p.EnableRespawnScreen), (*pk.Boolean)(&p.EnableRespawnScreen),
(*pk.Boolean)(&p.DoLimitCrafting), (*pk.Boolean)(&p.DoLimitCrafting),
(*pk.Identifier)(&p.WorldInfo.DimensionType), (*pk.VarInt)(&p.WorldInfo.DimensionType),
(*pk.Identifier)(&p.DimensionName), (*pk.Identifier)(&p.DimensionName),
(*pk.Long)(&p.HashedSeed), (*pk.Long)(&p.HashedSeed),
(*pk.UnsignedByte)(&p.Gamemode), (*pk.UnsignedByte)(&p.Gamemode),
@ -84,7 +84,7 @@ func (p *Player) handleLoginPacket(packet pk.Packet) error {
func (p *Player) handleRespawnPacket(packet pk.Packet) error { func (p *Player) handleRespawnPacket(packet pk.Packet) error {
var copyMeta bool var copyMeta bool
err := packet.Scan( err := packet.Scan(
(*pk.String)(&p.DimensionType), (*pk.VarInt)(&p.DimensionType),
(*pk.Identifier)(&p.DimensionName), (*pk.Identifier)(&p.DimensionName),
(*pk.Long)(&p.HashedSeed), (*pk.Long)(&p.HashedSeed),
(*pk.UnsignedByte)(&p.Gamemode), (*pk.UnsignedByte)(&p.Gamemode),

View File

@ -1,7 +1,7 @@
package world package world
import ( import (
"errors" "fmt"
"github.com/Tnze/go-mc/bot" "github.com/Tnze/go-mc/bot"
"github.com/Tnze/go-mc/bot/basic" "github.com/Tnze/go-mc/bot/basic"
@ -41,9 +41,9 @@ func (w *World) onPlayerSpawn(pk.Packet) error {
func (w *World) handleLevelChunkWithLightPacket(packet pk.Packet) error { func (w *World) handleLevelChunkWithLightPacket(packet pk.Packet) error {
var pos level.ChunkPos var pos level.ChunkPos
_, currentDimType := w.c.Registries.DimensionType.Find(w.p.DimensionType) currentDimType := w.c.Registries.DimensionType.FindByID(w.p.DimensionType)
if currentDimType == nil { if currentDimType == nil {
return errors.New("dimension type " + w.p.DimensionType + " not found") return fmt.Errorf("dimension type %d not found", w.p.DimensionType)
} }
chunk := level.EmptyChunk(int(currentDimType.Height) / 16) chunk := level.EmptyChunk(int(currentDimType.Height) / 16)
if err := packet.Scan(&pos, chunk); err != nil { if err := packet.Scan(&pos, chunk); err != nil {