use more es6 arrow function, and directly define the player.f functions instead of defining the function then assigning it

This commit is contained in:
Romain Beaumont 2015-10-26 01:15:21 +01:00
parent 69819b880e
commit a50642967b
21 changed files with 96 additions and 138 deletions

View file

@ -2,31 +2,26 @@ module.exports=inject;
function inject(serv,player) function inject(serv,player)
{ {
async function changeBlock(position,blockType) player.changeBlock=async (position,blockType) =>
{ {
serv.players.filter(p => p.world==player.world).forEach(function(p) { serv.players.filter(p => p.world==player.world).forEach(function(p) {
p.sendBlock(position, blockType); p.sendBlock(position, blockType);
}); });
return await player.world.setBlockType(position,blockType); return await player.world.setBlockType(position,blockType);
} };
function sendBlock(position, blockType) { // Call from player.setBlock unless you want "local" fake blocks player.sendBlock = (position, blockType) => { // Call from player.setBlock unless you want "local" fake blocks
player._client.write("block_change",{ player._client.write("block_change",{
location:position, location:position,
type:blockType<<4 type:blockType<<4
}); });
} };
function setBlock(position,blockType) player.setBlock = (position,blockType) =>
{ {
serv.players.filter(p => p.world==player.world).forEach(function(player){ serv.players.filter(p => p.world==player.world).forEach(function(player){
player.sendBlock(position, blockType); player.sendBlock(position, blockType);
}); });
return player.world.setBlockType(position,blockType); return player.world.setBlockType(position,blockType);
} };
player.setBlock = setBlock;
player.changeBlock=changeBlock;
player.sendBlock=sendBlock;
} }

View file

@ -13,13 +13,11 @@ function inject(serv, player)
} }
}); });
function chat(message) { player.chat = message => {
player._client.write('chat', { message: JSON.stringify(message), position: 0 }); player._client.write('chat', { message: JSON.stringify(message), position: 0 });
} };
function system(message) {
player._client.write('chat', { message: JSON.stringify(message), position: 2 });
}
player.chat=chat; player.system = message => {
player.system=system; player._client.write('chat', { message: JSON.stringify(message), position: 2 });
};
} }

View file

@ -275,7 +275,7 @@ function inject(serv, player) {
serv.commands = base; serv.commands = base;
player.handleCommand = function(str) { player.handleCommand = (str) => {
var res = base.use(str); var res = base.use(str);
if(res) player.chat('' + res); if(res) player.chat('' + res);
}; };

View file

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

View file

@ -2,14 +2,12 @@
function inject(serv, player) function inject(serv, player)
{ {
function 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)
}); });
} };
playerlistUpdateText("Flying squid", "Test server") player.playerlistUpdateText("Flying squid", "Test server");
player.playerlistUpdateText=playerlistUpdateText;
} }

View file

@ -23,7 +23,7 @@ function inject(serv,player)
player.nearbyPlayers=[]; player.nearbyPlayers=[];
} }
function updateAndSpawnNearbyPlayers() player.updateAndSpawnNearbyPlayers = () =>
{ {
player.lastPositionPlayersUpdated=player.entity.position; player.lastPositionPlayersUpdated=player.entity.position;
var updatedPlayers=player.getNearby(); var updatedPlayers=player.getNearby();
@ -39,7 +39,7 @@ function inject(serv,player)
player.nearbyPlayers=updatedPlayers; player.nearbyPlayers=updatedPlayers;
} };
function sendPlayersWhenMove() function sendPlayersWhenMove()
{ {
@ -80,14 +80,14 @@ function inject(serv,player)
}); });
} }
function setGameMode(gameMode) player.setGameMode = gameMode =>
{ {
player._client.write('game_state_change', { player._client.write('game_state_change', {
reason: 3, reason: 3,
gameMode: gameMode gameMode: gameMode
}); });
player.gameMode=gameMode; player.gameMode=gameMode;
} };
function fillTabList() function fillTabList()
{ {
@ -120,7 +120,7 @@ function inject(serv,player)
player.emit("connected"); player.emit("connected");
} }
async function login() player.login = async () =>
{ {
if (serv.uuidToPlayer[player._client.uuid]) { if (serv.uuidToPlayer[player._client.uuid]) {
player._client.end("You are already connected"); player._client.end("You are already connected");
@ -140,7 +140,7 @@ function inject(serv,player)
updateTime(); updateTime();
setGameMode(player.gameMode); player.setGameMode(player.gameMode);
fillTabList(); fillTabList();
player.updateAndSpawnNearbyPlayers(); player.updateAndSpawnNearbyPlayers();
@ -149,9 +149,5 @@ function inject(serv,player)
sendPlayersWhenMove(); sendPlayersWhenMove();
setTimeout(function(){player.sendRestMap();sendChunkWhenMove();},100); setTimeout(function(){player.sendRestMap();sendChunkWhenMove();},100);
} };
player.setGameMode=setGameMode;
player.login=login;
player.updateAndSpawnNearbyPlayers=updateAndSpawnNearbyPlayers;
} }

