mirror of
https://github.com/unmojang/node-minecraft-protocol.git
synced 2025-09-29 14:13:45 -04:00
Merge pull request #52 from onddo/some-proto-fixes
Some Minecraft Protocol fixes
This commit is contained in:
commit
7ec4cfc2bf
11
index.js
11
index.js
@ -8,6 +8,7 @@ var EventEmitter = require('events').EventEmitter
|
|||||||
, protocol = require('./lib/protocol')
|
, protocol = require('./lib/protocol')
|
||||||
, Client = require('./lib/client')
|
, Client = require('./lib/client')
|
||||||
, Server = require('./lib/server')
|
, Server = require('./lib/server')
|
||||||
|
, debug = protocol.debug
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
createClient: createClient,
|
createClient: createClient,
|
||||||
@ -261,12 +262,12 @@ function createClient(options) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var hash = crypto.createHash('sha1');
|
|
||||||
hash.update(packet.serverId);
|
|
||||||
|
|
||||||
if (haveCredentials) {
|
if (haveCredentials) {
|
||||||
joinServerRequest(onJoinServerResponse);
|
joinServerRequest(onJoinServerResponse);
|
||||||
} else {
|
} else {
|
||||||
|
if (packet.serverId != '-') {
|
||||||
|
debug('This server appears to be an online server and you are providing no password, the authentication will probably fail');
|
||||||
|
}
|
||||||
sendEncryptionKeyResponse();
|
sendEncryptionKeyResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,6 +281,8 @@ function createClient(options) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function joinServerRequest(cb) {
|
function joinServerRequest(cb) {
|
||||||
|
var hash = crypto.createHash('sha1');
|
||||||
|
hash.update(packet.serverId);
|
||||||
hash.update(sharedSecret);
|
hash.update(sharedSecret);
|
||||||
hash.update(packet.publicKey);
|
hash.update(packet.publicKey);
|
||||||
|
|
||||||
@ -363,7 +366,7 @@ function mcHexDigest(hash) {
|
|||||||
newByte = ~value & 0xff;
|
newByte = ~value & 0xff;
|
||||||
if (carry) {
|
if (carry) {
|
||||||
carry = newByte === 0xff;
|
carry = newByte === 0xff;
|
||||||
buffer.writeUInt8(newByte + 1, i);
|
buffer.writeUInt8((newByte + 1) & 0xff, i);
|
||||||
} else {
|
} else {
|
||||||
buffer.writeUInt8(newByte, i);
|
buffer.writeUInt8(newByte, i);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -776,16 +776,22 @@ function readEntityMetadata(buffer, offset) {
|
|||||||
key = item & 0x1f;
|
key = item & 0x1f;
|
||||||
type = item >> 5;
|
type = item >> 5;
|
||||||
typeName = entityMetadataTypes[type];
|
typeName = entityMetadataTypes[type];
|
||||||
|
debug("Reading entity metadata type " + type + " (" + ( typeName || "unknown" ) + ")");
|
||||||
|
if (!typeName) {
|
||||||
|
return {
|
||||||
|
error: new Error("unrecognized entity metadata type " + type)
|
||||||
|
}
|
||||||
|
}
|
||||||
dataType = types[typeName];
|
dataType = types[typeName];
|
||||||
if (!dataType) {
|
if (!dataType) {
|
||||||
return {
|
return {
|
||||||
error: new Error("unrecognized entity metadata type " + type)
|
error: new Error("unrecognized entity metadata type name " + typeName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
reader = dataType[0];
|
reader = dataType[0];
|
||||||
if (!reader) {
|
if (!reader) {
|
||||||
return {
|
return {
|
||||||
error: new Error("missing reader for entity metadata type " + type)
|
error: new Error("missing reader for entity metadata type name " + typeName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
results = reader(buffer, cursor);
|
results = reader(buffer, cursor);
|
||||||
@ -1088,6 +1094,7 @@ function readSlot(buffer, offset) {
|
|||||||
var nbtDataSize = buffer.readInt16BE(cursor + 3);
|
var nbtDataSize = buffer.readInt16BE(cursor + 3);
|
||||||
if (nbtDataSize === -1) nbtDataSize = 0;
|
if (nbtDataSize === -1) nbtDataSize = 0;
|
||||||
var nbtDataEnd = cursorEnd + nbtDataSize;
|
var nbtDataEnd = cursorEnd + nbtDataSize;
|
||||||
|
if (nbtDataEnd > buffer.length) return null;
|
||||||
var nbtData = buffer.slice(cursorEnd, nbtDataEnd);
|
var nbtData = buffer.slice(cursorEnd, nbtDataEnd);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user