From a50642967bae2bd84336fb41adf10059fd6f17ea Mon Sep 17 00:00:00 2001 From: Romain Beaumont Date: Mon, 26 Oct 2015 01:15:21 +0100 Subject: [PATCH] use more es6 arrow function, and directly define the player.f functions instead of defining the function then assigning it --- src/lib/playerPlugins/blocks.js | 17 +++++------- src/lib/playerPlugins/chat.js | 12 ++++----- src/lib/playerPlugins/commands.js | 2 +- src/lib/playerPlugins/communication.js | 8 +++--- src/lib/playerPlugins/header.js | 8 +++--- src/lib/playerPlugins/login.js | 18 +++++-------- src/lib/playerPlugins/logout.js | 6 ++--- src/lib/playerPlugins/moderation.js | 16 +++++------ src/lib/playerPlugins/pvp.js | 6 ++--- src/lib/playerPlugins/updatePositions.js | 5 ++-- src/lib/playerPlugins/world.js | 34 +++++++++--------------- src/lib/serverPlugins/chat.js | 6 ++--- src/lib/serverPlugins/communication.js | 8 +++--- src/lib/serverPlugins/daycycle.js | 4 +-- src/lib/serverPlugins/log.js | 15 +++++------ src/lib/serverPlugins/moderation.js | 20 ++++++-------- src/lib/serverPlugins/players.js | 6 ++--- src/lib/serverPlugins/settings.js | 4 +-- src/lib/serverPlugins/tick.js | 32 +++++++++++----------- src/lib/serverPlugins/world.js | 5 ++-- test/index.js | 2 +- 21 files changed, 96 insertions(+), 138 deletions(-) diff --git a/src/lib/playerPlugins/blocks.js b/src/lib/playerPlugins/blocks.js index 50a5022..8f2add9 100644 --- a/src/lib/playerPlugins/blocks.js +++ b/src/lib/playerPlugins/blocks.js @@ -2,31 +2,26 @@ module.exports=inject; 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) { p.sendBlock(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",{ location:position, type:blockType<<4 }); - } + }; - function setBlock(position,blockType) + player.setBlock = (position,blockType) => { serv.players.filter(p => p.world==player.world).forEach(function(player){ player.sendBlock(position, blockType); }); return player.world.setBlockType(position,blockType); - } - - player.setBlock = setBlock; - - player.changeBlock=changeBlock; - player.sendBlock=sendBlock; + }; } \ No newline at end of file diff --git a/src/lib/playerPlugins/chat.js b/src/lib/playerPlugins/chat.js index 2f1c519..a31185e 100644 --- a/src/lib/playerPlugins/chat.js +++ b/src/lib/playerPlugins/chat.js @@ -13,13 +13,11 @@ function inject(serv, player) } }); - function chat(message) { + player.chat = message => { player._client.write('chat', { message: JSON.stringify(message), position: 0 }); - } - function system(message) { + }; + + player.system = message => { player._client.write('chat', { message: JSON.stringify(message), position: 2 }); - } - - player.chat=chat; - player.system=system; + }; } \ No newline at end of file diff --git a/src/lib/playerPlugins/commands.js b/src/lib/playerPlugins/commands.js index b51db6c..27f7eea 100644 --- a/src/lib/playerPlugins/commands.js +++ b/src/lib/playerPlugins/commands.js @@ -275,7 +275,7 @@ function inject(serv, player) { serv.commands = base; - player.handleCommand = function(str) { + player.handleCommand = (str) => { var res = base.use(str); if(res) player.chat('' + res); }; diff --git a/src/lib/playerPlugins/communication.js b/src/lib/playerPlugins/communication.js index 5946dbb..438742b 100644 --- a/src/lib/playerPlugins/communication.js +++ b/src/lib/playerPlugins/communication.js @@ -2,23 +2,23 @@ module.exports=inject; function inject(serv,player) { - player._writeOthers=function(packetName, packetFields) { + player._writeOthers= (packetName, packetFields) => { player.getOthers().forEach(function (otherPlayer) { otherPlayer._client.write(packetName, packetFields); }); }; - player._writeOthersNearby = function(packetName, packetFields) { + player._writeOthersNearby = (packetName, packetFields) => { serv._writeArray(packetName, packetFields, player.nearbyPlayers); }; - player.getOthers = function() { + player.getOthers = () => { return serv.players.filter(function (otherPlayer) { return otherPlayer != player; }); }; - player.getNearby = function() { + player.getNearby = () => { return serv.getNearby({ world: player.world, position: player.entity.position, diff --git a/src/lib/playerPlugins/header.js b/src/lib/playerPlugins/header.js index c899037..09f39cb 100644 --- a/src/lib/playerPlugins/header.js +++ b/src/lib/playerPlugins/header.js @@ -2,14 +2,12 @@ function inject(serv, player) { - function playerlistUpdateText(header, footer) { + player.playerlistUpdateText = (header, footer) => { player._client.write('playerlist_header', { header: JSON.stringify(header), footer: JSON.stringify(footer) }); - } + }; - playerlistUpdateText("Flying squid", "Test server") - - player.playerlistUpdateText=playerlistUpdateText; + player.playerlistUpdateText("Flying squid", "Test server"); } diff --git a/src/lib/playerPlugins/login.js b/src/lib/playerPlugins/login.js index 51b896f..95cc778 100644 --- a/src/lib/playerPlugins/login.js +++ b/src/lib/playerPlugins/login.js @@ -23,7 +23,7 @@ function inject(serv,player) player.nearbyPlayers=[]; } - function updateAndSpawnNearbyPlayers() + player.updateAndSpawnNearbyPlayers = () => { player.lastPositionPlayersUpdated=player.entity.position; var updatedPlayers=player.getNearby(); @@ -39,7 +39,7 @@ function inject(serv,player) player.nearbyPlayers=updatedPlayers; - } + }; function sendPlayersWhenMove() { @@ -80,14 +80,14 @@ function inject(serv,player) }); } - function setGameMode(gameMode) + player.setGameMode = gameMode => { player._client.write('game_state_change', { reason: 3, gameMode: gameMode }); player.gameMode=gameMode; - } + }; function fillTabList() { @@ -120,7 +120,7 @@ function inject(serv,player) player.emit("connected"); } - async function login() + player.login = async () => { if (serv.uuidToPlayer[player._client.uuid]) { player._client.end("You are already connected"); @@ -140,7 +140,7 @@ function inject(serv,player) updateTime(); - setGameMode(player.gameMode); + player.setGameMode(player.gameMode); fillTabList(); player.updateAndSpawnNearbyPlayers(); @@ -149,9 +149,5 @@ function inject(serv,player) sendPlayersWhenMove(); setTimeout(function(){player.sendRestMap();sendChunkWhenMove();},100); - } - - player.setGameMode=setGameMode; - player.login=login; - player.updateAndSpawnNearbyPlayers=updateAndSpawnNearbyPlayers; + }; } \ No newline at end of file diff --git a/src/lib/playerPlugins/logout.js b/src/lib/playerPlugins/logout.js index f3f3fdd..22d9cc0 100644 --- a/src/lib/playerPlugins/logout.js +++ b/src/lib/playerPlugins/logout.js @@ -2,11 +2,11 @@ module.exports=inject; function inject(serv,player) { - function despawnPlayers(despawnedPlayers) { + player.despawnPlayers = despawnedPlayers => { player._client.write('entity_destroy', { 'entityIds': despawnedPlayers.map(p => p.entity.id) }); - } + }; player._client.on('end', function () { if(player.entity) { @@ -32,6 +32,4 @@ function inject(serv,player) player._client.on('error', function (error) { player.emit('error',error); }); - - player.despawnPlayers=despawnPlayers; } \ No newline at end of file diff --git a/src/lib/playerPlugins/moderation.js b/src/lib/playerPlugins/moderation.js index 37e85c4..1fc9ffb 100644 --- a/src/lib/playerPlugins/moderation.js +++ b/src/lib/playerPlugins/moderation.js @@ -4,26 +4,22 @@ module.exports=inject; function inject(serv,player) { - function kick(reason) + player.kick = reason => { player._client.write('kick_disconnect', { reason: reason ? JSON.stringify(reason) : '"You were kicked!"' }); - } + }; - function ban(reason) { + player.ban = reason => { reason = reason || "You were banned!"; player.kick(reason); var uuid=player._client.uuid; serv.ban(uuid, reason); - } + }; - function pardon() { + player.pardon = () => { var uuid=player._client.uuid; return serv.pardon(uuid); - } - - player.kick=kick; - player.ban=ban; - player.pardon=pardon; + }; } \ No newline at end of file diff --git a/src/lib/playerPlugins/pvp.js b/src/lib/playerPlugins/pvp.js index d179865..a1c1401 100644 --- a/src/lib/playerPlugins/pvp.js +++ b/src/lib/playerPlugins/pvp.js @@ -3,14 +3,14 @@ module.exports=inject; function inject(serv, player) { - function updateHealth(health) { + player.updateHealth = (health) => { player.entity.health = health; player._client.write('update_health', { food: player.entity.food, foodSaturation: 0.0, health: player.entity.health }); - } + }; function attackEntity(entityId) { @@ -36,6 +36,4 @@ function inject(serv, player) } }); - player.updateHealth = updateHealth; - } \ No newline at end of file diff --git a/src/lib/playerPlugins/updatePositions.js b/src/lib/playerPlugins/updatePositions.js index a9043a5..6341589 100644 --- a/src/lib/playerPlugins/updatePositions.js +++ b/src/lib/playerPlugins/updatePositions.js @@ -82,7 +82,7 @@ function inject(serv,player) player.emit("positionChanged"); } - function sendPosition() { + player.sendPosition = () => { player._client.write('position', { x: player.entity.position.x/32, y: player.entity.position.y/32, @@ -91,6 +91,5 @@ function inject(serv,player) pitch: player.entity.pitch, flags: 0x00 }); - } - player.sendPosition = sendPosition; + }; } \ No newline at end of file diff --git a/src/lib/playerPlugins/world.js b/src/lib/playerPlugins/world.js index 5c5c23f..5428395 100644 --- a/src/lib/playerPlugins/world.js +++ b/src/lib/playerPlugins/world.js @@ -5,7 +5,7 @@ module.exports = inject; function inject(serv, player) { - function spawnAPlayer(spawnedPlayer) { + player.spawnAPlayer = spawnedPlayer => { player._client.write('named_entity_spawn', { entityId: spawnedPlayer.entity.id, 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', { x: chunkX, @@ -29,7 +29,7 @@ function inject(serv, player) { chunkData: column.dump() }); return Promise.resolve(); - } + }; function spiral(arr) { @@ -40,7 +40,7 @@ function inject(serv, player) { return t; } - function sendNearbyChunks(view) + player.sendNearbyChunks = view => { player.lastPositionChunkUpdated=player.entity.position; 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((column) => player.sendChunk(chunkX,chunkZ,column)) ,Promise.resolve()); - } + }; function sleep(ms = 0) { return new Promise(r => setTimeout(r, ms)); } - function sendMap() + player.sendMap = () => { return player.sendNearbyChunks(3) .catch((err) => setTimeout(function() { throw err; }), 0); - } + }; - function sendRestMap() + player.sendRestMap = () => { player.sendingChunks=true; player.sendNearbyChunks(player.view) .then(() => player.sendingChunks=false) .catch((err)=> setTimeout(function(){throw err;},0)); - } + }; - function sendSpawnPosition() + player.sendSpawnPosition = () => { console.log("setting spawn at "+player.spawnPoint); player._client.write('spawn_position',{ "location":player.spawnPoint }); - } + }; - async function changeWorld(world, opt) { + player.changeWorld = async (world, opt) => { if(player.world == world) return Promise.resolve(); opt = opt || {}; player.world = world; @@ -112,13 +112,5 @@ function inject(serv, player) { player.sendPosition(); 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; + }; } \ No newline at end of file diff --git a/src/lib/serverPlugins/chat.js b/src/lib/serverPlugins/chat.js index 7d6aefc..cfe186c 100644 --- a/src/lib/serverPlugins/chat.js +++ b/src/lib/serverPlugins/chat.js @@ -2,7 +2,7 @@ module.exports=inject; function inject(serv) { - function broadcast(message, color) { + serv.broadcast = (message, color) => { serv.players.forEach(function(player){ var msg = { "text": message, @@ -10,7 +10,5 @@ function inject(serv) }; player.chat(msg); }); - } - - serv.broadcast=broadcast; + }; } \ No newline at end of file diff --git a/src/lib/serverPlugins/communication.js b/src/lib/serverPlugins/communication.js index 64543c4..f254783 100644 --- a/src/lib/serverPlugins/communication.js +++ b/src/lib/serverPlugins/communication.js @@ -2,23 +2,23 @@ module.exports=inject; function inject(serv,settings) { - serv._writeAll=function(packetName, packetFields) { + serv._writeAll= (packetName, packetFields) => { serv.players.forEach(function (player) { player._client.write(packetName, packetFields); }); }; - serv._writeArray=function(packetName, packetFields, players) { + serv._writeArray= (packetName, packetFields, players) => { players.forEach(function(player) { player._client.write(packetName, packetFields); }); }; - serv._writeNearby=function(packetName, packetFields, loc) { + serv._writeNearby= (packetName, packetFields, loc) => { serv._writeArray(packetName, packetFields, serv.getNearby(loc)); }; - serv.getNearby=function(loc) { + serv.getNearby= loc => { return serv.players.filter(function(player) { return player.world == loc.world && player.entity.position.distanceTo(loc.position) <= loc.radius; }); diff --git a/src/lib/serverPlugins/daycycle.js b/src/lib/serverPlugins/daycycle.js index 528056e..e8a656e 100644 --- a/src/lib/serverPlugins/daycycle.js +++ b/src/lib/serverPlugins/daycycle.js @@ -2,13 +2,13 @@ module.exports = inject; function inject(serv, settings) { - serv.setTime = function(time) { + serv.setTime = (time) => { serv.time = time; serv._writeAll('update_time', { age: [0, 0], // TODO time: [0, serv.time] }); - } + }; serv.doDaylightCycle = true; diff --git a/src/lib/serverPlugins/log.js b/src/lib/serverPlugins/log.js index 528db41..0f4ddab 100644 --- a/src/lib/serverPlugins/log.js +++ b/src/lib/serverPlugins/log.js @@ -9,11 +9,11 @@ module.exports=inject; function inject(serv,settings) { serv.on("error",function(error){ - log('[ERR]: Server: '+error.stack); + serv.log('[ERR]: Server: '+error.stack); }); 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){ @@ -26,16 +26,16 @@ function inject(serv,settings) var logFile=path.join("logs",timeStarted + ".log"); - function log(message) { + serv.log = message => { message=moment().format('MMMM Do YYYY, HH:mm:ss')+" "+message; console.log(message); if (!settings.logging) return; fs.appendFile(logFile, message + "\n",function(err){ if (err) console.log(err); }); - } + }; - function createLog() { + serv.createLog = () => { if (!settings.logging) return; mkdirp("logs", function(err) { if(err) @@ -49,8 +49,5 @@ function inject(serv,settings) if (err) console.log(err); }); }); - } - - serv.log=log; - serv.createLog=createLog; + }; } \ No newline at end of file diff --git a/src/lib/serverPlugins/moderation.js b/src/lib/serverPlugins/moderation.js index 57add3c..626acfb 100644 --- a/src/lib/serverPlugins/moderation.js +++ b/src/lib/serverPlugins/moderation.js @@ -7,36 +7,36 @@ module.exports = inject; function inject(serv) { - function ban(uuid, reason) { + serv.ban = (uuid, reason) => { serv.bannedPlayers[uuid] = { time: +moment(), reason: reason || "You are banned!" }; - } + }; function uuidInParts(plainUUID) { return nodeUuid.unparse(nodeUuid.parse(plainUUID)); } - function getUUIDFromUsername(username) { + serv.getUUIDFromUsername = username => { return rp('https://api.mojang.com/users/profiles/minecraft/' + username) .then((body) => { if(!body) throw new Error("username not found"); return uuidInParts(JSON.parse(body).id) }) .catch(err => {throw new Error("username not found");}); - } + }; - function banUsername(username, reason, cb) { + serv.banUsername = (username, reason, cb) => { return serv.getUUIDFromUsername(username) .then(uuid => serv.ban(uuid, reason)); - } + }; - function pardonUsername(username, cb) { + serv.pardonUsername = (username, cb) => { return serv.getUUIDFromUsername(username) .then(pardon); - } + }; function pardon(uuid) { if (serv.bannedPlayers[uuid]) { @@ -47,8 +47,4 @@ function inject(serv) } serv.bannedPlayers = {}; - serv.ban = ban; - serv.banUsername = banUsername; - serv.pardonUsername = pardonUsername; - serv.getUUIDFromUsername = getUUIDFromUsername; } \ No newline at end of file diff --git a/src/lib/serverPlugins/players.js b/src/lib/serverPlugins/players.js index 73c2717..7be716d 100644 --- a/src/lib/serverPlugins/players.js +++ b/src/lib/serverPlugins/players.js @@ -7,12 +7,10 @@ function inject(serv) serv.uuidToPlayer={}; serv.entities={}; - function getPlayer(username) { + serv.getPlayer = username => { for (var p in serv.players) { if (serv.players[p].username == username) return serv.players[p] } return null; - } - - serv.getPlayer = getPlayer; + }; } \ No newline at end of file diff --git a/src/lib/serverPlugins/settings.js b/src/lib/serverPlugins/settings.js index 2ae4d6d..ff6e2fc 100644 --- a/src/lib/serverPlugins/settings.js +++ b/src/lib/serverPlugins/settings.js @@ -11,7 +11,7 @@ function inject(serv,settings) { serv.gameMode=settings.gameMode; - serv.getSpawnPoint = function() { + serv.getSpawnPoint = () => { return new vec3(randomInt(5,20),81,randomInt(5,20)); - } + }; } diff --git a/src/lib/serverPlugins/tick.js b/src/lib/serverPlugins/tick.js index 9088100..0c360db 100644 --- a/src/lib/serverPlugins/tick.js +++ b/src/lib/serverPlugins/tick.js @@ -2,24 +2,24 @@ module.exports = inject; function inject(serv, settings) { - serv.setTickInterval = setTickInterval; - serv.stopTickInterval = stopTickInterval; 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); } -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; -} \ No newline at end of file diff --git a/src/lib/serverPlugins/world.js b/src/lib/serverPlugins/world.js index f124584..708745c 100644 --- a/src/lib/serverPlugins/world.js +++ b/src/lib/serverPlugins/world.js @@ -22,7 +22,7 @@ function inject(serv,{regionFolder,generation={"name":"diamond_square","options" serv._worldSync=new WorldSync(serv.overworld); - function pregenWorld(world, size=10) { + serv.pregenWorld = (world, size=10) => { var promises = []; for (var x = -size; x < size; x++) { for (var z = -size; z < size; z++) { @@ -30,8 +30,7 @@ function inject(serv,{regionFolder,generation={"name":"diamond_square","options" } } return Promise.all(promises); - } - serv.pregenWorld = pregenWorld; + }; //serv.pregenWorld(serv.overworld).then(() => serv.log('Pre-Generated Overworld')); //serv.pregenWorld(serv.netherworld).then(() => serv.log('Pre-Generated Nether')); diff --git a/test/index.js b/test/index.js index 95aa9ef..615a105 100644 --- a/test/index.js +++ b/test/index.js @@ -6,7 +6,7 @@ var boot = require('../app').boot, return true; }); describe("Server", function() { - if("Is running", function(done) { + it("Is running", function(done) { var client = net.Socket(); client.connect(25565, '127.0.0.1', function() { client.close(); // or whatever the method to close the socket;