- 1,159
- 38
- 544
Сделал кастомный Potion
Но ванильный код рендерит иконки Potion'ов с захардкоденым смещением
Как видим, все иконки зелий хранятся прямо в текстуре инвентаря с 198-го пикселя по вертикали
Хуковать, наследовать
Как быть, товарищи?
Java:
static class BreathOfCouragePotion extends Potion {
protected BreathOfCouragePotion(int id, boolean isBadEffect, int liquidColor) {
super(id, isBadEffect, liquidColor);
setPotionName("potion.breathOfCourage");
setIconIndex(0, 0);
}
@Override
public boolean hasStatusIcon() {
// Хитрый хак, перед рендером подменяем текстуру с иконками зелий на свою
Minecraft.getMinecraft().renderEngine.bindTexture(potionIcon);
return true;
}
}
Но ванильный код рендерит иконки Potion'ов с захардкоденым смещением
Код:
if (potion.hasStatusIcon())
{
int l = potion.getStatusIconIndex();
// Инконки берутся с высоты 198
this.drawTexturedModalRect(i + 6, j + 7, 0 + l % 8 * 18, 198 + l / 8 * 18, 18, 18);
}
Хуковать, наследовать
InventoryEffectRenderer
я не хочу. Мне нужен лишь способ в пределах функции Potion#hasStatusIcon()
сдвинуть текстуру на 198 пикселей вверх, чтобы устранить этот недочет. Я пробовал юзать GL11.glTranslatef(0, -10, 0);
, но вместо текстуры это поднимает весь контент в бэкграунде окошка с иконкой зельяКак быть, товарищи?