First network test

This commit is contained in:
Frank Bauer 2021-07-28 23:28:42 +02:00
parent eda626fe10
commit 30b7c8043a
9 changed files with 382 additions and 0 deletions

View file

@ -0,0 +1,59 @@
package ru.bclib.api.dataexchange;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientPacketListener;
import net.minecraft.network.FriendlyByteBuf;
import ru.bclib.BCLib;
@Environment(EnvType.CLIENT)
class ConnectorClientside extends Connector {
private Minecraft client;
ConnectorClientside(DataExchangeAPI api) {
super(api);
this.client = null;
}
@Override
public boolean onClient() {
return true;
}
protected void onPlayInit(ClientPacketListener handler, Minecraft client){
if (this.client!=null && this.client != client){
BCLib.LOGGER.warning("Client changed!");
}
this.client = client;
for(DataHandlerDescriptor desc : descriptors){
ClientPlayNetworking.registerReceiver(desc.identifier, (_client, _handler, _buf, _responseSender)->{
receiveFromServer(desc, _client, _handler, _buf, _responseSender);
});
}
}
void onPlayReady(ClientPacketListener handler, PacketSender sender, Minecraft client){
}
void onPlayDisconnect(ClientPacketListener handler, Minecraft client){
for(DataHandlerDescriptor desc : descriptors) {
ClientPlayNetworking.unregisterReceiver(desc.identifier);
}
}
void receiveFromServer(DataHandlerDescriptor desc, Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, PacketSender responseSender){
DataHandler h = desc.instancer.get();
h.receiveFromServer(client, handler, buf, responseSender);
}
void sendToServer(DataHandler h){
if (client==null){
throw new RuntimeException("[internal error] Client not initialized yet!");
}
h.sendToServer(this.client);
}
}