more es6 refactoring : use destructing and more arrow functions

This commit is contained in:
Romain Beaumont 2015-10-26 01:53:07 +01:00
parent a50642967b
commit 1a58da904c
27 changed files with 118 additions and 173 deletions

View file

@ -67,9 +67,7 @@ class Command {
} }
add(params) { add(params) {
var command = new Command(params, this); return new Command(params, this);
return command;
} }
space(end) { space(end) {

View file

@ -2,12 +2,11 @@ module.exports=inject;
function inject(serv, player) function inject(serv, player)
{ {
player._client.on("arm_animation", function(packet) { player._client.on("arm_animation", () =>
player._writeOthersNearby("animation", { player._writeOthersNearby("animation", {
entityId: player.entity.id, entityId: player.entity.id,
animation: 0 animation: 0
}); }));
});
function setMetadata(metadata) function setMetadata(metadata)
{ {
@ -18,15 +17,15 @@ function inject(serv, player)
}); });
} }
player._client.on("entity_action", function(packet) { player._client.on("entity_action", ({actionId} = {}) => {
if(packet.actionId == 3) { if(actionId == 3) {
setMetadata([{"key":0,"type":0,"value": 0x08}]); setMetadata([{"key":0,"type":0,"value": 0x08}]);
} else if(packet.actionId == 4) { } else if(actionId == 4) {
setMetadata([{"key":0,"type":0,"value": 0x00}]); setMetadata([{"key":0,"type":0,"value": 0x00}]);
} else if(packet.actionId == 0) { } else if(actionId == 0) {
setMetadata([{"key":0,"type":0,"value": 0x02}]); setMetadata([{"key":0,"type":0,"value": 0x02}]);
player.entity.crouching = true; player.entity.crouching = true;
} else if(packet.actionId == 1) { } else if(actionId == 1) {
setMetadata([{"key":0,"type":0,"value": 0x00}]); setMetadata([{"key":0,"type":0,"value": 0x00}]);
player.entity.crouching = false; player.entity.crouching = false;
} }

View file

@ -19,9 +19,10 @@ function inject(serv,player)
player.setBlock = (position,blockType) => player.setBlock = (position,blockType) =>
{ {
serv.players.filter(p => p.world==player.world).forEach(function(player){ serv.players
player.sendBlock(position, blockType); .filter(p => p.world==player.world)
}); .forEach(player => player.sendBlock(position, blockType));
return player.world.setBlockType(position,blockType); return player.world.setBlockType(position,blockType);
}; };
} }

View file

@ -2,14 +2,14 @@ module.exports=inject;
function inject(serv, player) function inject(serv, player)
{ {
player._client.on('chat', function (packet) { player._client.on('chat', ({message} = {}) => {
if(packet.message[0]=="/") { if(message[0]=="/") {
var command = packet.message.slice(1); var command = message.slice(1);
player.handleCommand(command); player.handleCommand(command);
} }
else { else {
serv.broadcast('<' + player.username + '>' + ' ' + packet.message); serv.broadcast('<' + player.username + '>' + ' ' + message);
player.emit("chat",packet.message); player.emit("chat",message);
} }
}); });

View file

@ -4,8 +4,8 @@ module.exports=inject;
function inject(serv, player) function inject(serv, player)
{ {
player._client.on('block_place', async function (packet) { player._client.on('block_place', async ({location} = {}) => {
var referencePosition=new vec3(packet.location.x,packet.location.y,packet.location.z); var referencePosition=new vec3(location.x,location.y,location.z);
if (player.entity.crouching) return; if (player.entity.crouching) return;
try { try {
var id = await player.world.getBlockType(referencePosition); var id = await player.world.getBlockType(referencePosition);

View file

@ -2,27 +2,21 @@ module.exports=inject;
function inject(serv,player) function inject(serv,player)
{ {
player._writeOthers= (packetName, packetFields) => { player._writeOthers= (packetName, packetFields) =>
player.getOthers().forEach(function (otherPlayer) { player
otherPlayer._client.write(packetName, packetFields); .getOthers()
}); .forEach((otherPlayer) => otherPlayer._client.write(packetName, packetFields));
};
player._writeOthersNearby = (packetName, packetFields) => { player._writeOthersNearby = (packetName, packetFields) =>
serv._writeArray(packetName, packetFields, player.nearbyPlayers); serv._writeArray(packetName, packetFields, player.nearbyPlayers);
};
player.getOthers = () => { player.getOthers = () => serv.players.filter((otherPlayer) => otherPlayer != player);
return serv.players.filter(function (otherPlayer) {
return otherPlayer != player;
});
};
player.getNearby = () => { player.getNearby = () => serv
return serv.getNearby({ .getNearby({
world: player.world, world: player.world,
position: player.entity.position, position: player.entity.position,
radius: player.playerViewDistance*32 radius: player.playerViewDistance*32
}).filter((p) => p != player); })
} .filter((p) => p != player);
} }

View file

@ -4,19 +4,19 @@ module.exports=inject;
function inject(serv,player) function inject(serv,player)
{ {
player._client.on("block_dig",function(packet){ player._client.on("block_dig",({location,status} = {}) => {
var pos=new Vec3(packet.location); var pos=new Vec3(location);
player.world.getBlock(pos) player.world.getBlock(pos)
.then(block => { .then(block => {
currentlyDugBlock=block; currentlyDugBlock=block;
if(currentlyDugBlock.type==0) return; if(currentlyDugBlock.type==0) return;
if(packet.status==0 && player.gameMode!=1) if(status==0 && player.gameMode!=1)
startDigging(pos); startDigging(pos);
else if(packet.status==2) else if(status==2)
completeDigging(pos); completeDigging(pos);
else if(packet.status==1) else if(status==1)
cancelDigging(pos); cancelDigging(pos);
else if(packet.status==0 && player.gameMode==1) else if(status==0 && player.gameMode==1)
creativeDigging(pos); creativeDigging(pos);
}) })
.catch((err)=> setTimeout(function(){throw err;},0)); .catch((err)=> setTimeout(function(){throw err;},0));

View file

@ -2,12 +2,11 @@
function inject(serv, player) function inject(serv, player)
{ {
player.playerlistUpdateText = (header, footer) => { player.playerlistUpdateText = (header, footer) =>
player._client.write('playerlist_header', { player._client.write('playerlist_header', {
header: JSON.stringify(header), header: JSON.stringify(header),
footer: JSON.stringify(footer) footer: JSON.stringify(footer)
}); });
};
player.playerlistUpdateText("Flying squid", "Test server"); player.playerlistUpdateText("Flying squid", "Test server");
} }

View file

@ -6,8 +6,8 @@ function inject(serv, player)
player.heldItem=0; player.heldItem=0;
player.inventory=new Array(44); player.inventory=new Array(44);
player._client.on("held_item_slot", function (packet) { player._client.on("held_item_slot", ({slotId} = {}) => {
player.heldItemSlot = packet.slotId; player.heldItemSlot = slotId;
if(player.inventory[36+player.heldItemSlot]===undefined){ if(player.inventory[36+player.heldItemSlot]===undefined){
player.inventory[36+player.heldItemSlot]={ player.inventory[36+player.heldItemSlot]={
blockId:-1 blockId:-1
@ -21,37 +21,37 @@ function inject(serv, player)
}); });
}); });
player._client.on("set_creative_slot", function (packet) { player._client.on("set_creative_slot", ({slot,item} ={}) => {
player.inventory[packet.slot]=packet.item; player.inventory[slot]=item;
if (packet.slot==36) if (slot==36)
player._writeOthersNearby("entity_equipment",{ player._writeOthersNearby("entity_equipment",{
entityId:player.entity.id, entityId:player.entity.id,
slot:0, slot:0,
item:packet.item item:item
}); });
if (packet.slot==5) if (slot==5)
player._writeOthersNearby("entity_equipment",{ player._writeOthersNearby("entity_equipment",{
entityId:player.entity.id, entityId:player.entity.id,
slot:4, slot:4,
item:packet.item item:item
}); });
if (packet.slot==6) if (slot==6)
player._writeOthersNearby("entity_equipment",{ player._writeOthersNearby("entity_equipment",{
entityId:player.entity.id, entityId:player.entity.id,
slot:3, slot:3,
item:packet.item item:item
}); });
if (packet.slot==7) if (slot==7)
player._writeOthersNearby("entity_equipment",{ player._writeOthersNearby("entity_equipment",{
entityId:player.entity.id, entityId:player.entity.id,
slot:2, slot:2,
item:packet.item item:item
}); });
if (packet.slot==8) if (slot==8)
player._writeOthersNearby("entity_equipment",{ player._writeOthersNearby("entity_equipment",{
entityId:player.entity.id, entityId:player.entity.id,
slot:1, slot:1,
item:packet.item item:item
}); });
}); });

View file

@ -3,29 +3,17 @@ module.exports=inject;
function inject(serv,player) function inject(serv,player)
{ {
player.on("connected",function(){ player.on("connected",() => serv.log("[INFO]: " + player.username + ' connected'));
serv.log("[INFO]: " + player.username + ' connected');
});
player.on("spawned",function(){ player.on("spawned",() => serv.log("[INFO]: position written, player spawning..."));
serv.log("[INFO]: position written, player spawning...");
});
player.on("disconnected",function(){ player.on("disconnected",() => serv.log("[INFO]: " + player.username + ' disconnected'));
serv.log("[INFO]: " + player.username + ' disconnected');
});
player.on("error",function(error){ player.on("error", error => serv.log('[ERR]: Client: ' + error.stack));
serv.log('[ERR]: Client: ' + error.stack);
});
player.on("chat",function(message){ player.on("chat", message => serv.log("[INFO] " + '<' + player.username + '>' + ' ' + message));
message = '<' + player.username + '>' + ' ' + message;
serv.log("[INFO] " + message);
});
player.on("kicked",function(kicker,reason){ player.on("kicked",(kicker,reason) =>
serv.log(kicker.username + " kicked " + player.username + (reason ? " (" + reason + ")" : "")); serv.log(kicker.username + " kicked " + player.username + (reason ? " (" + reason + ")" : "")));
})
} }

View file

@ -43,7 +43,7 @@ function inject(serv,player)
function sendPlayersWhenMove() function sendPlayersWhenMove()
{ {
player.on("positionChanged",function(){ player.on("positionChanged",() => {
if(player.entity.position.distanceTo(player.lastPositionPlayersUpdated)>2*32) if(player.entity.position.distanceTo(player.lastPositionPlayersUpdated)>2*32)
player.updateAndSpawnNearbyPlayers(); player.updateAndSpawnNearbyPlayers();
}); });
@ -66,7 +66,7 @@ function inject(serv,player)
function sendChunkWhenMove() function sendChunkWhenMove()
{ {
player.on("positionChanged",function(){ player.on("positionChanged", () => {
if(!player.sendingChunks && player.entity.position.distanceTo(player.lastPositionChunkUpdated)>16*32) if(!player.sendingChunks && player.entity.position.distanceTo(player.lastPositionChunkUpdated)>16*32)
player.sendRestMap(); player.sendRestMap();
}); });

View file

@ -8,7 +8,7 @@ function inject(serv,player)
}); });
}; };
player._client.on('end', function () { player._client.on('end', () => {
if(player.entity) { if(player.entity) {
serv.broadcast(player.username + ' quit the game.', "yellow"); serv.broadcast(player.username + ' quit the game.', "yellow");
player._writeOthers('player_info', { player._writeOthers('player_info', {
@ -29,7 +29,5 @@ function inject(serv,player)
}); });
player._client.on('error', function (error) { player._client.on('error', error => player.emit('error',error));
player.emit('error',error);
});
} }

View file

@ -18,8 +18,5 @@ function inject(serv,player)
serv.ban(uuid, reason); serv.ban(uuid, reason);
}; };
player.pardon = () => { player.pardon = () => serv.pardon(player._client.uuid);
var uuid=player._client.uuid;
return serv.pardon(uuid);
};
} }

View file

@ -4,14 +4,14 @@ module.exports=inject;
function inject(serv,player) function inject(serv,player)
{ {
player._client.on("block_place",function(packet){ player._client.on("block_place",({direction,heldItem,location} = {}) => {
if(packet.direction==-1 || packet.heldItem.blockId==-1) return; if(direction==-1 || heldItem.blockId==-1) return;
var referencePosition=new vec3(packet.location.x,packet.location.y,packet.location.z); var referencePosition=new vec3(location.x,location.y,location.z);
var directionVector=directionToVector[packet.direction]; var directionVector=directionToVector[direction];
var placedPosition=referencePosition.plus(directionVector); var placedPosition=referencePosition.plus(directionVector);
if(packet.heldItem.blockId!=323){ if(heldItem.blockId!=323){
player.changeBlock(placedPosition,packet.heldItem.blockId); player.changeBlock(placedPosition,heldItem.blockId);
}else if(packet.direction==1){ }else if(direction==1){
player.setBlock(placedPosition, 63); player.setBlock(placedPosition, 63);
player._client.write('open_sign_entity', { player._client.write('open_sign_entity', {
location:placedPosition location:placedPosition

View file

@ -30,10 +30,9 @@ function inject(serv, player)
}); });
} }
player._client.on("use_entity", function(packet) { player._client.on("use_entity", ({mouse,target} = {}) => {
if(packet.mouse == 1) { if(mouse == 1)
attackEntity(packet.target); attackEntity(target);
}
}); });
} }

View file

@ -2,8 +2,8 @@ module.exports=inject;
function inject(serv, player) function inject(serv, player)
{ {
player._client.on("client_command", function(packet) { player._client.on("client_command", ({payload}) => {
if(packet.payload == 0) { if(payload == 0) {
player._client.write("respawn",{ player._client.write("respawn",{
dimension:0, dimension:0,
difficulty:0, difficulty:0,

View file

@ -2,8 +2,8 @@ module.exports=inject;
function inject(serv, player) function inject(serv, player)
{ {
player._client.on('client_command', function (packet) { player._client.on('client_command', ({payload} = {}) => {
if(packet.payload==1){ if(payload==1){
//WIP: dummy //WIP: dummy
player.system ("WIP, press ESC"); player.system ("WIP, press ESC");
} }

View file

@ -8,9 +8,7 @@ vec3.Vec3.prototype.toFixedPosition=function() {
function inject(serv,player) function inject(serv,player)
{ {
player._client.on('look', function(packet) { player._client.on('look', ({yaw,pitch,onGround} = {}) => sendLook(yaw,pitch,onGround));
sendLook(packet.yaw,packet.pitch,packet.onGround)
});
// float (degrees) --> byte (1/256 "degrees") // float (degrees) --> byte (1/256 "degrees")
function conv(f){ function conv(f){
@ -39,17 +37,12 @@ function inject(serv,player)
}); });
} }
player._client.on('position', function (packet) { player._client.on('position', ({x,y,z,onGround} = {}) =>
var position = new vec3(packet.x, packet.y, packet.z); sendRelativePositionChange((new vec3(x, y, z)).toFixedPosition(), onGround));
var onGround = packet.onGround;
sendRelativePositionChange(position.toFixedPosition(), onGround);
});
player._client.on('position_look', function (packet) { player._client.on('position_look', ({x,y,z,onGround,yaw,pitch} = {}) => {
var position = new vec3(packet.x, packet.y, packet.z); sendRelativePositionChange((new vec3(x, y, z)).toFixedPosition(), onGround);
var onGround = packet.onGround; sendLook(yaw,pitch,onGround);
sendRelativePositionChange(position.toFixedPosition(), onGround);
sendLook(packet.yaw,packet.pitch,packet.onGround);
}); });
function sendRelativePositionChange(newPosition, onGround) { function sendRelativePositionChange(newPosition, onGround) {

View file

@ -17,7 +17,7 @@ function inject(serv, player) {
currentItem: 0, currentItem: 0,
metadata: spawnedPlayer.entity.metadata metadata: spawnedPlayer.entity.metadata
}); });
} };
player.sendChunk = (chunkX,chunkZ,column) => player.sendChunk = (chunkX,chunkZ,column) =>
{ {

View file

@ -2,13 +2,9 @@ module.exports=inject;
function inject(serv) function inject(serv)
{ {
serv.broadcast = (message, color) => { serv.broadcast = (message, color) =>
serv.players.forEach(function(player){ serv.players.forEach(player => player.chat({
var msg = { "text": message,
"text": message, "color": color
"color": color }));
};
player.chat(msg);
});
};
} }

View file

@ -2,25 +2,17 @@ module.exports=inject;
function inject(serv,settings) function inject(serv,settings)
{ {
serv._writeAll= (packetName, packetFields) => { serv._writeAll= (packetName, packetFields) =>
serv.players.forEach(function (player) { serv.players.forEach((player) => player._client.write(packetName, packetFields));
player._client.write(packetName, packetFields);
});
};
serv._writeArray= (packetName, packetFields, players) => { serv._writeArray= (packetName, packetFields, players) =>
players.forEach(function(player) { players.forEach((player) =>player._client.write(packetName, packetFields));
player._client.write(packetName, packetFields);
});
};
serv._writeNearby= (packetName, packetFields, loc) => { serv._writeNearby= (packetName, packetFields, loc) =>
serv._writeArray(packetName, packetFields, serv.getNearby(loc)); serv._writeArray(packetName, packetFields, serv.getNearby(loc));
};
serv.getNearby= loc => { serv.getNearby= loc => serv.players.filter( player =>
return serv.players.filter(function(player) { player.world == loc.world &&
return player.world == loc.world && player.entity.position.distanceTo(loc.position) <= loc.radius; player.entity.position.distanceTo(loc.position) <= loc.radius
}); );
};
} }

View file

@ -14,7 +14,7 @@ function inject(serv, settings) {
serv.time = 0; serv.time = 0;
serv.on('tick', function(count) { serv.on('tick', (count) => {
if (!serv.doDaylightCycle) return; if (!serv.doDaylightCycle) return;
if (count % 20 == 0) { if (count % 20 == 0) {
serv.setTime((serv.time + 20) % 24000); // Vanilla only does it every second serv.setTime((serv.time + 20) % 24000); // Vanilla only does it every second

View file

@ -8,21 +8,14 @@ module.exports=inject;
function inject(serv,settings) function inject(serv,settings)
{ {
serv.on("error",function(error){ serv.on("error", error => serv.log('[ERR]: Server: '+error.stack));
serv.log('[ERR]: Server: '+error.stack);
});
serv.on("listening",function(port){ serv.on("listening", port => serv.log('[INFO]: Server listening on port '+port));
serv.log('[INFO]: Server listening on port '+port);
});
serv.on("banned",function(banner,bannedUsername,reason){ serv.on("banned", (banner,bannedUsername,reason) =>
serv.log(banner.username + " banned " + bannedUsername + (reason ? " (" + reason + ")" : "")); serv.log(banner.username + " banned " + bannedUsername + (reason ? " (" + reason + ")" : "")));
});
serv.on("seed",function(seed){ serv.on("seed", (seed) => serv.log("seed: "+seed));
serv.log("seed: "+seed);
});
var logFile=path.join("logs",timeStarted + ".log"); var logFile=path.join("logs",timeStarted + ".log");
@ -30,14 +23,14 @@ function inject(serv,settings)
message=moment().format('MMMM Do YYYY, HH:mm:ss')+" "+message; message=moment().format('MMMM Do YYYY, HH:mm:ss')+" "+message;
console.log(message); console.log(message);
if (!settings.logging) return; if (!settings.logging) return;
fs.appendFile(logFile, message + "\n",function(err){ fs.appendFile(logFile, message + "\n", (err) => {
if (err) console.log(err); if (err) console.log(err);
}); });
}; };
serv.createLog = () => { serv.createLog = () => {
if (!settings.logging) return; if (!settings.logging) return;
mkdirp("logs", function(err) { mkdirp("logs", (err) => {
if(err) if(err)
{ {
console.log(err); console.log(err);
@ -45,7 +38,7 @@ function inject(serv,settings)
} }
fs.writeFile(logFile, "[INFO]: Started logging...\n", fs.writeFile(logFile, "[INFO]: Started logging...\n",
function (err) { (err) => {
if (err) console.log(err); if (err) console.log(err);
}); });
}); });

View file

@ -8,7 +8,7 @@ module.exports = inject;
function inject(serv,options) function inject(serv,options)
{ {
serv._server.on('login', async function (client) { serv._server.on('login', async (client) => {
if(!options["online-mode"]) if(!options["online-mode"])
client.uuid=UUID.v3({ client.uuid=UUID.v3({
namespace: UUID.namespace.dns, namespace: UUID.namespace.dns,
@ -18,15 +18,15 @@ function inject(serv,options)
client.compressionThreshold = 256; client.compressionThreshold = 256;
var player=new Player(); var player=new Player();
player._client=client; player._client=client;
for(var pluginName in playerPlugins) { Object.keys(playerPlugins)
playerPlugins[pluginName](serv, player, options); .forEach(pluginName => playerPlugins[pluginName](serv, player, options));
}
serv.emit("newPlayer",player); serv.emit("newPlayer",player);
try { try {
await player.login(); await player.login();
} }
catch(err){ catch(err){
setTimeout(function(){throw err;},0) setTimeout(() => {throw err;},0)
} }
}); });
} }

View file

@ -11,7 +11,5 @@ function inject(serv,settings)
{ {
serv.gameMode=settings.gameMode; serv.gameMode=settings.gameMode;
serv.getSpawnPoint = () => { serv.getSpawnPoint = () => new vec3(randomInt(5,20),81,randomInt(5,20));
return new vec3(randomInt(5,20),81,randomInt(5,20));
};
} }

View file

@ -8,7 +8,7 @@ function inject(serv, settings) {
serv.setTickInterval = ticksPerSecond => { serv.setTickInterval = ticksPerSecond => {
serv.stopTickInterval(); serv.stopTickInterval();
serv.tickInterval = setInterval(function() { serv.tickInterval = setInterval(() => {
serv.tickCount++; serv.tickCount++;
serv.emit('tick', serv.tickCount); serv.emit('tick', serv.tickCount);
}, 1000/ticksPerSecond); }, 1000/ticksPerSecond);

View file

@ -10,7 +10,7 @@ function DiamondSquare(size, roughness, seed) {
var opCount = 0; var opCount = 0;
// private field // private field
var data = new Array(); var data = [];
// public methods // public methods
this.value = function(x, y, v) { this.value = function(x, y, v) {
@ -20,16 +20,16 @@ function DiamondSquare(size, roughness, seed) {
val(x, y, v); val(x, y, v);
else else
return val(x, y); return val(x, y);
} };
this.clear = function() { this.clear = function() {
data = new Array(); data = [];
} };
this.opCount = function(v) { this.opCount = function(v) {
if (typeof(v) != 'undefined') if (typeof(v) != 'undefined')
opCount = v; opCount = v;
else else
return opCount; return opCount;
} };
// private methods // private methods
function val(x, y, v) { function val(x, y, v) {