Skip to content

Commit 631ad05

Browse files
committed
Fix registry progress bar on 1.21
1 parent 1daea1f commit 631ad05

File tree

1 file changed

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

1 file changed

+8
-22
lines changed

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

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,52 +3,38 @@
33
import net.neoforged.bus.api.Event;
44
import net.neoforged.bus.api.EventPriority;
55
import net.neoforged.fml.ModList;
6+
import net.neoforged.fml.ModLoader;
67
import net.neoforged.fml.ModLoadingContext;
78
import net.neoforged.fml.event.IModBusEvent;
89
import net.neoforged.fml.loading.progress.StartupNotificationManager;
910
import net.neoforged.neoforge.registries.GameData;
1011
import net.neoforged.neoforge.registries.RegisterEvent;
1112
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
12-
import org.embeddedt.modernfix.neoforge.util.AsyncLoadingScreen;
1313
import org.spongepowered.asm.mixin.Mixin;
1414
import org.spongepowered.asm.mixin.injection.At;
15-
import org.spongepowered.asm.mixin.injection.Inject;
1615
import org.spongepowered.asm.mixin.injection.Redirect;
17-
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1816

1917
@Mixin(value = GameData.class, remap = false)
2018
@ClientOnlyMixin
2119
public class GameDataMixin {
2220

23-
private static AsyncLoadingScreen mfix$asyncScreen;
24-
25-
@Inject(method = "postRegisterEvents", at = @At(value = "INVOKE", target = "Ljava/util/Set;iterator()Ljava/util/Iterator;", ordinal = 0))
26-
private static void createAsyncScreen(CallbackInfo ci) {
27-
mfix$asyncScreen = new AsyncLoadingScreen();
28-
}
29-
30-
@Inject(method = "postRegisterEvents", at = @At(value = "INVOKE", target = "Ljava/lang/RuntimeException;getSuppressed()[Ljava/lang/Throwable;", ordinal = 0))
31-
private static void closeAsyncScreen(CallbackInfo ci) {
32-
mfix$asyncScreen.close();
33-
mfix$asyncScreen = null;
34-
}
35-
3621
@Redirect(method = "postRegisterEvents", at = @At(value = "INVOKE", target = "Lnet/neoforged/fml/ModLoader;postEventWrapContainerInModOrder(Lnet/neoforged/bus/api/Event;)V"))
37-
private static <T extends Event & IModBusEvent> void swapThreadAndPost(T event) {
22+
private static <T extends Event & IModBusEvent> void postWithProgressBar(T event) {
23+
if(ModLoader.hasErrors()) {
24+
return;
25+
}
3826
RegisterEvent registryEvent = (RegisterEvent)event;
3927
// We control phases ourselves so we can make a separate progress bar for each phase.
4028
String registryName = registryEvent.getRegistryKey().location().toString();
4129
for(EventPriority phase : EventPriority.values()) {
42-
var pb = StartupNotificationManager.addProgressBar(registryName, ModList.get().size());
30+
// FIXME need to use prepend rather than append for it to be visible for now
31+
var pb = StartupNotificationManager.prependProgressBar(registryName, ModList.get().size());
4332
try {
4433
ModList.get().forEachModInOrder(mc -> {
4534
ModLoadingContext.get().setActiveContainer(mc);
4635
pb.label(pb.name() + " - " + mc.getModInfo().getDisplayName());
4736
pb.increment();
48-
var bus = mc.getEventBus();
49-
if(bus != null) {
50-
bus.post(phase, event);
51-
}
37+
mc.acceptEvent(phase, event);
5238
ModLoadingContext.get().setActiveContainer(null);
5339
});
5440
} finally {

0 commit comments

Comments
 (0)