View file

@ -2,11 +2,11 @@ module.exports=inject;
function inject(serv,player) function inject(serv,player)
{ {
function despawnPlayers(despawnedPlayers) { player.despawnPlayers = despawnedPlayers => {
player._client.write('entity_destroy', { player._client.write('entity_destroy', {
'entityIds': despawnedPlayers.map(p => p.entity.id) 'entityIds': despawnedPlayers.map(p => p.entity.id)
}); });
} };
player._client.on('end', function () { player._client.on('end', function () {
if(player.entity) { if(player.entity) {
@ -32,6 +32,4 @@ function inject(serv,player)
player._client.on('error', function (error) { player._client.on('error', function (error) {
player.emit('error',error); player.emit('error',error);
}); });
player.despawnPlayers=despawnPlayers;
} }

View file

@ -4,26 +4,22 @@ module.exports=inject;
function inject(serv,player) function inject(serv,player)
{ {
function kick(reason) player.kick = reason =>
{ {
player._client.write('kick_disconnect', { player._client.write('kick_disconnect', {
reason: reason ? JSON.stringify(reason) : '"You were kicked!"' reason: reason ? JSON.stringify(reason) : '"You were kicked!"'
}); });
} };
function ban(reason) { player.ban = reason => {
reason = reason || "You were banned!"; reason = reason || "You were banned!";
player.kick(reason); player.kick(reason);
var uuid=player._client.uuid; var uuid=player._client.uuid;
serv.ban(uuid, reason); serv.ban(uuid, reason);
} };
function pardon() { player.pardon = () => {
var uuid=player._client.uuid; var uuid=player._client.uuid;
return serv.pardon(uuid); return serv.pardon(uuid);
} };
player.kick=kick;
player.ban=ban;
player.pardon=pardon;
} }

View file

@ -3,14 +3,14 @@ module.exports=inject;
function inject(serv, player) function inject(serv, player)
{ {
function updateHealth(health) { player.updateHealth = (health) => {
player.entity.health = health; player.entity.health = health;
player._client.write('update_health', { player._client.write('update_health', {
food: player.entity.food, food: player.entity.food,
foodSaturation: 0.0, foodSaturation: 0.0,
health: player.entity.health health: player.entity.health
}); });
} };
function attackEntity(entityId) function attackEntity(entityId)
{ {
@ -36,6 +36,4 @@ function inject(serv, player)
} }
}); });
player.updateHealth = updateHealth;
} }

View file

@ -82,7 +82,7 @@ function inject(serv,player)
player.emit("positionChanged"); player.emit("positionChanged");
} }
function sendPosition() { player.sendPosition = () => {
player._client.write('position', { player._client.write('position', {
x: player.entity.position.x/32, x: player.entity.position.x/32,
y: player.entity.position.y/32, y: player.entity.position.y/32,
@ -91,6 +91,5 @@ function inject(serv,player)
pitch: player.entity.pitch, pitch: player.entity.pitch,
flags: 0x00 flags: 0x00
}); });
} };
player.sendPosition = sendPosition;
} }

View file

