Проблемы с синхронизацией данных между клиентом и сервером

Версия Minecraft
1.20.1
79
2
4
Нужно передать данные с сервера на клиент, пробовал сделать так:

И копировал инфу с серверного игрока на клиент:
    public boolean handlePacket(Supplier<NetworkEvent.Context> supplier){
        NetworkEvent.Context ctx = supplier.get();
        ctx.enqueueWork(() -> {
            ServerPlayer player = ctx.getSender();
            player.sendSystemMessage(Component.literal("packet received"));
            player.getCapability(PlayerKnowledgeProvider.PLAYER_KNOWLEDGE).ifPresent(serverKnowledge -> {
                Minecraft.getInstance().player.getCapability(PlayerKnowledgeProvider.PLAYER_KNOWLEDGE).ifPresent(clientKnowledge -> {
                    clientKnowledge.copyFrom(serverKnowledge);
                });
            });
           
        });
        return true;
    }
Это работало, когда я синхронизировал данные уже присоединившегося к миру игрока, но когда я попробовал синхронизировать клиент и сервер в момент, когда игрок присоединяется к миру это перестало работать, так как Minecraft.getInstance().player = null в момент присоеденения

Отправлял пакет:
    @SubscribeEvent
    public static void syncCap(PlayerEvent.PlayerLoggedInEvent event) {

            ModMessages.sendToServer(new KnowledgeC2SPacket(event.getEntity()));
    }

Подскажите, как можно решить эту проблему
 
Сверху