- 210
- 1
- 19
В конфиг записываю количество добавленных или отбавленных сердец. При входе на сервер (эвент PlayerLoggedInEvent), при респавне игрока после смерти (эвент PlayerRespawnEvent), при переходе из края в верхний мир (эвент Clone) всё работает. При любом другом переходе между мирами (эвент PlayerChangedDimensionEvent) сообщение о том, что переход случился, есть, а эффекта нет - у игрока дефолтные 10 сердец (maxHealth). Но если отключиться от мира и сразу снова зайти - всё становится нормально. То есть игра считает, что максимум сердец столько, сколько нужно, но я их не вижу. Ниже мой код. Закомментированы все способы, которые я попробовал. Подчеркну ещё раз: во всех других перечисленных случаях всё работает нормально.
Java:
@SubscribeEvent
public void onChangeDim(PlayerChangedDimensionEvent e){
if(!e.player.worldObj.isRemote){
if(RespawnConfig.isDebug())System.out.println("Fired 'PlayerChangedDimensionEvent' for player " + e.player.getDisplayName());
float defaulthp = 20.0f;
float add = RespawnConfig.getHitPoints(e.player.getDisplayName());
float current = e.player.getMaxHealth();
System.out.println("def+add=" + (defaulthp+add));
/[I]if(current != defaulthp + add){[/I]/e.player.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(defaulthp + add);//}
updateHealth((EntityPlayerMP) e.player);
}
//updateHealth((EntityPlayerMP) e.player);
//e.player.setHealth(e.player.getHealth());
//e.player.heal(1f);
}
public static void updateHealth(EntityPlayerMP player) {
player.playerNetServerHandler.sendPacket(new S06PacketUpdateHealth(player.getHealth(), player.getFoodStats().getFoodLevel(), player.getFoodStats().getSaturationLevel()));
}