Fixed serverside crash due to Screen
This commit is contained in:
parent
3321d1c90e
commit
2344ef9606
3 changed files with 36 additions and 24 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue