diff --git a/app/renderer/src/Project/RefreshCache.ts b/app/renderer/src/Project/RefreshCache.ts
index 272939d8c..6a686f6e5 100644
--- a/app/renderer/src/Project/RefreshCache.ts
+++ b/app/renderer/src/Project/RefreshCache.ts
@@ -13,19 +13,32 @@ export async function refreshCache(refresh_rp = false, reset = true) {
let explorer = refresh_rp ? CURRENT.RPFileExplorer : CURRENT.BPFileExplorer
if (explorer === undefined) return
+ await explorer.loading_promise
let files = explorer.getAllFiles()
if (reset) LightningCache.init()
for (let filePath of files) {
- if (FileType.get(filePath) === 'unknown') continue
+ const fileType = FileType.get(filePath)
+ if (fileType === 'unknown') continue
const fileContent = await FileSystem.loadFileAsTree(filePath)
if (fileContent instanceof JSONTree) {
- await ComponentRegistry.parse(filePath, fileContent.toJSON(), false)
+ if (fileType === 'entity')
+ await ComponentRegistry.parse(
+ filePath,
+ fileContent.toJSON(),
+ false
+ )
+ else if (fileType === 'block')
+ await ComponentRegistry.parseBlock(
+ filePath,
+ fileContent.toJSON(),
+ false
+ )
await LightningCache.add(filePath, fileContent, false)
} else {
- if (FileType.get(filePath) === 'function')
+ if (fileType === 'function')
await BridgeCore.beforeTextSave(fileContent, filePath)
}
}
diff --git a/app/renderer/src/UI/ContextMenu/BPMore.ts b/app/renderer/src/UI/ContextMenu/BPMore.ts
index 3e343d2d8..44daf2cc9 100644
--- a/app/renderer/src/UI/ContextMenu/BPMore.ts
+++ b/app/renderer/src/UI/ContextMenu/BPMore.ts
@@ -159,7 +159,7 @@ export default [
async () => {
let lw = new LoadingWindow()
await trash(CURRENT.PROJECT_PATH)
- trigger('bridge:findDefaultPack', true)
+ trigger('bridge:findDefaultPack', true, true)
lw.close()
},
() => {}
diff --git a/app/renderer/src/UI/Sidebar/Content/Explorer.vue b/app/renderer/src/UI/Sidebar/Content/Explorer.vue
index 6fb2f505b..3291a4198 100644
--- a/app/renderer/src/UI/Sidebar/Content/Explorer.vue
+++ b/app/renderer/src/UI/Sidebar/Content/Explorer.vue
@@ -114,7 +114,7 @@ import {
LoadedProjects,
} from '../../Windows/Project/Chooser/definition'
import { loadProjects } from '../../Windows/Project/Chooser/load'
-import { on } from '../../../AppCycle/EventSystem'
+import { on, trigger } from '../../../AppCycle/EventSystem'
export default {
name: 'content-explorer',
@@ -149,7 +149,7 @@ export default {
project_select_size: window.innerWidth / 7.5,
no_projects: false,
loaded_file_defs: FileType.LIB_LOADED,
- disposable: null,
+ disposables: [],
projectIcon: undefined,
}
},
@@ -159,9 +159,11 @@ export default {
EventBus.trigger('bridge:refreshExplorer')
)
EventBus.on('bridge:refreshExplorer', this.refresh)
- EventBus.on('bridge:selectProject', this.selectProject)
+ this.disposables.push(on('bridge:selectProject', this.selectProject))
EventBus.on('bridge:loadedFileDefs', this.onFileDefsLoaded)
- this.disposable = on('bridge:findDefaultPack', this.findDefaultProject)
+ this.disposables.push(
+ on('bridge:findDefaultPack', this.findDefaultProject)
+ )
window.addEventListener('resize', this.onResize)
this.findDefaultProject()
@@ -171,7 +173,8 @@ export default {
EventBus.off('bridge:refreshExplorer', this.refresh)
EventBus.off('bridge:selectProject', this.selectProject)
EventBus.off('bridge:loadedFileDefs', this.onFileDefsLoaded)
- this.disposable.dispose()
+
+ this.disposables.forEach(disposable => disposable.dispose())
window.removeEventListener('resize', this.onResize)
},
computed: {
@@ -214,32 +217,12 @@ export default {
async refresh(force_val) {
this.projectIcon = this.loadProjectIcon()
- if (this.force_project_algorithm) {
- if (force_val) this.selected = force_val
- console.log('[REFRESH RP] ' + this.selected)
- this.loadDirectory(this.selected, true)
- } else {
- try {
- await loadProjects()
- this.items = LoadedProjects.map(
- ({ relativeProjectPath }) => relativeProjectPath
- )
- } catch (e) {
- this.items = []
- }
-
- this.no_projects = false
- console.log('[REFRESH BP] ' + this.selected)
-
- if (this.items.length === 0) {
- this.no_projects = true
- }
- this.loadDirectory(this.selected, true)
- }
+ await this.findDefaultProject(true)
+ await this.loadDirectory(this.selected, true)
},
- selectProject(val) {
- this.loadDirectory(val, true)
+ async selectProject(val) {
+ await this.loadDirectory(val, true)
},
onFileDefsLoaded() {
this.loaded_file_defs = true
@@ -283,10 +266,10 @@ export default {
this.project_select_size = window.innerWidth / 7.5
},
- async findDefaultProject(force_refresh = false) {
+ async findDefaultProject(forceRefresh = false, findBP = false) {
if (this.force_project_algorithm) {
this.selected = undefined
- if (force_refresh) setRP(undefined)
+ if (forceRefresh) setRP(undefined)
this.selected = await this.force_project_algorithm()
} else {
try {
@@ -295,6 +278,7 @@ export default {
({ relativeProjectPath }) => relativeProjectPath
)
} catch (e) {
+ console.log(e)
this.items = []
}
this.no_projects = false
@@ -309,9 +293,11 @@ export default {
) {
this.no_projects = true
}
- this.selected = this.selected
- ? this.selected
- : this.findDefaultBPProject()
+
+ this.selected =
+ this.selected && !findBP
+ ? this.selected
+ : this.findDefaultBPProject()
}
},
findDefaultBPProject() {
diff --git a/app/renderer/src/UI/Windows/Project/Create/BP/Main.vue b/app/renderer/src/UI/Windows/Project/Create/BP/Main.vue
index 559853408..319cd48ce 100644
--- a/app/renderer/src/UI/Windows/Project/Create/BP/Main.vue
+++ b/app/renderer/src/UI/Windows/Project/Create/BP/Main.vue
@@ -40,9 +40,9 @@
The target Minecraft version should be set to what version you
- are developing for. Currently 1.16.0 is the
- stable release and 1.16.100 is the beta
- release.
+ are developing for. Currently
+ {{ MC_STABLE_VERSION }} is the stable release
+ and {{ MC_BETA_VERSION }} is the beta release.
import BaseWindow from '../../../Layout/Base'
import { CreateBP } from '../definition'
-import fs from 'fs'
+import { promises as fs } from 'fs'
import ContentWindow from '../../../Common/Content'
import { BASE_PATH } from '../../../../../constants'
import Vue from '../../../../../../main'
@@ -98,10 +98,12 @@ import Manifest from '../../../../../files/Manifest'
import uuidv4 from 'uuid/v4'
import CreateFiles from '../../../../../Project/CreateFiles'
import path from 'path'
-import EventBus from '../../../../../EventBus'
+import { once, trigger } from '../../../../../AppCycle/EventSystem'
import ProjectConfig from '../../../../../Project/Config'
import { getFormatVersions } from '../../../../../autoCompletions/components/VersionedTemplate/Common'
import { createInformationWindow } from '../../../Common/CommonDefinitions'
+import { createErrorNotification } from '../../../../../AppCycle/Errors'
+import { writeJSON } from '../../../../../Utilities/JsonFS'
export default {
name: 'CreateBP',
@@ -124,74 +126,60 @@ export default {
this.createProject()
}
},
- createProject() {
+ async createProject() {
CreateBP.close()
- let l_w = new LoadingWindow('project.').show()
- let b_path = BASE_PATH
+ let lW = new LoadingWindow('project.').show()
- window.setTimeout(() => {
- fs.mkdir(
- b_path + this.projectName,
- { recursive: true },
- err => {
- if (err && err.message.includes('already exists'))
- return l_w.hide()
- else if (err) {
- l_w.hide()
- throw err
- }
+ try {
+ await fs.mkdir(
+ path.join(BASE_PATH, this.projectName, 'bridge'),
+ {
+ recursive: true,
+ }
+ )
+ } catch (err) {
+ if (err && err.message.includes('already exists')) {
+ return lW.hide()
+ } else if (err) {
+ lW.hide()
+ createErrorNotification(err)
+ return
+ }
+ }
- fs.writeFile(
- path.join(
- b_path,
- this.projectName,
- '/manifest.json'
- ),
- new Manifest(
- 'data',
- this.registerClientData,
- undefined,
- this.targetVersion
- ).get(),
- async () => {
- if (
- err &&
- err.message.includes('already exists')
- )
- return l_w.hide()
- if (err) {
- l_w.hide()
- throw err
- }
+ await fs.writeFile(
+ path.join(BASE_PATH, this.projectName, '/manifest.json'),
+ new Manifest(
+ 'data',
+ this.registerClientData,
+ undefined,
+ this.targetVersion
+ ).get()
+ )
- //CREATE DEFAULT FILES
- await CreateFiles.createBPFiles(
- path.join(b_path, this.projectName),
- {
- name: this.projectName,
- description: this.projectDescription,
- projectTargetVersion: this
- .targetVersion,
- }
- )
+ //Create config file
+ await writeJSON(
+ path.join(BASE_PATH, this.projectName, 'bridge/config.json'),
+ {
+ prefix: this.projectNamespace,
+ formatVersion: this.targetVersion,
+ }
+ )
- EventBus.trigger(
- 'bridge:selectProject',
- this.projectName
- )
- this.$root.$emit('refreshExplorer')
- ProjectConfig.setFormatVersion(
- this.targetVersion
- )
- ProjectConfig.setPrefix(this.projectNamespace)
- l_w.hide()
+ //Create default files
+ await CreateFiles.createBPFiles(
+ path.join(BASE_PATH, this.projectName),
+ {
+ name: this.projectName,
+ description: this.projectDescription,
+ projectTargetVersion: this.targetVersion,
+ }
+ )
- this.reset()
- }
- )
- }
- )
- }, 50)
+ trigger('bridge:selectProject', this.projectName)
+
+ lW.hide()
+ this.reset()
},
reset() {
this.projectName = ''
diff --git a/app/renderer/src/UI/Windows/Project/Create/definition.ts b/app/renderer/src/UI/Windows/Project/Create/definition.ts
index a21b64533..54712a79e 100644
--- a/app/renderer/src/UI/Windows/Project/Create/definition.ts
+++ b/app/renderer/src/UI/Windows/Project/Create/definition.ts
@@ -1,6 +1,7 @@
import { createWindow } from '../../create'
import CreateRPComponent from './RP/Main.vue'
import CreateBPComponent from './BP/Main.vue'
+import { MC_BETA_VERSION, MC_STABLE_VERSION } from '../../../../constants'
export const CreateRP = createWindow(CreateRPComponent, {
RPName: '',
@@ -9,10 +10,12 @@ export const CreateRP = createWindow(CreateRPComponent, {
export const CreateBP = createWindow(CreateBPComponent, {
targetVersions: [],
- targetVersion: '',
+ targetVersion: MC_STABLE_VERSION,
projectName: '',
projectDescription: '',
projectNamespace: 'bridge',
registerClientData: false,
isFullscreen: false,
+ MC_BETA_VERSION,
+ MC_STABLE_VERSION,
})
diff --git a/app/renderer/src/constants.ts b/app/renderer/src/constants.ts
index 53b33790c..612276f34 100644
--- a/app/renderer/src/constants.ts
+++ b/app/renderer/src/constants.ts
@@ -36,6 +36,7 @@ export * from '../../shared/DefaultDir'
export const BASE_PATH = BP_BASE_PATH
export const MC_BETA_VERSION = '1.16.100'
+export const MC_STABLE_VERSION = '1.16.0'
export const browser_window = remote.getCurrentWindow()
diff --git a/app/renderer/src/plugins/CustomComponents.ts b/app/renderer/src/plugins/CustomComponents.ts
index 9eebf97f7..592c421d0 100644
--- a/app/renderer/src/plugins/CustomComponents.ts
+++ b/app/renderer/src/plugins/CustomComponents.ts
@@ -93,10 +93,16 @@ export default class ComponentRegistry {
//Save that this file is using the specific custom component inside the LightningCache
- let apply_data = this.components[component_name].onApply(
- component_data,
- location
- )
+ let apply_data: any = {}
+ try {
+ apply_data = this.components[component_name].onApply(
+ component_data,
+ location
+ )
+ } catch (err) {
+ createErrorNotification(err)
+ }
+
if (typeof apply_data !== 'object' || Array.isArray(apply_data)) {
createErrorNotification(
new Error(`Invalid data for component "${component_name}"`)
@@ -200,7 +206,13 @@ export default class ComponentRegistry {
if (c !== undefined) {
usedComponents.push(componentName)
- const data = component.onApply(c, 'components')
+ let data: any = {}
+ try {
+ data = component.onApply(c, 'components')
+ } catch (err) {
+ createErrorNotification(err)
+ }
+
if (typeof data === 'object')
MASK.set(`component@${componentName}`, data)
else
diff --git a/app/renderer/src/plugins/Disposables.ts b/app/renderer/src/plugins/Disposables.ts
index 770b7eba1..23e7c7339 100644
--- a/app/renderer/src/plugins/Disposables.ts
+++ b/app/renderer/src/plugins/Disposables.ts
@@ -3,6 +3,7 @@ import { IDisposable } from '../Types/disposable'
const DisposableStore = new Map()
export function set(pluginId: string, disposables: IDisposable[]) {
+ if (DisposableStore.has(pluginId)) clear(pluginId)
DisposableStore.set(pluginId, disposables)
}
diff --git a/app/shared/app_version.ts b/app/shared/app_version.ts
index 0a07cb0e8..d138535ec 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.10'
+export default 'v1.7.11'
diff --git a/package.json b/package.json
index 9e23f3931..9b134f582 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "bridge",
- "version": "1.7.10",
+ "version": "1.7.11",
"author": "solvedDev ",
"description": "A powerful add-on editor",
"license": "GNU",
diff --git a/static/presets/sword/item.json b/static/presets/sword/item.json
index 7af786bd9..08d360abe 100644
--- a/static/presets/sword/item.json
+++ b/static/presets/sword/item.json
@@ -13,10 +13,7 @@
"minecraft:use_duration": 3600,
"minecraft:hand_equipped": true,
"minecraft:durability": {
- "max_durability": 150,
- "repair_items": [
- "{{PROJ_PREFIX}}:{{IDENTIFIER}}"
- ]
+ "max_durability": 150
},
"minecraft:mining_speed": 1.5,
"minecraft:damage": 5,