Skip to content

Commit e22f5ca

Browse files
committed
Fix registry progress bar going off end of screen in NeoForge
1 parent 0a2299e commit e22f5ca

File tree

1 file changed

+20
-11
lines changed
  • neoforge/src/main/java/org/embeddedt/modernfix/neoforge/mixin/feature/registry_event_progress

1 file changed

+20
-11
lines changed

neoforge/src/main/java/org/embeddedt/modernfix/neoforge/mixin/feature/registry_event_progress/GameDataMixin.java

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.embeddedt.modernfix.neoforge.mixin.feature.registry_event_progress;
22

33
import net.neoforged.bus.api.Event;
4+
import net.neoforged.bus.api.EventPriority;
45
import net.neoforged.fml.ModList;
56
import net.neoforged.fml.ModLoader;
67
import net.neoforged.fml.ModLoadingContext;
@@ -36,17 +37,25 @@ private static void closeAsyncScreen(CallbackInfo ci) {
3637
@Redirect(method = "postRegisterEvents", at = @At(value = "INVOKE", target = "Lnet/neoforged/fml/ModLoader;postEventWrapContainerInModOrder(Lnet/neoforged/bus/api/Event;)V"))
3738
private static <T extends Event & IModBusEvent> void swapThreadAndPost(ModLoader loader, T event) {
3839
RegisterEvent registryEvent = (RegisterEvent)event;
39-
var pb = StartupMessageManager.addProgressBar(registryEvent.getRegistryKey().location().toString(), ModList.get().size());
40-
try {
41-
loader.postEventWithWrapInModOrder(event, (mc, e) -> {
42-
ModLoadingContext.get().setActiveContainer(mc);
43-
pb.label(pb.name() + " - " + mc.getModInfo().getDisplayName());
44-
pb.increment();
45-
}, (mc, e) -> {
46-
ModLoadingContext.get().setActiveContainer(null);
47-
});
48-
} finally {
49-
pb.complete();
40+
// We control phases ourselves so we can make a separate progress bar for each phase.
41+
String registryName = registryEvent.getRegistryKey().location().toString();
42+
for(EventPriority phase : EventPriority.values()) {
43+
var pb = StartupMessageManager.addProgressBar(registryName, ModList.get().size());
44+
try {
45+
ModList.get().forEachModInOrder(mc -> {
46+
ModLoadingContext.get().setActiveContainer(mc);
47+
pb.label(pb.name() + " - " + mc.getModInfo().getDisplayName());
48+
pb.increment();
49+
var bus = mc.getEventBus();
50+
if(bus != null) {
51+
bus.post(phase, event);
52+
}
53+
ModLoadingContext.get().setActiveContainer(null);
54+
});
55+
} finally {
56+
pb.complete();
57+
}
5058
}
59+
5160
}
5261
}

0 commit comments

Comments
 (0)