From 2344ef9606d57ce5b4ad63d3e74b5c5f4ea8e8ff Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 23 Aug 2021 15:22:17 +0200 Subject: [PATCH] Fixed serverside crash due to Screen --- .../handler/autosync/Chunker.java | 21 +-------------- .../handler/autosync/ChunkerProgress.java | 26 +++++++++++++++++++ .../handler/autosync/HelloClient.java | 13 +++++++--- 3 files changed, 36 insertions(+), 24 deletions(-) create mode 100644 src/main/java/ru/bclib/api/dataexchange/handler/autosync/ChunkerProgress.java diff --git a/src/main/java/ru/bclib/api/dataexchange/handler/autosync/Chunker.java b/src/main/java/ru/bclib/api/dataexchange/handler/autosync/Chunker.java index e021c98b..19b3f1e7 100644 --- a/src/main/java/ru/bclib/api/dataexchange/handler/autosync/Chunker.java +++ b/src/main/java/ru/bclib/api/dataexchange/handler/autosync/Chunker.java @@ -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); } diff --git a/src/main/java/ru/bclib/api/dataexchange/handler/autosync/ChunkerProgress.java b/src/main/java/ru/bclib/api/dataexchange/handler/autosync/ChunkerProgress.java new file mode 100644 index 00000000..aaffd174 --- /dev/null +++ b/src/main/java/ru/bclib/api/dataexchange/handler/autosync/ChunkerProgress.java @@ -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; + } +} diff --git a/src/main/java/ru/bclib/api/dataexchange/handler/autosync/HelloClient.java b/src/main/java/ru/bclib/api/dataexchange/handler/autosync/HelloClient.java index d28395c0..d98d5600 100644 --- a/src/main/java/ru/bclib/api/dataexchange/handler/autosync/HelloClient.java +++ b/src/main/java/ru/bclib/api/dataexchange/handler/autosync/HelloClient.java @@ -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 requestFiles, AutoSyncID aid) { @@ -427,12 +431,13 @@ public class HelloClient extends DataHandler.FromServer { whenFinished.accept(true); } + @Environment(EnvType.CLIENT) private void requestFileDownloads(List 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)); }