diff --git a/packs/BP/scripts/classes/Commands/lib/commandError.js b/packs/BP/scripts/classes/Commands/lib/commandError.js new file mode 100644 index 0000000..e0f25f1 --- /dev/null +++ b/packs/BP/scripts/classes/Commands/lib/commandError.js @@ -0,0 +1,9 @@ +import { CustomCommandStatus } from '@minecraft/server'; +import { NotAPlayerError } from '../../Errors/NotAPlayerError'; + +export function commandError(source, err) { + if (err instanceof NotAPlayerError) { + return { status: CustomCommandStatus.Failure, message: 'construct.commands.error.notAPlayer' }; + } + throw err; +} diff --git a/packs/BP/scripts/classes/Commands/lib/findInstance.js b/packs/BP/scripts/classes/Commands/lib/findInstance.js new file mode 100644 index 0000000..3019d33 --- /dev/null +++ b/packs/BP/scripts/classes/Commands/lib/findInstance.js @@ -0,0 +1,12 @@ +import { system } from '@minecraft/server'; +import { structureCollection } from '../../Structure/StructureCollection'; + +export function findInstance(source, name) { + if (!structureCollection.has(name)) { + system.run(() => source.sendMessage({ + rawtext: [{ translate: 'construct.commands.error.instanceNotFound', with: [name] }] + })); + return null; + } + return structureCollection.get(name); +} diff --git a/packs/BP/scripts/classes/Commands/lib/requirePlayer.js b/packs/BP/scripts/classes/Commands/lib/requirePlayer.js new file mode 100644 index 0000000..1e88e61 --- /dev/null +++ b/packs/BP/scripts/classes/Commands/lib/requirePlayer.js @@ -0,0 +1,8 @@ +import { PlayerCommandOrigin } from '../PlayerCommandOrigin'; +import { NotAPlayerError } from '../../Errors/NotAPlayerError'; + +export function requirePlayer(source) { + if (!(source instanceof PlayerCommandOrigin)) + throw new NotAPlayerError(); + return source.getSource(); +} diff --git a/packs/BP/scripts/classes/Errors/NotAPlayerError.js b/packs/BP/scripts/classes/Errors/NotAPlayerError.js new file mode 100644 index 0000000..252fd9a --- /dev/null +++ b/packs/BP/scripts/classes/Errors/NotAPlayerError.js @@ -0,0 +1,6 @@ +export class NotAPlayerError extends Error { + constructor(message = 'Command requires a player source.') { + super(message); + this.name = 'NotAPlayerError'; + } +} diff --git a/packs/RP/texts/en_US.lang b/packs/RP/texts/en_US.lang index c75cf37..dde3495 100644 --- a/packs/RP/texts/en_US.lang +++ b/packs/RP/texts/en_US.lang @@ -105,4 +105,8 @@ construct.option.materialgrabber.description=Pulls structure items from inventor construct.option.materialgrabber.howto=Interact with inventories using the Material Grabber item to pull structure items from them. construct.option.materialgrabber.grabbed.zero=§7Grabbed 0 items. construct.option.materialgrabber.grabbed.one=§aGrabbed 1 item. -construct.option.materialgrabber.grabbed.many=§aGrabbed %s items. ## Insert string: number of items transferred to the player \ No newline at end of file +construct.option.materialgrabber.grabbed.many=§aGrabbed %s items. ## Insert string: number of items transferred to the player + +## CLI shared errors +construct.commands.error.instanceNotFound=§cInstance "%1" not found. +construct.commands.error.notAPlayer=§cThis command can only be used by players. diff --git a/packs/RP/texts/zh_CN.lang b/packs/RP/texts/zh_CN.lang index 00ac1ef..d978e39 100644 --- a/packs/RP/texts/zh_CN.lang +++ b/packs/RP/texts/zh_CN.lang @@ -106,3 +106,7 @@ construct.option.materialgrabber.howto=使用"材料收集器"物品与箱子等 construct.option.materialgrabber.grabbed.zero=§7已收集 0 个物品 construct.option.materialgrabber.grabbed.one=§a已收集 1 个物品 construct.option.materialgrabber.grabbed.many=§a已收集 %s 个物品 ## 插入字符串: 收集给玩家的物品数 + +## CLI shared errors +construct.commands.error.instanceNotFound=§cInstance "%1" not found. +construct.commands.error.notAPlayer=§cThis command can only be used by players.