forked from Clones/Controlify
fix errors being suppressed on initialise
This commit is contained in:
@ -13,6 +13,7 @@ import net.minecraft.server.packs.resources.ReloadInstance;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
@ -20,18 +21,27 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
@Mixin(Minecraft.class)
|
||||
public abstract class MinecraftMixin {
|
||||
@Shadow public abstract void setScreen(@Nullable Screen screen);
|
||||
|
||||
@Shadow public abstract float getDeltaFrameTime();
|
||||
|
||||
@Shadow public abstract ToastComponent getToasts();
|
||||
|
||||
@Unique private boolean initNextTick = false;
|
||||
|
||||
@ModifyExpressionValue(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/ReloadableResourceManager;createReload(Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/List;)Lnet/minecraft/server/packs/resources/ReloadInstance;"))
|
||||
private ReloadInstance onInputInitialized(ReloadInstance resourceReload) {
|
||||
// Controllers need to be initialized extremely late due to the data-driven nature of controllers.
|
||||
resourceReload.done().thenRun(() -> Controlify.instance().initializeControlify());
|
||||
// We need to bypass thenRun because any runnable is ran inside of a `minecraft.execute()`, which suppresses exceptions
|
||||
resourceReload.done().thenRun(() -> initNextTick = true);
|
||||
return resourceReload;
|
||||
}
|
||||
|
||||
@Inject(method = "runTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;runAllTasks()V"))
|
||||
private void initControlifyNow(boolean tick, CallbackInfo ci) {
|
||||
if (initNextTick) {
|
||||
Controlify.instance().initializeControlify();
|
||||
initNextTick = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/KeyboardHandler;setup(J)V", shift = At.Shift.AFTER))
|
||||
private void onInputInitialized(CallbackInfo ci) {
|
||||
Controlify.instance().preInitialiseControlify();
|
||||
|
Reference in New Issue
Block a user