Вывод текста после сьедания предмета.

Версия Minecraft
1.7.10
Приветствую всех. Как сделать вывод надписи на экран после сьедания предмета?
Что нужно прописывать в методе, чтобы данный текст выводился на 30 секунд?
(P.s. : начал заниматься этим вчера)
 
Решение
потому что у тебя размер скалирует положение ещё в 2 раза. Чтобы при glScaled норм отображалось, нужно разделить положение ещё на столько, на сколько происходит скейлинг. т.е в твоем случае x / 2, y / 2
7,099
324
1,510
Рисовать можно в обработчике RenderGameOverlayEvent.
Про события: Что такое события и как их ловить. Короткая и простая тема.
Рисовать текст: Minecraft.getMinecraft().getFontRenderer().drawText(...)
При съедании (переопределить метод своего предмета-еды, obEaten кажется, так называется)нужно где-то изменить глобальное состояние, чтобы обработчик события мог узнать, что еду съели и нужно рисовать текст
 
переопределить метод своего предмета
А если уже используется данный метод для добавления эффектов зелий?
То как добавлять?
public ItemStack onEaten(ItemStack is, World world, EntityPlayer player) {
super.onEaten(is, world, player);
if (!world.isRemote) {
player.addPotionEffect(new PotionEffect(Potion.confusion.id, 600, 0));
player.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 7200, 150));
player.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 7200, 4));
player.addPotionEffect(new PotionEffect(Potion.blindness.id, 600, 0));
player.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(40);
}
return is;
}
 
7,099
324
1,510
Точно также, только еще один метод создавать не надо, прямо в этом пиши.

И вопросы по языку на форуме не приветствуются
 
Рисовать можно в обработчике RenderGameOverlayEvent.
Про события: Что такое события и как их ловить. Короткая и простая тема.
Рисовать текст: Minecraft.getMinecraft().getFontRenderer().drawText(...)
При съедании (переопределить метод своего предмета-еды, obEaten кажется, так называется)нужно где-то изменить глобальное состояние, чтобы обработчик события мог узнать, что еду съели и нужно рисовать текст
Крашит после сьедания еды, записывал в if (!world.isRemote).
 
public ItemStack onEaten(ItemStack is, World world, EntityPlayer player) {
super.onEaten(is, world, player);
if (!world.isRemote) {
Minecraft.getMinecraft().fontRenderer.drawStringWithShadow("Test",32, 50, 1666534);
player.addPotionEffect(new PotionEffect(Potion.confusion.id, 600, 0));
player.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 7200, 150));
player.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 7200, 4));
player.addPotionEffect(new PotionEffect(Potion.blindness.id, 600, 0));
player.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(40);
}
return is;
}
 
7,099
324
1,510
В onEaten не происходит рендер. Рендер нужно делать в обработчике события RenderGameOverlayEvent(перечитай сообщение #3)
1580541335460.png
 
627
72
178
Во-первых, убедись, что ты рендеришь текст, если тип рендера == ALL.
Также при всех манипуляциях с опенгл, объект изменений нужно запихнуть в матрицу:
Java:
GL11.glPushMatrix();
GL11.glScaled(2.0, 2.0, 1);
GL11.glTranslated(x / 2.0, y / 2.0, 0);
//отрисовка текста
GL11.glPopMatrix();
//дальше всё, что не нуждается в изменении размера
 
627
72
178
потому что у тебя размер скалирует положение ещё в 2 раза. Чтобы при glScaled норм отображалось, нужно разделить положение ещё на столько, на сколько происходит скейлинг. т.е в твоем случае x / 2, y / 2
 
Сверху