addInformation(), eclipse и @Override

Версия Minecraft
1.12.2
Не могу понять, что такое ITooltipFlag и откуда его брать. Вот например:
Java:
@SubscribeEvent
    public void pickUpItem (EntityItemPickupEvent event) {
        if (event.getEntity() instanceof EntityPlayer) {
            EntityPlayer player = event.getEntityPlayer(); /*получаю игрока*/
            Item item = event.getItem().getItem().getItem(); /*получаю поднятый предмет*/
            ItemStack istack = new ItemStack(item); /*чтобы можно было изменять*/
            List<String> tooltip = new ArrayList<String>(); /*инициализирую тултип*/
            addInformation(istack, player, tooltip, flagIn); /*как это называется? вызываю функцию?*/
        }
    }
    @Override
    public void addInformation(ItemStack istack, EntityPlayer player, List<String> tooltip, ITooltipFlag flagIn) {
        tooltip.add("Неважно что...");
    }
И почему Эклипс ругается на @Override? Без него ведь не сработает.
 
1,202
31
185
Объясни для нуба, пожалуйста
Сувать переопределенный метод надо в твой ItemName который экстендит Item (extends Item)
типо

Java:
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips)
    {   
        lines.add(StatCollector.translateToLocal(EnumChatFormatting.WHITE + "Патрон: " + stack.getTagCompound().getInteger("ammo") +"/"+ this.ammo));
        lines.add(StatCollector.translateToLocal(EnumChatFormatting.YELLOW + "Урон: " + this.damage));
        lines.add(StatCollector.translateToLocal(EnumChatFormatting.YELLOW + "Скорострельность: " + 1200/this.shootSpeed + " выс/мин."));
        lines.add(StatCollector.translateToLocal(EnumChatFormatting.YELLOW + "Время перезарядки: " + this.reloadTime/20 + " с."));
        lines.add(StatCollector.translateToLocal(EnumChatFormatting.YELLOW + "Точность: " + this.spread + "%"));
        lines.add(StatCollector.translateToLocal(EnumChatFormatting.YELLOW + "Отдача: " + this.recoil));
    }
Это пример из класса моего итема
Тебе можно
lines.add(StatCollector.translateToLocal(EnumChatFormatting.YELLOW + "Урон: 7"));
 
Я однозначно нифига не понял, но
Java:
public class ItemAddLore extends Item {
    @SubscribeEvent
    public void pickUpItem (EntityItemPickupEvent event) {
        if (event.getEntity() instanceof EntityPlayer) {
            EntityPlayer player = event.getEntityPlayer(); /*получаю игрока*/
            World world = player.world;
            Item item = event.getItem().getItem().getItem(); /*получаю поднятый предмет*/
            ItemStack istack = new ItemStack(item); /*чтобы можно было изменять*/
            List<String> tooltip = new ArrayList<String>(); /**/
            ITooltipFlag flagIn = ITooltipFlag.TooltipFlags.ADVANCED;
            super.addInformation(istack, world, tooltip, flagIn);
        }
    }
    @Override
    public void addInformation(ItemStack istack, @Nullable World world, List<String> tooltip, ITooltipFlag flagIn) {
        tooltip.add("Неважно что...");
    }
    
}
Теперь Эклипс молчит, но тултипа нет.
 

tox1cozZ

aka Agravaine
8,456
598
2,893
Херню пишешь, вообще не понимаешь смысл ООП. Почитай, ага.
Ты хочешь чтобы у ВСЕХ(своих созданных и ванильных) которые поднял игрок был тултип? В своем ивенте поднятия предмета пиши в стак нбт, а в ItemTooltipEvent уже доставай нбт из стака, чекай на нужное значение и добавляй тултип(в событии есть список).
 
1,202
31
185
Я однозначно нифига не понял, но
Java:
public class ItemAddLore extends Item {
    @SubscribeEvent
    public void pickUpItem (EntityItemPickupEvent event) {
        if (event.getEntity() instanceof EntityPlayer) {
            EntityPlayer player = event.getEntityPlayer(); /*получаю игрока*/
            World world = player.world;
            Item item = event.getItem().getItem().getItem(); /*получаю поднятый предмет*/
            ItemStack istack = new ItemStack(item); /*чтобы можно было изменять*/
            List<String> tooltip = new ArrayList<String>(); /**/
            ITooltipFlag flagIn = ITooltipFlag.TooltipFlags.ADVANCED;
            super.addInformation(istack, world, tooltip, flagIn);
        }
    }
    @Override
    public void addInformation(ItemStack istack, @Nullable World world, List<String> tooltip, ITooltipFlag flagIn) {
        tooltip.add("Неважно что...");
    }
   
}
Теперь Эклипс молчит, но тултипа нет.
Во первых у тебя ItemAddLore - не является слушателем событий, ты его не зарегал.
Во вторых, я не понимаю, что ты хочешь вообще сделать?
В третьих, метод addInformation вызывается всякий раз пока мышка наведена на этот предмет в слоте.
Обьясни что ты хочешь, я попытаюсь помочь :/
 
Конечно херню, и да хочу добавить тултип всем предметам, просто так - учусь я.
Java:
MinecraftForge.EVENT_BUS.register(new ItemAddLore());
Если добавить вывод какого-нибудь сообщения, то оно выводится.
 
32
1
11
Конечно херню, и да хочу добавить тултип всем предметам, просто так - учусь я.
Java:
MinecraftForge.EVENT_BUS.register(new ItemAddLore());
Если добавить вывод какого-нибудь сообщения, то оно выводится.
Аааааааа, как можно так тупить? И зачем пихать предмет и событие в один класс?
 
Сверху