Pass through Player from Network Messages

This commit is contained in:
Frank 2022-01-03 15:57:00 +01:00
parent 68ca682324
commit 83110b74a5
3 changed files with 28 additions and 11 deletions

View file

@ -14,6 +14,7 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.network.ServerGamePacketListenerImpl; import net.minecraft.server.network.ServerGamePacketListenerImpl;
import net.minecraft.world.entity.player.Player;
import ru.bclib.BCLib; import ru.bclib.BCLib;
import ru.bclib.api.dataexchange.handler.autosync.Chunker; import ru.bclib.api.dataexchange.handler.autosync.Chunker;
import ru.bclib.api.dataexchange.handler.autosync.Chunker.PacketChunkSender; import ru.bclib.api.dataexchange.handler.autosync.Chunker.PacketChunkSender;
@ -132,7 +133,7 @@ public abstract class DataHandler extends BaseDataHandler {
} }
@Override @Override
protected void deserializeIncomingDataOnServer(FriendlyByteBuf buf, PacketSender responseSender) { protected void deserializeIncomingDataOnServer(FriendlyByteBuf buf, Player player, PacketSender responseSender) {
} }
} }
@ -145,10 +146,24 @@ public abstract class DataHandler extends BaseDataHandler {
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
abstract protected void serializeDataOnClient(FriendlyByteBuf buf); abstract protected void serializeDataOnClient(FriendlyByteBuf buf);
abstract protected void deserializeIncomingDataOnServer(FriendlyByteBuf buf, PacketSender responseSender); @Deprecated(forRemoval = true)
protected void deserializeIncomingDataOnServer(FriendlyByteBuf buf, PacketSender responseSender){ }
abstract protected void runOnServerGameThread(MinecraftServer server);
//TODO: should be abstract once deserializeIncomingDataOnServer(FriendlyByteBuf buf, PacketSender responseSender) was removed
protected void deserializeIncomingDataOnServer(FriendlyByteBuf buf, Player player, PacketSender responseSender) {
deserializeIncomingDataOnServer(buf, responseSender);
}
@Deprecated(forRemoval = true)
protected void runOnServerGameThread(MinecraftServer server){ }
//TODO: should be abstract once runOnServerGameThread(MinecraftServer server) was removed
protected void runOnServerGameThread(MinecraftServer server, Player player){
runOnServerGameThread(server);
}
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
@ -161,8 +176,8 @@ public abstract class DataHandler extends BaseDataHandler {
void receiveFromClient(MinecraftServer server, ServerPlayer player, ServerGamePacketListenerImpl handler, FriendlyByteBuf buf, PacketSender responseSender) { void receiveFromClient(MinecraftServer server, ServerPlayer player, ServerGamePacketListenerImpl handler, FriendlyByteBuf buf, PacketSender responseSender) {
super.receiveFromClient(server, player, handler, buf, responseSender); super.receiveFromClient(server, player, handler, buf, responseSender);
deserializeIncomingDataOnServer(buf, responseSender); deserializeIncomingDataOnServer(buf, player, responseSender);
final Runnable runner = () -> runOnServerGameThread(server); final Runnable runner = () -> runOnServerGameThread(server, player);
if (isBlocking()) server.executeBlocking(runner); if (isBlocking()) server.executeBlocking(runner);
else server.execute(runner); else server.execute(runner);

View file

@ -6,6 +6,7 @@ import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.minecraft.network.FriendlyByteBuf; 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 net.minecraft.world.entity.player.Player;
import ru.bclib.BCLib; import ru.bclib.BCLib;
import ru.bclib.api.dataexchange.DataExchangeAPI; import ru.bclib.api.dataexchange.DataExchangeAPI;
import ru.bclib.api.dataexchange.DataHandler; import ru.bclib.api.dataexchange.DataHandler;
@ -84,12 +85,12 @@ public class HelloServer extends DataHandler.FromClient {
} }
@Override @Override
protected void deserializeIncomingDataOnServer(FriendlyByteBuf buf, PacketSender responseSender) { protected void deserializeIncomingDataOnServer(FriendlyByteBuf buf, Player player, PacketSender responseSender) {
bclibVersion = ModUtil.convertModVersion(buf.readInt()); bclibVersion = ModUtil.convertModVersion(buf.readInt());
} }
@Override @Override
protected void runOnServerGameThread(MinecraftServer server) { protected void runOnServerGameThread(MinecraftServer server, Player player) {
if (!Configs.SERVER_CONFIG.isAllowingAutoSync()) { if (!Configs.SERVER_CONFIG.isAllowingAutoSync()) {
BCLib.LOGGER.info("Auto-Sync was disabled on the server."); BCLib.LOGGER.info("Auto-Sync was disabled on the server.");
return; return;

View file

@ -6,6 +6,7 @@ import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.minecraft.network.FriendlyByteBuf; 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 net.minecraft.world.entity.player.Player;
import ru.bclib.BCLib; import ru.bclib.BCLib;
import ru.bclib.api.dataexchange.DataHandler; import ru.bclib.api.dataexchange.DataHandler;
import ru.bclib.api.dataexchange.DataHandlerDescriptor; import ru.bclib.api.dataexchange.DataHandlerDescriptor;
@ -57,7 +58,7 @@ public class RequestFiles extends DataHandler.FromClient {
String receivedToken = ""; String receivedToken = "";
@Override @Override
protected void deserializeIncomingDataOnServer(FriendlyByteBuf buf, PacketSender responseSender) { protected void deserializeIncomingDataOnServer(FriendlyByteBuf buf, Player player, PacketSender responseSender) {
receivedToken = readString(buf); receivedToken = readString(buf);
int size = buf.readInt(); int size = buf.readInt();
files = new ArrayList<>(size); files = new ArrayList<>(size);
@ -73,7 +74,7 @@ public class RequestFiles extends DataHandler.FromClient {
} }
@Override @Override
protected void runOnServerGameThread(MinecraftServer server) { protected void runOnServerGameThread(MinecraftServer server, Player player) {
if (!Configs.SERVER_CONFIG.isAllowingAutoSync()) { if (!Configs.SERVER_CONFIG.isAllowingAutoSync()) {
BCLib.LOGGER.info("Auto-Sync was disabled on the server."); BCLib.LOGGER.info("Auto-Sync was disabled on the server.");
return; return;