Skip to content

Commit 3b8e7e6

Browse files
committed
🐛 Fix project mods applying / reverting incorrectly
1 parent 63c71bd commit 3b8e7e6

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

src/mods/eventHooks.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,16 @@ registerPropertyOverrideMod({
4848
})
4949

5050
registerPropertyOverrideMod({
51-
id: `animated-java:event-hook/pre-select-project-event`,
51+
id: `animated-java:event-hook/pre-post-select-project-event`,
5252
object: ModelProject.prototype,
53-
key: 'select',
53+
key: 'loadEditorState',
5454

5555
get: original => {
5656
return function (this: ModelProject) {
5757
EVENTS.PRE_SELECT_PROJECT.publish(this)
58-
return original.call(this)
58+
const result = original.call(this)
59+
EVENTS.POST_SELECT_PROJECT.publish(this)
60+
return result
5961
}
6062
},
6163
})

src/util/events.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const EVENTS = {
2626
BLOCKSTATE_REGISTRY_LOADED: subscribable<void>(),
2727

2828
PRE_SELECT_PROJECT: subscribable<ModelProject>(),
29+
POST_SELECT_PROJECT: subscribable<ModelProject>(),
2930
SELECT_PROJECT: subscribable<ModelProject>(),
3031
UNSELECT_PROJECT: subscribable<ModelProject>(),
3132
CLOSE_PROJECT: subscribable<ModelProject>(),

src/util/moddingTools.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -192,26 +192,27 @@ interface RegisterProjectModOptions<ID extends string, RevertContext extends any
192192
export function registerProjectMod<ID extends string, RevertContext extends any | void>(
193193
options: RegisterProjectModOptions<ID, RevertContext>
194194
) {
195-
let revertContext: RevertContext | undefined
195+
let revertContext: RevertContext | null = null
196196

197197
return registerMod({
198198
...options,
199199

200200
apply: () => {
201201
return [
202202
EVENTS.PRE_SELECT_PROJECT.subscribe(project => {
203+
// Effectively using revertContext as a boolean to check if the mod is applied
204+
if (revertContext !== null) return
203205
if (!options.condition(project)) return
204206
console.log(`Applying project mod '${options.id}'`)
205207
revertContext = options.apply()
206208
}),
207209

208210
EVENTS.UNSELECT_PROJECT.subscribe(() => {
209211
// Effectively using revertContext as a boolean to check if the mod is applied
210-
if (revertContext !== undefined) {
211-
console.log(`Reverting project mod '${options.id}'`)
212-
options.revert(revertContext)
213-
revertContext = undefined
214-
}
212+
if (revertContext === null) return
213+
console.log(`Reverting project mod '${options.id}'`)
214+
options.revert(revertContext)
215+
revertContext = null
215216
}),
216217
]
217218
},

0 commit comments

Comments
 (0)