Получить контейнер в AnvilUpdateEvent

Версия Minecraft
1.12+
916
22
333
Доброго дня, уважаемые форумчане.
Столкнулся с такой проблемой:
Мне нужно проверить режим игрока, который колдует в наковальне, однако AnvilUpdateEvent, не предусматривает такой возможности.
На данный момент мой код выглядит так:
Java:
    @SubscribeEvent
    public static void onAnvilUpdate(AnvilUpdateEvent event) {
        ItemStack output = event.getLeft().copy();
        String name = output.getUnlocalizedName();
        if (event.getCost() <= 0 && Concench.enchantments.containsKey(name)
                && event.getRight().getItem() == Items.ENCHANTED_BOOK) {
            boolean flag = false;
            if (output.hasTagCompound()) {
                if (!output.getTagCompound().hasKey("concench")) {
                    NBTTagCompound nbt = output.getOrCreateSubCompound("concench");
                    genNBT(name, nbt);
                    flag = true;
                }
            } else {
                output.setTagCompound(new NBTTagCompound());
                NBTTagCompound nbt = output.getOrCreateSubCompound("concench");
                genNBT(name, nbt);
                flag = true;
            }
            if (flag) {
                event.setCost(output.getRepairCost() + 2);
                output.setRepairCost(output.getRepairCost() + 2);
                event.setOutput(output);
            }
        }
    }
Однако этот код ни в коем случае не должен выполняться если игрок в креативе. Я в тупике. Проверять на клиенте, слать пакет на сервер, и уже выполнять\не выполонять?... Это единственная идея, но она нагоняет пессимизм... Создавать пакетную систему, если в моде 2 класса, не самое лучшее решение, как мне кажется...
 
3,005
192
594
3,005
192
594
Ну, по идеи, если есть хуки, то заюзать хуки в отправку ивента.
Отправлять свой ивент с игроком.

#ОдменНеМерджи
 
3,005
192
594
От того, что в моде 2 класса, это не значит, что там не должно быть что-то еще.
А так же, по поводу пакетов - не делай так, ибо пакет хаки.
 
916
22
333
Хммм, появилась костыльная идея. AnvilRepairEvent вызывается когда игрок взял результат из выходного слота и там можно получить игрока. Идея заключается в том, чтобы на клиенте в эвенте ItemTooltipEvent для моего предмета, отображать тултип, который должен быть у предмета полученного в креативе, а уже в AnvilRepairEvent, когда игрок берёт предмет из слота, проверять креатив, и менять предмет на нужный...
Итааак... тармпарам-парам-тамтам... модер "Крокодил" выигрывает в номинации "Костыль года"! Аплодисменты!

Короче говоря, оставлю топик, и пока дошлифую всё остальное. Будет пока работать и в креативе, и помечено, как существующий баг. Очень прошу, если у кого-то найдётся не костыльный способ и желательно без использования хуков, напишите, очень прошу. Если же это окажется невозможным, поступлю по совету @ロロロ и буду хукать (дабы не увеличивать размер мода, обходиться буду без всем известной хук-либы).
Так вот как-то...
 
916
22
333
Нет не подойдёт напрямую, так как отсутствуют рецепты крафта для комбинаций предметов. Я вручную устанавливаю в выходной слот предмет, если предметы во входных слотах удовлетворяют условию
 

tox1cozZ

aka Agravaine
8,454
598
2,895
То что нельзя делать проверки на клиенте, слать пакет и тупо применять на сервере. По-хорошему нужно делать проверки и на клиенте и на сервере, иначе я просто зайду и буду слать пакеты и получать профит.
 
Сверху