Как работает playerController.windowClick() | 1.12.2

Версия Minecraft
1.12.2
API
Forge

NaN

30
5
2
Контекст: мне надо найти индексы пустых слотов, чтобы потом в них переместить броню

Проблема: индексы некорректны, то есть индекс последнего слота у меня 9, а если через windowClick, то это уже 43

Я вижу по коду, что windowClick работает с инвентарём через лист слотов, но я работаю с инвентарём также через этот лист, так что я вообще не понимаю в чём проблема

Было бы неплохо просто узнать, как именно работает этот метод, и как пофиксить баги с индексами
 
Последнее редактирование:
Решение
Не совсем ясно зачем тебе windowClick, когда можно получить напрямую из игрока инвентарь с бронёй и уже искать пустой слот/закидывать броню в игрока(аля раздатчика, который умеет одевать игрока).

Java:
public int emptyArmorSlotId(EntityPlayer player) {
        for (int slotId = 0, size = player.inventory.armorInventory.size(); slotId < size; slotId++) {
            if (player.inventory.armorInventory.get(slotId).isEmpty()) {
                return slotId;
            }
        }
        return -1;
    }

Что касается работы windowClick, то всё просто:
1655240246931.png
Далее смотришь Container#slotClick. Вообще, я бы на твоём месте не использовал windowClick для взаимодействия с инвентарём, ибо в нём содержится пакетный хак

Icosider

Kotliner
Администратор
3,603
99
664
Не совсем ясно зачем тебе windowClick, когда можно получить напрямую из игрока инвентарь с бронёй и уже искать пустой слот/закидывать броню в игрока(аля раздатчика, который умеет одевать игрока).

Java:
public int emptyArmorSlotId(EntityPlayer player) {
        for (int slotId = 0, size = player.inventory.armorInventory.size(); slotId < size; slotId++) {
            if (player.inventory.armorInventory.get(slotId).isEmpty()) {
                return slotId;
            }
        }
        return -1;
    }

Что касается работы windowClick, то всё просто:
1655240246931.png
Далее смотришь Container#slotClick. Вообще, я бы на твоём месте не использовал windowClick для взаимодействия с инвентарём, ибо в нём содержится пакетный хак
 
Сверху