- 27
- 1
- 2
Доброе утро. Сделал новые характеристики через IEEP (выносливость, ману), сделал так, чтобы они восполнялись через TickEvent.PlayerTickEvent. Ивент зарегистрировал через FMLCommonHandler.instance().bus() и MinecraftForge.EVENT_BUS соответственно. Но на сервере и клиенте получается сильный рассинхрон (наблюдаю через ГУИ в игре и сохраненный файл игрока, да и по соответствующим действиям понятно). Кажется, что со стороны сервера не спешит вызываться PlayerTickEvent.
Попробовал сделать так, чтобы происходило только на серверной части (убрал MinecraftForge.EVENT_BUS) и сделал сихнронизацию статов каждую секунду через тот же ивент, но при таком раскладе получаю краш.
Синхронизацию сделал по гайду: [1.7-1.15]Пакетная система CodeChickenLib.
addCurrValue(1, value) - добавляет к выносливости.
Попробовал сделать так, чтобы происходило только на серверной части (убрал MinecraftForge.EVENT_BUS) и сделал сихнронизацию статов каждую секунду через тот же ивент, но при таком раскладе получаю краш.
Синхронизацию сделал по гайду: [1.7-1.15]Пакетная система CodeChickenLib.
Java:
@SubscribeEvent
public void onPlayerTick(TickEvent.PlayerTickEvent event) {
GothicMain.proxy.fireTick(event.side);
if (GothicMain.proxy.getTick(event.side) % 20 == 0 && event.player.getFoodStats().getFoodLevel() > 5) {
LearnableStats statsPlayer = LearnableStats.get(event.player);
statsPlayer.addCurrValue(1, 1);
statsPlayer.addCurrValue(2, 0.1F);
NBTTagCompound nbt = new NBTTagCompound();
statsPlayer.saveNBTData(nbt);
Packet.createPacket(1).writeNBTTagCompound(nbt).sendToPlayer(event.player);
if(event.player.isSprinting()) {
statsPlayer.takeCurrValue(1, 5);
}
}
addCurrValue(1, value) - добавляет к выносливости.
Последнее редактирование модератором: