diff --git a/go.mod b/go.mod index 1898dfa49..b634c1190 100644 --- a/go.mod +++ b/go.mod @@ -8,11 +8,11 @@ require ( github.com/brentp/intintmap v0.0.0-20190211203843-30dc0ade9af9 github.com/cespare/xxhash/v2 v2.3.0 github.com/df-mc/goleveldb v1.1.9 - github.com/df-mc/worldupgrader v1.0.17 + github.com/df-mc/worldupgrader v1.0.18 github.com/go-gl/mathgl v1.1.0 github.com/google/uuid v1.6.0 github.com/pelletier/go-toml v1.9.5 - github.com/sandertv/gophertunnel v1.41.1 + github.com/sandertv/gophertunnel v1.42.0 github.com/segmentio/fasthash v1.0.3 golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c golang.org/x/mod v0.21.0 diff --git a/go.sum b/go.sum index eb53aa30e..2d531cf1f 100644 --- a/go.sum +++ b/go.sum @@ -7,8 +7,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/df-mc/goleveldb v1.1.9 h1:ihdosZyy5jkQKrxucTQmN90jq/2lUwQnJZjIYIC/9YU= github.com/df-mc/goleveldb v1.1.9/go.mod h1:+NHCup03Sci5q84APIA21z3iPZCuk6m6ABtg4nANCSk= -github.com/df-mc/worldupgrader v1.0.17 h1:9NRTihn8/KFL+ajUHDc+KikZcsrhoxR/Tq2ekA5ZR7k= -github.com/df-mc/worldupgrader v1.0.17/go.mod h1:tsSOLTRm9mpG7VHvYpAjjZrkRHWmSbKZAm9bOLNnlDk= +github.com/df-mc/worldupgrader v1.0.18 h1:Q34X9ID/hGuDyj9oiq+dpyjOaJdNxhVmVUepf/EPYDA= +github.com/df-mc/worldupgrader v1.0.18/go.mod h1:tsSOLTRm9mpG7VHvYpAjjZrkRHWmSbKZAm9bOLNnlDk= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/go-gl/mathgl v1.1.0 h1:0lzZ+rntPX3/oGrDzYGdowSLC2ky8Osirvf5uAwfIEA= github.com/go-gl/mathgl v1.1.0/go.mod h1:yhpkQzEiH9yPyxDUGzkmgScbaBVlhC06qodikEM0ZwQ= @@ -41,8 +41,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sandertv/go-raknet v1.14.2 h1:UZLyHn5yQU2Dq2GVq/LlxwAUikaq4q4AA1rl/Pf3AXQ= github.com/sandertv/go-raknet v1.14.2/go.mod h1:/yysjwfCXm2+2OY8mBazLzcxJ3irnylKCyG3FLgUPVU= -github.com/sandertv/gophertunnel v1.41.1 h1:6JoDLzw9CGA3+KVSBUxnectmpaEdH2JwiShCM5dA+Cg= -github.com/sandertv/gophertunnel v1.41.1/go.mod h1:krvLSeRUNQ2iEYJNEgzrKtWO8W5ybZxN5lFfSCkHoNk= +github.com/sandertv/gophertunnel v1.42.0 h1:qOc/Dht/Kvh67uxJ6sgkL0oP+jhuXkVwk7KEf3d1p9M= +github.com/sandertv/gophertunnel v1.42.0/go.mod h1:krvLSeRUNQ2iEYJNEgzrKtWO8W5ybZxN5lFfSCkHoNk= github.com/segmentio/fasthash v1.0.3 h1:EI9+KE1EwvMLBWwjpRDc+fEM+prwxDYbslddQGtrmhM= github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= diff --git a/server/block/skull.go b/server/block/skull.go index b6e8a4763..97cbfe215 100644 --- a/server/block/skull.go +++ b/server/block/skull.go @@ -83,12 +83,16 @@ func (s Skull) BreakInfo() BreakInfo { // EncodeItem ... func (s Skull) EncodeItem() (name string, meta int16) { - return "minecraft:skull", int16(s.Type.Uint8()) + return "minecraft:" + s.Type.String(), 0 } // DecodeNBT ... func (s Skull) DecodeNBT(data map[string]interface{}) interface{} { - s.Type = SkullType{skull(nbtconv.Uint8(data, "SkullType"))} + if t := skull(nbtconv.Uint8(data, "SkullType")); t != 255 { + // Used to upgrade pre-1.21.40 skulls after their flattening. Any skull placed since will set + // SkullType to 255. + s.Type = SkullType{t} + } s.Attach.o = cube.OrientationFromYaw(float64(nbtconv.Float32(data, "Rotation"))) if s.Attach.facing >= 0 { s.Attach.hanging = true @@ -98,15 +102,15 @@ func (s Skull) DecodeNBT(data map[string]interface{}) interface{} { // EncodeNBT ... func (s Skull) EncodeNBT() map[string]interface{} { - return map[string]interface{}{"id": "Skull", "SkullType": s.Type.Uint8(), "Rotation": float32(s.Attach.o.Yaw())} + return map[string]interface{}{"id": "Skull", "SkullType": uint8(255), "Rotation": float32(s.Attach.o.Yaw())} } // EncodeBlock ... func (s Skull) EncodeBlock() (string, map[string]interface{}) { if s.Attach.hanging { - return "minecraft:skull", map[string]interface{}{"facing_direction": int32(s.Attach.facing) + 2} + return "minecraft:" + s.Type.String(), map[string]interface{}{"facing_direction": int32(s.Attach.facing) + 2} } - return "minecraft:skull", map[string]interface{}{"facing_direction": int32(1)} + return "minecraft:" + s.Type.String(), map[string]interface{}{"facing_direction": int32(1)} } // allSkulls ... diff --git a/server/block/skull_type.go b/server/block/skull_type.go index da466ba50..7b035cefe 100644 --- a/server/block/skull_type.go +++ b/server/block/skull_type.go @@ -77,19 +77,19 @@ func (s skull) Name() string { func (s skull) String() string { switch s { case 0: - return "skeleton" + return "skeleton_skull" case 1: - return "wither_skeleton" + return "wither_skeleton_skull" case 2: - return "zombie" + return "zombie_head" case 3: - return "player" + return "player_head" case 4: - return "creeper" + return "creeper_head" case 5: - return "dragon" + return "dragon_head" case 6: - return "piglin" + return "piglin_head" } panic("unknown skull type") } diff --git a/server/block/wood.go b/server/block/wood.go index 4f6bd6568..f423c1529 100644 --- a/server/block/wood.go +++ b/server/block/wood.go @@ -86,11 +86,6 @@ func (w Wood) EncodeItem() (name string, meta int16) { // EncodeBlock ... func (w Wood) EncodeBlock() (name string, properties map[string]any) { switch w.Wood { - case OakWood(), SpruceWood(), BirchWood(), JungleWood(), AcaciaWood(), DarkOakWood(): - if w.Stripped { - return "minecraft:stripped_" + w.Wood.String() + "_wood", map[string]any{"pillar_axis": w.Axis.String()} - } - return "minecraft:" + w.Wood.String() + "_wood", map[string]any{"pillar_axis": w.Axis.String()} case CrimsonWood(), WarpedWood(): if w.Stripped { return "minecraft:stripped_" + w.Wood.String() + "_hyphae", map[string]any{"pillar_axis": w.Axis.String()} @@ -100,7 +95,7 @@ func (w Wood) EncodeBlock() (name string, properties map[string]any) { if w.Stripped { return "minecraft:stripped_" + w.Wood.String() + "_wood", map[string]any{"pillar_axis": w.Axis.String()} } - return "minecraft:" + w.Wood.String() + "_wood", map[string]any{"pillar_axis": w.Axis.String(), "stripped_bit": uint8(0)} + return "minecraft:" + w.Wood.String() + "_wood", map[string]any{"pillar_axis": w.Axis.String()} } } diff --git a/server/item/creative/creative_items.nbt b/server/item/creative/creative_items.nbt index afffee8f2..82f3b87f0 100644 Binary files a/server/item/creative/creative_items.nbt and b/server/item/creative/creative_items.nbt differ diff --git a/server/item/recipe/crafting_data.nbt b/server/item/recipe/crafting_data.nbt index f7c038245..72562b025 100644 Binary files a/server/item/recipe/crafting_data.nbt and b/server/item/recipe/crafting_data.nbt differ diff --git a/server/item/recipe/furnace_data.nbt b/server/item/recipe/furnace_data.nbt index e132df16a..165f16c11 100644 Binary files a/server/item/recipe/furnace_data.nbt and b/server/item/recipe/furnace_data.nbt differ diff --git a/server/session/enchantment_texts.go b/server/session/enchantment_texts.go index 671a7e98d..453b4ddfe 100644 --- a/server/session/enchantment_texts.go +++ b/server/session/enchantment_texts.go @@ -4,4 +4,4 @@ package session // enchantNames are names translated to the 'Standard Galactic Alphabet' client-side. The names generally have no meaning // on the vanilla server implementation, so we can sneak some easter eggs in here without anyone noticing. -var enchantNames = []string{"aabstractt", "abimek", "aericio", "aimjel", "alvin0319", "andreas hgk", "atm85", "blackjack200", "cetfu", "cjmustard1452", "cqdetdev", "da pig guy", "daft0175", "dasciam", "deniel world", "didntpot", "eminarican", "endermanbugzjfc", "erkam246", "flonja", "gewinum", "hashim the arab", "hochbaum", "hyper flare mc", "im da real ani", "ipad54", "its zodia x", "ivan craft623", "javier leon9966", "just tal develops", "liatoast", "mmm545", "mohamed587100", "myma qc", "natuyasai natuo", "neutronic mc", "nonono697", "provsalt", "restart fu", "riccskn", "robertdudaa", "royal mcpe", "sallypemdas", "sandertv", "sculas", "sqmatheus", "ssaini123456", "t14 raptor", "tadhunt", "theaddonn", "thunder33345", "tristanmorgan", "twisted asylum mc", "unickorn", "unknown ore", "uramnoil", "wqrro", "x natsuri", "x4caa", "xd-pro"} +var enchantNames = []string{"aabstractt", "abimek", "aericio", "aimjel", "alvin0319", "andreas hgk", "atm85", "blackjack200", "cetfu", "cjmustard1452", "cqdetdev", "da pig guy", "daft0175", "dasciam", "deniel world", "didntpot", "eminarican", "endermanbugzjfc", "erkam246", "ethaniccc", "flonja", "gewinum", "hashim the arab", "hochbaum", "hyper flare mc", "im da real ani", "ipad54", "its zodia x", "ivan craft623", "javier leon9966", "just tal develops", "liatoast", "mmm545", "mohamed587100", "myma qc", "natuyasai natuo", "neutronic mc", "nonono697", "provsalt", "restart fu", "riccskn", "robertdudaa", "royal mcpe", "sallypemdas", "sandertv", "sculas", "sqmatheus", "ssaini123456", "t14 raptor", "tadhunt", "theaddonn", "thunder33345", "tristanmorgan", "twisted asylum mc", "unickorn", "unknown ore", "uramnoil", "wqrro", "x natsuri", "x4caa", "xd-pro"} diff --git a/server/world/block_states.nbt b/server/world/block_states.nbt index a5d93eb5f..ff4d75701 100644 Binary files a/server/world/block_states.nbt and b/server/world/block_states.nbt differ diff --git a/server/world/item_runtime_ids.nbt b/server/world/item_runtime_ids.nbt index 4c91368ed..e1eb29e84 100644 Binary files a/server/world/item_runtime_ids.nbt and b/server/world/item_runtime_ids.nbt differ diff --git a/server/world/mcdb/db.go b/server/world/mcdb/db.go index 93f03ee71..28e7b8e36 100644 --- a/server/world/mcdb/db.go +++ b/server/world/mcdb/db.go @@ -136,7 +136,7 @@ func (db *DB) LoadColumn(pos world.ChunkPos, dim world.Dimension) (*chunk.Column return col, nil } -const chunkVersion = 40 +const chunkVersion = 41 func (db *DB) column(k dbKey) (*chunk.Column, error) { var cdata chunk.SerialisedData