Fixed serverside crash due to Screen

This commit is contained in:
Frank 2021-08-23 15:22:17 +02:00
parent 3321d1c90e
commit 2344ef9606
3 changed files with 36 additions and 24 deletions

View file

@ -1,13 +1,10 @@
package ru.bclib.api.dataexchange.handler.autosync;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.client.Minecraft;
import net.minecraft.util.ProgressListener;
import ru.bclib.gui.screens.ProgressScreen;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
@ -34,22 +31,6 @@ import java.util.UUID;
* and assemble the original message from those chunks on the client.
*/
public class Chunker extends DataHandler.FromServer {
private static ProgressScreen progressScreen;
@Environment(EnvType.CLIENT)
public static void setProgressScreen(ProgressScreen scr){
progressScreen = scr;
}
@Environment(EnvType.CLIENT)
public static ProgressScreen getProgressScreen(){
return progressScreen;
}
@Environment(EnvType.CLIENT)
public static ProgressListener getProgressListener(){
return progressScreen;
}
/**
* Responsible for assembling the original ByteBuffer created by {@link PacketChunkSender} on the
@ -101,7 +82,7 @@ public class Chunker extends DataHandler.FromServer {
}
public boolean testFinished(){
ProgressListener listener = getProgressListener();
ProgressListener listener = ChunkerProgress.getProgressListener();
if (listener!=null){
listener.progressStagePercentage((100*receivedCount)/chunkCount);
}

View file

@ -0,0 +1,26 @@
package ru.bclib.api.dataexchange.handler.autosync;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.util.ProgressListener;
import ru.bclib.gui.screens.ProgressScreen;
@Environment(EnvType.CLIENT)
public class ChunkerProgress {
private static ProgressScreen progressScreen;
@Environment(EnvType.CLIENT)
public static void setProgressScreen(ProgressScreen scr){
progressScreen = scr;
}
@Environment(EnvType.CLIENT)
public static ProgressScreen getProgressScreen(){
return progressScreen;
}
@Environment(EnvType.CLIENT)
public static ProgressListener getProgressListener(){
return progressScreen;
}
}

View file

@ -403,10 +403,14 @@ public class HelloClient extends DataHandler.FromServer {
});
}
Minecraft.getInstance()
.setScreen(Chunker.getProgressScreen());
this.onCloseSyncFilesScreen();
}));
}
@Environment(EnvType.CLIENT)
private void onCloseSyncFilesScreen(){
Minecraft.getInstance()
.setScreen(ChunkerProgress.getProgressScreen());
}
private void processOfferedFile(List<AutoSyncID> requestFiles, AutoSyncID aid) {
@ -427,12 +431,13 @@ public class HelloClient extends DataHandler.FromServer {
whenFinished.accept(true);
}
@Environment(EnvType.CLIENT)
private void requestFileDownloads(List<AutoSyncID> files) {
BCLib.LOGGER.info("Starting download of Files:" + files.size());
final ProgressScreen progress = new ProgressScreen(null, new TranslatableComponent("title.bclib.filesync.progress"), new TranslatableComponent("message.bclib.filesync.progress"));
progress.progressStart(new TranslatableComponent("message.bclib.filesync.progress.stage.empty"));
Chunker.setProgressScreen(progress);
ChunkerProgress.setProgressScreen(progress);
DataExchangeAPI.send(new RequestFiles(files));
}