From c621b0525e6e2a79edf7237b8152759451c43aff Mon Sep 17 00:00:00 2001 From: Frank Bauer Date: Sat, 31 Jul 2021 10:32:09 +0200 Subject: [PATCH] Hello message initiated on Server --- .../bclib/api/dataexchange/DataHandler.java | 17 ++++------- .../{HelloServer.java => HelloClient.java} | 28 ++++++++++++------- 2 files changed, 24 insertions(+), 21 deletions(-) rename src/main/java/ru/bclib/api/dataexchange/handler/{HelloServer.java => HelloClient.java} (73%) diff --git a/src/main/java/ru/bclib/api/dataexchange/DataHandler.java b/src/main/java/ru/bclib/api/dataexchange/DataHandler.java index 0005ced8..f4a360b9 100644 --- a/src/main/java/ru/bclib/api/dataexchange/DataHandler.java +++ b/src/main/java/ru/bclib/api/dataexchange/DataHandler.java @@ -40,24 +40,19 @@ public abstract class DataHandler { @Environment(EnvType.CLIENT) void receiveFromServer(Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, PacketSender responseSender){ - deserializeFromIncomingData(buf, responseSender, false); - client.execute(() -> runOnClient(client)); + deserializeFromIncomingData(buf, responseSender, true); + client.execute(() -> runOnGameThread(client, null, true)); } void receiveFromClient(MinecraftServer server, ServerPlayer player, ServerGamePacketListenerImpl handler, FriendlyByteBuf buf, PacketSender responseSender){ - deserializeFromIncomingData(buf, responseSender, true); - server.execute(() -> runOnServer(server)); + deserializeFromIncomingData(buf, responseSender, false); + server.execute(() -> runOnGameThread(null, server, false)); } - protected void deserializeFromIncomingData(FriendlyByteBuf buf, PacketSender responseSender, boolean fromClient){ + protected void deserializeFromIncomingData(FriendlyByteBuf buf, PacketSender responseSender, boolean isClient){ } - @Environment(EnvType.CLIENT) - protected void runOnClient(Minecraft client){ - - } - - protected void runOnServer(MinecraftServer server){ + protected void runOnGameThread(Minecraft client, MinecraftServer server, boolean isClient){ } diff --git a/src/main/java/ru/bclib/api/dataexchange/handler/HelloServer.java b/src/main/java/ru/bclib/api/dataexchange/handler/HelloClient.java similarity index 73% rename from src/main/java/ru/bclib/api/dataexchange/handler/HelloServer.java rename to src/main/java/ru/bclib/api/dataexchange/handler/HelloClient.java index 13b2fe02..96c272d9 100644 --- a/src/main/java/ru/bclib/api/dataexchange/handler/HelloServer.java +++ b/src/main/java/ru/bclib/api/dataexchange/handler/HelloClient.java @@ -1,7 +1,5 @@ package ru.bclib.api.dataexchange.handler; -import io.netty.buffer.ByteBufUtil; -import io.netty.util.CharsetUtil; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.networking.v1.PacketSender; @@ -12,7 +10,6 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import ru.bclib.BCLib; -import ru.bclib.api.WorldDataAPI; import ru.bclib.api.dataexchange.DataExchangeAPI; import ru.bclib.api.dataexchange.DataHandler; import ru.bclib.api.dataexchange.DataHandlerDescriptor; @@ -24,11 +21,11 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Optional; -public class HelloServer extends DataHandler { - public static DataHandlerDescriptor DESCRIPTOR = new DataHandlerDescriptor(new ResourceLocation(BCLib.MOD_ID, "hello_server"), HelloServer::new, true); +public class HelloClient extends DataHandler { + public static DataHandlerDescriptor DESCRIPTOR = new DataHandlerDescriptor(new ResourceLocation(BCLib.MOD_ID, "hello_client"), HelloClient::new, true); - public HelloServer() { - super(DESCRIPTOR.IDENTIFIER, false); + public HelloClient() { + super(DESCRIPTOR.IDENTIFIER, true); } public static String getModVersion(String modID){ @@ -60,13 +57,18 @@ public class HelloServer extends DataHandler { } @Override - protected void runOnServer(MinecraftServer server) { + protected void runOnGameThread(Minecraft client, MinecraftServer server, boolean isClient) { String localBclibVersion = getBCLibVersion(); - BCLib.LOGGER.info("Hello Server received from BCLib. (server="+localBclibVersion+", client="+bclibVersion+")"); + BCLib.LOGGER.info("Hello Client received from BCLib. (client="+localBclibVersion+", server="+bclibVersion+")"); + + if (DataFixerAPI.getModVersion(localBclibVersion) == DataFixerAPI.getModVersion(bclibVersion)){ + showBCLibError(client); + return; + } for (Entry e : modVersion.entrySet()){ String ver = getModVersion(e.getKey()); - BCLib.LOGGER.info(" - " + e.getKey() + " (server="+ver+", client="+ver+")"); + BCLib.LOGGER.info(" - " + e.getKey() + " (client="+ver+", server="+ver+")"); } } @@ -81,4 +83,10 @@ public class HelloServer extends DataHandler { buf.writeInt(DataFixerAPI.getModVersion(getModVersion(modID))); } } + + @Environment(EnvType.CLIENT) + protected void showBCLibError(Minecraft client){ + BCLib.LOGGER.error("BCLib differs on client and server. Stopping."); + client.stop(); + } }