68 lines
1.9 KiB
Java
68 lines
1.9 KiB
Java
package com.mojang.realmsclient.util.task;
|
|
|
|
import com.mojang.logging.LogUtils;
|
|
import com.mojang.realmsclient.RealmsMainScreen;
|
|
import com.mojang.realmsclient.exception.RealmsServiceException;
|
|
import com.mojang.realmsclient.gui.screens.RealmsGenericErrorScreen;
|
|
import net.fabricmc.api.EnvType;
|
|
import net.fabricmc.api.Environment;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.gui.screens.Screen;
|
|
import net.minecraft.client.gui.screens.TitleScreen;
|
|
import net.minecraft.network.chat.Component;
|
|
import org.slf4j.Logger;
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public abstract class LongRunningTask implements Runnable {
|
|
protected static final int NUMBER_OF_RETRIES = 25;
|
|
private static final Logger LOGGER = LogUtils.getLogger();
|
|
private boolean aborted = false;
|
|
|
|
protected static void pause(long seconds) {
|
|
try {
|
|
Thread.sleep(seconds * 1000L);
|
|
} catch (InterruptedException var3) {
|
|
Thread.currentThread().interrupt();
|
|
LOGGER.error("", (Throwable)var3);
|
|
}
|
|
}
|
|
|
|
public static void setScreen(Screen screen) {
|
|
Minecraft minecraft = Minecraft.getInstance();
|
|
minecraft.execute(() -> minecraft.setScreen(screen));
|
|
}
|
|
|
|
protected void error(Component message) {
|
|
this.abortTask();
|
|
Minecraft minecraft = Minecraft.getInstance();
|
|
minecraft.execute(() -> minecraft.setScreen(new RealmsGenericErrorScreen(message, new RealmsMainScreen(new TitleScreen()))));
|
|
}
|
|
|
|
protected void error(Exception exception) {
|
|
if (exception instanceof RealmsServiceException realmsServiceException) {
|
|
this.error(realmsServiceException.realmsError.errorMessage());
|
|
} else {
|
|
this.error(Component.literal(exception.getMessage()));
|
|
}
|
|
}
|
|
|
|
protected void error(RealmsServiceException exception) {
|
|
this.error(exception.realmsError.errorMessage());
|
|
}
|
|
|
|
public abstract Component getTitle();
|
|
|
|
public boolean aborted() {
|
|
return this.aborted;
|
|
}
|
|
|
|
public void tick() {
|
|
}
|
|
|
|
public void init() {
|
|
}
|
|
|
|
public void abortTask() {
|
|
this.aborted = true;
|
|
}
|
|
}
|