fix dimension registry handling
This commit is contained in:
@ -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),
|
||||||
|
@ -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 {
|
||||||
|
Reference in New Issue
Block a user