-
Notifications
You must be signed in to change notification settings - Fork 62
1.14 protocol support (477) #132
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Current status: crashes soon after login, thread 'main' panicked at 'Err: IOError(Custom { kind: UnexpectedEof, error: StringError("failed to fill whole buffer") })', src/server/mod.rs:441:33 |
thread '' panicked at 'unrecognized recipe type: minecraft:acacia_fence_gate', src/protocol/packet.rs:2504:18 |
thread '' panicked at 'unrecognized recipe type: minecraft:sandstone_stairs', src/protocol/packet.rs:2504:18 https://wiki.vg/Pre-release_protocol#Declare_Recipes adds minecraft: prefix to recipe types, but doesn't mention minecraft:acacia_fence_gate or minecraft:sandstone_stairs recipe types. Packet structure changed, identifier is now after type instead of before. |
Fixed, now a new type: thread '' panicked at 'unrecognized recipe type: stonecutting', src/protocol/packet.rs:2531:18 minecraft:stonecutting;minecraft:nether_brick_slab_from_nether_bricks_stonecutting^@^A^Aâ^A^A^@^A<81>^A^B^@^Yminecraft:crafting_shaped^Tminecraft:bone_block... '\x00\x01\x01\xe2\x01\x01\x00\x01\x81\x01\x02\x00\x19' |
Smelting, blasting, smoking, and campfire_cooking all have same group/ingredient/result/experience/cooking time data, but does stonecutting? Appears not: about to parse id=5a, dir=Clientbound state=Play data/minecraft/recipes has some insight, diorite_stairs.json: {
"type": "minecraft:crafting_shaped",
"pattern": [
"# ",
"## ",
"###"
],
"key": {
"#": {
"item": "minecraft:diorite"
}
},
"result": {
"item": "minecraft:diorite_stairs",
"count": 4
}
} vs diorite_stairs_from_diorite_stonecutting.json: {
"type": "minecraft:stonecutting",
"ingredient": {
"item": "minecraft:diorite"
},
"result": "minecraft:diorite_stairs",
"count": 1
} and https://minecraft.gamepedia.com/Recipe#minecraft:stonecutting explains - count is required (and shows experience and cookingtime are omitted) |
Same crash, need to track down invalid UTF-8 string: recipe id="minecraft:sandstone_stairs", ty="crafting_shaped", namespace="minecraft:" |
…a better error reporting
thread '' panicked at 'called This decodes to 'inecraft:crafting_shaped\x14minecraft:bone_block\x03\x03\x00\x01\x01\x86\x05\x01\x00\x01\x01\x86\x05\x01\x00\x01\x01\x86\x05\x01\x00\x01\x01\x86\x05\x01\x00\x01\x01\x86\x05\x01\x00\x01\x01\x86\x05\x01\x00\x01\x01\x86\x05\x01\x00\x01\x01\x86\x05\x01\x00\x01\x01\x86\x05\x01\x00\x01\xf9\x02\x01\x00\x19m' trailing end of: minecraft:stonecutting;minecraft:nether_brick_slab_from_nether_bricks_stonecutting^@^A^Aâ^A^A^@^A<81>^A^B^@^Yminecraft:crafting_shaped^Tminecraft:bone_block 'm' = 109, not a length |
thread '' panicked at 'bad packet id 0x40 in Clientbound Play', src/protocol/versions/v1_14.rs:1:1 |
…ViewPosition, UpdateViewDistance
about to parse id=3, dir=Clientbound state=Play https://wiki.vg/Pre-release_protocol#Entity_Metadata_Format src/types/metadata.rs read_from113 |
Finally see the world: but crashes soon after: packet = Some(EntityLookAndMove_i16(EntityLookAndMove_i16 { entity_id: 2635, delta_x: -136, delta_y: 287, delta_z: -553, yaw: 118, pitch: 0, on_ground: false })) 0x51 Sound Effect didn't change according to https://wiki.vg/index.php?title=Pre-release_protocol&oldid=14723, why is it crashing here? |
std::io::Read read_to_string() [1] reports this uninformative error: thread 'main' panicked at 'Err: IOError(Custom { kind: InvalidData, error: StringError("stream did not contain valid UTF-8") })', src/server/mod.rs:442:33 Instead of read_to_string(), use read_to_end() to read into a buffer, then convert using String::from_utf8() and unwrap it. This gives a better error message when UTF-8 fails to decode: thread '' panicked at 'called Result::unwrap() on an Err value: FromUtf8Error { bytes: [105, 110, 101, 99, 114, 97, 102, 116, 58, 99, 114, 97, 102, 116, 105, 110, 103, 95, 115, 104, 97, 112, 101, 100, 20, 109, 105, 110, 101, 99, 114, 97, 102, 116, 58, 98, 111, 110, 101, 95, 98, 108, 111, 99, 107, 3, 3, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 249, 2, 1, 0, 25, 109], error: Utf8Error { valid_up_to: 50, error_len: Some(1) } }', src/libcore/result.rs:1009:5 which is helpful for tracking down protocol errors, such as updating to a new protocol (developed for GH-132 / GH-72). [1] https://doc.rust-lang.org/nightly/std/io/trait.Read.html#method.read_to_string [2] https://doc.rust-lang.org/std/string/struct.String.html#method.from_utf8
Updated readme so it is not missed, but still probably a ways to go. Need to track down what is going on with failing to read the EntitySoundEffect packet (what are the 11 bytes left?), maybe the error is elsewhere? |
0x51 should be SoundEffect: https://wiki.vg/Protocol#Sound_Effect, not EntitySoundEffect. 0x50 is EntitySoundEffect, documentation for 1.14: https://wiki.vg/Pre-release_protocol#Entity_Sound_Effect |
No new assets yet since 1.13+ is a big change from 1.12.x: #71 1.13/1.14 assets |
Adds 1.14 (477) protocol support, based on: https://wiki.vg/index.php?title=Pre-release_protocol&oldid=14723 * New packets: SetDifficulty, LockDifficulty, UpdateJigsawBlock, UpdateViewPosition, UpdateViewDistance * New metadata: Optional VarInt (17) and Pose (18) * Add new join game variant with view distance, without difficulty * Add new server difficulty variant, with locked boolean * Implement recipe parsing changes, add stonecutting recipe type
Adds 1.14 (477) protocol support, based on: https://wiki.vg/index.php?title=Pre-release_protocol&oldid=14723 * New packets: SetDifficulty, LockDifficulty, UpdateJigsawBlock, UpdateViewPosition, UpdateViewDistance * New metadata: Optional VarInt (17) and Pose (18) * Add new join game variant with view distance, without difficulty * Add new server difficulty variant, with locked boolean * Implement recipe parsing changes, add stonecutting recipe type
std::io::Read read_to_string() [1] reports this uninformative error: thread 'main' panicked at 'Err: IOError(Custom { kind: InvalidData, error: StringError("stream did not contain valid UTF-8") })', src/server/mod.rs:442:33 Instead of read_to_string(), use read_to_end() to read into a buffer, then convert using String::from_utf8() and unwrap it. This gives a better error message when UTF-8 fails to decode: thread '' panicked at 'called Result::unwrap() on an Err value: FromUtf8Error { bytes: [105, 110, 101, 99, 114, 97, 102, 116, 58, 99, 114, 97, 102, 116, 105, 110, 103, 95, 115, 104, 97, 112, 101, 100, 20, 109, 105, 110, 101, 99, 114, 97, 102, 116, 58, 98, 111, 110, 101, 95, 98, 108, 111, 99, 107, 3, 3, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 249, 2, 1, 0, 25, 109], error: Utf8Error { valid_up_to: 50, error_len: Some(1) } }', src/libcore/result.rs:1009:5 which is helpful for tracking down protocol errors, such as updating to a new protocol (developed for GH-132 / GH-72). [1] https://doc.rust-lang.org/nightly/std/io/trait.Read.html#method.read_to_string [2] https://doc.rust-lang.org/std/string/struct.String.html#method.from_utf8
Adds 1.14 (477) protocol support, based on: https://wiki.vg/index.php?title=Pre-release_protocol&oldid=14723 * New packets: SetDifficulty, LockDifficulty, UpdateJigsawBlock, UpdateViewPosition, UpdateViewDistance * New metadata: Optional VarInt (17) and Pose (18) * Add new join game variant with view distance, without difficulty * Add new server difficulty variant, with locked boolean * Implement recipe parsing changes, add stonecutting recipe type
std::io::Read read_to_string() [1] reports this uninformative error: thread 'main' panicked at 'Err: IOError(Custom { kind: InvalidData, error: StringError("stream did not contain valid UTF-8") })', src/server/mod.rs:442:33 Instead of read_to_string(), use read_to_end() to read into a buffer, then convert using String::from_utf8() and unwrap it. This gives a better error message when UTF-8 fails to decode: thread '' panicked at 'called Result::unwrap() on an Err value: FromUtf8Error { bytes: [105, 110, 101, 99, 114, 97, 102, 116, 58, 99, 114, 97, 102, 116, 105, 110, 103, 95, 115, 104, 97, 112, 101, 100, 20, 109, 105, 110, 101, 99, 114, 97, 102, 116, 58, 98, 111, 110, 101, 95, 98, 108, 111, 99, 107, 3, 3, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 249, 2, 1, 0, 25, 109], error: Utf8Error { valid_up_to: 50, error_len: Some(1) } }', src/libcore/result.rs:1009:5 which is helpful for tracking down protocol errors, such as updating to a new protocol (developed for GH-132 / GH-72). [1] https://doc.rust-lang.org/nightly/std/io/trait.Read.html#method.read_to_string [2] https://doc.rust-lang.org/std/string/struct.String.html#method.from_utf8
Adds 1.14 (477) protocol support, based on: https://wiki.vg/index.php?title=Pre-release_protocol&oldid=14723 * New packets: SetDifficulty, LockDifficulty, UpdateJigsawBlock, UpdateViewPosition, UpdateViewDistance * New metadata: Optional VarInt (17) and Pose (18) * Add new join game variant with view distance, without difficulty * Add new server difficulty variant, with locked boolean * Implement recipe parsing changes, add stonecutting recipe type
std::io::Read read_to_string() [1] reports this uninformative error: thread 'main' panicked at 'Err: IOError(Custom { kind: InvalidData, error: StringError("stream did not contain valid UTF-8") })', src/server/mod.rs:442:33 Instead of read_to_string(), use read_to_end() to read into a buffer, then convert using String::from_utf8() and unwrap it. This gives a better error message when UTF-8 fails to decode: thread '' panicked at 'called Result::unwrap() on an Err value: FromUtf8Error { bytes: [105, 110, 101, 99, 114, 97, 102, 116, 58, 99, 114, 97, 102, 116, 105, 110, 103, 95, 115, 104, 97, 112, 101, 100, 20, 109, 105, 110, 101, 99, 114, 97, 102, 116, 58, 98, 111, 110, 101, 95, 98, 108, 111, 99, 107, 3, 3, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 249, 2, 1, 0, 25, 109], error: Utf8Error { valid_up_to: 50, error_len: Some(1) } }', src/libcore/result.rs:1009:5 which is helpful for tracking down protocol errors, such as updating to a new protocol (developed for GH-132 / GH-72). [1] https://doc.rust-lang.org/nightly/std/io/trait.Read.html#method.read_to_string [2] https://doc.rust-lang.org/std/string/struct.String.html#method.from_utf8
Adds 1.14 (477) protocol support, based on: https://wiki.vg/index.php?title=Pre-release_protocol&oldid=14723 * New packets: SetDifficulty, LockDifficulty, UpdateJigsawBlock, UpdateViewPosition, UpdateViewDistance * New metadata: Optional VarInt (17) and Pose (18) * Add new join game variant with view distance, without difficulty * Add new server difficulty variant, with locked boolean * Implement recipe parsing changes, add stonecutting recipe type
std::io::Read read_to_string() [1] reports this uninformative error: thread 'main' panicked at 'Err: IOError(Custom { kind: InvalidData, error: StringError("stream did not contain valid UTF-8") })', src/server/mod.rs:442:33 Instead of read_to_string(), use read_to_end() to read into a buffer, then convert using String::from_utf8() and unwrap it. This gives a better error message when UTF-8 fails to decode: thread '' panicked at 'called Result::unwrap() on an Err value: FromUtf8Error { bytes: [105, 110, 101, 99, 114, 97, 102, 116, 58, 99, 114, 97, 102, 116, 105, 110, 103, 95, 115, 104, 97, 112, 101, 100, 20, 109, 105, 110, 101, 99, 114, 97, 102, 116, 58, 98, 111, 110, 101, 95, 98, 108, 111, 99, 107, 3, 3, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 1, 134, 5, 1, 0, 1, 249, 2, 1, 0, 25, 109], error: Utf8Error { valid_up_to: 50, error_len: Some(1) } }', src/libcore/result.rs:1009:5 which is helpful for tracking down protocol errors, such as updating to a new protocol (developed for GH-132 / GH-72). [1] https://doc.rust-lang.org/nightly/std/io/trait.Read.html#method.read_to_string [2] https://doc.rust-lang.org/std/string/struct.String.html#method.from_utf8
Adds 1.14 (477) protocol support, based on: https://wiki.vg/index.php?title=Pre-release_protocol&oldid=14723 * New packets: SetDifficulty, LockDifficulty, UpdateJigsawBlock, UpdateViewPosition, UpdateViewDistance * New metadata: Optional VarInt (17) and Pose (18) * Add new join game variant with view distance, without difficulty * Add new server difficulty variant, with locked boolean * Implement recipe parsing changes, add stonecutting recipe type
Adds 1.14 (477) protocol support, based on: https://wiki.vg/index.php?title=Pre-release_protocol&oldid=14723 * New packets: SetDifficulty, LockDifficulty, UpdateJigsawBlock, UpdateViewPosition, UpdateViewDistance * New metadata: Optional VarInt (17) and Pose (18) * Add new join game variant with view distance, without difficulty * Add new server difficulty variant, with locked boolean * Implement recipe parsing changes, add stonecutting recipe type
https://minecraft.gamepedia.com/Java_Edition_1.14 released April 23, 2019
Adds #72 (enhances #18)
1.14 is protocol 477
https://wiki.vg/Protocol
https://wiki.vg/Pre-release_protocol
https://wiki.vg/index.php?title=Pre-release_protocol&oldid=14723#Entity_Metadata_Format