diff --git a/app/renderer/src/UI/Toolbar/Category/help.ts b/app/renderer/src/UI/Toolbar/Category/help.ts index d2b3fa967..579eb785f 100644 --- a/app/renderer/src/UI/Toolbar/Category/help.ts +++ b/app/renderer/src/UI/Toolbar/Category/help.ts @@ -1,6 +1,8 @@ import { IAppMenu } from '../create' import AboutWindow from '../../../../windows/About' -import { shell } from 'electron' +import { remote, shell } from 'electron' +import os from 'os' +import path from 'path' export const HelpMenu: IAppMenu = { displayName: 'Help', @@ -51,5 +53,13 @@ export const HelpMenu: IAppMenu = { 'https://bridge-core.github.io/editor-docs/faq/' ), }, + { + displayName: 'Open Global Plugins Folder', + displayIcon: 'mdi-folder-cog', + onClick: () => + remote.shell.showItemInFolder( + path.join(os.homedir(), '.bridge/data/plugins') + ), + }, ], } diff --git a/app/renderer/src/autoCompletions/Components.ts b/app/renderer/src/autoCompletions/Components.ts index 20a9b63a1..f7ccc81cc 100644 --- a/app/renderer/src/autoCompletions/Components.ts +++ b/app/renderer/src/autoCompletions/Components.ts @@ -22,7 +22,20 @@ export default class ComponentProvider { path_arr: string[], current: any ) { - for (let component of COMPONENTS) { + for (const component of COMPONENTS) { + if (component.confirm(provider, key, path_arr, current)) + return component.process(provider, key, path_arr, current) + } + } + + static processWithoutLoad( + provider: Provider, + key: string, + path_arr: string[], + current: any + ) { + for (let i = 1; i < COMPONENTS.length; i++) { + const component = COMPONENTS[i] if (component.confirm(provider, key, path_arr, current)) return component.process(provider, key, path_arr, current) } diff --git a/app/renderer/src/autoCompletions/Dynamic.ts b/app/renderer/src/autoCompletions/Dynamic.ts index b0943d367..193dc078f 100644 --- a/app/renderer/src/autoCompletions/Dynamic.ts +++ b/app/renderer/src/autoCompletions/Dynamic.ts @@ -288,6 +288,29 @@ export const DYNAMIC = { return [] } }, + textures() { + try { + return walkSync(path.join(CURRENT.RP_PATH, 'textures')).map( + e => { + let tmp = e + .replace( + RP_BASE_PATH.replace(/\//g, '\\') + + Store.state.Explorer.project.resource_pack + + '\\', + '' + ) + .replace(/\\/g, '/') + if (tmp.endsWith('.json')) return + return `${path.dirname(tmp)}/${path.basename( + tmp, + path.extname(tmp) + )}` + } + ) + } catch (e) { + return [] + } + }, entity_textures() { try { return walkSync( diff --git a/app/renderer/src/autoCompletions/Provider.ts b/app/renderer/src/autoCompletions/Provider.ts index 6fd8b49e8..d1d704057 100644 --- a/app/renderer/src/autoCompletions/Provider.ts +++ b/app/renderer/src/autoCompletions/Provider.ts @@ -369,28 +369,30 @@ class Provider { if (res !== undefined) { return res } else if (current !== LIB) { - for (let k of Object.keys(current)) { - if (k[0] === '$' && !REMOVE_LIST.includes(k)) { - for (let i = 0; i < path_arr.length + 1; i++) - CONTEXT_UP() - let { object, value } = this.omegaExpression(k) - for (let i = 0; i < path_arr.length + 1; i++) - CONTEXT_DOWN() - object = this.parseObjectCompletions(object, value) - - if ( - value.includes(key) || - object.includes(key) || - value.includes('@wildcard') - ) - return this.walk(path_arr, current[k]) - } - } + return this.resolveDynamicReferences(path_arr, key, current) } } return this.walk(path_arr, current[key]) } + resolveDynamicReferences(pathArr: string[], key: string, current: any) { + for (let k of Object.keys(current)) { + if (k[0] === '$' && !REMOVE_LIST.includes(k)) { + for (let i = 0; i < pathArr.length + 1; i++) CONTEXT_UP() + let { object, value } = this.omegaExpression(k) + for (let i = 0; i < pathArr.length + 1; i++) CONTEXT_DOWN() + object = this.parseObjectCompletions(object, value) + + if ( + value.includes(key) || + object.includes(key) || + value.includes('@wildcard') + ) + return this.walk(pathArr, current[k]) + } + } + } + omegaExpression(expression: string) { // console.log(expression, Omega.eval(expression)) return Omega.eval(expression) diff --git a/app/renderer/src/autoCompletions/components/Load.ts b/app/renderer/src/autoCompletions/components/Load.ts index c2d041840..98e328f2e 100644 --- a/app/renderer/src/autoCompletions/components/Load.ts +++ b/app/renderer/src/autoCompletions/components/Load.ts @@ -1,3 +1,4 @@ +import ComponentProvider from '../Components' import Provider from '../Provider' export class Load { @@ -7,7 +8,11 @@ export class Load { path_arr: string[], current: any ) { - return current.$load !== undefined + if (!current.$load) return false + + const { object = {}, value = [] } = + this.process(provider, key, [...path_arr], current) ?? {} + return Object.keys(object).length > 0 || value.length > 0 } static process( provider: Provider, @@ -22,6 +27,7 @@ export class Load { path_arr.unshift(key) return provider.walk(path_arr, object) } + static walk(path_arr: string[], arg1: any): any { throw new Error('Method not implemented.') } diff --git a/app/renderer/windows/About.ts b/app/renderer/windows/About.ts index 4dd4d9a48..2989c83b8 100644 --- a/app/renderer/windows/About.ts +++ b/app/renderer/windows/About.ts @@ -213,6 +213,11 @@ export default class AboutWindow extends TabWindow { 'GitHub', 'https://github.com/solvedDev/bridge./' ), + new Link( + 'bridge. Homepage:', + 'Website', + 'https://bridge-core.github.io/' + ), new Link('Bedrock ', 'Documentation', 'https://bedrock.dev/'), new Link( '', diff --git a/app/shared/app_version.ts b/app/shared/app_version.ts index 4f0c33cd0..c893ecb00 100644 --- a/app/shared/app_version.ts +++ b/app/shared/app_version.ts @@ -1,4 +1,4 @@ /** * Current bridge. app version */ -export default 'v1.7.16' +export default 'v1.7.17' diff --git a/package.json b/package.json index a63a29629..0cd22d35c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bridge", - "version": "1.7.16", + "version": "1.7.17", "author": "solvedDev ", "description": "A powerful add-on editor", "license": "GNU", diff --git a/static/data/RP/textures_list.json b/static/data/RP/textures_list.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/static/data/RP/textures_list.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/static/data/create_project.json b/static/data/create_project.json index f0ecf6ebc..186a7596d 100644 --- a/static/data/create_project.json +++ b/static/data/create_project.json @@ -10,6 +10,7 @@ "RP/biomes_client.json": "biomes_client.json", "RP/blocks.json": "blocks.json", "RP/sounds.json": "sounds.json", + "RP/textures_list.json": "textures/textures_list.json", "RP/terrain_texture.json": "textures/terrain_texture.json", "RP/flipbook_textures.json": "textures/flipbook_textures.json", "RP/item_texture.json": "textures/item_texture.json",