diff --git a/src/main/java/ru/bclib/api/dataexchange/handler/AutoFileSyncEntry.java b/src/main/java/ru/bclib/api/dataexchange/handler/AutoFileSyncEntry.java index 8ac37878..4211b3f8 100644 --- a/src/main/java/ru/bclib/api/dataexchange/handler/AutoFileSyncEntry.java +++ b/src/main/java/ru/bclib/api/dataexchange/handler/AutoFileSyncEntry.java @@ -4,6 +4,7 @@ import net.minecraft.network.FriendlyByteBuf; import ru.bclib.api.dataexchange.DataHandler; import ru.bclib.api.dataexchange.FileHash; import ru.bclib.util.Pair; +import ru.bclib.util.Triple; import java.io.File; import java.io.IOException; @@ -53,13 +54,13 @@ class AutoFileSyncEntry extends DataExchange.AutoSyncID { return serializeFileContent(buf); } - public static Pair deserializeContent(FriendlyByteBuf buf) { + public static Triple deserializeContent(FriendlyByteBuf buf) { final String modID = DataHandler.readString(buf); final String uniqueID = DataHandler.readString(buf); byte[] data = deserializeFileContent(buf); AutoFileSyncEntry entry = AutoFileSyncEntry.findMatching(modID, uniqueID); - return new Pair<>(entry, data); + return new Triple<>(entry, data, new DataExchange.AutoSyncID(modID, uniqueID)); } diff --git a/src/main/java/ru/bclib/api/dataexchange/handler/HelloClient.java b/src/main/java/ru/bclib/api/dataexchange/handler/HelloClient.java index d6a840dd..2fe5ff2b 100644 --- a/src/main/java/ru/bclib/api/dataexchange/handler/HelloClient.java +++ b/src/main/java/ru/bclib/api/dataexchange/handler/HelloClient.java @@ -54,16 +54,19 @@ public class HelloClient extends DataHandler { @Override protected void serializeData(FriendlyByteBuf buf) { + final String vbclib = getBCLibVersion(); + BCLib.LOGGER.info("Sending Hello to Client. (server="+vbclib+")"); final List mods = DataExchangeAPI.registeredMods(); //write BCLibVersion (=protocol version) - buf.writeInt(DataFixerAPI.getModVersion(getBCLibVersion())); - + buf.writeInt(DataFixerAPI.getModVersion(vbclib)); //write Plugin Versions buf.writeInt(mods.size()); for (String modID : mods) { writeString(buf, modID); - buf.writeInt(DataFixerAPI.getModVersion(getModVersion(modID))); + final String ver = getModVersion(modID); + buf.writeInt(DataFixerAPI.getModVersion(ver)); + BCLib.LOGGER.info(" - Listing Mod " + modID + " v" + ver); } //send config Data @@ -72,6 +75,7 @@ public class HelloClient extends DataHandler { for (AutoFileSyncEntry entry : autoSyncFiles) { //System.out.println("Serializing " + entry.getFileHash()); entry.serialize(buf); + BCLib.LOGGER.info(" - Offering File " + entry); } } diff --git a/src/main/java/ru/bclib/api/dataexchange/handler/SendFiles.java b/src/main/java/ru/bclib/api/dataexchange/handler/SendFiles.java index 05d71930..7742f523 100644 --- a/src/main/java/ru/bclib/api/dataexchange/handler/SendFiles.java +++ b/src/main/java/ru/bclib/api/dataexchange/handler/SendFiles.java @@ -13,7 +13,9 @@ import ru.bclib.api.dataexchange.DataHandler; import ru.bclib.api.dataexchange.DataHandlerDescriptor; import ru.bclib.gui.screens.ConfirmRestartScreen; import ru.bclib.util.Pair; +import ru.bclib.util.Triple; +import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -38,6 +40,12 @@ public class SendFiles extends DataHandler { @Override protected void serializeData(FriendlyByteBuf buf) { List existingFiles = files.stream().filter(e -> e.fileName.exists()).collect(Collectors.toList()); + /* + //this will try to send a file that was not registered or requested by the client + existingFiles.add(new AutoFileSyncEntry("none", new File("D:\\MinecraftPlugins\\BetterNether\\run\\server.properties"),true,(a, b, content) -> { + System.out.println("Got Content:" + content.length); + return true; + }));*/ writeString(buf, token); buf.writeInt(existingFiles.size()); @@ -64,12 +72,12 @@ public class SendFiles extends DataHandler { receivedFiles = new ArrayList<>(size); BCLib.LOGGER.info("Server sent " + size + " Files:"); for (int i=0; i p = AutoFileSyncEntry.deserializeContent(buf); + Triple p = AutoFileSyncEntry.deserializeContent(buf); if (p.first != null) { receivedFiles.add(p); BCLib.LOGGER.info(" - " + p.first + " (" + p.second.length + " Bytes)"); } else { - BCLib.LOGGER.error(" - Failed to receive File"); + BCLib.LOGGER.error(" - Failed to receive File " +p.third+ ", possibly sent from a Mod that is not installed on the client."); } } }