better naming for client/server only handlers

This commit is contained in:
Frank 2021-08-17 12:56:37 +02:00
parent 29fe59b4b9
commit 55f00c664c
11 changed files with 341 additions and 130 deletions

View file

@ -4,6 +4,7 @@ import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
import ru.bclib.api.dataexchange.BaseDataHandler;
import ru.bclib.api.dataexchange.ConnectorClientside;
import ru.bclib.api.dataexchange.ConnectorServerside;
import ru.bclib.api.dataexchange.DataExchangeAPI;
@ -95,7 +96,7 @@ abstract public class DataExchange {
public static void sendOnEnter() {
getInstance().descriptors.forEach((desc) -> {
if (desc.sendBeforeEnter) {
DataHandler h = desc.JOIN_INSTANCE.get();
BaseDataHandler h = desc.JOIN_INSTANCE.get();
if (!h.getOriginatesOnServer()) {
getInstance().client.sendToServer(h);
}

View file

@ -7,12 +7,10 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import ru.bclib.BCLib;
import ru.bclib.api.dataexchange.DataExchangeAPI;
import ru.bclib.api.dataexchange.DataHandler;
import ru.bclib.api.dataexchange.DataHandlerDescriptor;
import ru.bclib.api.dataexchange.handler.DataExchange;
import ru.bclib.api.dataexchange.handler.autosync.AutoSync.ClientConfig;
import ru.bclib.api.dataexchange.handler.autosync.AutoSync.Config;
import ru.bclib.api.dataexchange.handler.autosync.AutoSyncID.WithContentOverride;
@ -36,11 +34,11 @@ import java.util.stream.Collectors;
* <p>
* For Details refer to {@link HelloServer}
*/
public class HelloClient extends DataHandler {
public class HelloClient extends DataHandler.FromServer {
public static DataHandlerDescriptor DESCRIPTOR = new DataHandlerDescriptor(new ResourceLocation(BCLib.MOD_ID, "hello_client"), HelloClient::new, false, false);
public HelloClient() {
super(DESCRIPTOR.IDENTIFIER, true);
super(DESCRIPTOR.IDENTIFIER);
}
static String getBCLibVersion() {
@ -48,7 +46,7 @@ public class HelloClient extends DataHandler {
}
@Override
protected boolean prepareData(boolean isClient) {
protected boolean prepareDataOnServer() {
if (!Config.isAllowingAutoSync()) {
BCLib.LOGGER.info("Auto-Sync was disabled on the server.");
return false;
@ -59,7 +57,7 @@ public class HelloClient extends DataHandler {
}
@Override
protected void serializeData(FriendlyByteBuf buf, boolean isClient) {
protected void serializeDataOnServer(FriendlyByteBuf buf) {
final String vbclib = getBCLibVersion();
BCLib.LOGGER.info("Sending Hello to Client. (server=" + vbclib + ")");
final List<String> mods = DataExchangeAPI.registeredMods();
@ -120,8 +118,9 @@ public class HelloClient extends DataHandler {
List<AutoSync.AutoSyncTriple> autoSyncedFiles = null;
List<SyncFolderDescriptor> autoSynFolders = null;
@Environment(EnvType.CLIENT)
@Override
protected void deserializeFromIncomingData(FriendlyByteBuf buf, PacketSender responseSender, boolean fromClient) {
protected void deserializeIncomingDataOnClient(FriendlyByteBuf buf, PacketSender responseSender) {
//read BCLibVersion (=protocol version)
bclibVersion = DataFixerAPI.getModVersion(buf.readInt());
@ -156,8 +155,9 @@ public class HelloClient extends DataHandler {
}
}
@Environment(EnvType.CLIENT)
private void processAutoSyncFolder(final List<AutoSyncID> filesToRequest, final List<AutoSyncID.ForDirectFileRequest> filesToRemove) {
if (!ClientConfig.isClientConfigAcceptingFolders()) {
if (!ClientConfig.isAcceptingFolders()) {
return;
}
@ -221,8 +221,9 @@ public class HelloClient extends DataHandler {
});
}
@Environment(EnvType.CLIENT)
private void processSingleFileSync(final List<AutoSyncID> filesToRequest) {
final boolean debugHashes = ClientConfig.shouldClientConfigPrintDebugHashes();
final boolean debugHashes = ClientConfig.shouldPrintDebugHashes();
if (autoSyncedFiles.size() > 0) {
BCLib.LOGGER.info("Files offered by Server:");
@ -260,9 +261,10 @@ public class HelloClient extends DataHandler {
}
@Environment(EnvType.CLIENT)
@Override
protected void runOnGameThread(Minecraft client, MinecraftServer server, boolean isClient) {
if (!ClientConfig.isClientConfigAllowingAutoSync()) {
protected void runOnClientGameThread(Minecraft client) {
if (!ClientConfig.isAllowingAutoSync()) {
BCLib.LOGGER.info("Auto-Sync was disabled on the client.");
return;
}
@ -289,7 +291,7 @@ public class HelloClient extends DataHandler {
//Both client and server need to know about the folder you want to sync
//Files can only get placed within that folder
if ((filesToRequest.size() > 0 || filesToRemove.size() > 0) && ClientConfig.isClientConfigAcceptingFiles()) {
if ((filesToRequest.size() > 0 || filesToRemove.size() > 0) && ClientConfig.isAcceptingFiles()) {
showDownloadConfigs(client, filesToRequest, filesToRemove);
return;
}

View file

@ -1,7 +1,8 @@
package ru.bclib.api.dataexchange.handler.autosync;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.minecraft.client.Minecraft;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
@ -56,38 +57,40 @@ import java.io.File;
* </tr>
* </table>
*/
public class HelloServer extends DataHandler {
public class HelloServer extends DataHandler.FromClient {
public static DataHandlerDescriptor DESCRIPTOR = new DataHandlerDescriptor(new ResourceLocation(BCLib.MOD_ID, "hello_server"), HelloServer::new, true, false);
protected String bclibVersion = "0.0.0";
public HelloServer() {
super(DESCRIPTOR.IDENTIFIER, false);
super(DESCRIPTOR.IDENTIFIER);
}
@Environment(EnvType.CLIENT)
@Override
protected boolean prepareData(boolean isClient) {
if (!ClientConfig.isClientConfigAllowingAutoSync()) {
protected boolean prepareDataOnClient() {
if (!ClientConfig.isAllowingAutoSync()) {
BCLib.LOGGER.info("Auto-Sync was disabled on the client.");
return false;
}
return true;
}
@Environment(EnvType.CLIENT)
@Override
protected void serializeData(FriendlyByteBuf buf, boolean isClient) {
protected void serializeDataOnClient(FriendlyByteBuf buf) {
BCLib.LOGGER.info("Sending hello to server.");
buf.writeInt(DataFixerAPI.getModVersion(HelloClient.getBCLibVersion()));
}
@Override
protected void deserializeFromIncomingData(FriendlyByteBuf buf, PacketSender responseSender, boolean fromClient) {
protected void deserializeIncomingDataOnServer(FriendlyByteBuf buf, PacketSender responseSender) {
bclibVersion = DataFixerAPI.getModVersion(buf.readInt());
}
@Override
protected void runOnGameThread(Minecraft client, MinecraftServer server, boolean isClient) {
protected void runOnServerGameThread(MinecraftServer server) {
if (!Config.isAllowingAutoSync()) {
BCLib.LOGGER.info("Auto-Sync was disabled on the server.");
return;

View file

@ -1,7 +1,8 @@
package ru.bclib.api.dataexchange.handler.autosync;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.minecraft.client.Minecraft;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
@ -16,7 +17,7 @@ import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
public class RequestFiles extends DataHandler {
public class RequestFiles extends DataHandler.FromClient {
public static DataHandlerDescriptor DESCRIPTOR = new DataHandlerDescriptor(new ResourceLocation(BCLib.MOD_ID, "request_files"), RequestFiles::new, false, false);
static String currentToken = "";
@ -27,21 +28,23 @@ public class RequestFiles extends DataHandler {
}
public RequestFiles(List<AutoSyncID> files) {
super(DESCRIPTOR.IDENTIFIER, false);
super(DESCRIPTOR.IDENTIFIER);
this.files = files;
}
@Environment(EnvType.CLIENT)
@Override
protected boolean prepareData(boolean isClient) {
if (!ClientConfig.isClientConfigAllowingAutoSync()) {
protected boolean prepareDataOnClient() {
if (!ClientConfig.isAllowingAutoSync()) {
BCLib.LOGGER.info("Auto-Sync was disabled on the client.");
return false;
}
return true;
}
@Environment(EnvType.CLIENT)
@Override
protected void serializeData(FriendlyByteBuf buf, boolean isClient) {
protected void serializeDataOnClient(FriendlyByteBuf buf) {
newToken();
writeString(buf, currentToken);
@ -55,7 +58,7 @@ public class RequestFiles extends DataHandler {
String receivedToken = "";
@Override
protected void deserializeFromIncomingData(FriendlyByteBuf buf, PacketSender responseSender, boolean fromClient) {
protected void deserializeIncomingDataOnServer(FriendlyByteBuf buf, PacketSender responseSender) {
receivedToken = readString(buf);
int size = buf.readInt();
files = new ArrayList<>(size);
@ -71,7 +74,7 @@ public class RequestFiles extends DataHandler {
}
@Override
protected void runOnGameThread(Minecraft client, MinecraftServer server, boolean isClient) {
protected void runOnServerGameThread(MinecraftServer server) {
if (!Config.isAllowingAutoSync()) {
BCLib.LOGGER.info("Auto-Sync was disabled on the server.");
return;

View file

@ -7,11 +7,9 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import ru.bclib.BCLib;
import ru.bclib.api.dataexchange.DataHandler;
import ru.bclib.api.dataexchange.DataHandlerDescriptor;
import ru.bclib.api.dataexchange.handler.DataExchange;
import ru.bclib.api.dataexchange.handler.autosync.AutoSync.ClientConfig;
import ru.bclib.api.dataexchange.handler.autosync.AutoSync.Config;
import ru.bclib.gui.screens.ConfirmRestartScreen;
@ -26,7 +24,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class SendFiles extends DataHandler {
public class SendFiles extends DataHandler.FromServer {
public static DataHandlerDescriptor DESCRIPTOR = new DataHandlerDescriptor(new ResourceLocation(BCLib.MOD_ID, "send_files"), SendFiles::new, false, false);
protected List<AutoFileSyncEntry> files;
@ -37,13 +35,13 @@ public class SendFiles extends DataHandler {
}
public SendFiles(List<AutoFileSyncEntry> files, String token) {
super(DESCRIPTOR.IDENTIFIER, true);
super(DESCRIPTOR.IDENTIFIER);
this.files = files;
this.token = token;
}
@Override
protected boolean prepareData(boolean isClient) {
protected boolean prepareDataOnServer() {
if (!Config.isAllowingAutoSync()) {
BCLib.LOGGER.info("Auto-Sync was disabled on the server.");
return false;
@ -53,7 +51,7 @@ public class SendFiles extends DataHandler {
}
@Override
protected void serializeData(FriendlyByteBuf buf, boolean isClient) {
protected void serializeDataOnServer(FriendlyByteBuf buf) {
List<AutoFileSyncEntry> existingFiles = files.stream()
.filter(e -> e.fileName.exists())
.collect(Collectors.toList());
@ -83,9 +81,10 @@ public class SendFiles extends DataHandler {
private List<Pair<AutoFileSyncEntry, byte[]>> receivedFiles;
@Environment(EnvType.CLIENT)
@Override
protected void deserializeFromIncomingData(FriendlyByteBuf buf, PacketSender responseSender, boolean fromClient) {
if (ClientConfig.isClientConfigAcceptingFiles()) {
protected void deserializeIncomingDataOnClient(FriendlyByteBuf buf, PacketSender responseSender) {
if (ClientConfig.isAcceptingFiles()) {
token = readString(buf);
if (!token.equals(RequestFiles.currentToken)) {
RequestFiles.newToken();
@ -111,9 +110,10 @@ public class SendFiles extends DataHandler {
}
}
@Environment(EnvType.CLIENT)
@Override
protected void runOnGameThread(Minecraft client, MinecraftServer server, boolean isClient) {
if (ClientConfig.isClientConfigAcceptingFiles()) {
protected void runOnClientGameThread(Minecraft client) {
if (ClientConfig.isAcceptingFiles()) {
BCLib.LOGGER.info("Writing Files:");
//TODO: Reject files that were not in the last RequestFiles.
@ -128,6 +128,7 @@ public class SendFiles extends DataHandler {
}
}
@Environment(EnvType.CLIENT)
public static void writeSyncedFile(AutoSyncID e, byte[] data, File fileName) {
Path path = fileName.toPath();
BCLib.LOGGER.info(" - Writing " + path + " (" + data.length + " Bytes)");