Хук в NetHandlerPlayServer

Версия Minecraft
1.12.2
API
Forge

sk9zist :l

Исправился
981
18
157
Хукаюсь в NetHandlerPlayServer и ставлю floatingTickCount = 0. Как вставить проверку на свою способность? Если я буду у серверного игрока проверять инвентарь методом inventory.hasItemStack то будет краш (вероятно, потому что инвентаря игрока нету в EntityPlayerMP). Сейчас пробую делать if(player.getEntityData().hasKey("rfoolAbility") && player.getEntityData().getBoolean("rfoolAbility"))
Краша нет, но этот код не работает для меня.
 

tox1cozZ

aka Agravaine
8,456
598
2,892
вероятно, потому что инвентаря игрока нету в EntityPlayerMP
🤦‍♀️🤦‍♀️🤦‍♀️
Конечно же есть.

Как вставить проверку на свою способность?
Ты не можешь написать if? Иди джаву учи, ну рил.

А еще без кода тебе никто не поможет, а тема улетит в следующий раз в корзину.
 

sk9zist :l

Исправился
981
18
157
Ок, я просто не был уверен. А почему тогда не работает проверка на предмет?
Java:
@Hook()
public static void update(NetHandlerPlayServer nhps)
{
    if(nhps.player.inventory.hasItemStack(new ItemStack(ItemHandler.TestItem)))
    {
        Log.info("is set to 0.");
        nhps.floatingTickCount = 0;
    }
}
Без проверок все работает идеально.
 
Последнее редактирование:

sk9zist :l

Исправился
981
18
157

sk9zist :l

Исправился
981
18
157
Решил.. У меня автоматически после назначения булеан "обнулялся" сразу до значения false
Java:
if(!e.player.getEntityData().hasKey("rfoolAbility"))
{
    e.player.getEntityData().setBoolean("rfoolAbility", true);
} else {
    if(e.player.getEntityData().getBoolean("rfoolAbility"))
    {
        e.player.getEntityData().setBoolean("rfoolAbility", false);
    } else {
        e.player.getEntityData().setBoolean("rfoolAbility", true);
    }
}
Заменил на
Java:
if(!e.player.getEntityData().hasKey("rfoolAbility"))
{
    e.player.getEntityData().setBoolean("rfoolAbility", true);
} else {
    e.player.getEntityData().setBoolean("rfoolAbility", true);
}
@tox1cozZ Тему в корзину.
 
Сверху