Как получить ItemStack с всплывающей подсказки?

Версия Minecraft
1.18.2
API
Forge
23
2
1
Лазаю по коду класса ItemStack никак найти не могу

Задача - получить ItemStack с предмета на который навелся игрок в своем инвентаре. С этого ItemStack нужно получить количество предметов и занести в lore предмета.
Цель - при наведение на предмет в строке Lore писалось количество предмета в стаке умноженого на 9 (У меня тут сжатый булыжник, хочу сделать отображение его кол-ва в стаке)
 
Решение
Ну конечно...
https://pastenow.ru/GPQVV - скриншот того, что работает

Итоговый код
Java:
@Override
               public void appendHoverText(ItemStack itemstack, Level world, List<Component> list, TooltipFlag flag) {
        super.appendHoverText(itemstack, world, list, flag);
        list.add(new TextComponent("cobblestone in stack:"));
        list.add(new TextComponent(String.valueOf(itemstack.getCount() * 9)));
    }}
И никаких лишних вызово айтемстака, которые я хотел делать...

Вывод - внимательно читать переменные, которые вызывает переназначенный метод и не писать код в 3 часа ночи

UPD Та за шо мне три минуса поставили
23
2
1
Item:
    public void appendHoverText(ItemStack itemstack, Level world, List<Component> list, TooltipFlag flag) {
        super.appendHoverText(itemstack, world, list, flag);
        list.add(new TextComponent("cobblestone in stack:"));


        ItemStack ITEMFROMTOOLTIP = !?!?
        int n = ItemStack.EMFROMTOOLTIP.getCount();
        String count = String.valueOf(n);

        list.add(new TextComponent("    "/* 4 spaces*/ + count));

Вот к чему я пока пришел
 
1,074
72
372
Забудь про Lore совсем, он здесь не нужен.
Если предмет свой - переопредели в Item метод, отвечающий за формирование тутлипа. Если для чуждого мода - через ивент ItemTooltipEvent можно тултип менять.
 
1,074
72
372
Вот к чему я пока пришел
Сделать бы рефакторинг. Нужный ItemStack для которого формируется тутлип идёт первым аргументом - работай с ним.

Java:
ItemStack ITEMFROMTOOLTIP = !?!?
int n = ItemStack.EMFROMTOOLTIP.getCount();
String count = String.valueOf(n);
Это вообще какая-то дичь.
 
23
2
1
То есть работать с тултипом, хорошо, покопаюсь еще в Item. Хорошо
Тогда сразу вопрос - тултип же не обращается в lang? надо же будет его заставить его туда стучать
Полагаю что это уже есть где-то на этом форуме, поищу
Спасибо
 
23
2
1
Нашел это

Java:
// найдено в
package net.minecraft.world.item;

public Optional<TooltipComponent> getTooltipImage(ItemStack p_150902_) {
      return Optional.empty();
   }



чует жоя мопа, это не то

поискал что есть на форуме, нашел, по аналогии можно скопировать
Java:
// украдено с forum.mcmodding.ru/resources/tooltip-programmiruemyj-cherez-lang-fajl.18/
// код отредактирован
   @Override // РУГАЕТСЯ
    @SideOnly(MixinEnvironment.Side.CLIENT) // РУГАЕТСЯ
    public void addInformation(ItemStack stack, @Nullable World player/* РУГАЕТСЯ*/, List<String> tooltip, ITooltipFlag advanced/* РУГАЕТСЯ*/) {
 
        tooltip.add(I18n.format(//сюды стринги пихать)); 
    }

}

Не то? intellij безудержно ругается, а импорт не помогает - классов таких нет (у типов переменных). Вариант А - это не то, вариант Б - все это переписали раза сто, так как гайд на 1.12, а у меня современненькая 1.18.2 (к слову целые сутки искал как сделать блок добываемым для инструмента - оказывается mojang завезли json для этого, ухх)
Полагаю что Б, но где этот метод в forge лежит чтобы посмотреть
 
Последнее редактирование:
23
2
1
Кстати да, у меня же это не Item класс, а BlockItem. Я же создаю предмет для блока

UPD, а в net.minecraft.world.blockitem ничего не нашел. Хотя ясен фиг, если в айтем нет, то там и не будет
 
Последнее редактирование:
23
2
1
Java:
@Override
               public void appendHoverText(ItemStack itemstack, Level world, List<Component> list, TooltipFlag flag) {
        super.appendHoverText(itemstack, world, list, flag);
        list.add(new TextComponent("cobblestone in stack:"));
        list.add(new TextComponent(/*   Сюда как-то надо вызвать количество предметов в стаке*/ ));
    }

Все же это единственное, что я нашел - что работает с тултипом и добавляет в него строки

Осталось как-то мне теперь добыть кол-во предметов, на который навелся игрок(или на предмет, у которого вывелся тултип в инвентаре игрока). Я шурую ItemStack, но там либо нет того что мне надо (что странно) либо же я пропустил то что мне нужно.

Подскажите, куда копать?

UPD в переназначеной функции есть айтемстак, кажется он вызывает предмет в инвентаре на который навелся предмет
 
Последнее редактирование:
23
2
1
Ну конечно...
https://pastenow.ru/GPQVV - скриншот того, что работает

Итоговый код
Java:
@Override
               public void appendHoverText(ItemStack itemstack, Level world, List<Component> list, TooltipFlag flag) {
        super.appendHoverText(itemstack, world, list, flag);
        list.add(new TextComponent("cobblestone in stack:"));
        list.add(new TextComponent(String.valueOf(itemstack.getCount() * 9)));
    }}
И никаких лишних вызово айтемстака, которые я хотел делать...

Вывод - внимательно читать переменные, которые вызывает переназначенный метод и не писать код в 3 часа ночи

UPD Та за шо мне три минуса поставили
 
Последнее редактирование:
Сверху