From d4bc4c5ffdf12235a228ba0a9dd0a287aebd6a64 Mon Sep 17 00:00:00 2001 From: Joelant05 <64587014+Joelant05@users.noreply.github.com> Date: Sat, 15 Oct 2022 18:34:31 +0100 Subject: [PATCH] upd: support both "additionalData" and "values" in same command argument currently isn't supported by the validator --- src/components/Languages/Mcfunction/Data.ts | 43 +++++++-------------- 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/src/components/Languages/Mcfunction/Data.ts b/src/components/Languages/Mcfunction/Data.ts index 32af2555e..a2ba85f24 100644 --- a/src/components/Languages/Mcfunction/Data.ts +++ b/src/components/Languages/Mcfunction/Data.ts @@ -523,24 +523,8 @@ export class CommandData extends Signal { ): Promise { const { languages } = await useMonaco() - // Test whether argument type is defined - if (!commandArgument.type) { - // If additionalData is defined, return its values - if (commandArgument.additionalData?.values) - return this.toCompletionItem( - commandArgument.additionalData?.values - ) - else if (commandArgument.additionalData?.schemaReference) - return this.toCompletionItem( - ( - this.resolveDynamicReference( - commandArgument.additionalData.schemaReference - ).map(({ value }) => value) - ) - ) - - return [] - } + // If argument type isn't defined, set it to "string" to use "additonalData" property + commandArgument.type ??= 'string' switch (commandArgument.type) { case 'command': @@ -573,23 +557,26 @@ export class CommandData extends Signal { languages.CompletionItemKind.Operator ) case 'string': { + let values: string[] = [] if (commandArgument.additionalData?.values) - return this.toCompletionItem( - commandArgument.additionalData.values, - commandArgument.description, - languages.CompletionItemKind.Constant + values = values.concat( + commandArgument.additionalData.values ) - else if (commandArgument.additionalData?.schemaReference) - return this.toCompletionItem( + if (commandArgument.additionalData?.schemaReference) + values = values.concat( ( this.resolveDynamicReference( commandArgument.additionalData.schemaReference ).map(({ value }) => value) - ), - commandArgument.description, - languages.CompletionItemKind.Constant + ) ) - else return [] + + if (values.length === 0) return [] + return this.toCompletionItem( + values, + commandArgument.description, + languages.CompletionItemKind.Constant + ) } case 'jsonData': return this.toCompletionItem(