PrismarineJS / mineflayer

Create Minecraft bots with a powerful, stable, and high level JavaScript API.
https://prismarinejs.github.io/mineflayer/
MIT License
4.86k stars 895 forks source link

Bots break on bungee servers - read error for undefined SkyLight #651

Closed FantomHD closed 6 years ago

FantomHD commented 6 years ago

Hey guys,

So I'm having the same problem it looks like a couple of people have had in the past... but I can't seem to fix it or find a clear answer.

To start with, the bot wont even connect to bungee hubs (on any version) without the change found in #462 But once I make that change, it will connect and work fine on the hub.

But, when I try to connect the bot to one of the sub servers, the bot throws an error "Read error for skyLight: undefined". Whole error thrown here: https://pastebin.com/Nsy0SMGX I've looked some more into this and it seemed at first like this was supposed to be a 1.8 only problem, as in one of the issues someone said it was fixed in 1.9, but it's obviously not fixed for me (I'm on 1.9.4, have tried different 1.9 versions, and it times out before even throwing this error on some versions above). The problem is more closely outlined in #565 and some other closely connected issues, but there hasn't been any further talk about it since.

The repo owner seems to be a little inactive in this project now, but if anyone else has any insight it would be great. Thanks for any help.

Legoburner73 commented 6 years ago

I am experiencing the same issue, but with 2b2t.org. I have a feeling that this is an issue with the server requesting the client go to another server. On 2b2t.org, You have the queue and the main server. You always go to the QUEUE before the MAIN server. I need this for a project involving fight bots. If anyone knows how to fix this please tell me.

rom1504 commented 6 years ago

Look at the packets sent and received in your situation using DEBUG = "minecraft-protocol" (see the doc) then check bungee code and compare. Then adapt node-minecraft-protocol code to also works with bungee.

On Fri, Apr 6, 2018, 14:24 Legoburner73 notifications@github.com wrote:

I am experiencing the same issue, but with 2b2t.org. I have a feeling that this is an issue with the server requesting the client go to another server. On 2b2t.org, You have the queue and the main server. You always go to the QUEUE before the MAIN server. I need this for a project involving fight bots. If anyone knows how to fix this please tell me.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/PrismarineJS/mineflayer/issues/651#issuecomment-379237135, or mute the thread https://github.com/notifications/unsubscribe-auth/ACPN_r50dmIM-kKqHxzfef296MUjMUN1ks5tl15OgaJpZM4Sn9HU .

unnown commented 6 years ago

i was having the same issue with mineflayer, weirdly enough it works fine when just using the protocol lib (and defining 1.12)

server: play.riftmc.org

plexigras commented 6 years ago

@unnown that is probably caused by the server not telling you the correct version.

unnown commented 6 years ago

i would agree, but setting mineflayer to 1.12 still causes this bug

so protocol works fine with setting it to 1.12 on this server (you Have to set it) mineflayer doesn't work, and comes up with this error

unnown commented 6 years ago

deserializer

map_chunk { x: 0, z: 0, groundUp: true, bitMap: 40704, chunkData: <Buffer 04 02 00 10 80 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... >, blockEntities: [ { type: 'compound', name: '', value: [Object] }, { type: 'compound', name: '', value: [Object] }, { type: 'compound', name: '', value: [Object] }, { type: 'compound', name: '', value: [Object] }, { type: 'compound', name: '', value: [Object] } ] } { size: 28232, name: 'map_chunk', state: 'play' }

{ PartialReadError: Deserialization error for play.toClient : Read error for skyLight : undefined at PartialReadError.ExtendableError (node_modules\protodef\src\utils.js:75:11) at PartialReadError (node_modules\protodef\src\utils.js:81:5) at ProtoDef.readBuffer (node_modules\protodef\src\datatypes\utils.js:150:42) at ProtoDef.read (node_modules\protodef\src\protodef.js:127:29) at tryDoc (node_modules\protodef\src\datatypes\structures.js:46:32) at tryCatch (node_modules\protodef\src\utils.js:63:16) at tryDoc (node_modules\protodef\src\utils.js:67:10) at typeArgs.forEach (node_modules\protodef\src\datatypes\structures.js:45:5) at Array.forEach (native) at ProtoDef.readContainer (node_modules\protodef\src\datatypes\structures.js:44:12) name: 'PartialReadError', message: 'Deserialization error for play.toClient : Read error for skyLight : undefined', partialReadError: true, field: 'play.toClient' }

Legoburner73 commented 6 years ago

Oh look! It's fixed now! What i did to fix it: install debug module...

rom1504 commented 6 years ago

now fixed