From 8c4406804e015054ccd81568652ece42fac819a1 Mon Sep 17 00:00:00 2001 From: Romain Beaumont Date: Thu, 17 Dec 2015 11:36:43 +0100 Subject: [PATCH] use const and let instead of var see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const and https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let --- src/index.js | 12 +-- src/lib/behavior.js | 12 +-- src/lib/command.js | 20 ++--- src/lib/experience.js | 12 +-- src/lib/plugins/behavior.js | 2 +- src/lib/plugins/blocks.js | 6 +- src/lib/plugins/chat.js | 30 ++++---- src/lib/plugins/chest.js | 6 +- src/lib/plugins/commands.js | 88 +++++++++++----------- src/lib/plugins/daycycle.js | 4 +- src/lib/plugins/digging.js | 32 ++++---- src/lib/plugins/effects.js | 22 +++--- src/lib/plugins/entities.js | 8 +- src/lib/plugins/experience.js | 14 ++-- src/lib/plugins/external.js | 6 +- src/lib/plugins/inventory.js | 20 ++--- src/lib/plugins/log.js | 12 +-- src/lib/plugins/login.js | 17 ++--- src/lib/plugins/logout.js | 4 +- src/lib/plugins/moderation.js | 36 +++++---- src/lib/plugins/modpe.js | 40 +++++----- src/lib/plugins/particle.js | 6 +- src/lib/plugins/physics.js | 36 ++++----- src/lib/plugins/placeBlock.js | 18 ++--- src/lib/plugins/players.js | 8 +- src/lib/plugins/portal.js | 14 ++-- src/lib/plugins/pvp.js | 10 +-- src/lib/plugins/settings.js | 6 +- src/lib/plugins/sound.js | 18 ++--- src/lib/plugins/spawn.js | 50 ++++++------ src/lib/plugins/tick.js | 4 +- src/lib/plugins/tp.js | 4 +- src/lib/plugins/updatePositions.js | 28 +++---- src/lib/plugins/useItem.js | 16 ++-- src/lib/plugins/world.js | 26 +++---- src/lib/portal_detector.js | 42 +++++------ src/lib/worldGenerations/all_the_blocks.js | 16 ++-- src/lib/worldGenerations/diamond_square.js | 53 ++++++------- src/lib/worldGenerations/grass_field.js | 12 +-- src/lib/worldGenerations/nether.js | 22 +++--- src/lib/worldGenerations/superflat.js | 16 ++-- test/mineflayer.js | 50 ++++++------ test/portal_detector.js | 50 ++++++------ test/simple.js | 6 +- 44 files changed, 454 insertions(+), 460 deletions(-) diff --git a/src/index.js b/src/index.js index 65e1a30..ebdf880 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,7 @@ -var mc = require('minecraft-protocol'); -var EventEmitter = require('events').EventEmitter; -var path = require('path'); -var requireIndex = require('requireindex'); +const mc = require('minecraft-protocol'); +const EventEmitter = require('events').EventEmitter; +const path = require('path'); +const requireIndex = require('requireindex'); require('emit-then').register(); if (process.env.NODE_ENV === 'dev'){ require('longjohn'); @@ -20,7 +20,7 @@ module.exports = { function createMCServer(options) { options = options || {}; - var mcServer = new MCServer(); + const mcServer = new MCServer(); mcServer.connect(options); return mcServer; } @@ -32,7 +32,7 @@ class MCServer extends EventEmitter { } connect(options) { - var plugins = requireIndex(path.join(__dirname, 'lib', 'plugins')); + const plugins = requireIndex(path.join(__dirname, 'lib', 'plugins')); this._server = mc.createServer(options); Object.keys(plugins) .filter(pluginName => plugins[pluginName].server!=undefined) diff --git a/src/lib/behavior.js b/src/lib/behavior.js index f0274fd..0bc6ed5 100644 --- a/src/lib/behavior.js +++ b/src/lib/behavior.js @@ -1,10 +1,10 @@ module.exports = (obj) => { return async (eventName, data, func, cancelFunc) => { - var hiddenCancelled = false; - var cancelled = false; - var cancelCount = 0; - var defaultCancel = true; - var cancel = (dC=true, hidden=false) => { // Hidden shouldn't be used often but it's not hard to implement so meh + let hiddenCancelled = false; + let cancelled = false; + let cancelCount = 0; + let defaultCancel = true; + const cancel = (dC=true, hidden=false) => { // Hidden shouldn't be used often but it's not hard to implement so meh if (hidden) hiddenCancelled = true; else { cancelled = true; @@ -13,7 +13,7 @@ module.exports = (obj) => { defaultCancel = dC; }; - var resp; + let resp; await obj.emitThen(eventName + '_cancel', data, cancel).catch((err)=> setTimeout(() => {throw err;},0)); await obj.emitThen(eventName, data, cancelled, cancelCount).catch((err)=> setTimeout(() => {throw err;},0)); diff --git a/src/lib/command.js b/src/lib/command.js index 0532e88..acbcf26 100644 --- a/src/lib/command.js +++ b/src/lib/command.js @@ -11,21 +11,21 @@ class Command { } find(command) { - var parts=command.split(" "); - var c=parts.shift(); - var pars=parts.join(" "); + const parts=command.split(" "); + const c=parts.shift(); + const pars=parts.join(" "); if(this.hash[c]) return [this.hash[c], pars]; return undefined; } async use(command, op=true) { - var res = this.find(command); + let res = this.find(command); if(res) { - var [com,pars]=res; + let [com,pars]=res; if (com.params.op && !op) return 'You do not have permission to use this command'; - var parse = com.params.parse; + const parse = com.params.parse; if(parse) { if(typeof parse == 'function') { pars = parse(pars); @@ -46,15 +46,15 @@ class Command { } updateHistory() { - var all = '(.+?)'; + const all = '(.+?)'; - var list = [this.base]; + const list = [this.base]; if(this.params.aliases && this.params.aliases.length) { this.params.aliases.forEach(al => list.unshift(this.parentBase + al)); } list.forEach((command) => { - var parentBase = this.parent ? (this.parent.path || '') : ''; + const parentBase = this.parent ? (this.parent.path || '') : ''; this.path = parentBase + this.space() + (command || all); if(this.path == all && !this.parent) this.path = ''; @@ -68,7 +68,7 @@ class Command { } space(end) { - var first = !(this.parent && this.parent.parent); + const first = !(this.parent && this.parent.parent); return this.params.merged || (!end && first) ? '' : ' '; } diff --git a/src/lib/experience.js b/src/lib/experience.js index b06e492..329a6d6 100644 --- a/src/lib/experience.js +++ b/src/lib/experience.js @@ -1,18 +1,18 @@ module.exports={distanceToXpLevel,getXpLevel,getXpRequired,getBaseXpFromLevel}; function distanceToXpLevel(xp, toLevel) { - var level = getXpLevel(xp); + const level = getXpLevel(xp); if (!toLevel) toLevel = level+1; - var levelBaseXp = getBaseXpFromLevel(level); - var requiredXp = getXpRequired(level, toLevel); + const levelBaseXp = getBaseXpFromLevel(level); + const requiredXp = getXpRequired(level, toLevel); return (xp - levelBaseXp) / requiredXp; } function getXpLevel(xp) { // I have to use quadratic equation to reverse the equation from getBaseXpFromLevel(). Ugh. - var a; - var b; - var c; + let a; + let b; + let c; if (xp < 352) { // 352 == Experience at level 16 a = 1; b = 6; diff --git a/src/lib/plugins/behavior.js b/src/lib/plugins/behavior.js index 737fef0..1b2699f 100644 --- a/src/lib/plugins/behavior.js +++ b/src/lib/plugins/behavior.js @@ -1,4 +1,4 @@ -var Behavior = require("flying-squid").Behavior; +const Behavior = require("flying-squid").Behavior; module.exports.server = function(serv) { serv.behavior = new Behavior(serv); diff --git a/src/lib/plugins/blocks.js b/src/lib/plugins/blocks.js index 7a77158..5f365b0 100644 --- a/src/lib/plugins/blocks.js +++ b/src/lib/plugins/blocks.js @@ -1,4 +1,4 @@ -var Vec3 = require("vec3").Vec3; +const Vec3 = require("vec3").Vec3; module.exports.player=function(player,serv) { @@ -34,12 +34,12 @@ module.exports.player=function(player,serv) usage: '/setblock [data]', op: true, parse(str) { - var results = str.match(/^(~|~?-?[0-9]+) (~|~?-?[0-9]+) (~|~?-?[0-9]+) ([0-9]{1,3})(?: ([0-9]{1,3}))?/); + const results = str.match(/^(~|~?-?[0-9]+) (~|~?-?[0-9]+) (~|~?-?[0-9]+) ([0-9]{1,3})(?: ([0-9]{1,3}))?/); if(!results) return false; return results; }, action(params) { - var res = params.slice(1, 4); + let res = params.slice(1, 4); res = res.map((val, i) => serv.posFromString(val, player.position[['x','y','z'][i]] / 32)) player.setBlock(new Vec3(res[0], res[1], res[2]).floored(), params[4], params[5] || 0); } diff --git a/src/lib/plugins/chat.js b/src/lib/plugins/chat.js index 4efe87b..027367a 100644 --- a/src/lib/plugins/chat.js +++ b/src/lib/plugins/chat.js @@ -46,17 +46,17 @@ module.exports.server=function(serv) serv.parseClassic = (message) => { if (typeof message == 'object') return message; - var messageList = []; - var text = ''; - var nextChanged = false; - var color = 'white'; - var bold = false; - var italic = false; - var underlined = false; - var strikethrough = false; - var random = false; - var colors = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f', 'k','l','m','n','o','r','&'] - var convertColor = ['black', 'dark_blue','dark_green','dark_cyan','dark_red','dark_purple','gold', + const messageList = []; + let text = ''; + let nextChanged = false; + let color = 'white'; + let bold = false; + let italic = false; + let underlined = false; + let strikethrough = false; + let random = false; + const colors = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f', 'k','l','m','n','o','r','&'] + const convertColor = ['black', 'dark_blue','dark_green','dark_cyan','dark_red','dark_purple','gold', 'gray', 'dark_gray', 'blue', 'green', 'aqua', 'red', 'light_purple', 'yellow', 'white', 'random', 'bold', 'strikethrough', 'underlined', 'italic', 'reset', '&']; @@ -75,9 +75,9 @@ module.exports.server=function(serv) } while (message != '') { - var currChar = message[0]; + const currChar = message[0]; if (nextChanged) { - var newColor = convertColor[colors.indexOf(currChar)]; + const newColor = convertColor[colors.indexOf(currChar)]; if (newColor) { if (newColor == 'bold') bold = true; else if (newColor == 'strikethrough') strikethrough = true; @@ -133,7 +133,7 @@ module.exports.player=function(player,serv) whitelist: serv.players, blacklist: [] }, ({message, prefix, text, whitelist, blacklist}) => { - var obj = serv.parseClassic(prefix); + const obj = serv.parseClassic(prefix); if (!obj.extra) obj.extra = []; obj.extra.push(serv.parseClassic(text)); serv.broadcast(obj, { @@ -150,7 +150,7 @@ module.exports.player=function(player,serv) }; player.emptyChat = (count=1) => { - for (var i = 0; i < count; i++) { + for (let i = 0; i < count; i++) { player.chat(''); } } diff --git a/src/lib/plugins/chest.js b/src/lib/plugins/chest.js index c3072a8..fcfe874 100644 --- a/src/lib/plugins/chest.js +++ b/src/lib/plugins/chest.js @@ -1,12 +1,12 @@ -var Vec3 = require("vec3").Vec3; +const Vec3 = require("vec3").Vec3; module.exports.player=function(player) { player.on('placeBlock_cancel', async (opt, cancel) => { if (player.crouching) return; try { - var id = await player.world.getBlockType(opt.reference); - var blockAbove = await player.world.getBlockType(opt.reference.plus(new Vec3(0, 1, 0))); + const id = await player.world.getBlockType(opt.reference); + const blockAbove = await player.world.getBlockType(opt.reference.plus(new Vec3(0, 1, 0))); if (id == 54) { opt.playSound = false; if (blockAbove) { diff --git a/src/lib/plugins/commands.js b/src/lib/plugins/commands.js index c18e90c..b48d91e 100644 --- a/src/lib/plugins/commands.js +++ b/src/lib/plugins/commands.js @@ -1,5 +1,4 @@ -var Vec3 = require("vec3").Vec3; -var UserError = require('flying-squid').UserError; +const UserError = require('flying-squid').UserError; module.exports.player=function(player, serv) { @@ -8,45 +7,44 @@ module.exports.player=function(player, serv) { info: 'to show all commands', usage: '/help [command]', parse(str) { - var params = str.split(' '); - var page = parseInt(params[params.length-1]); - var search = ''; + const params = str.split(' '); + const page = parseInt(params[params.length-1]); if (page) { params.pop(); } - search = params.join(' '); + const search = params.join(' '); return { search: search, page: (page && page - 1) || 0 }; }, action({search, page}) { if (page < 0) return 'Page # must be >= 1'; - var hash = player.commands.uniqueHash; + const hash = player.commands.uniqueHash; - var PAGE_LENGTH = 7; + const PAGE_LENGTH = 7; - var found = Object.keys(hash).filter(h => (h + ' ').indexOf((search && search + ' ') || '') == 0); + let found = Object.keys(hash).filter(h => (h + ' ').indexOf((search && search + ' ') || '') == 0); if (found.length == 0) { // None found return 'Could not find any matches'; } else if (found.length == 1) { // Single command found, giev info on command - var cmd = hash[found[0]]; - var usage = (cmd.params && cmd.params.usage) || cmd.base; - var info = (cmd.params && cmd.params.info) || 'No info'; + const cmd = hash[found[0]]; + const usage = (cmd.params && cmd.params.usage) || cmd.base; + const info = (cmd.params && cmd.params.info) || 'No info'; player.chat(usage + ': ' + info); } else { // Multiple commands found, give list with pages - var totalPages = Math.ceil((found.length-1) / PAGE_LENGTH); + const totalPages = Math.ceil((found.length-1) / PAGE_LENGTH); if (page >= totalPages) return 'There are only' + totalPages + ' help pages'; found = found.sort(); if (found.indexOf('search') != -1) { - var baseCmd = hash[search]; + const baseCmd = hash[search]; player.chat(baseCmd.base + ' -' + ((baseCmd.params && baseCmd.params.info && ' ' + baseCmd.params.info) || '=-=-=-=-=-=-=-=-')); } else { player.chat('Help -=-=-=-=-=-=-=-=-'); } - for (var i = PAGE_LENGTH*page; i < Math.min(PAGE_LENGTH*(page + 1), found.length); i++) { + for (let i = PAGE_LENGTH*page; i < Math.min(PAGE_LENGTH*(page + 1), found.length); i++) { if (found[i] === search) continue; - var cmd = hash[found[i]]; - var usage = (cmd.params && cmd.params.usage) || cmd.base; - var info = (cmd.params && cmd.params.info) || 'No info'; + const cmd = hash[found[i]]; + const usage = (cmd.params && cmd.params.usage) || cmd.base; + const info = (cmd.params && cmd.params.info) || 'No info'; player.chat(usage + ': ' + info); } player.chat('--=[Page ' + (page + 1) + ' of ' + totalPages + ']=--') @@ -59,9 +57,9 @@ module.exports.player=function(player, serv) { info: 'to pong!', usage: '/ping [number]', action(params) { - var num = params[0] * 1 + 1; + const num = params[0] * 1 + 1; - var str = 'pong'; + let str = 'pong'; if(!isNaN(num)) str += ' [' + num + ']'; player.chat(str + '!'); @@ -105,7 +103,7 @@ module.exports.player=function(player, serv) { return str || false; }, action(sel) { - var arr = serv.selectorString(sel, player.position.scaled(1/32), player.world); + const arr = serv.selectorString(sel, player.position.scaled(1/32), player.world); player.chat(JSON.stringify(arr.map(a => a.id))); } }); @@ -113,7 +111,7 @@ module.exports.player=function(player, serv) { player.handleCommand = async (str) => { try { - var res = await player.commands.use(str, player.op); + const res = await player.commands.use(str, player.op); if (res) player.chat(serv.color.red + res); } catch(err) { @@ -130,7 +128,7 @@ module.exports.entity = function(entity, serv) { module.exports.server = function(serv) { function shuffleArray(array) { - var currentIndex = array.length, temporaryValue, randomIndex ; + let currentIndex = array.length, temporaryValue, randomIndex ; // While there remain elements to shuffle... while (0 !== currentIndex) { @@ -148,39 +146,39 @@ module.exports.server = function(serv) { return array; } - var notudf = i => typeof i != 'undefined'; + const notudf = i => typeof i != 'undefined'; serv.selector = (type, opt) => { if (['all', 'random', 'near', 'entity'].indexOf(type) == -1) throw new UserError('serv.selector(): type must be either [all, random, near, or entity]'); - var count = typeof opt.count != 'undefined' ? + const count = typeof opt.count != 'undefined' ? count : (type == 'all' || type == 'entity' ?serv.entities.length : 1); - var pos = opt.pos; - var sample; + const pos = opt.pos; + let sample; if (type == 'all') sample = serv.players; else if (type == 'random' || type == 'near') sample = serv.players.filter(p => p.health != 0); else if (type == 'entity') sample = Object.keys(serv.entities).map(k => serv.entities[k]); - var checkOption = (val, compare) => { + const checkOption = (val, compare) => { if (!val) return true; - var not = val[0] == '!'; - var v = val; + const not = val[0] == '!'; + let v = val; if (not) v = v.slice(1, v.length); if (not && compare == v) return false; if (!not && compare != v) return false; return true; - } + }; - var scores = { + const scores = { max: [], min: [] }; Object.keys(opt).forEach(o => { if (o.indexOf('score_') != 0) return; - var score = o.replace('score_', ''); + const score = o.replace('score_', ''); if (score.indexOf('_min') == score.length - 1) { scores.min.push({ score: score.replace('_min' ,''), @@ -210,7 +208,7 @@ module.exports.server = function(serv) { if (!checkOption(opt.name, s.username)) return false; if (!checkOption(opt.type, s.name)) return false; - var fail = false; + let fail = false; scores.max.forEach(m => { if (fail) return; if (!notudf(s.scores[m.score])) fail = true; @@ -237,29 +235,29 @@ module.exports.server = function(serv) { serv.selectorString = (str, pos, world, allowUser=true) => { pos = pos.clone(); - var player = serv.getPlayer(str); + const player = serv.getPlayer(str); if (!player && str[0] != '@') return []; else if (player) return allowUser ? [player] : []; - var match = str.match(/^@([a,r,p,e])(?:\[([^\]]+)\])?$/); + const match = str.match(/^@([a,r,p,e])(?:\[([^\]]+)\])?$/); if (match == null) throw new UserError('Invalid selector format'); - var typeConversion = { + const typeConversion = { a: 'all', r: 'random', p: 'near', e: 'entity' }; - var type = typeConversion[match[1]]; - var opt = match[2] ? match[2].split(',') : []; - var optPair = []; - var err; + const type = typeConversion[match[1]]; + const opt = match[2] ? match[2].split(',') : []; + const optPair = []; + let err; opt.forEach(o => { - var match = o.match(/^([^=]+)=([^=]+)$/); + const match = o.match(/^([^=]+)=([^=]+)$/); if (match == null) err = new UserError('Invalid selector option format: "' + o + '"'); else optPair.push({key: match[1], val: match[2]}); }); if (err) throw err; - var optConversion = { + const optConversion = { type: 'type', r: 'radius', rm: 'minRadius', @@ -274,9 +272,9 @@ module.exports.server = function(serv) { ry: 'pitch', rym: 'minPitch' }; - var convertInt = ['r', 'rm', 'm', 'c', 'l', 'lm', 'rx', 'rxm', 'ry', 'rym']; + const convertInt = ['r', 'rm', 'm', 'c', 'l', 'lm', 'rx', 'rxm', 'ry', 'rym']; - var data = { + const data = { pos: pos, world: world, scores: [], diff --git a/src/lib/plugins/daycycle.js b/src/lib/plugins/daycycle.js index 5e36fc4..562c6b0 100644 --- a/src/lib/plugins/daycycle.js +++ b/src/lib/plugins/daycycle.js @@ -41,7 +41,7 @@ module.exports.player=function(player,serv){ usage: '/time ', op: true, parse(str) { - var data = str.match(/^(add|query|set)(?: ([0-9]+|day|night))?/); + const data = str.match(/^(add|query|set)(?: ([0-9]+|day|night))?/); if(!data) return false; return { action: data[1], @@ -52,7 +52,7 @@ module.exports.player=function(player,serv){ if(action == "query") { player.chat("It is "+serv.time); } else { - var newTime; + let newTime; if(action == "set") { newTime = value; diff --git a/src/lib/plugins/digging.js b/src/lib/plugins/digging.js index 5adb2bf..c0a8e57 100644 --- a/src/lib/plugins/digging.js +++ b/src/lib/plugins/digging.js @@ -1,4 +1,4 @@ -var Vec3 = require("vec3").Vec3; +const Vec3 = require("vec3").Vec3; module.exports.player=function(player,serv) { @@ -8,13 +8,13 @@ module.exports.player=function(player,serv) } player._client.on("block_dig",async ({location,status,face}) => { - var pos=new Vec3(location.x,location.y,location.z); + let pos=new Vec3(location.x,location.y,location.z); - var directionVector=directionToVector[face]; - var facedPos=pos.plus(directionVector); + const directionVector=directionToVector[face]; + const facedPos=pos.plus(directionVector); try { - let facedBlock = await player.world.getBlock(facedPos); + const facedBlock = await player.world.getBlock(facedPos); let block; if(facedBlock.name=="fire") { @@ -55,12 +55,12 @@ module.exports.player=function(player,serv) return currentlyDugBlock.digTime(); } - var currentlyDugBlock; - var startDiggingTime; - var animationInterval; - var expectedDiggingTime; - var lastDestroyState; - var currentAnimationId; + let currentlyDugBlock; + let startDiggingTime; + let animationInterval; + let expectedDiggingTime; + let lastDestroyState; + let currentAnimationId; function startDigging(location) { serv.entityMaxId++; @@ -72,8 +72,8 @@ module.exports.player=function(player,serv) animationInterval=setInterval(updateAnimation,100); function updateAnimation() { - var currentDiggingTime=new Date()-startDiggingTime; - var newDestroyState=Math.floor(9*currentDiggingTime/expectedDiggingTime); + const currentDiggingTime=new Date()-startDiggingTime; + let newDestroyState=Math.floor(9*currentDiggingTime/expectedDiggingTime); newDestroyState=newDestroyState>9 ? 9 : newDestroyState; if(newDestroyState!=lastDestroyState) { @@ -108,8 +108,8 @@ module.exports.player=function(player,serv) async function completeDigging(location) { clearInterval(animationInterval); - var diggingTime=new Date()-startDiggingTime; - var stop = false; + const diggingTime=new Date()-startDiggingTime; + let stop = false; if(expectedDiggingTime-diggingTime<100) { stop = player.behavior('forceCancelDig', { stop: true, @@ -175,4 +175,4 @@ module.exports.player=function(player,serv) }; -var directionToVector=[new Vec3(0,-1,0),new Vec3(0,1,0),new Vec3(0,0,-1),new Vec3(0,0,1),new Vec3(-1,0,0),new Vec3(1,0,0)]; \ No newline at end of file +const directionToVector=[new Vec3(0,-1,0),new Vec3(0,1,0),new Vec3(0,0,-1),new Vec3(0,0,1),new Vec3(-1,0,0),new Vec3(1,0,0)]; \ No newline at end of file diff --git a/src/lib/plugins/effects.js b/src/lib/plugins/effects.js index 007a2da..2fa0a5c 100644 --- a/src/lib/plugins/effects.js +++ b/src/lib/plugins/effects.js @@ -1,15 +1,15 @@ module.exports.entity = function(entity, serv) { entity.effects = {}; - for (var i = 1; i <= 23; i++) { // 23 in 1.8, 27 in 1.9 + for (let i = 1; i <= 23; i++) { // 23 in 1.8, 27 in 1.9 entity.effects[i] = null; // Just so we know it's a real potion and not undefined/not existant } entity.sendEffect = (effectId, {amplifier=0,duration=30*20,particles=true,whitelist,blacklist=[]}={}) => { if (!whitelist) whitelist = serv.getNearby(entity); if (entity.type == 'player' && [1].indexOf(effectId) != -1) entity.sendAbilities(); - var sendTo = whitelist.filter(p => blacklist.indexOf(p) == -1); - var data = { + const sendTo = whitelist.filter(p => blacklist.indexOf(p) == -1); + const data = { entityId: entity.id, effectId: effectId, amplifier: amplifier, @@ -21,7 +21,7 @@ module.exports.entity = function(entity, serv) { entity.sendRemoveEffect = (effectId, {whitelist,blacklist=[]}={}) => { if (!whitelist) whitelist = serv.getNearby(entity); - var sendTo = whitelist.filter(p => blacklist.indexOf(p) == -1); + const sendTo = whitelist.filter(p => blacklist.indexOf(p) == -1); serv._writeArray('remove_entity_effect', { entityId: entity.id, effectId: effectId @@ -29,7 +29,7 @@ module.exports.entity = function(entity, serv) { }; entity.addEffect = (effectId, opt={}) => { - var amp = typeof opt.amplifier == 'undefined' ? 0 : opt.amplifier; + const amp = typeof opt.amplifier == 'undefined' ? 0 : opt.amplifier; if (!entity.effects[effectId] || opt.override || amp < entity.effects[effectId].amplifier) { entity.effects[effectId] = { amplifier: opt.amplifier || 0, @@ -40,7 +40,7 @@ module.exports.entity = function(entity, serv) { entity.sendEffect(effectId, opt); return true; } else return false; - } + }; entity.removeEffect = (effectId, opt) => { entity.effects[effectId] = null; @@ -49,7 +49,7 @@ module.exports.entity = function(entity, serv) { serv.on('tick', () => { Object.keys(entity.effects).forEach(effectId => { - var e = entity.effects[effectId]; + const e = entity.effects[effectId]; if (e && e.end <= Date.now()) entity.removeEffect(effectId); }); }); @@ -64,14 +64,14 @@ module.exports.player = function(player, serv) { return str.match(/(.+?) (\d+)(?: (\d+))?(?: (\d+))?(?: (true|false))?|.*? clear/) || false; }, action(params) { - var targets = player.selectorString(params[1]); + const targets = player.selectorString(params[1]); if (params[2] == 'clear') { targets.forEach(e => Object.keys(e.effects).forEach(effectId => { if (e.effects[effectId] != null) e.removeEffect(effectId); })); } else { targets.forEach(e => { - var effId = parseInt(params[2]); + const effId = parseInt(params[2]); if (e.effects[effId]) { e.removeEffect(effId); } @@ -82,10 +82,10 @@ module.exports.player = function(player, serv) { }); }); } - var chatSelect = (targets.length == 1 ? (targets[0].type == 'player' ? targets[0].username : 'entity') : 'entities'); + const chatSelect = (targets.length == 1 ? (targets[0].type == 'player' ? targets[0].username : 'entity') : 'entities'); if (params[2] == 'clear') player.chat('Remove all effects from ' + chatSelect + '.' ); else player.chat('Gave ' + chatSelect + ' effect ' + params[2] + '(' + (params[4] || 0) + ') for ' + (parseInt(params[3]) || 30) + ' seconds'); } }); -} \ No newline at end of file +}; \ No newline at end of file diff --git a/src/lib/plugins/entities.js b/src/lib/plugins/entities.js index c373992..92d88f7 100644 --- a/src/lib/plugins/entities.js +++ b/src/lib/plugins/entities.js @@ -1,15 +1,13 @@ -var Vec3 = require("vec3").Vec3; - module.exports.server=function(serv,options) { serv.on('tick', function(delta) { Promise.all( Object.keys(serv.entities).map(async (id) => { - var entity = serv.entities[id]; + const entity = serv.entities[id]; if (entity.deathTime && Date.now() - entity.bornTime >= entity.deathTime) { entity.destroy(); return; } else if (entity.pickupTime && Date.now() - entity.bornTime >= entity.pickupTime) { - var players = serv.getNearby({ + const players = serv.getNearby({ world: entity.world, position: entity.position, radius: 1.5*32 // Seems good for now @@ -19,7 +17,7 @@ module.exports.server=function(serv,options) { } } if (!entity.velocity || !entity.size) return; - var posAndOnGround = await entity.calculatePhysics(delta); + const posAndOnGround = await entity.calculatePhysics(delta); if (entity.type == 'mob') entity.sendPosition(posAndOnGround.position, posAndOnGround.onGround); }) ).catch((err)=> setTimeout(() => {throw err;},0)); diff --git a/src/lib/plugins/experience.js b/src/lib/plugins/experience.js index eb7063f..f7e2360 100644 --- a/src/lib/plugins/experience.js +++ b/src/lib/plugins/experience.js @@ -1,4 +1,4 @@ -var {distanceToXpLevel,getXpLevel,getBaseXpFromLevel}=require("flying-squid").experience; +const {distanceToXpLevel,getXpLevel,getBaseXpFromLevel}=require("flying-squid").experience; module.exports.player = function(player) { player.xp = 0; @@ -39,18 +39,18 @@ module.exports.player = function(player) { return str.match(/(-?\d+)(L)? ?([a-zA-Z0-9_]+)?/) || false; }, action(args) { - var isLevel = !!args[2]; - var amt = parseInt(args[1]); - var user = args[3] ? serv.getPlayer(args[3]) : player; + const isLevel = !!args[2]; + const amt = parseInt(args[1]); + const user = args[3] ? serv.getPlayer(args[3]) : player; if (!user) return args[3] + ' is not on this server!'; if (!isLevel) { user.setXp(user.xp + amt); player.chat('Gave ' + user.username + ' ' + amt + ' xp'); } else { - var currLevel = getXpLevel(player.xp); - var baseCurrLevel = getBaseXpFromLevel(currLevel); - var extraXp = player.xp - baseCurrLevel; + const currLevel = getXpLevel(player.xp); + const baseCurrLevel = getBaseXpFromLevel(currLevel); + const extraXp = player.xp - baseCurrLevel; user.setXp(getBaseXpFromLevel(currLevel + amt) + extraXp); player.chat('Gave ' + user.username + ' ' + amt + ' levels'); } diff --git a/src/lib/plugins/external.js b/src/lib/plugins/external.js index e61b7c2..4d31704 100644 --- a/src/lib/plugins/external.js +++ b/src/lib/plugins/external.js @@ -39,7 +39,7 @@ module.exports.server = function(serv, settings) { }); serv.on('asap', () => { - for (var p in serv.plugins) { + for (let p in serv.plugins) { serv.log('[PLUGINS] Loaded "' + serv.plugins[p].name + '"'); } }); @@ -49,7 +49,7 @@ module.exports.server = function(serv, settings) { module.exports.player = function(player, serv) { Object.keys(serv.plugins).forEach(p => { - var plugin = serv.plugins[p]; + const plugin = serv.plugins[p]; if (plugin.player) plugin.player.call(plugin, player, serv); }); }; @@ -67,7 +67,7 @@ module.exports.entity = function(entity, serv) { }; Object.keys(serv.plugins).forEach(p => { - var plugin = serv.plugins[p]; + const plugin = serv.plugins[p]; if (plugin.entity) plugin.entity.call(plugin, entity, serv); }); }; \ No newline at end of file diff --git a/src/lib/plugins/inventory.js b/src/lib/plugins/inventory.js index 3b83091..eb554d3 100644 --- a/src/lib/plugins/inventory.js +++ b/src/lib/plugins/inventory.js @@ -1,6 +1,6 @@ -var version = require("flying-squid").version; -var windows = require("prismarine-windows")(version).windows; -var Item = require("prismarine-item")(version); +const version = require("flying-squid").version; +const windows = require("prismarine-windows")(version).windows; +const Item = require("prismarine-item")(version); module.exports.player = function(player,serv) { @@ -138,14 +138,14 @@ module.exports.player = function(player,serv) player.inventory.updateSlot(slot, undefined); return; } - - var newItem = Item.fromNotch(item); + + const newItem = Item.fromNotch(item); player.inventory.updateSlot(slot, newItem); }); player.inventory.on("windowUpdate", function(slot,oldItem,newItem){ - var equipments={ + const equipments={ 5:4, 6:3, 7:2, @@ -173,8 +173,8 @@ module.exports.player = function(player,serv) player.collect = (collectEntity) => { // Add it to a stack already in the player's inventory if possible - for(var itemKey=0;itemKey serv.log("seed: "+seed)); - var logFile=path.join("logs",timeStarted + ".log"); + const logFile=path.join("logs",timeStarted + ".log"); serv.log = message => { message=moment().format('MMMM Do YYYY, HH:mm:ss')+" "+message; diff --git a/src/lib/plugins/login.js b/src/lib/plugins/login.js index eb98122..654057b 100644 --- a/src/lib/plugins/login.js +++ b/src/lib/plugins/login.js @@ -1,10 +1,9 @@ -var Entity=require("prismarine-entity"); -var Vec3 = require("vec3").Vec3; +const Vec3 = require("vec3").Vec3; -var path = require('path'); -var requireIndex = require('requireindex'); -var plugins = requireIndex(path.join(__dirname,'..', 'plugins')); -var Command = require('flying-squid').Command; +const path = require('path'); +const requireIndex = require('requireindex'); +const plugins = requireIndex(path.join(__dirname,'..', 'plugins')); +const Command = require('flying-squid').Command; module.exports.server=function(serv,options) { @@ -14,7 +13,7 @@ module.exports.server=function(serv,options) serv._server.on('login', async (client) => { if(client.socket.listeners('end').length==0) return; // TODO: should be fixed properly in nmp instead try { - var player = serv.initEntity('player', null, serv.overworld, new Vec3(0,0,0)); + const player = serv.initEntity('player', null, serv.overworld, new Vec3(0,0,0)); player._client=client; player.profileProperties=player._client.profile ? player._client.profile.properties : []; @@ -129,10 +128,10 @@ module.exports.player=function(player,serv) } player.waitPlayerLogin = () => { - var events=["flying","look"]; + const events=["flying","look"]; return new Promise(function(resolve){ - var listener=()=> { + const listener=()=> { events.map(event => player._client.removeListener(event,listener)); resolve(); }; diff --git a/src/lib/plugins/logout.js b/src/lib/plugins/logout.js index 2735d12..0aefea2 100644 --- a/src/lib/plugins/logout.js +++ b/src/lib/plugins/logout.js @@ -1,4 +1,4 @@ -var once = require('event-promise'); +const once = require('event-promise'); module.exports.server=function(serv) { @@ -30,7 +30,7 @@ module.exports.player=function(player,serv) player.nearbyPlayers().forEach(otherPlayer => otherPlayer.despawnEntities([player])); delete serv.entities[player.id]; player.emit('disconnected'); - var index = serv.players.indexOf(player); + const index = serv.players.indexOf(player); if (index > -1) { serv.players.splice(index, 1); } diff --git a/src/lib/plugins/moderation.js b/src/lib/plugins/moderation.js index f8117c6..abbaa3a 100644 --- a/src/lib/plugins/moderation.js +++ b/src/lib/plugins/moderation.js @@ -1,6 +1,6 @@ -var moment=require("moment"); -var rp=require("request-promise"); -var nodeUuid=require('node-uuid'); +const moment=require("moment"); +const rp=require("request-promise"); +const nodeUuid=require('node-uuid'); module.exports.server=function(serv) { @@ -15,13 +15,11 @@ module.exports.server=function(serv) serv.bannedIPs[IP] = { time: +moment(), reason: reason || "Your IP is banned!" - } - for(var uuid in serv.players){ - if(serv.players[uuid]._client.socket.remoteAddress == IP){ - serv.players[uuid].kick(serv.bannedIPs[serv.players[uuid]._client.socket.remoteAddress].reason) - } - } - } + }; + Object.keys(serv.players) + .filter(uuid => serv.players[uuid]._client.socket.remoteAddress == IP) + .forEach(uuid => serv.players[uuid].kick(serv.bannedIPs[serv.players[uuid]._client.socket.remoteAddress].reason)); + }; function uuidInParts(plainUUID) { @@ -71,7 +69,7 @@ module.exports.player=function(player,serv) player.ban = reason => { reason = reason || "You were banned!"; player.kick(reason); - var uuid=player._client.uuid; + const uuid=player._client.uuid; serv.ban(uuid, reason); }; player.banIP = reason => { @@ -92,14 +90,14 @@ module.exports.player=function(player,serv) parse(str) { if(!str.match(/([a-zA-Z0-9_]+)(?: (.*))?/)) return false; - var parts = str.split(' '); + const parts = str.split(' '); return { username:parts.shift(), reason:parts.join(' ') }; }, action({username,reason}) { - var kickPlayer = serv.getPlayer(username); + const kickPlayer = serv.getPlayer(username); if (!kickPlayer) { player.chat(username + " is not on this server!"); } else { @@ -117,14 +115,14 @@ module.exports.player=function(player,serv) parse(str) { if(!str.match(/([a-zA-Z0-9_]+)(?: (.*))?/)) return false; - var parts = str.split(' '); + const parts = str.split(' '); return { username:parts.shift(), reason:parts.join(' ') }; }, action({username,reason}) { - var banPlayer = serv.getPlayer(username); + const banPlayer = serv.getPlayer(username); if (!banPlayer) { serv.banUsername(username, reason) @@ -146,7 +144,7 @@ module.exports.player=function(player,serv) usage: '/ban-ip [reason]', op: true, parse(str){ - var argv = str.split(' '); + const argv = str.split(' '); if(argv.length < 1) return; return { @@ -166,7 +164,7 @@ module.exports.player=function(player,serv) usage: '/pardon-ip ', op: true, action(IP) { - var result=serv.pardonIP(IP); + const result=serv.pardonIP(IP); player.chat(result ? IP + " was IP pardonned" : IP+" is not banned"); } }); @@ -198,7 +196,7 @@ module.exports.player=function(player,serv) return str; }, action(username) { - var user = serv.getPlayer(username); + const user = serv.getPlayer(username); if (!user) return 'That player is not on the server.' user.op = true; player.chat(username + ' is opped'); @@ -215,7 +213,7 @@ module.exports.player=function(player,serv) return str; }, action(username) { - var user = serv.getPlayer(username); + const user = serv.getPlayer(username); if (!user) return 'That player is not on the server.' user.op = false; player.chat(username + ' is deopped'); diff --git a/src/lib/plugins/modpe.js b/src/lib/plugins/modpe.js index 96fbc1d..804c769 100644 --- a/src/lib/plugins/modpe.js +++ b/src/lib/plugins/modpe.js @@ -1,20 +1,20 @@ -var Vec3 = require("vec3").Vec3; -var dir = require("node-dir"); -var fs = require("fs"); +const Vec3 = require("vec3").Vec3; +const dir = require("node-dir"); +const fs = require("fs"); function requireFromString(src, filename) { - var Module = module.constructor; - var m = new Module(); + let Module = module.constructor; + let m = new Module(); m._compile(src, filename); return m.exports; } function modpeApi() { - var Vec3 = null; - var vec3 = null; + let Vec3 = null; + let vec3 = null; - var server = null; - var player = null; + let server = null; + let player = null; module.exports.startDestroyBlock = startDestroyBlock; module.exports.destroyBlock = destroyBlock; @@ -75,12 +75,12 @@ function modpeApi() { return player.heldItem.blockId; } - var Player = { + let Player = { getCarriedItem: function () { return player.heldItem.blockId; } }; - var Entity = { + let Entity = { getPitch: function () { return 1; } @@ -88,7 +88,7 @@ function modpeApi() { return 1; } }; - var Level = { + let Level = { getGameMode: function () { return player.gameMode; } @@ -99,18 +99,18 @@ function modpeApi() { } function convert(code) { - var api = modpeApi.toString() + let api = modpeApi.toString() .split("\n"); api[0] = ""; api[api.length - 1] = ""; - var finapi = api.join("\n"); + let finapi = api.join("\n"); code = finapi + code; return code; } module.exports.server=function(serv,settings) { - var verboseMPE=false; + let verboseMPE=false; function log(msg){ if(verboseMPE) serv.log("[MPE]: "+msg); } @@ -119,10 +119,10 @@ module.exports.server=function(serv,settings) return; } log("Modpe injection start..."); - var modPePluginsDir = __dirname+"/../../../modpePlugins"; + let modPePluginsDir = __dirname+"/../../../modpePlugins"; log("Place your scripts in " + modPePluginsDir); - var modCount = 0; - var mods = []; + let modCount = 0; + let mods = []; dir.readFiles(modPePluginsDir, { match: /.js/ , exclude: /^\./ @@ -130,7 +130,7 @@ module.exports.server=function(serv,settings) if (err) throw err; log("Converting " + fname); content = convert(content); - var modname = fname.split("/")[fname.split("/") + let modname = fname.split("/")[fname.split("/") .length - 1].split(".")[0]; log("Loading mod " + modname); mods.push(requireFromString(content)); @@ -153,7 +153,7 @@ module.exports.server=function(serv,settings) newLevel(); player._client.on("block_dig", function (packet) { - var pos = new Vec3(packet.location.x,packet.location.y,packet.location.z); + let pos = new Vec3(packet.location.x,packet.location.y,packet.location.z); if (packet.status == 0 && player.gameMode != 1) startDestroyBlock(pos.x, pos.y, pos.z, 0); else if (packet.status == 2) diff --git a/src/lib/plugins/particle.js b/src/lib/plugins/particle.js index f5824a5..f376eeb 100644 --- a/src/lib/plugins/particle.js +++ b/src/lib/plugins/particle.js @@ -1,8 +1,8 @@ -var Vec3 = require("vec3").Vec3; +const Vec3 = require("vec3").Vec3; module.exports.server=function(serv) { serv.emitParticle = (particle, world, position, {whitelist,blacklist=[],radius=32*32,longDistance=true,size=new Vec3(1, 1, 1),count=1}={}) => { - var players = (typeof whitelist != 'undefined' ? (whitelist instanceof Array ? whitelist : [whitelist]) : serv.getNearby({ + const players = (typeof whitelist != 'undefined' ? (whitelist instanceof Array ? whitelist : [whitelist]) : serv.getNearby({ world: world, position: position.scaled(32).floored(), radius: radius // 32 blocks, fixed position @@ -31,7 +31,7 @@ module.exports.player=function(player,serv){ usage: '/particle [amount] [ ]', op: true, parse(str) { - var results=str.match(/(\d+)(?: (\d+))?(?: (\d+))?(?: (\d+))?(?: (\d+))?(?: (\d+))?/); + const results=str.match(/(\d+)(?: (\d+))?(?: (\d+))?(?: (\d+))?(?: (\d+))?(?: (\d+))?/); if(!results) return false; return { particle:parseInt(results[1]), diff --git a/src/lib/plugins/physics.js b/src/lib/plugins/physics.js index 90d4b85..eb92dd8 100644 --- a/src/lib/plugins/physics.js +++ b/src/lib/plugins/physics.js @@ -1,5 +1,5 @@ -var blocks=require("minecraft-data")(require("flying-squid").version).blocks; -var Vec3 = require("vec3").Vec3; +const blocks=require("minecraft-data")(require("flying-squid").version).blocks; +const Vec3 = require("vec3").Vec3; module.exports.entity=function(entity){ entity.calculatePhysics = async (delta) => { @@ -9,17 +9,17 @@ module.exports.entity=function(entity){ addGravity(entity, 'z', delta); } - var vSign = getSign(entity.velocity); - var sizeSigned = new Vec3(vSign.x * entity.size.x, vSign.y * entity.size.y, vSign.z * entity.size.z); + const vSign = getSign(entity.velocity); + const sizeSigned = new Vec3(vSign.x * entity.size.x, vSign.y * entity.size.y, vSign.z * entity.size.z); - var xVec = entity.position.offset(entity.velocity.x*delta + sizeSigned.x/2, 0, 0).scaled(1/32).floored(); - var yVec = entity.position.offset(0, entity.velocity.y*delta + sizeSigned.y/2, 0).scaled(1/32).floored(); - var zVec = entity.position.offset(0, 0, entity.velocity.z*delta + sizeSigned.z/2).scaled(1/32).floored(); + const xVec = entity.position.offset(entity.velocity.x*delta + sizeSigned.x/2, 0, 0).scaled(1/32).floored(); + const yVec = entity.position.offset(0, entity.velocity.y*delta + sizeSigned.y/2, 0).scaled(1/32).floored(); + const zVec = entity.position.offset(0, 0, entity.velocity.z*delta + sizeSigned.z/2).scaled(1/32).floored(); // Get block for each (x/y/z)Vec, check to avoid duplicate getBlockTypes - var xBlock = blocks[await entity.world.getBlockType(xVec)].boundingBox == 'block'; - var yBlock = yVec.equals(xVec) ? xBlock : blocks[await entity.world.getBlockType(yVec)].boundingBox == 'block'; - var zBlock = zVec.equals(yVec) ? yBlock : (zVec.equals(xVec) ? xBlock : blocks[await entity.world.getBlockType(zVec)].boundingBox == 'block'); + const xBlock = blocks[await entity.world.getBlockType(xVec)].boundingBox == 'block'; + const yBlock = yVec.equals(xVec) ? xBlock : blocks[await entity.world.getBlockType(yVec)].boundingBox == 'block'; + const zBlock = zVec.equals(yVec) ? yBlock : (zVec.equals(xVec) ? xBlock : blocks[await entity.world.getBlockType(zVec)].boundingBox == 'block'); if (xBlock || yBlock || zBlock) { @@ -27,7 +27,7 @@ module.exports.entity=function(entity){ entity.velocity.z = getFriction(entity.velocity.z, entity.friction.z, delta); } - var newPos = entity.position.clone(); + const newPos = entity.position.clone(); newPos.x += getMoveAmount('x', xBlock, entity, delta, sizeSigned.x); newPos.y += getMoveAmount('y', yBlock, entity, delta, sizeSigned.y); @@ -38,9 +38,9 @@ module.exports.entity=function(entity){ }; entity.sendVelocity = (vel, maxVel) => { - var velocity = vel.scaled(32).floored(); // Make fixed point - var maxVelocity = maxVel.scaled(32).floored(); - var scaledVelocity = velocity.scaled(8000/32/20).floored(); // from fixed-position/second to unit => 1/8000 blocks per tick + const velocity = vel.scaled(32).floored(); // Make fixed point + const maxVelocity = maxVel.scaled(32).floored(); + const scaledVelocity = velocity.scaled(8000/32/20).floored(); // from fixed-position/second to unit => 1/8000 blocks per tick entity._writeNearby('entity_velocity', { entityId: entity.id, velocityX: scaledVelocity.x, @@ -88,7 +88,7 @@ module.exports.entity=function(entity){ } function addVelocityWithMax(current, newVel, max) { - var x, y, z; + let x, y, z; if (current.x > max.x || current.x < -max.x) x = current.x; else x = Math.max(-max.x, Math.min(max.x, current.x + newVel.x)); if (current.y > max.y || current.y < -max.y) y = current.y; @@ -109,9 +109,9 @@ module.exports.player = function(player, serv) { return str.match(/(.+?) (\d+) (\d+) (\d+)/) || false; }, action(params) { - var selector = player.selectorString(params[1]); - var vec = new Vec3(parseInt(params[2]), parseInt(params[3]), parseInt(params[4])); + const selector = player.selectorString(params[1]); + const vec = new Vec3(parseInt(params[2]), parseInt(params[3]), parseInt(params[4])); selector.forEach(e => e.sendVelocity(vec, vec.scaled(5))); } }); -} \ No newline at end of file +}; \ No newline at end of file diff --git a/src/lib/plugins/placeBlock.js b/src/lib/plugins/placeBlock.js index 2f26567..c162534 100644 --- a/src/lib/plugins/placeBlock.js +++ b/src/lib/plugins/placeBlock.js @@ -1,7 +1,7 @@ -var blocks=require("minecraft-data")(require("flying-squid").version).blocks; -var Vec3 = require("vec3").Vec3; +const blocks=require("minecraft-data")(require("flying-squid").version).blocks; +const Vec3 = require("vec3").Vec3; -var materialToSound = { +const materialToSound = { undefined: 'stone', 'rock': 'stone', 'dirt': 'grass', @@ -15,9 +15,9 @@ module.exports.player=function(player,serv) { player._client.on("block_place",({direction,heldItem,location} = {}) => { if(direction==-1 || heldItem.blockId==-1 || !blocks[heldItem.blockId]) return; - var referencePosition=new Vec3(location.x,location.y,location.z); - var directionVector=directionToVector[direction]; - var placedPosition=referencePosition.plus(directionVector); + const referencePosition=new Vec3(location.x,location.y,location.z); + const directionVector=directionToVector[direction]; + const placedPosition=referencePosition.plus(directionVector); player.behavior('placeBlock', { direction: directionVector, heldItem: heldItem, @@ -47,11 +47,11 @@ module.exports.player=function(player,serv) }); } }, async () => { - var id = await player.world.getBlockType(placedPosition); - var damage = await player.world.getBlockData(placedPosition); + const id = await player.world.getBlockType(placedPosition); + const damage = await player.world.getBlockData(placedPosition); player.sendBlock(placedPosition, id, damage); }); }); }; -var directionToVector=[new Vec3(0,-1,0),new Vec3(0,1,0),new Vec3(0,0,-1),new Vec3(0,0,1),new Vec3(-1,0,0),new Vec3(1,0,0)]; +const directionToVector=[new Vec3(0,-1,0),new Vec3(0,1,0),new Vec3(0,0,-1),new Vec3(0,0,1),new Vec3(-1,0,0),new Vec3(1,0,0)]; diff --git a/src/lib/plugins/players.js b/src/lib/plugins/players.js index dcd4122..40c5f78 100644 --- a/src/lib/plugins/players.js +++ b/src/lib/plugins/players.js @@ -6,9 +6,9 @@ module.exports.server=function(serv) serv.entities={}; serv.getPlayer = username => { - for (var p in serv.players) { - if (serv.players[p].username == username) return serv.players[p] - } + const found=serv.players.filter(pl => pl.username == username); + if(found.length>0) + return found[0]; return null; }; }; @@ -21,7 +21,7 @@ module.exports.player=function(player){ usage: '/gamemode <0-3>', op: true, parse(str) { - var results; + let results; if(!(results = str.match(/^([0-3])$/))) return false; return parseInt(str); diff --git a/src/lib/plugins/portal.js b/src/lib/plugins/portal.js index f25e540..a7b8871 100644 --- a/src/lib/plugins/portal.js +++ b/src/lib/plugins/portal.js @@ -1,15 +1,15 @@ -var {detectFrame,generatePortal,addPortalToWorld}=require("flying-squid").portal_detector; -var Vec3 = require("vec3").Vec3; -var UserError=require("flying-squid").UserError; +const {detectFrame,generatePortal,addPortalToWorld}=require("flying-squid").portal_detector; +const Vec3 = require("vec3").Vec3; +const UserError=require("flying-squid").UserError; module.exports.player=function(player,serv) { player.use_flint_and_steel=async (referencePosition,direction,position) => { let block=await player.world.getBlock(referencePosition); if(block.name=="obsidian") { - var frames=await detectFrame(player.world,referencePosition,direction); + const frames=await detectFrame(player.world,referencePosition,direction); if(frames.length!=0) { - var air = frames[0].air; + const air = frames[0].air; air.forEach(pos => player.setBlock(pos, 90, (frames[0].bottom[0].x - frames[0].bottom[1].x) != 0 ? 1 : 2)); player.world.portals.push(frames[0]); return; @@ -52,7 +52,7 @@ module.exports.player=function(player,serv) { usage: '/portal > ', op: true, parse(str) { - var pars=str.split(' '); + const pars=str.split(' '); if(pars.length!=6) return false; let [x,y,z,direction,width,height]=pars; @@ -64,7 +64,7 @@ module.exports.player=function(player,serv) { return {bottomLeft,direction,width,height}; }, async action({bottomLeft,direction,width,height}) { - var portal=generatePortal(bottomLeft,direction,width,height); + const portal=generatePortal(bottomLeft,direction,width,height); await addPortalToWorld(player.world,portal,[],[],async (pos,type) => { await serv.setBlock(player.world,pos,type,0); }); diff --git a/src/lib/plugins/pvp.js b/src/lib/plugins/pvp.js index 0dcfa61..2356d82 100644 --- a/src/lib/plugins/pvp.js +++ b/src/lib/plugins/pvp.js @@ -1,5 +1,5 @@ -var Vec3 = require("vec3").Vec3; -var UserError = require('flying-squid').UserError; +const Vec3 = require("vec3").Vec3; +const UserError = require('flying-squid').UserError; module.exports.player=function(player,serv) { @@ -15,7 +15,7 @@ module.exports.player=function(player,serv) function attackEntity(entityId) { - var attackedEntity = serv.entities[entityId]; + const attackedEntity = serv.entities[entityId]; if(!attackedEntity || (attackedEntity.gameMode != 0 && attackedEntity.type == 'player')) return; player.behavior('attack', { @@ -27,7 +27,7 @@ module.exports.player=function(player,serv) player._client.on("use_entity", ({mouse,target} = {}) => { if(!serv.entities[target]) { - var dragon; + let dragon; for(dragon=target-1;dragon>=target-7 && !serv.entities[dragon];dragon--){} if(serv.entities[dragon] && serv.entities[dragon].entityType==63) target=dragon; @@ -45,7 +45,7 @@ module.exports.player=function(player,serv) return str || false; }, action(sel) { - var arr = player.selectorString(sel); + let arr = player.selectorString(sel); if (arr.length==0) throw new UserError('Could not find player'); arr.map(entity => entity.takeDamage({damage:20})); diff --git a/src/lib/plugins/settings.js b/src/lib/plugins/settings.js index 236d6e4..352662d 100644 --- a/src/lib/plugins/settings.js +++ b/src/lib/plugins/settings.js @@ -1,4 +1,4 @@ -var Vec3 = require("vec3").Vec3; +const Vec3 = require("vec3").Vec3; function randomInt (low, high) { @@ -11,12 +11,12 @@ module.exports.server=function(serv,settings) async function findSpawnZone(world,initialPoint) { - var point=initialPoint; + let point=initialPoint; while((await (world.getBlockType(point)))==0) point=point.offset(0,-1,0); while(true) { - var p=await world.getBlockType(point); + const p=await world.getBlockType(point); if(p!=8 && p!=9) break; point=point.offset(1,0,0); diff --git a/src/lib/plugins/sound.js b/src/lib/plugins/sound.js index 29292c7..c7cda16 100644 --- a/src/lib/plugins/sound.js +++ b/src/lib/plugins/sound.js @@ -1,15 +1,15 @@ -var Vec3 = require('vec3').Vec3; +const Vec3 = require('vec3').Vec3; module.exports.server=function(serv) { serv.playSound = (sound, world, position, {whitelist,blacklist=[],radius=32*32,volume=1.0,pitch=1.0}={}) => { - var players = (typeof whitelist != 'undefined' ? (typeof whitelist instanceof Array ? whitelist : [whitelist]) : serv.getNearby({ + const players = (typeof whitelist != 'undefined' ? (typeof whitelist instanceof Array ? whitelist : [whitelist]) : serv.getNearby({ world: world, position: position.scaled(32).floored(), radius: radius // 32 blocks, fixed position })); players.filter(player => blacklist.indexOf(player) == -1) .forEach(player => { - var pos = (position || player.position.scaled(1/32)).scaled(8).floored(); + const pos = (position || player.position.scaled(1/32)).scaled(8).floored(); player._client.write('named_sound_effect', { soundName: sound, x: pos.x, @@ -42,11 +42,11 @@ module.exports.player=function(player,serv) { player.on('placeBlock_cancel', async ({reference}, cancel) => { if (player.crouching) return; - var id = await player.world.getBlockType(reference); + const id = await player.world.getBlockType(reference); if (id != 25) return; cancel(false); if (!player.world.blockEntityData[reference.toString()]) player.world.blockEntityData[reference.toString()] = {}; - var data = player.world.blockEntityData[reference.toString()]; + const data = player.world.blockEntityData[reference.toString()]; if (typeof data.note == 'undefined') data.note = -1; data.note++; data.note %= 25; @@ -54,11 +54,11 @@ module.exports.player=function(player,serv) { }); player.on('dig_cancel', async ({position}, cancel) => { - var id = await player.world.getBlockType(position); + const id = await player.world.getBlockType(position); if (id != 25) return; cancel(false); if (!player.world.blockEntityData[position.toString()]) player.world.blockEntityData[position.toString()] = {}; - var data = player.world.blockEntityData[position.toString()]; + const data = player.world.blockEntityData[position.toString()]; if (typeof data.note == 'undefined') data.note = 0; serv.playNoteBlock(data.note ,player.world, position); }); @@ -70,7 +70,7 @@ module.exports.player=function(player,serv) { usage: '/playsound [volume] [pitch]', op: true, parse(str) { - var results=str.match(/([^ ]+)(?: ([^ ]+))?(?: ([^ ]+))?/); + const results=str.match(/([^ ]+)(?: ([^ ]+))?(?: ([^ ]+))?/); if(!results) return false; return { sound_name:results[1], @@ -90,7 +90,7 @@ module.exports.player=function(player,serv) { usage: '/playsoundforall [volume] [pitch]', op: true, parse(str) { - var results=str.match(/([^ ]+)(?: ([^ ]+))?(?: ([^ ]+))?/); + const results=str.match(/([^ ]+)(?: ([^ ]+))?(?: ([^ ]+))?/); if(!results) return false; return { sound_name:results[1], diff --git a/src/lib/plugins/spawn.js b/src/lib/plugins/spawn.js index 985fc8e..412d933 100644 --- a/src/lib/plugins/spawn.js +++ b/src/lib/plugins/spawn.js @@ -1,19 +1,19 @@ -var version = require("flying-squid").version; -var entitiesByName=require("minecraft-data")(version).entitiesByName; -var entitiesById=require("minecraft-data")(version).entities; -var Entity = require("prismarine-entity"); -var path = require('path'); -var requireIndex = require('requireindex'); -var plugins = requireIndex(path.join(__dirname,'..', 'plugins')); -var Item = require("prismarine-item")(version); -var UserError = require('flying-squid').UserError; +const version = require("flying-squid").version; +const entitiesByName=require("minecraft-data")(version).entitiesByName; +const entitiesById=require("minecraft-data")(version).entities; +const Entity = require("prismarine-entity"); +const path = require('path'); +const requireIndex = require('requireindex'); +const plugins = requireIndex(path.join(__dirname,'..', 'plugins')); +const Item = require("prismarine-item")(version); +const UserError = require('flying-squid').UserError; -var Vec3 = require("vec3").Vec3; +const Vec3 = require("vec3").Vec3; module.exports.server=function(serv,options) { serv.initEntity = (type, entityType, world, position) => { serv.entityMaxId++; - var entity = new Entity(serv.entityMaxId); + const entity = new Entity(serv.entityMaxId); Object.keys(plugins) .filter(pluginName => plugins[pluginName].entity!=undefined) @@ -27,7 +27,7 @@ module.exports.server=function(serv,options) { }; serv.spawnObject = (type, world, position, {pitch=0,yaw=0,velocity=new Vec3(0,0,0),data=1,itemId,itemDamage=0,pickupTime=undefined,deathTime=undefined}) => { - var object = serv.initEntity('object', type, world, position.scaled(32).floored()); + const object = serv.initEntity('object', type, world, position.scaled(32).floored()); object.data = data; object.velocity = velocity.scaled(32).floored(); object.pitch = pitch; @@ -45,7 +45,7 @@ module.exports.server=function(serv,options) { }; serv.spawnMob = (type, world, position, {pitch=0,yaw=0,headPitch=0,velocity=new Vec3(0,0,0),metadata=[]}={}) => { - var mob = serv.initEntity('mob', type, world, position.scaled(32).floored()); + const mob = serv.initEntity('mob', type, world, position.scaled(32).floored()); mob.name=entitiesById[type].name; mob.velocity = velocity.scaled(32).floored(); mob.pitch = pitch; @@ -78,7 +78,7 @@ module.exports.player=function(player,serv){ usage: '/spawn ', op: true, parse(str) { - var results=str.match(/(\d+)/); + const results=str.match(/(\d+)/); if (!results) return false; return { id: parseInt(results[1]) @@ -97,7 +97,7 @@ module.exports.player=function(player,serv){ usage: '/spawnObject ', op: true, parse(str) { - var results=str.match(/(\d+)/); + const results=str.match(/(\d+)/); if (!results) return false; return { id: parseInt(results[1]) @@ -116,7 +116,7 @@ module.exports.player=function(player,serv){ usage: '/summon ', op: true, action(name) { - var entity=entitiesByName[name]; + const entity=entitiesByName[name]; if(!entity) { player.chat("No entity named "+name); return; @@ -133,7 +133,7 @@ module.exports.player=function(player,serv){ usage: '/pile ', op: true, parse(str) { - var args=str.split(' '); + const args=str.split(' '); if(args.length==0) return false; return args @@ -159,7 +159,7 @@ module.exports.player=function(player,serv){ usage: '/attach ', op: true, parse(str) { - var args=str.split(' '); + const args=str.split(' '); if(args.length!=2) return false; @@ -221,7 +221,7 @@ module.exports.entity=function(entity,serv) { }; entity.getSpawnPacket = () => { - var scaledVelocity = entity.velocity.scaled(8000/32/20).floored(); // from fixed-position/second to unit => 1/8000 blocks per tick + const scaledVelocity = entity.velocity.scaled(8000/32/20).floored(); // from fixed-position/second to unit => 1/8000 blocks per tick if (entity.type == 'player') { return { entityId: entity.id, @@ -271,17 +271,17 @@ module.exports.entity=function(entity,serv) { entity.updateAndSpawn = () => { - var updatedEntities=entity.getNearby(); - var entitiesToAdd=updatedEntities.filter(e => entity.nearbyEntities.indexOf(e)==-1); - var entitiesToRemove=entity.nearbyEntities.filter(e => updatedEntities.indexOf(e)==-1); + const updatedEntities=entity.getNearby(); + const entitiesToAdd=updatedEntities.filter(e => entity.nearbyEntities.indexOf(e)==-1); + const entitiesToRemove=entity.nearbyEntities.filter(e => updatedEntities.indexOf(e)==-1); if (entity.type == 'player') { entity.despawnEntities(entitiesToRemove); entitiesToAdd.forEach(entity.spawnEntity); } entity.lastPositionPlayersUpdated=entity.position.clone(); - var playersToAdd = entitiesToAdd.filter(e => e.type == 'player'); - var playersToRemove = entitiesToRemove.filter(e => e.type == 'player'); + const playersToAdd = entitiesToAdd.filter(e => e.type == 'player'); + const playersToRemove = entitiesToRemove.filter(e => e.type == 'player'); playersToRemove.forEach(p => p.despawnEntities([entity])); playersToRemove.forEach(p => p.nearbyEntities=p.getNearby()); @@ -303,7 +303,7 @@ module.exports.entity=function(entity,serv) { entity.attach= (attachedEntity,leash=false) => { - var p={ + const p={ entityId:attachedEntity.id, vehicleId:entity.id, leash:leash diff --git a/src/lib/plugins/tick.js b/src/lib/plugins/tick.js index 0094792..c2d269a 100644 --- a/src/lib/plugins/tick.js +++ b/src/lib/plugins/tick.js @@ -8,8 +8,8 @@ module.exports.server=function(serv) { serv.tickInterval = setInterval(() => { serv.tickCount++; - var t=Date.now(); - var time = (t - serv.lastTickTime) / 1000; + const t=Date.now(); + let time = (t - serv.lastTickTime) / 1000; if (time > 100) time = 0; serv.emit('tick', time, serv.tickCount); serv.lastTickTime = t; diff --git a/src/lib/plugins/tp.js b/src/lib/plugins/tp.js index f27bba9..2d9fc7b 100644 --- a/src/lib/plugins/tp.js +++ b/src/lib/plugins/tp.js @@ -1,5 +1,5 @@ -var Vec3 = require("vec3").Vec3; -var UserError = require('flying-squid').UserError; +const Vec3 = require("vec3").Vec3; +const UserError = require('flying-squid').UserError; module.exports.player = (player, serv) => { diff --git a/src/lib/plugins/updatePositions.js b/src/lib/plugins/updatePositions.js index 1157bf6..7e94018 100644 --- a/src/lib/plugins/updatePositions.js +++ b/src/lib/plugins/updatePositions.js @@ -1,4 +1,4 @@ -var Vec3 = require("vec3").Vec3; +const Vec3 = require("vec3").Vec3; Vec3.prototype.toFixedPosition=function() { return this.scaled(32).floored(); @@ -10,7 +10,7 @@ module.exports.player=function(player) // float (degrees) --> byte (1/256 "degrees") function conv(f){ - var b = Math.floor((f % 360) * 256 / 360); + let b = Math.floor((f % 360) * 256 / 360); if (b < -128) b += 256; else if (b > 127) b -= 256; return b; @@ -22,8 +22,8 @@ module.exports.player=function(player) pitch: pitch, onGround: onGround }, () => { - var convYaw=conv(yaw); - var convPitch=conv(pitch); + const convYaw=conv(yaw); + const convPitch=conv(pitch); if (convYaw == player.yaw && convPitch == player.pitch) return; player._writeOthersNearby("entity_look", { entityId: player.id, @@ -64,18 +64,18 @@ module.exports.player=function(player) }; player.teleport = async (position) => { - var notCancelled = await player.sendPosition(position.scaled(32).floored(), false, true); + const notCancelled = await player.sendPosition(position.scaled(32).floored(), false, true); if (notCancelled) player.sendSelfPosition(); - } + }; player.sendAbilities = () => { // TODO: Fix all of this... - var godmode = player.gameMode == 1 || player.gameMode == 3; - var canFly = player.gameMode == 1 || player.gameMode == 3; - var isFlying = !player.onGround && canFly; - var creativeMode = player.gameMode == 1; - var f = (+godmode*8) + (+canFly*4) + (+isFlying*2) + (+creativeMode*1); - var walkingSpeed = 0.2 * (1 + (player.effects[1] != null ? (player.effects[1].amplifier + 1) : 0) * 0.2) - var flyingSpeed = 0.1; + const godmode = player.gameMode == 1 || player.gameMode == 3; + const canFly = player.gameMode == 1 || player.gameMode == 3; + const isFlying = !player.onGround && canFly; + const creativeMode = player.gameMode == 1; + const f = (+godmode*8) + (+canFly*4) + (+isFlying*2) + (+creativeMode*1); + const walkingSpeed = 0.2 * (1 + (player.effects[1] != null ? (player.effects[1].amplifier + 1) : 0) * 0.2) + const flyingSpeed = 0.1; /*console.log(walkingSpeed, flyingSpeed); player._client.write('abilities', { // FIIIIXXXXXXX flags: f, @@ -94,7 +94,7 @@ module.exports.entity=function(entity,serv){ onGround: onGround, teleport: teleport }, ({position,onGround}) => { - var diff = position.minus(entity.position); + const diff = position.minus(entity.position); if(diff.abs().x>127 || diff.abs().y>127 || diff.abs().z>127) entity._writeOthersNearby('entity_teleport', { entityId: entity.id, diff --git a/src/lib/plugins/useItem.js b/src/lib/plugins/useItem.js index 2362e36..b76db65 100644 --- a/src/lib/plugins/useItem.js +++ b/src/lib/plugins/useItem.js @@ -1,15 +1,15 @@ -var items=require("minecraft-data")(require("flying-squid").version).items; -var Item = require("prismarine-item")(require("flying-squid").version); -var Vec3 = require("vec3").Vec3; +const items=require("minecraft-data")(require("flying-squid").version).items; +const Item = require("prismarine-item")(require("flying-squid").version); +const Vec3 = require("vec3").Vec3; module.exports.player=function(player,serv) { player._client.on("block_place",({direction,heldItem,location} = {}) => { if (direction == -1 || heldItem.blockId == -1 || !items[heldItem.blockId]) return; - var item=Item.fromNotch(heldItem); - var referencePosition = new Vec3(location.x, location.y, location.z); - var directionVector = directionToVector[direction]; - var position = referencePosition.plus(directionVector); + const item=Item.fromNotch(heldItem); + const referencePosition = new Vec3(location.x, location.y, location.z); + const directionVector = directionToVector[direction]; + const position = referencePosition.plus(directionVector); if(item.name=="flint_and_steel") player.use_flint_and_steel(referencePosition,directionVector,position); @@ -17,4 +17,4 @@ module.exports.player=function(player,serv) serv.spawnMob(item.metadata,player.world,position); }); }; -var directionToVector=[new Vec3(0,-1,0),new Vec3(0,1,0),new Vec3(0,0,-1),new Vec3(0,0,1),new Vec3(-1,0,0),new Vec3(1,0,0)]; \ No newline at end of file +const directionToVector=[new Vec3(0,-1,0),new Vec3(0,1,0),new Vec3(0,0,-1),new Vec3(0,0,1),new Vec3(-1,0,0),new Vec3(1,0,0)]; \ No newline at end of file diff --git a/src/lib/plugins/world.js b/src/lib/plugins/world.js index fa0069f..9053675 100644 --- a/src/lib/plugins/world.js +++ b/src/lib/plugins/world.js @@ -1,9 +1,9 @@ -var spiralloop = require('spiralloop'); +const spiralloop = require('spiralloop'); -var World = require('prismarine-world'); -var WorldSync = require("prismarine-world-sync"); +const World = require('prismarine-world'); +const WorldSync = require("prismarine-world-sync"); -var generations=require("flying-squid").generations; +const generations=require("flying-squid").generations; module.exports.server=function(serv,{regionFolder,generation={"name":"diamond_square","options":{"worldHeight":80}}}={}) { generation.options.seed=generation.options.seed || Math.random()*Math.pow(2, 32); @@ -22,9 +22,9 @@ module.exports.server=function(serv,{regionFolder,generation={"name":"diamond_sq ////////////// serv.pregenWorld = (world, size=3) => { - var promises = []; - for (var x = -size; x < size; x++) { - for (var z = -size; z < size; z++) { + const promises = []; + for (let x = -size; x < size; x++) { + for (let z = -size; z < size; z++) { promises.push(world.getColumn(x, z)); } } @@ -79,7 +79,7 @@ module.exports.player=function(player,serv,settings) { function spiral(arr) { - var t=[]; + const t=[]; spiralloop(arr,(x,z) => { t.push([x,z]); }); @@ -89,8 +89,8 @@ module.exports.player=function(player,serv,settings) { player.sendNearbyChunks = (view,group) => { player.lastPositionChunkUpdated=player.position; - var playerChunkX=Math.floor(player.position.x/16/32); - var playerChunkZ=Math.floor(player.position.z/16/32); + const playerChunkX=Math.floor(player.position.x/16/32); + const playerChunkZ=Math.floor(player.position.z/16/32); Object.keys(player.loadedChunks) .map((key) => key.split(",").map(a => parseInt(a))) @@ -103,13 +103,13 @@ module.exports.player=function(player,serv,settings) { chunkZ:playerChunkZ+t[1]-view })) .filter(({chunkX,chunkZ}) => { - var key=chunkX+","+chunkZ; - var loaded=player.loadedChunks[key]; + const key=chunkX+","+chunkZ; + const loaded=player.loadedChunks[key]; if(!loaded) player.loadedChunks[key]=1; return !loaded; }) .reduce((acc,{chunkX,chunkZ})=> { - var p=acc + const p=acc .then(() => player.world.getColumn(chunkX, chunkZ)) .then((column) => player.sendChunk(chunkX, chunkZ, column)); return group ? p.then(() => sleep(5)) : p; diff --git a/src/lib/portal_detector.js b/src/lib/portal_detector.js index c8df8db..80e8ce9 100644 --- a/src/lib/portal_detector.js +++ b/src/lib/portal_detector.js @@ -1,14 +1,14 @@ -var Vec3 = require("vec3").Vec3; -var assert = require('assert'); -var flatMap = require('flatmap'); -var range = require('range').range; +const Vec3 = require("vec3").Vec3; +const assert = require('assert'); +const flatMap = require('flatmap'); +const range = require('range').range; module.exports={detectFrame,findPotentialLines,findBorder,getAir,generateLine,generatePortal,addPortalToWorld,makeWorldWithPortal}; async function findLineInDirection(world,startingPoint,type,direction,directionV) { - var line=[]; - var point=startingPoint; + const line=[]; + let point=startingPoint; while((await world.getBlock(point)).name==type && (await world.getBlockType(point.plus(directionV)))==0) { line.push(point); @@ -19,15 +19,15 @@ async function findLineInDirection(world,startingPoint,type,direction,directionV async function findLine(world,startingPoint,type,direction,directionV) { - var firstSegment=(await findLineInDirection(world,startingPoint.plus(direction.scaled(-1)),type,direction.scaled(-1),directionV)).reverse(); - var secondSegment=await findLineInDirection(world,startingPoint,type,direction,directionV); + const firstSegment=(await findLineInDirection(world,startingPoint.plus(direction.scaled(-1)),type,direction.scaled(-1),directionV)).reverse(); + const secondSegment=await findLineInDirection(world,startingPoint,type,direction,directionV); return firstSegment.concat(secondSegment); } async function findPotentialLines(world,startingPoint,directionV) { - var firstLineDirection=directionV.y!=0 ? [new Vec3(1,0,0),new Vec3(0,0,1)] : + const firstLineDirection=directionV.y!=0 ? [new Vec3(1,0,0),new Vec3(0,0,1)] : [new Vec3(0,1,0)]; return (await Promise.all(firstLineDirection .map(async d => ({direction:d,line:(await findLine(world,startingPoint,'obsidian',d,directionV))})))) @@ -44,15 +44,15 @@ function positiveOrder(line,direction) async function findBorder(world,{line,direction},directionV) { - var bottom=line; + let bottom=line; if(bottom.length==0) return []; - var left=await findLineInDirection(world,bottom[0].plus(direction.scaled(-1).plus(directionV)),'obsidian',directionV,direction); - var right=await findLineInDirection(world,bottom[line.length-1].plus(direction).plus(directionV),'obsidian', + let left=await findLineInDirection(world,bottom[0].plus(direction.scaled(-1).plus(directionV)),'obsidian',directionV,direction); + let right=await findLineInDirection(world,bottom[line.length-1].plus(direction).plus(directionV),'obsidian', directionV,direction.scaled(-1)); if(left.length==0 || left.length!=right.length) return null; - var top=await findLineInDirection(world,left[left.length-1].plus(direction).plus(directionV),'obsidian', + let top=await findLineInDirection(world,left[left.length-1].plus(direction).plus(directionV),'obsidian', direction,directionV.scaled(-1)); if(bottom.length!=top.length) return null; @@ -66,7 +66,7 @@ async function findBorder(world,{line,direction},directionV) [bottom,left,right,top]=[left,bottom,top,right]; [bottom,top]=directionV.y<0 ? [top,bottom] : [bottom,top]; - var horDir=direction.x!=0 || directionV.x!=0 ? 'x' :'z'; + const horDir=direction.x!=0 || directionV.x!=0 ? 'x' :'z'; [left,right]=direction[horDir]<0 || directionV[horDir]<0 ? [right,left] : [left,right]; if(bottom.length<2 || top.length<2 || left.length<3 || right.length<3) @@ -103,20 +103,20 @@ async function isAllAir(world,blocks) function getAir(border) { - var {bottom,top}=border; + const {bottom,top}=border; return flatMap(bottom,pos => range(1,top[0].y-bottom[0].y).map(i => pos.offset(0,i,0))); } -var World = require('prismarine-world'); -var Chunk = require('prismarine-chunk')(require("./version")); +const World = require('prismarine-world'); +const Chunk = require('prismarine-chunk')(require("./version")); function generateLine(startingPoint,direction,length) { return range(0,length).map(i => startingPoint.plus(direction.scaled(i))); } function generatePortal(bottomLeft,direction,width,height){ - var directionV=new Vec3(0,1,0); + const directionV=new Vec3(0,1,0); return { bottom:generateLine(bottomLeft.plus(direction),direction,width-2), left:generateLine(bottomLeft.plus(directionV),directionV,height-2), @@ -131,9 +131,9 @@ function addPortalToWorld(world,portal,additionalAir,additionalObsidian,setBlock { if(setBlockType==null) setBlockType=world.setBlockType.bind(world); - let {bottom,left,right,top,air}=portal; + const {bottom,left,right,top,air}=portal; - var p=flatMap([bottom,left,right,top],border => border.map(pos => setBlockType(pos,49))); + const p=flatMap([bottom,left,right,top],border => border.map(pos => setBlockType(pos,49))); p.push(air.map(pos => setBlockType(pos,0))); p.push(additionalAir.map(pos => setBlockType(pos,0))); @@ -145,7 +145,7 @@ function addPortalToWorld(world,portal,additionalAir,additionalObsidian,setBlock async function makeWorldWithPortal(portal,additionalAir,additionalObsidian) { - var world=new World(() => new Chunk()); + const world=new World(() => new Chunk()); await addPortalToWorld(world,portal,additionalAir,additionalObsidian); return world; diff --git a/src/lib/worldGenerations/all_the_blocks.js b/src/lib/worldGenerations/all_the_blocks.js index 30bccf0..f033f4e 100644 --- a/src/lib/worldGenerations/all_the_blocks.js +++ b/src/lib/worldGenerations/all_the_blocks.js @@ -1,15 +1,15 @@ -var Chunk = require('prismarine-chunk')(require("../version")); -var Vec3 = require('vec3').Vec3; -var blocks=require("minecraft-data")(require("../version")).blocks; +const Chunk = require('prismarine-chunk')(require("../version")); +const Vec3 = require('vec3').Vec3; +const blocks=require("minecraft-data")(require("../version")).blocks; function generation() { function generateSimpleChunk() { - var chunk = new Chunk(); + const chunk = new Chunk(); - var i=2; - for (var x = 0; x < 16;x++) { - for (var z = 0; z < 16; z++) { - var y; + let i=2; + for (let x = 0; x < 16;x++) { + for (let z = 0; z < 16; z++) { + let y; for(y=47;y<=50;y++) { chunk.setBlockType(new Vec3(x,y,z), i); diff --git a/src/lib/worldGenerations/diamond_square.js b/src/lib/worldGenerations/diamond_square.js index c6e93c1..1e1ce27 100644 --- a/src/lib/worldGenerations/diamond_square.js +++ b/src/lib/worldGenerations/diamond_square.js @@ -1,6 +1,6 @@ -var Chunk = require('prismarine-chunk')(require("../version")); -var Vec3 = require('vec3').Vec3; -var rand = require('random-seed'); +const Chunk = require('prismarine-chunk')(require("../version")); +const Vec3 = require('vec3').Vec3; +const rand = require('random-seed'); class DiamondSquare { constructor(size, roughness, seed) { @@ -33,7 +33,7 @@ class DiamondSquare { if (this.data[x + '_' + y] == null) { this.opCountN++; - var base = 1; + let base = 1; while (((x & base) == 0) && ((y & base) == 0)) base <<= 1; @@ -47,13 +47,14 @@ class DiamondSquare { } randFromPair(x, y) { - for (var i = 0; i < 80; i++) { - var xm7 = x % 7; - var xm13 = x % 13; - var xm1301081 = x % 1301081; - var ym8461 = y % 8461; - var ym105467 = y % 105467; - var ym105943 = y % 105943; + let xm7,xm13,xm1301081,ym8461,ym105467,ym105943; + for (let i = 0; i < 80; i++) { + xm7 = x % 7; + xm13 = x % 13; + xm1301081 = x % 1301081; + ym8461 = y % 8461; + ym105467 = y % 105467; + ym105943 = y % 105943; //y = (i < 40 ? seed : x); y = x + this.seed; x += (xm7 + xm13 + xm1301081 + ym8461 + ym105467 + ym105943); @@ -89,27 +90,27 @@ class DiamondSquare { function generation({seed,worldHeight=80,waterline=20}={}) { // Selected empirically - var size = 10000000; - var space = new DiamondSquare(size, size / 500, seed); + const size = 10000000; + const space = new DiamondSquare(size, size / 500, seed); function generateSimpleChunk(chunkX, chunkZ) { - var chunk = new Chunk(); - var seedRand = rand.create(seed+':'+chunkX+':'+chunkZ); + const chunk = new Chunk(); + const seedRand = rand.create(seed+':'+chunkX+':'+chunkZ); - var worldX = chunkX * 16 + size / 2; - var worldZ = chunkZ * 16 + size / 2; + const worldX = chunkX * 16 + size / 2; + const worldZ = chunkZ * 16 + size / 2; - for (var x = 0; x < 16; x++) { - for (var z = 0; z < 16; z++) { - var level = Math.floor(space.value(worldX + x, worldZ + z) * worldHeight); - var dirtheight = level - 4 + seedRand(3); - var bedrockheight = 1 + seedRand(4); - for (var y = 0; y < 256; y++) { + for (let x = 0; x < 16; x++) { + for (let z = 0; z < 16; z++) { + const level = Math.floor(space.value(worldX + x, worldZ + z) * worldHeight); + const dirtheight = level - 4 + seedRand(3); + const bedrockheight = 1 + seedRand(4); + for (let y = 0; y < 256; y++) { let block; let data; - var surfaceblock = level < waterline ? 12 : 2; // Sand below water, grass - var belowblock = level < waterline ? 12 : 3; // 3-5 blocks below surface + const surfaceblock = level < waterline ? 12 : 2; // Sand below water, grass + const belowblock = level < waterline ? 12 : 3; // 3-5 blocks below surface if (y < bedrockheight) block = 7; // Solid bedrock at bottom else if (y < level && y >= dirtheight) block = belowblock; // Dirt/sand below surface @@ -121,7 +122,7 @@ function generation({seed,worldHeight=80,waterline=20}={}) { data = 1; } - var pos = new Vec3(x, y, z); + const pos = new Vec3(x, y, z); if (block) chunk.setBlockType(pos, block); if (data) chunk.setBlockData(pos, data); chunk.setSkyLight(pos, 15); diff --git a/src/lib/worldGenerations/grass_field.js b/src/lib/worldGenerations/grass_field.js index 7f4a93b..3618af5 100644 --- a/src/lib/worldGenerations/grass_field.js +++ b/src/lib/worldGenerations/grass_field.js @@ -1,14 +1,14 @@ -var Chunk = require('prismarine-chunk')(require("../version")); -var Vec3 = require('vec3').Vec3; +const Chunk = require('prismarine-chunk')(require("../version")); +const Vec3 = require('vec3').Vec3; function generation() { function generateSimpleChunk() { - var chunk = new Chunk(); + const chunk = new Chunk(); - for (var x = 0; x < 16; x++) { - for (var z = 0; z < 16; z++) { + for (let x = 0; x < 16; x++) { + for (let z = 0; z < 16; z++) { chunk.setBlockType(new Vec3(x, 50, z), 2); - for (var y = 0; y < 256; y++) { + for (let y = 0; y < 256; y++) { chunk.setSkyLight(new Vec3(x, y, z), 15); } } diff --git a/src/lib/worldGenerations/nether.js b/src/lib/worldGenerations/nether.js index 46bf9d6..b6ce311 100644 --- a/src/lib/worldGenerations/nether.js +++ b/src/lib/worldGenerations/nether.js @@ -1,16 +1,16 @@ -var Chunk = require('prismarine-chunk')(require("../version")); -var Vec3 = require('vec3').Vec3; -var rand = require('random-seed'); +const Chunk = require('prismarine-chunk')(require("../version")); +const Vec3 = require('vec3').Vec3; +const rand = require('random-seed'); function generation({seed,level=50}={}) { function generateChunk(chunkX, chunkZ) { - var seedRand = rand.create(seed+':'+chunkX+':'+chunkZ); - var chunk=new Chunk(); - for (var x = 0; x < 16; x++) { - for (var z = 0; z < 16; z++) { - var bedrockheighttop = 1 + seedRand(4); - var bedrockheightbottom = 1 + seedRand(4); - for (var y = 0; y < 128; y++) { // Nether only goes up to 128 + const seedRand = rand.create(seed+':'+chunkX+':'+chunkZ); + const chunk=new Chunk(); + for (let x = 0; x < 16; x++) { + for (let z = 0; z < 16; z++) { + const bedrockheighttop = 1 + seedRand(4); + const bedrockheightbottom = 1 + seedRand(4); + for (let y = 0; y < 128; y++) { // Nether only goes up to 128 let block; let data; @@ -18,7 +18,7 @@ function generation({seed,level=50}={}) { else if (y < level) block = 87; else if (y > 127 - bedrockheighttop) block = 7; - var pos = new Vec3(x, y, z); + const pos = new Vec3(x, y, z); if (block) chunk.setBlockType(pos, block); if (data) chunk.setBlockData(pos, data); // Don't need to set light data in nether diff --git a/src/lib/worldGenerations/superflat.js b/src/lib/worldGenerations/superflat.js index ce9060a..9f22243 100644 --- a/src/lib/worldGenerations/superflat.js +++ b/src/lib/worldGenerations/superflat.js @@ -1,14 +1,14 @@ -var Chunk = require('prismarine-chunk')(require("../version")); -var Vec3 = require('vec3').Vec3; +const Chunk = require('prismarine-chunk')(require("../version")); +const Vec3 = require('vec3').Vec3; function generation({opt='default',bottom_id=7,middle_id=1,top_id=2,middle_thickness=3,debug=false}={}) { function generateChunk() { - var chunk=new Chunk(); - var height = middle_thickness + 1; - var DEBUG_POINTS = [new Vec3(0, height, 0), new Vec3(15, height, 0), new Vec3(0, height, 15), new Vec3(15, height, 15)]; - for (var x = 0; x < 16; x++) { - for (var z = 0; z < 16; z++) { - for (var y = 0; y < middle_thickness + 2; y++) { + const chunk=new Chunk(); + const height = middle_thickness + 1; + const DEBUG_POINTS = [new Vec3(0, height, 0), new Vec3(15, height, 0), new Vec3(0, height, 15), new Vec3(15, height, 15)]; + for (let x = 0; x < 16; x++) { + for (let z = 0; z < 16; z++) { + for (let y = 0; y < middle_thickness + 2; y++) { if (y == 0) chunk.setBlockType(new Vec3(x, y, z), bottom_id); else if (y < middle_thickness + 1) chunk.setBlockType(new Vec3(x, y, z), middle_id); else chunk.setBlockType(new Vec3(x, y, z), top_id); diff --git a/test/mineflayer.js b/test/mineflayer.js index ea71c70..9b66507 100644 --- a/test/mineflayer.js +++ b/test/mineflayer.js @@ -1,25 +1,25 @@ -var net = require('net'); -var mcServer=require("flying-squid"); -var settings = require('../config/default-settings'); -var mineflayer = require("mineflayer"); -var assert = require('chai').assert; -var Vec3 = require('vec3').Vec3; +const net = require('net'); +const mcServer=require("flying-squid"); +const settings = require('../config/default-settings'); +const mineflayer = require("mineflayer"); +const assert = require('chai').assert; +const Vec3 = require('vec3').Vec3; function assertPosEqual(actual,expected) { assert.isBelow(actual.distanceTo(expected),1,"expected: "+expected+", actual: "+actual+"\n"); } -var once = require('event-promise'); +const once = require('event-promise'); describe("Server with mineflayer connection", function() { this.timeout(10 * 60 * 1000); - var bot; - var bot2; - var serv; + let bot; + let bot2; + let serv; async function onGround(bot) { await new Promise((cb) => { - var l=() => { + const l=() => { if(bot.entity.onGround) { bot.removeListener("move",l); cb(); @@ -30,19 +30,19 @@ describe("Server with mineflayer connection", function() { } async function waitMessage(bot,message) { - let msg1=await once(bot,'message'); + const msg1=await once(bot,'message'); assert.equal(msg1.extra[0].text,message); } async function waitMessages(bot,messages) { - var toReceive=messages.reduce((acc,message) => { + const toReceive=messages.reduce((acc,message) => { acc[message]=1; return acc; },{}); - var received={}; + const received={}; return new Promise(cb => { - var listener=msg => { - var message=msg.extra[0].text; + const listener=msg => { + const message=msg.extra[0].text; if(!toReceive[message]) throw new Error("Received "+message+" , expected to receive one of "+messages); if(received[message]) throw new Error("Received "+message+" two times"); received[message]=1; @@ -62,7 +62,7 @@ describe("Server with mineflayer connection", function() { beforeEach(async function () { this.timeout(10 * 60 * 1000); - var options = settings; + const options = settings; options["online-mode"]=false; options["port"]=25566; options["view-distance"]=2; @@ -94,10 +94,10 @@ describe("Server with mineflayer connection", function() { function waitSpawnZone(bot,view) { - var nbChunksExpected=(view*2)*(view*2); - var c=0; + const nbChunksExpected=(view*2)*(view*2); + let c=0; return new Promise(cb => { - var listener=() => { + const listener=() => { c++; if(c==nbChunksExpected) { @@ -113,7 +113,7 @@ describe("Server with mineflayer connection", function() { this.timeout(10 * 60 * 1000); await Promise.all([waitSpawnZone(bot,2),waitSpawnZone(bot2,2),onGround(bot),onGround(bot2)]); - var pos=bot.entity.position.offset(0,-1,0).floored(); + const pos=bot.entity.position.offset(0,-1,0).floored(); bot.dig(bot.blockAt(pos)); let [oldBlock,newBlock]=await once(bot2,'blockUpdate',{array:true}); @@ -126,7 +126,7 @@ describe("Server with mineflayer connection", function() { this.timeout(10 * 60 * 1000); await Promise.all([waitSpawnZone(bot,2),waitSpawnZone(bot2,2),onGround(bot),onGround(bot2)]); - var pos=bot.entity.position.offset(0,-2,0).floored(); + const pos=bot.entity.position.offset(0,-2,0).floored(); bot.dig(bot.blockAt(pos)); let [oldBlock,newBlock]=await once(bot2,'blockUpdate',{array:true}); @@ -168,7 +168,7 @@ describe("Server with mineflayer connection", function() { function waitDragon() { return new Promise((done) => { - var listener=(entity) => { + const listener=(entity) => { if(entity.name=="EnderDragon") { bot.removeListener('entitySpawn',listener); done(); @@ -208,14 +208,14 @@ describe("Server with mineflayer connection", function() { }); it("can tp with relative positions",async () => { await onGround(bot); - var initialPosition=bot.entity.position.clone(); + const initialPosition=bot.entity.position.clone(); bot.chat('/tp ~1 ~-2 ~3'); await once(bot,'forcedMove'); assertPosEqual(bot.entity.position,initialPosition.offset(1,-2,3)); }); it("can tp somebody else with relative positions",async () => { await Promise.all([onGround(bot),onGround(bot2)]); - var initialPosition=bot2.entity.position.clone(); + const initialPosition=bot2.entity.position.clone(); bot.chat('/tp bot2 ~1 ~-2 ~3'); await once(bot2,'forcedMove'); assertPosEqual(bot2.entity.position,initialPosition.offset(1,-2,3)); diff --git a/test/portal_detector.js b/test/portal_detector.js index d29ee38..e130ef3 100644 --- a/test/portal_detector.js +++ b/test/portal_detector.js @@ -1,7 +1,7 @@ -var {detectFrame,findPotentialLines,findBorder,getAir,generateLine,generatePortal,addPortalToWorld,makeWorldWithPortal}=require("flying-squid").portal_detector; -var Vec3 = require("vec3").Vec3; -var assert = require('chai').assert; -var range = require('range').range; +const {detectFrame,findPotentialLines,findBorder,getAir,generateLine,generatePortal,addPortalToWorld,makeWorldWithPortal}=require("flying-squid").portal_detector; +const Vec3 = require("vec3").Vec3; +const assert = require('chai').assert; +const range = require('range').range; describe("Generate portal",function(){ @@ -20,7 +20,7 @@ describe("Generate portal",function(){ }); describe("Detect portal", function() { - var portalData=[]; + const portalData=[]; portalData.push({ name:"simple portal frame x", bottomLeft:new Vec3(2,1,1), @@ -57,7 +57,7 @@ describe("Detect portal", function() { additionalAir:[], additionalObsidian:[new Vec3(2,1,1),new Vec3(5,1,1),new Vec3(2,6,1),new Vec3(5,6,1)] }); - var {bottom,left,right,top,air}=generatePortal(new Vec3(2,1,2),new Vec3(1,0,0),4,5); + const {bottom,left,right,top,air}=generatePortal(new Vec3(2,1,2),new Vec3(1,0,0),4,5); portalData.push({ name:"2 portals", @@ -82,12 +82,12 @@ describe("Detect portal", function() { portalData.forEach(({name,bottomLeft,direction,width,height,additionalAir,additionalObsidian}) => { - var portal=generatePortal(bottomLeft,direction,width,height); - var {bottom,left,right,top,air}=portal; + const portal=generatePortal(bottomLeft,direction,width,height); + const {bottom,left,right,top,air}=portal; describe("Detect "+name,() => { - var expectedBorder={bottom,left,right,top}; + const expectedBorder={bottom,left,right,top}; - var world; + let world; before(async function(){ world=await makeWorldWithPortal(portal,additionalAir,additionalObsidian); }); @@ -147,7 +147,7 @@ describe("Detect portal", function() { describe("find borders",function() { it("find borders from bottom", async function () { - var border = await findBorder(world, { + const border = await findBorder(world, { "direction": direction, "line": bottom }, new Vec3(0, 1, 0)); @@ -155,7 +155,7 @@ describe("Detect portal", function() { }); it("find borders from top", async function () { - var border = await findBorder(world, { + const border = await findBorder(world, { "direction": direction, "line": top }, new Vec3(0, -1, 0)); @@ -163,14 +163,14 @@ describe("Detect portal", function() { }); it("find borders from left", async function () { - var border = await findBorder(world, { + const border = await findBorder(world, { "direction": new Vec3(0, 1, 0), "line": left },direction); assert.deepEqual(border, expectedBorder) }); it("find borders from right", async function () { - var border = await findBorder(world, { + const border = await findBorder(world, { "direction": new Vec3(0, 1, 0), "line": right }, direction.scaled(-1)); @@ -180,21 +180,21 @@ describe("Detect portal", function() { describe("detect portals",function(){ it("detect portals from bottom left",async function() { - var portals=await detectFrame(world,bottom[0],new Vec3(0,1,0)); + const portals=await detectFrame(world,bottom[0],new Vec3(0,1,0)); assert.deepEqual(portals,[portal]) }); it("detect portals from top left",async function() { - var portals=await detectFrame(world,top[0],new Vec3(0,-1,0)); + const portals=await detectFrame(world,top[0],new Vec3(0,-1,0)); assert.deepEqual(portals,[portal]) }); it("detect portals from right top",async function() { - var portals=await detectFrame(world,right[right.length-1],direction.scaled(-1)); + const portals=await detectFrame(world,right[right.length-1],direction.scaled(-1)); assert.deepEqual(portals,[portal]) }) }); it("get air",function(){ - var foundAir=getAir(expectedBorder); + const foundAir=getAir(expectedBorder); assert.deepEqual(foundAir,air); }); }); @@ -205,7 +205,7 @@ describe("Detect portal", function() { describe("Doesn't detect non-portal",function() { - var portalData=[]; + const portalData=[]; portalData.push({ name:"simple portal frame x with one obsidian in the middle", @@ -218,25 +218,25 @@ describe("Doesn't detect non-portal",function() { }); portalData.forEach(({name,bottomLeft,direction,width,height,additionalAir,additionalObsidian}) => { - var portal = generatePortal(bottomLeft, direction, width, height); - var {bottom,left,right,top,air}=portal; + const portal = generatePortal(bottomLeft, direction, width, height); + const {bottom,left,right,top,air}=portal; describe("Doesn't detect detect " + name, () => { - var world; + let world; before(async function () { world=await makeWorldWithPortal(portal, additionalAir, additionalObsidian); }); describe("doesn't detect portals",function(){ it("doesn't detect portals from bottom left",async function() { - var portals=await detectFrame(world,bottom[0],new Vec3(0,1,0)); + const portals=await detectFrame(world,bottom[0],new Vec3(0,1,0)); assert.deepEqual(portals,[]) }); it("doesn't detect portals from top left",async function() { - var portals=await detectFrame(world,top[0],new Vec3(0,-1,0)); + const portals=await detectFrame(world,top[0],new Vec3(0,-1,0)); assert.deepEqual(portals,[]) }); it("doesn't detect portals from right top",async function() { - var portals=await detectFrame(world,right[right.length-1],direction.scaled(-1)); + const portals=await detectFrame(world,right[right.length-1],direction.scaled(-1)); assert.deepEqual(portals,[]) }) }); diff --git a/test/simple.js b/test/simple.js index 8347b7b..5100d84 100644 --- a/test/simple.js +++ b/test/simple.js @@ -1,6 +1,6 @@ -var net = require('net'); +const net = require('net'); describe("Server", function() { - var serv; + let serv; before(function(done){ serv=require("../app"); serv.on("listening",function(){ @@ -15,7 +15,7 @@ describe("Server", function() { }); }); it("Is running", function(done) { - var client = net.Socket(); + const client = net.Socket(); client.connect(serv._server.socketServer.address().port, '127.0.0.1', done); client.on('error', done); });