UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

91 lines (88 loc) 13.8 kB
import { getGametypeName } from '@jsprismarine/minecraft'; const ParseTargetSelector = ({ input, entities, source }) => { if (!input.startsWith("@")) throw new Error('input does not start with "@"'); let targets = entities; const str = input.slice(1, input.length); const type = str.split("[")[0]; const args = str.split("[")[1]?.split("]")[0].split(",").map((arg) => ({ argument: arg.split("=")[0], value: arg.split("=")[1].replace("!", ""), reverse: arg.split("=")[1].startsWith("!") })) || []; let limit = Number.MAX_SAFE_INTEGER, sort; switch (type) { case "a": targets = targets.filter((entity) => entity.isPlayer()); sort = "arbitrary"; break; case "e": sort = "arbitrary"; break; case "p": limit = 1; sort = "nearest"; break; case "r": limit = 1; sort = "random"; break; case "s": limit = 1; sort = "arbitrary"; targets = [source]; break; default: throw new Error(`type "${type}" is invalid. Expected "a", "e", "p", "r" or "s"`); } args.forEach((filter) => { switch (filter.argument) { case "type": if (filter.value.split(":").length === 1) targets = targets.filter( (entity) => filter.reverse ? entity.getType().split(":")[1] !== filter.value : entity.getType().split(":")[1] === filter.value ); else targets = targets.filter( (entity) => filter.reverse ? entity.getType() !== filter.value : entity.getType() === filter.value ); break; case "name": targets = targets.filter( (entity) => filter.reverse ? entity.getName() !== filter.value : entity.getName() === filter.value ); break; case "m": // Bedrock case "gamemode": targets = targets.filter( (entity) => entity.isPlayer() && (filter.reverse ? getGametypeName(entity.gamemode).toLowerCase() !== filter.value.toLowerCase() : getGametypeName(entity.gamemode).toLowerCase() === filter.value.toLowerCase()) ); break; case "sort": sort = filter.value; break; case "c": // Bedrock case "limit": limit = Number.parseInt(filter.value, 10); break; } }); switch (sort) { case "nearest": targets = source.getNearestEntity(targets.filter((entity) => entity.isPlayer())); break; case "random": targets = [targets[Math.floor(Math.random() * targets.length)]]; break; } targets = targets.slice(0, limit); if (targets.length <= 0) throw new Error("no results"); return targets; }; export { ParseTargetSelector as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFyc2VUYXJnZXRTZWxlY3Rvci5lcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL1BhcnNlVGFyZ2V0U2VsZWN0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0R2FtZXR5cGVOYW1lIH0gZnJvbSAnQGpzcHJpc21hcmluZS9taW5lY3JhZnQnO1xuaW1wb3J0IHR5cGUgUGxheWVyIGZyb20gJy4uL1BsYXllcic7XG5pbXBvcnQgdHlwZSB7IEVudGl0eSB9IGZyb20gJy4uL2VudGl0eS9FbnRpdHknO1xuXG4vKipcbiAqIFBhcnNlIHRhcmdldCBzZWxlY3RvciBhcmd1bWVudC5cbiAqXG4gKiBAcmVtYXJrc1xuICogQSB0YXJnZXQgc2VsZWN0b3IgaXMgbWFkZSB1cCBvZiAzIHBhcnRzOlxuICpcbiAqIC0gRmlyc3QgdGhlcmUncyB0aGUgYEBgIChhdCBzeW1ib2wpIHBhcnQsXG4gKiBub3RpZnlpbmcgdXMgdGhhdCB0aGlzIGlzIGluIGZhY3QgYSB0YXJnZXQgc2VsZWN0b3JcbiAqXG4gKiAtIFNlY29uZGx5IHRoZXJlJ3MgdGhlIHRhcmdldCBzZWxlY3RvciB0eXBlIChgYWAsIGBlYCwgYHBgLCBgcmAsIGBzYCksXG4gKiB0aGlzIHNwZWNpZmllcyB3aGF0IGtpbmQgb2YgZW50aXRpZXMgd2Ugc2hvdWxkIHF1ZXJ5IGZvclxuICogYW5kIGluIHdoYXQgd2F5LlxuICpcbiAqIC0gVGhpcmRseSB0aGVyZSdzIHRoZSBhcmd1bWVudHMsXG4gKiB0aGV5IGFyZSBzcGxpdCB1cCBpbiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IGluIHRoZVxuICogYXJndW1lbnQ9dmFsdWUgZm9ybWF0LlxuICpcbiAqIFRoaXMgcmVzdWx0cyBpbiBhbiBpbnB1dCBzaW1pbGFyIHRvOlxuICogYEBlW3R5cGU9cGxheWVyLGdhbWVtb2RlPWNyZWF0aXZlLGxpbWl0PTNdYFxuICpcbiAqIEByZXR1cm5zIFRoZSBlbnRpdGllcyBtYXRjaGluZyB0aGUgdGFyZ2V0IHF1ZXJ5XG4gKi9cbmNvbnN0IFBhcnNlVGFyZ2V0U2VsZWN0b3IgPSAoe1xuICAgIGlucHV0LFxuICAgIGVudGl0aWVzLFxuICAgIHNvdXJjZVxufToge1xuICAgIGlucHV0OiBzdHJpbmc7XG4gICAgZW50aXRpZXM6IEVudGl0eVtdO1xuICAgIHNvdXJjZTogRW50aXR5O1xufSk6IEVudGl0eVtdID0+IHtcbiAgICBpZiAoIWlucHV0LnN0YXJ0c1dpdGgoJ0AnKSkgdGhyb3cgbmV3IEVycm9yKCdpbnB1dCBkb2VzIG5vdCBzdGFydCB3aXRoIFwiQFwiJyk7XG5cbiAgICBsZXQgdGFyZ2V0czogRW50aXR5W10gPSBlbnRpdGllcztcblxuICAgIC8vIEdldCBpbnB1dCB3aXRob3V0IHRoZSBhdCBzeW1ib2xcbiAgICBjb25zdCBzdHIgPSBpbnB1dC5zbGljZSgxLCBpbnB1dC5sZW5ndGgpO1xuXG4gICAgLy8gVHlwZSBpcyBhbHdheXMgYWZ0ZXIgdGhlIGBhYCBzeW1ib2wgYW5kIGFsd2F5cyBiZWZvcmUgdGhlIG9wdGlvbmFsIGFyZ3VtZW50c1xuICAgIGNvbnN0IHR5cGU6ICdhJyB8ICdlJyB8ICdwJyB8ICdyJyB8ICdzJyA9IHN0ci5zcGxpdCgnWycpWzBdIGFzIGFueTtcblxuICAgIC8vIFBhcnNlIGNvbW1hLXNlcGFyYXRlZCBhcmd1bWVudHMgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAgLy8gW2FyZz12YWwsYXJnMj12YWwyLGFyZzM9dmFsM11cbiAgICBjb25zdCBhcmdzID1cbiAgICAgICAgc3RyXG4gICAgICAgICAgICAuc3BsaXQoJ1snKVsxXVxuICAgICAgICAgICAgPy5zcGxpdCgnXScpWzBdIVxuICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoKGFyZykgPT4gKHtcbiAgICAgICAgICAgICAgICBhcmd1bWVudDogYXJnLnNwbGl0KCc9JylbMF0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFyZy5zcGxpdCgnPScpWzFdIS5yZXBsYWNlKCchJywgJycpLFxuICAgICAgICAgICAgICAgIHJldmVyc2U6IGFyZy5zcGxpdCgnPScpWzFdIS5zdGFydHNXaXRoKCchJylcbiAgICAgICAgICAgIH0pKSB8fCBbXTtcblxuICAgIC8vIEZpbHRlcnNcbiAgICBsZXQgbGltaXQgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgICAgICAgc29ydDogJ25lYXJlc3QnIHwgJ2Z1cnRoZXN0JyB8ICdyYW5kb20nIHwgJ2FyYml0cmFyeSc7XG5cbiAgICAvLyBBcHBseSBmaWx0ZXJzIGJhc2VkIG9uIHR5cGVcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnYSc6XG4gICAgICAgICAgICB0YXJnZXRzID0gdGFyZ2V0cy5maWx0ZXIoKGVudGl0eSkgPT4gZW50aXR5LmlzUGxheWVyKCkpO1xuICAgICAgICAgICAgc29ydCA9ICdhcmJpdHJhcnknO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2UnOlxuICAgICAgICAgICAgc29ydCA9ICdhcmJpdHJhcnknO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3AnOlxuICAgICAgICAgICAgbGltaXQgPSAxO1xuICAgICAgICAgICAgc29ydCA9ICduZWFyZXN0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyJzpcbiAgICAgICAgICAgIGxpbWl0ID0gMTtcbiAgICAgICAgICAgIHNvcnQgPSAncmFuZG9tJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgIGxpbWl0ID0gMTtcbiAgICAgICAgICAgIHNvcnQgPSAnYXJiaXRyYXJ5JztcbiAgICAgICAgICAgIHRhcmdldHMgPSBbc291cmNlXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB0eXBlIFwiJHt0eXBlfVwiIGlzIGludmFsaWQuIEV4cGVjdGVkIFwiYVwiLCBcImVcIiwgXCJwXCIsIFwiclwiIG9yIFwic1wiYCk7XG4gICAgfVxuXG4gICAgYXJncy5mb3JFYWNoKChmaWx0ZXIpID0+IHtcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIuYXJndW1lbnQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3R5cGUnOlxuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIudmFsdWUuc3BsaXQoJzonKS5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHMgPSB0YXJnZXRzLmZpbHRlcigoZW50aXR5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLnJldmVyc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGVudGl0eS5nZXRUeXBlKCkuc3BsaXQoJzonKVsxXSAhPT0gZmlsdGVyLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlbnRpdHkuZ2V0VHlwZSgpLnNwbGl0KCc6JylbMV0gPT09IGZpbHRlci52YWx1ZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cyA9IHRhcmdldHMuZmlsdGVyKChlbnRpdHkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIucmV2ZXJzZSA/IGVudGl0eS5nZXRUeXBlKCkgIT09IGZpbHRlci52YWx1ZSA6IGVudGl0eS5nZXRUeXBlKCkgPT09IGZpbHRlci52YWx1ZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgICAgICAgICB0YXJnZXRzID0gdGFyZ2V0cy5maWx0ZXIoKGVudGl0eSkgPT5cbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyLnJldmVyc2UgPyBlbnRpdHkuZ2V0TmFtZSgpICE9PSBmaWx0ZXIudmFsdWUgOiBlbnRpdHkuZ2V0TmFtZSgpID09PSBmaWx0ZXIudmFsdWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdtJzogLy8gQmVkcm9ja1xuICAgICAgICAgICAgY2FzZSAnZ2FtZW1vZGUnOiAvLyBKYXZhXG4gICAgICAgICAgICAgICAgdGFyZ2V0cyA9IHRhcmdldHMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoZW50aXR5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5LmlzUGxheWVyKCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChmaWx0ZXIucmV2ZXJzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0R2FtZXR5cGVOYW1lKChlbnRpdHkgYXMgUGxheWVyKS5nYW1lbW9kZSkudG9Mb3dlckNhc2UoKSAhPT0gZmlsdGVyLnZhbHVlLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldEdhbWV0eXBlTmFtZSgoZW50aXR5IGFzIFBsYXllcikuZ2FtZW1vZGUpLnRvTG93ZXJDYXNlKCkgPT09IGZpbHRlci52YWx1ZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3NvcnQnOlxuICAgICAgICAgICAgICAgIHNvcnQgPSBmaWx0ZXIudmFsdWUgYXMgYW55O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdjJzogLy8gQmVkcm9ja1xuICAgICAgICAgICAgY2FzZSAnbGltaXQnOiAvLyBKYXZhXG4gICAgICAgICAgICAgICAgbGltaXQgPSBOdW1iZXIucGFyc2VJbnQoZmlsdGVyLnZhbHVlIGFzIGFueSwgMTApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBzd2l0Y2ggKHNvcnQpIHtcbiAgICAgICAgY2FzZSAnbmVhcmVzdCc6XG4gICAgICAgICAgICB0YXJnZXRzID0gc291cmNlLmdldE5lYXJlc3RFbnRpdHkodGFyZ2V0cy5maWx0ZXIoKGVudGl0eSkgPT4gZW50aXR5LmlzUGxheWVyKCkpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyYW5kb20nOlxuICAgICAgICAgICAgLy8gRklYTUU6IHJlc3BlY3QgbGltaXQgZmlsdGVyXG4gICAgICAgICAgICB0YXJnZXRzID0gW3RhcmdldHNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogdGFyZ2V0cy5sZW5ndGgpXSFdO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8vIFRPRE86IGNhc2UgJ2FyYml0cmFyeSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0YXJnZXRzID0gdGFyZ2V0cy5zbGljZSgwLCBsaW1pdCk7XG4gICAgaWYgKHRhcmdldHMubGVuZ3RoIDw9IDApIHRocm93IG5ldyBFcnJvcignbm8gcmVzdWx0cycpO1xuICAgIHJldHVybiB0YXJnZXRzO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUGFyc2VUYXJnZXRTZWxlY3RvcjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTBCQSxNQUFNLHNCQUFzQixDQUFDO0FBQUEsRUFDekIsS0FBQTtBQUFBLEVBQ0EsUUFBQTtBQUFBLEVBQ0E7QUFDSixDQUlnQixLQUFBO0FBQ1osRUFBSSxJQUFBLENBQUMsTUFBTSxVQUFXLENBQUEsR0FBRyxHQUFTLE1BQUEsSUFBSSxNQUFNLCtCQUErQixDQUFBO0FBRTNFLEVBQUEsSUFBSSxPQUFvQixHQUFBLFFBQUE7QUFHeEIsRUFBQSxNQUFNLEdBQU0sR0FBQSxLQUFBLENBQU0sS0FBTSxDQUFBLENBQUEsRUFBRyxNQUFNLE1BQU0sQ0FBQTtBQUd2QyxFQUFBLE1BQU0sSUFBb0MsR0FBQSxHQUFBLENBQUksS0FB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