@ -5,7 +5,7 @@ module.exports = inject;
function inject(serv, player) { function inject(serv, player) {
function spawnAPlayer(spawnedPlayer) { player.spawnAPlayer = spawnedPlayer => {
player._client.write('named_entity_spawn', { player._client.write('named_entity_spawn', {
entityId: spawnedPlayer.entity.id, entityId: spawnedPlayer.entity.id,
playerUUID: spawnedPlayer._client.uuid, playerUUID: spawnedPlayer._client.uuid,
@ -19,7 +19,7 @@ function inject(serv, player) {
}); });
} }
function sendChunk(chunkX,chunkZ,column) player.sendChunk = (chunkX,chunkZ,column) =>
{ {
player._client.write('map_chunk', { player._client.write('map_chunk', {
x: chunkX, x: chunkX,
@ -29,7 +29,7 @@ function inject(serv, player) {
chunkData: column.dump() chunkData: column.dump()
}); });
return Promise.resolve(); return Promise.resolve();
} };
function spiral(arr) function spiral(arr)
{ {
@ -40,7 +40,7 @@ function inject(serv, player) {
return t; return t;
} }
function sendNearbyChunks(view) player.sendNearbyChunks = view =>
{ {
player.lastPositionChunkUpdated=player.entity.position; player.lastPositionChunkUpdated=player.entity.position;
var playerChunkX=Math.floor(player.entity.position.x/16/32); var playerChunkX=Math.floor(player.entity.position.x/16/32);
@ -63,35 +63,35 @@ function inject(serv, player) {
.then(() => player.world.getColumn(chunkX,chunkZ)) .then(() => player.world.getColumn(chunkX,chunkZ))
.then((column) => player.sendChunk(chunkX,chunkZ,column)) .then((column) => player.sendChunk(chunkX,chunkZ,column))
,Promise.resolve()); ,Promise.resolve());
} };
function sleep(ms = 0) { function sleep(ms = 0) {
return new Promise(r => setTimeout(r, ms)); return new Promise(r => setTimeout(r, ms));
} }
function sendMap() player.sendMap = () =>
{ {
return player.sendNearbyChunks(3) return player.sendNearbyChunks(3)
.catch((err) => setTimeout(function() { throw err; }), 0); .catch((err) => setTimeout(function() { throw err; }), 0);
} };
function sendRestMap() player.sendRestMap = () =>
{ {
player.sendingChunks=true; player.sendingChunks=true;
player.sendNearbyChunks(player.view) player.sendNearbyChunks(player.view)
.then(() => player.sendingChunks=false) .then(() => player.sendingChunks=false)
.catch((err)=> setTimeout(function(){throw err;},0)); .catch((err)=> setTimeout(function(){throw err;},0));
} };
function sendSpawnPosition() player.sendSpawnPosition = () =>
{ {
console.log("setting spawn at "+player.spawnPoint); console.log("setting spawn at "+player.spawnPoint);
player._client.write('spawn_position',{ player._client.write('spawn_position',{
"location":player.spawnPoint "location":player.spawnPoint
}); });
} };
async function changeWorld(world, opt) { player.changeWorld = async (world, opt) => {
if(player.world == world) return Promise.resolve(); if(player.world == world) return Promise.resolve();
opt = opt || {}; opt = opt || {};
player.world = world; player.world = world;
@ -112,13 +112,5 @@ function inject(serv, player) {
player.sendPosition(); player.sendPosition();
player.emit('change_world'); player.emit('change_world');
} };
player.sendNearbyChunks = sendNearbyChunks;
player.changeWorld = changeWorld;
player.sendChunk = sendChunk;
player.sendMap = sendMap;
player.sendRestMap = sendRestMap;
player.sendSpawnPosition = sendSpawnPosition;
player.spawnAPlayer = spawnAPlayer;
} }

View file

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

View file

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

View file

@ -2,13 +2,13 @@
module.exports = inject; module.exports = inject;
function inject(serv, settings) { function inject(serv, settings) {
serv.setTime = function(time) { serv.setTime = (time) => {
serv.time = time; serv.time = time;
serv._writeAll('update_time', { serv._writeAll('update_time', {
age: [0, 0], // TODO age: [0, 0], // TODO
time: [0, serv.time] time: [0, serv.time]
}); });
} };
serv.doDaylightCycle = true; serv.doDaylightCycle = true;

View file

@ -9,11 +9,11 @@ module.exports=inject;
function inject(serv,settings) function inject(serv,settings)
{ {
serv.on("error",function(error){ serv.on("error",function(error){
log('[ERR]: Server: '+error.stack); serv.log('[ERR]: Server: '+error.stack);
}); });
serv.on("listening",function(port){ serv.on("listening",function(port){
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",function(banner,bannedUsername,reason){
@ -26,16 +26,16 @@ function inject(serv,settings)
var logFile=path.join("logs",timeStarted + ".log"); var logFile=path.join("logs",timeStarted + ".log");
function log(message) { serv.log = message => {
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",function(err){
if (err) console.log(err); if (err) console.log(err);
}); });
} };
function createLog() { serv.createLog = () => {
if (!settings.logging) return; if (!settings.logging) return;
mkdirp("logs", function(err) { mkdirp("logs", function(err) {
if(err) if(err)
@ -49,8 +49,5 @@ function inject(serv,settings)
if (err) console.log(err); if (err) console.log(err);
}); });
}); });
} };
serv.log=log;
serv.createLog=createLog;
} }

View file

@ -7,36 +7,36 @@ module.exports = inject;
function inject(serv) function inject(serv)
{ {
function ban(uuid, reason) { serv.ban = (uuid, reason) => {
serv.bannedPlayers[uuid] = { serv.bannedPlayers[uuid] = {
time: +moment(), time: +moment(),
reason: reason || "You are banned!" reason: reason || "You are banned!"
}; };
} };
function uuidInParts(plainUUID) function uuidInParts(plainUUID)
{ {
return nodeUuid.unparse(nodeUuid.parse(plainUUID)); return nodeUuid.unparse(nodeUuid.parse(plainUUID));
} }
function getUUIDFromUsername(username) { serv.getUUIDFromUsername = username => {
return rp('https://api.mojang.com/users/profiles/minecraft/' + username) return rp('https://api.mojang.com/users/profiles/minecraft/' + username)
.then((body) => { .then((body) => {
if(!body) throw new Error("username not found"); if(!body) throw new Error("username not found");
return uuidInParts(JSON.parse(body).id) return uuidInParts(JSON.parse(body).id)
}) })
.catch(err => {throw new Error("username not found");}); .catch(err => {throw new Error("username not found");});
} };
function banUsername(username, reason, cb) { serv.banUsername = (username, reason, cb) => {
return serv.getUUIDFromUsername(username) return serv.getUUIDFromUsername(username)
.then(uuid => serv.ban(uuid, reason)); .then(uuid => serv.ban(uuid, reason));
} };
function pardonUsername(username, cb) { serv.pardonUsername = (username, cb) => {
return serv.getUUIDFromUsername(username) return serv.getUUIDFromUsername(username)
.then(pardon); .then(pardon);
} };
function pardon(uuid) { function pardon(uuid) {
if (serv.bannedPlayers[uuid]) { if (serv.bannedPlayers[uuid]) {
@ -47,8 +47,4 @@ function inject(serv)
} }
serv.bannedPlayers = {}; serv.bannedPlayers = {};
serv.ban = ban;
serv.banUsername = banUsername;
serv.pardonUsername = pardonUsername;
serv.getUUIDFromUsername = getUUIDFromUsername;
} }

View file

@ -7,12 +7,10 @@ function inject(serv)
serv.uuidToPlayer={}; serv.uuidToPlayer={};
serv.entities={}; serv.entities={};
function getPlayer(username) { serv.getPlayer = username => {
for (var p in serv.players) { for (var p in serv.players) {
if (serv.players[p].username == username) return serv.players[p] if (serv.players[p].username == username) return serv.players[p]
} }
return null; return null;
} };
serv.getPlayer = getPlayer;
} }

View file

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

View file

@ -2,24 +2,24 @@
module.exports = inject; module.exports = inject;
function inject(serv, settings) { function inject(serv, settings) {
serv.setTickInterval = setTickInterval;
serv.stopTickInterval = stopTickInterval;
serv.tickCount = 0; serv.tickCount = 0;
serv.setTickInterval = ticksPerSecond => {
serv.stopTickInterval();
serv.tickInterval = setInterval(function() {
serv.tickCount++;
serv.emit('tick', serv.tickCount);
}, 1000/ticksPerSecond);
};
serv.stopTickInterval = () => {
if (serv.tickInterval) clearInterval(serv.tickInterval);
serv.tickInterval = null;
};
serv.setTickInterval(20); serv.setTickInterval(20);
} }
function setTickInterval(ticksPerSecond) {
var serv = this;
serv.stopTickInterval();
serv.tickInterval = setInterval(function() {
serv.tickCount++;
serv.emit('tick', serv.tickCount);
}, 1000/ticksPerSecond);
}
function stopTickInterval() {
if (this.tickInterval) clearInterval(serv.tickInterval);
this.tickInterval = null;
}

View file

@ -22,7 +22,7 @@ function inject(serv,{regionFolder,generation={"name":"diamond_square","options"
serv._worldSync=new WorldSync(serv.overworld); serv._worldSync=new WorldSync(serv.overworld);
function pregenWorld(world, size=10) { serv.pregenWorld = (world, size=10) => {
var promises = []; var promises = [];
for (var x = -size; x < size; x++) { for (var x = -size; x < size; x++) {
for (var z = -size; z < size; z++) { for (var z = -size; z < size; z++) {
@ -30,8 +30,7 @@ function inject(serv,{regionFolder,generation={"name":"diamond_square","options"
} }
} }
return Promise.all(promises); return Promise.all(promises);
} };
serv.pregenWorld = pregenWorld;
//serv.pregenWorld(serv.overworld).then(() => serv.log('Pre-Generated Overworld')); //serv.pregenWorld(serv.overworld).then(() => serv.log('Pre-Generated Overworld'));
//serv.pregenWorld(serv.netherworld).then(() => serv.log('Pre-Generated Nether')); //serv.pregenWorld(serv.netherworld).then(() => serv.log('Pre-Generated Nether'));

View file

@ -6,7 +6,7 @@ var boot = require('../app').boot,
return true; return true;
}); });
describe("Server", function() { describe("Server", function() {
if("Is running", function(done) { it("Is running", function(done) {
var client = net.Socket(); var client = net.Socket();
client.connect(25565, '127.0.0.1', function() { client.connect(25565, '127.0.0.1', function() {
client.close(); // or whatever the method to close the socket; client.close(); // or whatever the method to close the socket;