From a770046407826db5b8386cb3f9559feecdc69ec1 Mon Sep 17 00:00:00 2001 From: Romain Beaumont Date: Wed, 9 Dec 2015 01:12:04 +0100 Subject: [PATCH] properly implement /kill using selectors --- src/lib/plugins/commands.js | 2 +- src/lib/plugins/pvp.js | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/lib/plugins/commands.js b/src/lib/plugins/commands.js index 2363104..0f43a1d 100644 --- a/src/lib/plugins/commands.js +++ b/src/lib/plugins/commands.js @@ -89,7 +89,7 @@ module.exports.player=function(player, serv) { else if (arr == null) return 'Could not find player'; else player.chat(JSON.stringify(arr.map(a => a.id))); } - }) + }); player.handleCommand = async (str) => { diff --git a/src/lib/plugins/pvp.js b/src/lib/plugins/pvp.js index a9cc304..2e6590d 100644 --- a/src/lib/plugins/pvp.js +++ b/src/lib/plugins/pvp.js @@ -36,12 +36,19 @@ module.exports.player=function(player,serv) }); player.commands.add({ - base: 'killall', - info: 'Kill everything', - usage: '/killall', + base: 'kill', + info: 'Kill entities', + usage: '/kill ', op: true, - action() { - Object.keys(serv.entities).forEach(key => serv.entities[key].takeDamage({damage:20})); + parse(str) { + return str || false; + }, + action(sel) { + var arr = serv.selectorString(sel, player.position.scaled(1/32), player.world); + if (arr instanceof Error) return arr.toString(); + if (arr == null) return 'Could not find player'; + + arr.map(entity => entity.takeDamage({damage:20})); } });