- 95
- 4
- 6
Нужно передать данные с сервера на клиент, пробовал сделать так:
Это работало, когда я синхронизировал данные уже присоединившегося к миру игрока, но когда я попробовал синхронизировать клиент и сервер в момент, когда игрок присоединяется к миру это перестало работать, так как Minecraft.getInstance().player = null в момент присоеденения
Подскажите, как можно решить эту проблему
И копировал инфу с серверного игрока на клиент:
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;
}
Отправлял пакет:
@SubscribeEvent
public static void syncCap(PlayerEvent.PlayerLoggedInEvent event) {
ModMessages.sendToServer(new KnowledgeC2SPacket(event.getEntity()));
}
Подскажите, как можно решить эту проблему