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; 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.PacketByteBufs;
import net.fabricmc.fabric.api.networking.v1.PacketSender; import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.util.ProgressListener; import net.minecraft.util.ProgressListener;
import ru.bclib.gui.screens.ProgressScreen;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer; 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. * and assemble the original message from those chunks on the client.
*/ */
public class Chunker extends DataHandler.FromServer { 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 * 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(){ public boolean testFinished(){
ProgressListener listener = getProgressListener(); ProgressListener listener = ChunkerProgress.getProgressListener();
if (listener!=null){ if (listener!=null){
listener.progressStagePercentage((100*receivedCount)/chunkCount); 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() this.onCloseSyncFilesScreen();
.setScreen(Chunker.getProgressScreen());
})); }));
}
@Environment(EnvType.CLIENT)
private void onCloseSyncFilesScreen(){
Minecraft.getInstance()
.setScreen(ChunkerProgress.getProgressScreen());
} }
private void processOfferedFile(List<AutoSyncID> requestFiles, AutoSyncID aid) { private void processOfferedFile(List<AutoSyncID> requestFiles, AutoSyncID aid) {
@ -427,12 +431,13 @@ public class HelloClient extends DataHandler.FromServer {
whenFinished.accept(true); whenFinished.accept(true);
} }
@Environment(EnvType.CLIENT)
private void requestFileDownloads(List<AutoSyncID> files) { private void requestFileDownloads(List<AutoSyncID> files) {
BCLib.LOGGER.info("Starting download of Files:" + files.size()); 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")); 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")); progress.progressStart(new TranslatableComponent("message.bclib.filesync.progress.stage.empty"));
Chunker.setProgressScreen(progress); ChunkerProgress.setProgressScreen(progress);
DataExchangeAPI.send(new RequestFiles(files)); DataExchangeAPI.send(new RequestFiles(files));
} }