From 195945e4ca1715fecc91a8d6d0b3cf108d27b72d Mon Sep 17 00:00:00 2001 From: Tnze Date: Wed, 5 Apr 2023 18:06:29 +0800 Subject: [PATCH] Fix server for 1.19.4 --- net/packet/types.go | 15 ++------------- registry/chattype.go | 8 -------- registry/codec.go | 43 ++++++++++++++++++++++++++++++++++++++++++- registry/dimension.go | 25 ------------------------- 4 files changed, 44 insertions(+), 47 deletions(-) delete mode 100644 registry/chattype.go delete mode 100644 registry/dimension.go diff --git a/net/packet/types.go b/net/packet/types.go index 61839ae..9032254 100644 --- a/net/packet/types.go +++ b/net/packet/types.go @@ -410,20 +410,9 @@ func (p *Position) ReadFrom(r io.Reader) (n int64, err error) { n += nn x := int(v >> 38) - y := int(v & 0xFFF) + y := int(v << 52 >> 52) z := int(v << 26 >> 38) - // 处理负数 - if x >= 1<<25 { - x -= 1 << 26 - } - if y >= 1<<11 { - y -= 1 << 12 - } - if z >= 1<<25 { - z -= 1 << 26 - } - p.X, p.Y, p.Z = x, y, z return } @@ -486,7 +475,7 @@ func NBT(v interface{}, optionalTagName ...string) Field { } type nbtField struct { - V interface{} + V any FieldName string } diff --git a/registry/chattype.go b/registry/chattype.go deleted file mode 100644 index 765eb26..0000000 --- a/registry/chattype.go +++ /dev/null @@ -1,8 +0,0 @@ -package registry - -import "github.com/Tnze/go-mc/chat" - -type ChatType struct { - Chat chat.Decoration `nbt:"chat"` - Narration chat.Decoration `nbt:"narration"` -} diff --git a/registry/codec.go b/registry/codec.go index afb90cb..f1b880b 100644 --- a/registry/codec.go +++ b/registry/codec.go @@ -1,9 +1,50 @@ package registry -import "github.com/Tnze/go-mc/nbt" +import ( + "github.com/Tnze/go-mc/chat" + "github.com/Tnze/go-mc/nbt" +) type NetworkCodec struct { ChatType Registry[ChatType] `nbt:"minecraft:chat_type"` + DamageType Registry[DamageType] `nbt:"minecraft:damage_type"` DimensionType Registry[Dimension] `nbt:"minecraft:dimension_type"` + TrimMaterial Registry[nbt.RawMessage] `nbt:"minecraft:trim_material"` + TrimPattern Registry[nbt.RawMessage] `nbt:"minecraft:trim_pattern"` WorldGenBiome Registry[nbt.RawMessage] `nbt:"minecraft:worldgen/biome"` } + +type ChatType struct { + Chat chat.Decoration `nbt:"chat"` + Narration chat.Decoration `nbt:"narration"` +} + +type DamageType struct { + MessageID string `nbt:"message_id"` + Scaling string `nbt:"scaling"` + Exhaustion float32 `nbt:"exhaustion"` + Effects string `nbt:"effects,omitempty"` + DeathMessageType string `nbt:"death_message_type,omitempty"` +} + +type Dimension struct { + FixedTime int64 `nbt:"fixed_time,omitempty"` + HasSkylight bool `nbt:"has_skylight"` + HasCeiling bool `nbt:"has_ceiling"` + Ultrawarm bool `nbt:"ultrawarm"` + Natural bool `nbt:"natural"` + CoordinateScale float64 `nbt:"coordinate_scale"` + BedWorks bool `nbt:"bed_works"` + RespawnAnchorWorks byte `nbt:"respawn_anchor_works"` + MinY int32 `nbt:"min_y"` + Height int32 `nbt:"height"` + LogicalHeight int32 `nbt:"logical_height"` + InfiniteBurn string `nbt:"infiniburn"` + Effects string `nbt:"effects"` + AmbientLight float64 `nbt:"ambient_light"` + + PiglinSafe byte `nbt:"piglin_safe"` + HasRaids byte `nbt:"has_raids"` + MonsterSpawnLightLevel nbt.RawMessage `nbt:"monster_spawn_light_level"` // Tag_Int or {type:"minecraft:uniform", value:{min_inclusive: Tag_Int, max_inclusive: Tag_Int}} + MonsterSpawnBlockLightLimit int32 `nbt:"monster_spawn_block_light_limit"` +} diff --git a/registry/dimension.go b/registry/dimension.go deleted file mode 100644 index 9a8f653..0000000 --- a/registry/dimension.go +++ /dev/null @@ -1,25 +0,0 @@ -package registry - -import "github.com/Tnze/go-mc/nbt" - -type Dimension struct { - FixedTime int64 `nbt:"fixed_time,omitempty"` - HasSkylight bool `nbt:"has_skylight"` - HasCeiling bool `nbt:"has_ceiling"` - Ultrawarm bool `nbt:"ultrawarm"` - Natural bool `nbt:"natural"` - CoordinateScale float64 `nbt:"coordinate_scale"` - BedWorks bool `nbt:"bed_works"` - RespawnAnchorWorks byte `nbt:"respawn_anchor_works"` - MinY int32 `nbt:"min_y"` - Height int32 `nbt:"height"` - LogicalHeight int32 `nbt:"logical_height"` - InfiniteBurn string `nbt:"infiniburn"` - Effects string `nbt:"effects"` - AmbientLight float64 `nbt:"ambient_light"` - - PiglinSafe byte `nbt:"piglin_safe"` - HasRaids byte `nbt:"has_raids"` - MonsterSpawnLightLevel nbt.RawMessage `nbt:"monster_spawn_light_level"` // Tag_Int or {type:"minecraft:uniform", value:{min_inclusive: Tag_Int, max_inclusive: Tag_Int}} - MonsterSpawnBlockLightLimit int32 `nbt:"monster_spawn_block_light_limit"` -}