mirror of
https://github.com/PrismarineJS/node-minecraft-protocol.git
synced 2025-05-06 03:11:05 -04:00
commit
63dea28bab
8 changed files with 32 additions and 12 deletions
|
@ -56,10 +56,12 @@ server.on('listening', function() {
|
|||
});
|
||||
|
||||
function broadcast(message, exclude, username) {
|
||||
var client, translate, username;
|
||||
var client, translate;
|
||||
translate = username ? 'chat.type.announcement' : 'chat.type.text';
|
||||
username = username || 'Server';
|
||||
for (var clientId in server.clients) {
|
||||
if (!server.clients.hasOwnProperty(clientId)) continue;
|
||||
|
||||
client = server.clients[clientId];
|
||||
if (client !== exclude) {
|
||||
var msg = {
|
||||
|
|
1
index.js
1
index.js
|
@ -9,6 +9,7 @@ var EventEmitter = require('events').EventEmitter
|
|||
, Client = require('./lib/client')
|
||||
, Server = require('./lib/server')
|
||||
, debug = protocol.debug
|
||||
;
|
||||
|
||||
module.exports = {
|
||||
createClient: createClient,
|
||||
|
|
|
@ -6,6 +6,7 @@ var net = require('net')
|
|||
, createPacketBuffer = protocol.createPacketBuffer
|
||||
, parsePacket = protocol.parsePacket
|
||||
, debug = protocol.debug
|
||||
;
|
||||
|
||||
module.exports = Client;
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
var net = require('net')
|
||||
, Client = require('./client')
|
||||
, protocol = require('./protocol')
|
||||
;
|
||||
|
||||
module.exports = ping;
|
||||
|
||||
|
|
|
@ -605,12 +605,14 @@ var entityMetadataTypes = {
|
|||
// maps string type name to number
|
||||
var entityMetadataTypeBytes = {};
|
||||
for (var n in entityMetadataTypes) {
|
||||
if (!entityMetadataTypes.hasOwnProperty(n)) continue;
|
||||
|
||||
entityMetadataTypeBytes[entityMetadataTypes[n]] = n;
|
||||
}
|
||||
|
||||
function sizeOfEntityMetadata(value) {
|
||||
var size = 1 + value.length;
|
||||
var item, dataType;
|
||||
var item;
|
||||
for (var i = 0; i < value.length; ++i) {
|
||||
item = value[i];
|
||||
size += sizeOf(item.type, item.value);
|
||||
|
@ -636,7 +638,7 @@ function sizeOfObjectData(value) {
|
|||
|
||||
function writeObjectData(value, buffer, offset) {
|
||||
buffer.writeInt32BE(value.intField, offset);
|
||||
if (value.intField === 0) return;
|
||||
if (value.intField === 0) return -1;
|
||||
offset += 4;
|
||||
|
||||
buffer.writeInt16BE(value.velocityX, offset);
|
||||
|
@ -1120,7 +1122,7 @@ function readPropertyArray (buffer, offset) {
|
|||
|
||||
property.elementList = [];
|
||||
for (var j = 0; j < elementListLength ; j++) {
|
||||
property.elementList[j] = {}
|
||||
property.elementList[j] = {};
|
||||
|
||||
results = readUUID(buffer, cursor);
|
||||
if (! results) return null;
|
||||
|
@ -1276,7 +1278,7 @@ function writeSlot(value, buffer, offset) {
|
|||
buffer.writeInt16BE(nbtDataSize, offset + 5);
|
||||
value.nbtData.copy(buffer, offset + 7);
|
||||
return offset + 7 + value.nbtData.length;
|
||||
};
|
||||
}
|
||||
|
||||
function sizeOfString(value) {
|
||||
assert.ok(value.length < STRING_MAX_LENGTH, "string greater than max length");
|
||||
|
@ -1297,7 +1299,7 @@ function writeString(value, buffer, offset) {
|
|||
offset += 2;
|
||||
}
|
||||
return offset;
|
||||
};
|
||||
}
|
||||
|
||||
function sizeOfAscii(value) {
|
||||
return 2 + value.length;
|
||||
|
@ -1312,7 +1314,7 @@ function writeAscii(value, buffer, offset) {
|
|||
offset += 1;
|
||||
}
|
||||
return offset;
|
||||
};
|
||||
}
|
||||
|
||||
function sizeOfByteArray16(value) {
|
||||
assert.ok(Buffer.isBuffer(value), "non buffer passed to ByteArray16Writer");
|
||||
|
@ -1323,7 +1325,7 @@ function writeByteArray16(value, buffer, offset) {
|
|||
buffer.writeInt16BE(value.length, offset);
|
||||
value.copy(buffer, offset + 2);
|
||||
return offset + 2 + value.length;
|
||||
};
|
||||
}
|
||||
|
||||
function writeByte(value, buffer, offset) {
|
||||
buffer.writeInt8(value, offset);
|
||||
|
@ -1338,7 +1340,7 @@ function writeBool(value, buffer, offset) {
|
|||
function writeUByte(value, buffer, offset) {
|
||||
buffer.writeUInt8(value, offset);
|
||||
return offset + 1;
|
||||
};
|
||||
}
|
||||
|
||||
function writeFloat(value, buffer, offset) {
|
||||
buffer.writeFloatBE(value, offset);
|
||||
|
|
|
@ -3,6 +3,7 @@ var net = require('net')
|
|||
, util = require('util')
|
||||
, assert = require('assert')
|
||||
, Client = require('./client')
|
||||
;
|
||||
|
||||
module.exports = Server;
|
||||
|
||||
|
@ -53,6 +54,8 @@ Server.prototype.listen = function(port, host) {
|
|||
Server.prototype.close = function() {
|
||||
var client;
|
||||
for(var clientId in this.clients) {
|
||||
if (!this.clients.hasOwnProperty(clientId)) continue;
|
||||
|
||||
client = this.clients[clientId];
|
||||
client.end('ServerShutdown');
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ var FakeSocket = function() {
|
|||
EventEmitter.call(this);
|
||||
};
|
||||
util.inherits(FakeSocket, EventEmitter);
|
||||
FakeSocket.prototype.write = function(){}
|
||||
FakeSocket.prototype.write = function(){};
|
||||
|
||||
var client = new Client();
|
||||
var socket = new FakeSocket();
|
||||
|
|
14
test/test.js
14
test/test.js
|
@ -14,6 +14,7 @@ var mc = require('../')
|
|||
, MC_SERVER_JAR = process.env.MC_SERVER_JAR
|
||||
, SURVIVE_TIME = 10000
|
||||
, MC_SERVER_PATH = path.join(__dirname, 'server')
|
||||
;
|
||||
|
||||
var defaultServerProps = {
|
||||
'generator-settings': "",
|
||||
|
@ -127,6 +128,8 @@ describe("packets", function() {
|
|||
});
|
||||
var packetId, packetInfo, field;
|
||||
for(packetId in protocol.packets) {
|
||||
if (!protocol.packets.hasOwnProperty(packetId)) continue;
|
||||
|
||||
packetId = parseInt(packetId, 10);
|
||||
packetInfo = protocol.packets[packetId];
|
||||
it("0x" + zfill(parseInt(packetId, 10).toString(16), 2),
|
||||
|
@ -150,7 +153,6 @@ describe("packets", function() {
|
|||
// empty object uses default values
|
||||
var packet = {};
|
||||
packetInfo.forEach(function(field) {
|
||||
var value = field.type;
|
||||
packet[field.name] = values[field.type];
|
||||
});
|
||||
serverClient.once(packetId, function(receivedPacket) {
|
||||
|
@ -169,7 +171,7 @@ describe("packets", function() {
|
|||
packetInfo.forEach(function(field) {
|
||||
assert.deepEqual(p1[field], p2[field]);
|
||||
});
|
||||
var field, cmp;
|
||||
var field;
|
||||
for (field in p1) {
|
||||
assert.ok(field in p2, "field " + field + " missing in p2");
|
||||
}
|
||||
|
@ -187,9 +189,13 @@ describe("client", function() {
|
|||
var props = {};
|
||||
var prop;
|
||||
for (prop in defaultServerProps) {
|
||||
if (!defaultServerProps.hasOwnProperty(prop)) continue;
|
||||
|
||||
props[prop] = defaultServerProps[prop];
|
||||
}
|
||||
for (prop in propOverrides) {
|
||||
if (!propOverrides.hasOwnProperty(prop)) continue;
|
||||
|
||||
props[prop] = propOverrides[prop];
|
||||
}
|
||||
var batch = new Batch();
|
||||
|
@ -197,6 +203,8 @@ describe("client", function() {
|
|||
batch.push(function(cb) {
|
||||
var str = "";
|
||||
for (var prop in props) {
|
||||
if (!props.hasOwnProperty(prop)) continue;
|
||||
|
||||
str += prop + "=" + props[prop] + "\n";
|
||||
}
|
||||
fs.writeFile(path.join(MC_SERVER_PATH, "server.properties"), str, cb);
|
||||
|
@ -547,6 +555,8 @@ describe("mc-server", function() {
|
|||
function broadcast(message, exclude) {
|
||||
var client;
|
||||
for (var clientId in server.clients) {
|
||||
if (!server.clients.hasOwnProperty(clientId)) continue;
|
||||
|
||||
client = server.clients[clientId];
|
||||
if (client !== exclude) client.write(0x03, { message: message });
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue