Переделанный инвентарь

Версия Minecraft
1.17.1
В моддинге нуб, учусь на ходу.
Хочу сделать реалистичто сложный инвентарь, решил начать с удаления слотов. Чтобы не переписывать ванильный ГУИ(т.к. не умею, а гайдов не нашёл) попытался пойти обходным путём: забить слоты не стакающимися предметами(пока топорами), и спрятать, чтобы с ними нельзя было взаимодействовать.
Для проверки попытался забить только один слот.

Java:
    @SubscribeEvent
    public static void playerTick(TickEvent.PlayerTickEvent event) {
        var player = Minecraft.getInstance().player;
        player.getInventory().setItem(6, new ItemStack(Items.IRON_AXE));
    }

Вылетает при попытке зайти в мир, забиндил на кнопку.

Java:
    @SubscribeEvent
    public static void playerTick(TickEvent.PlayerTickEvent event) {
        var player = Minecraft.getInstance().player;
        if (KeyInit.exampleKeyMapping.consumeClick()) {
            player.getInventory().setItem(6, new ItemStack(Items.IRON_AXE));
        }
    }

Теперь топор появляется, но только внешне. При попытке взаимодействия с топором тот исчезает и появляется снова старый предмет, если слот был пустой, то новые предметы спокойно подбираются.

Список вопросов:
а) Почему так и как это исправить?
б) Есть ли путь проще?
в) Как редактировать ванильные ГУИ?
 
Последнее редактирование:
Эх, заигнорили меня. Впрочем, разобрался сам.

Java:
    @SubscribeEvent
    public void onPlayerTick(TickEvent.PlayerTickEvent event) {
        Player player = event.player;
        if (player != null) {
            if (event.phase == Phase.START) {
                Inventory inv = player.getInventory();
                for(int i = 9; i < 36; ++i) {
                    ItemStack stack = inv.getItem(i);
                    if (!stack.isEmpty()) {
                        if (stack.getItem() != Items.IRON_AXE) {
                            ItemEntity entity = player.drop(stack, false, false);
                            if (entity != null && player.level != null && !player.level.isClientSide()) {
                                player.level.addFreshEntity(entity);
                                inv.setItem(i, new ItemStack((ItemLike)Items.IRON_AXE));
                            }
                        }
                    } else {
                        inv.setItem(i, new ItemStack((ItemLike)Items.IRON_AXE));
                    }
                }
            }
        }
    }

Забивает весь инвентарь топорами.
 
Последнее редактирование:
Сверху