Создание эффекта зелья

Версия Minecraft
1.10.2
В общем, да, мне нужно создать новый эффект зелья, только вот если раньше все было по-одному, то теперь, по 1.8, все стало сложна и нипанятна.

Объясните по полочкам, как, что и куда надо писать, или, может, знаете такой урок?
Я помню че-то про EventHandler, еще чего-то, но мне желательно наглядно, по уроку, что ли?
 
Код:
public class ObsessionEffect extends Potion
{
    public ObsessionEffect(boolean par1, int par2)
    {
        super(par1, par2);
        setPotionName("Obsession");
        setRegistryName("obsession_effect");
        this.hasStatusIcon();
    }

    public Potion setIconIndex(int par1, int par2)
    {
        super.setIconIndex(par1, par2);
        return this;
    }

    private static final ResourceLocation icon = new ResourceLocation("moc","/textures/obsession.png");

    @Override
    @SideOnly(Side.CLIENT)
    public boolean hasStatusIcon() {
        Minecraft.getMinecraft().renderEngine.bindTexture(icon);
        return true;
    }

    public int getStatusIconIndex() {
        ITextureObject texture = Minecraft.getMinecraft().renderEngine.getTexture(icon);
        Minecraft.getMinecraft().renderEngine.bindTexture(icon);
        return super.getStatusIconIndex();
    }
}

Вот код эффекта. Он рабочий, все как надо, да вот только не отображает иконку. Иконка лежит где надо, в инвентаре ее просто не видно, а на интерфейсе (ну, когда закроешь инвентарь, там такая иконочка активных эффектов в углу появляется) там просто что-то растянутое, пару растянутых пикселей. Что я делаю не так?


Код:
public static Potion obsession = new ObsessionEffect(true, 25).setIconIndex(0, 0).setPotionName("Obsession");
Вот регистрация зелья.
P.S.: у него айди все равно 0, почему-то
 
Liahim написал(а):
Ась?
В эвент эту строчку пихать надо...
Нам же написано event.getMap()...

А, я тупанул, то бишь все оставить как есть, но просто добавить эту строчку в эвент?
Типа, что спрайт эффекта не зарегистрирован, и его надо зарегистрировать, типа того?
 
Liahim написал(а):

По-идее, это должно один раз быть написано в каком-нибудь событии запуска игры, мира загрузки или типа того?
А есть такое событие вообще и как оно называется?


Все, загуглил, нашел и метод и все что надо. Ща попробую. Заранее спасибо :3
 
Код:
@SubscribeEvent
    public void onTextureStitchEvent(Pre event)
    {
        event.getMap().registerSprite(new ResourceLocation("moc","/textures/obsession.png"));
        return;
    }

Это не работает, все так же


Liahim написал(а):
Чувак! Я ж тебе всё расписал в первом же ответе!

Да, я вижу, но я прислал ниже: не работает, может, что-то не так?
 
Agravaine написал(а):
Напиши полный путь к своей иконке.
И убери слэш перед textures:
new ResourceLocation("moc","textures/obsession.png").

Хорошо, сейчас попробую


Agravaine написал(а):
Напиши полный путь к своей иконке.
И убери слэш перед textures:
new ResourceLocation("moc","textures/obsession.png").

А полный путь начиная откуда? src? resources?
 
Liahim написал(а):
Код:
@SubscribeEvent
public void onTextureStitchEvent(TextureStitchEvent.Pre event) {
       event.getMap().registerSprite(new ResourceLocation("moc:textures/obsession.png"));
}

Это не сработало


Agravaine написал(а):
Magitrop написал(а):
А полный путь начиная откуда? src? resources?

Да.

...
Так src или resources?
 
Сверху