Hello message initiated on Server

This commit is contained in:
Frank Bauer 2021-07-31 10:32:09 +02:00
parent 165c6e5b22
commit c621b0525e
2 changed files with 24 additions and 21 deletions

View file

@ -40,24 +40,19 @@ public abstract class DataHandler {
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
void receiveFromServer(Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, PacketSender responseSender){ void receiveFromServer(Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, PacketSender responseSender){
deserializeFromIncomingData(buf, responseSender, false); deserializeFromIncomingData(buf, responseSender, true);
client.execute(() -> runOnClient(client)); client.execute(() -> runOnGameThread(client, null, true));
} }
void receiveFromClient(MinecraftServer server, ServerPlayer player, ServerGamePacketListenerImpl handler, FriendlyByteBuf buf, PacketSender responseSender){ void receiveFromClient(MinecraftServer server, ServerPlayer player, ServerGamePacketListenerImpl handler, FriendlyByteBuf buf, PacketSender responseSender){
deserializeFromIncomingData(buf, responseSender, true); deserializeFromIncomingData(buf, responseSender, false);
server.execute(() -> runOnServer(server)); 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 runOnGameThread(Minecraft client, MinecraftServer server, boolean isClient){
protected void runOnClient(Minecraft client){
}
protected void runOnServer(MinecraftServer server){
} }

View file

@ -1,7 +1,5 @@
package ru.bclib.api.dataexchange.handler; 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.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.networking.v1.PacketSender; 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.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import ru.bclib.BCLib; import ru.bclib.BCLib;
import ru.bclib.api.WorldDataAPI;
import ru.bclib.api.dataexchange.DataExchangeAPI; import ru.bclib.api.dataexchange.DataExchangeAPI;
import ru.bclib.api.dataexchange.DataHandler; import ru.bclib.api.dataexchange.DataHandler;
import ru.bclib.api.dataexchange.DataHandlerDescriptor; import ru.bclib.api.dataexchange.DataHandlerDescriptor;
@ -24,11 +21,11 @@ import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Optional; import java.util.Optional;
public class HelloServer extends DataHandler { public class HelloClient extends DataHandler {
public static DataHandlerDescriptor DESCRIPTOR = new DataHandlerDescriptor(new ResourceLocation(BCLib.MOD_ID, "hello_server"), HelloServer::new, true); public static DataHandlerDescriptor DESCRIPTOR = new DataHandlerDescriptor(new ResourceLocation(BCLib.MOD_ID, "hello_client"), HelloClient::new, true);
public HelloServer() { public HelloClient() {
super(DESCRIPTOR.IDENTIFIER, false); super(DESCRIPTOR.IDENTIFIER, true);
} }
public static String getModVersion(String modID){ public static String getModVersion(String modID){
@ -60,13 +57,18 @@ public class HelloServer extends DataHandler {
} }
@Override @Override
protected void runOnServer(MinecraftServer server) { protected void runOnGameThread(Minecraft client, MinecraftServer server, boolean isClient) {
String localBclibVersion = getBCLibVersion(); 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<String, String> e : modVersion.entrySet()){ for (Entry<String, String> e : modVersion.entrySet()){
String ver = getModVersion(e.getKey()); 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))); 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();
}
} }