Нарисовать прогрессбар на блоке в мире

Версия Minecraft
1.7.10
API
Forge
236
4
22
Всем привет. Есть такой вопрос, как нарисовать "прогрессбар" для obj модели? Я так предпологаю делается это в классе который наследует TileEntitySpecialRenderer через метод renderTileEntityAt(...), но вопрос, как это делать? По началу я думал, что это какая-то чёрная магия Tesselator`ов, но затем решил посмотреть код бассейна маны из Botania - там через GL11 это как-то реализовано🤔 ... Можно ли пример как и чем рендить допустим вертикальную полоску в центре модельки? Первый раз с таким столкнулся, знаю что такое возможно, но не могу разобраться сам.Заранее спасибо тем, кто поможет.
 

VeniVidiVici

Санта Барбарис
327
15
198
С GL11 на деле не знаком вообще. По этому сейчас эти "цифры" в методах почти не о чём для меня :(. Прийдётся методом "тыка" и подбора делать видимо.

Ты прикалываешься? Что тут тыкать? я тебе готовый метод дал.

  • Пихаешь его в свой класс рендера от TileEntitySpecialRenderer, регистрируешь его в Client Proxy.
  • В рендере добавляешь этот метод.
  • В строке выставляешь положение относительно центра по X, Y, Z ( GL11.glTranslatef((float)x, (float)y + 2.5F, (float)z); )
  • Задаёшь свой параметр в переменную h ( float h = entity.getHealth() )
  • Меняешь максимальное значение на своё ( entity.getMaxHealth() )
  • Проверяешь в игре
  • Закрываешь тему с пометкой решения
  • Завариваешь чай и читаешь гайды по методам GL11, чтобы понимать какие функции за что отвечают, для более кастомизируемых решений
 

VeniVidiVici

Санта Барбарис
327
15
198
Не, ну если ты сам интуитивно не понимаешь, что делает метод с параметрами x, y, z в начале, или что делают методы с говорящими названиями Rotate, Scale или Color, то это уже фиаско.
 
236
4
22
Повороты цвета и т.п. я заметил. А вот такие методы, как например:
GL11.glEnable(3553);
GL11.glEnable(2929);
GL11.glDepthMask(true);
GL11.glEnable(2896);
GL11.glDisable(3042);
GL11.glDepthMask(false);
GL11.glPopMatrix();
OpenGlHelper.glBlendFunc(770, 771, 1, 0);

Я уже не шарю, зачем нужны и как использовать их ;)
 

tox1cozZ

aka Agravaine
8,456
598
2,893
Не, ну если ты сам интуитивно не понимаешь, что делает метод с параметрами x, y, z в начале, или что делают методы с говорящими названиями Rotate, Scale или Color, то это уже фиаско.
Кинул декомпилированный код с магическими цифрами в методах и буянит... ТС справедливо заметил это. Какой бы ты крутой не был в опенгл, ты не знаешь значения всех констант наизусть.
 
236
4
22
Как я предполагаю, это позволит мне рендить 2D шкалу. А если мне нужно в 3D, допустим параллелепипедом? Это нужно из 6 плоскостей вручную рендить для получения параллелепипеда или можно сразу его рендить как-то?
 
7,099
324
1,510
Хотя я не крут в опенгл, но даже я знаю, что 3553 это GL_TEXTURE_2D
 
7,099
324
1,510
7,099
324
1,510
Берешь 8 вершин (x,y,z) и как на картинке собираешь из них четверки вершин. Потом для каждой четверки рисует полигон, тем же кодом, каким нарисовал один полигон
1607614365949.png
 

VeniVidiVici

Санта Барбарис
327
15
198
859F0F65957B10D9711D3EBC9F721B0456D732A2


и хз где доки по нему искать
1. GL11 (LWJGL 3.2.3 SNAPSHOT)
2. Minecraft Modding: Tips For GL11 And Rendering
Хочешь чему-то научиться - ищи информацию и разбирайся, а не проси скинуть готовое решение, пока сам не попробовал. С тем кодом, что я дал в пример, можно было за полчаса всё понять и сделать из задачи что ты описал в посте. Ждать, что тебе скинут мануал с подписанным комментарием к каждой строке - тупо.
 
Последнее редактирование:
236
4
22
Хочешь чему-то научиться - ищи информацию и разбирайся, а не проси скинуть готовое решение, пока сам не попробовал. С тем кодом, что я дал в пример, можно было за полчаса всё понять и сделать из задачи что ты описал в посте. Ждать, что тебе скинут мануал с подписанным комментарием к каждой строке - тупо.
Во 1 - я не прошу готового, иначе бы писал примерно так "Всем привет. Помогите написать мне мод, нужно чтобы блок делал то-то, то-то, выглядел так-то, так-то и тд. Я же прошу пример как отрисовать параллелепипед в 3D пространстве внутри модельки, потому что сам в этом не понимаю. Как рисовать прогресс-бар в GUI я уже, слава Богу, разобрался, а вот тут - какая-то путаница. В посте накидали кучу непонятных методов - я их вставил в игру - да, отрисовался "бар жизней", но как только я пытаюсь на угад подобрать цифры (а методов много, подбора соответственно тоже) - получаю либо плоскость на весь экран, грубо говоря, либо как-то боком развёрнутую.
Во 2 - не думаю, что можно выучить GL11 или от "а" до "я" Tesselator (а то и то и то сразу) за "пол часа", ибо как минимум Gl11 очень большая либа, судя по кол-ву методов в ней.
В 3 - т.к. сам я не понимаю в этом и "скопировать" негде подобное - мне и приходится просить тут помощи.
 

VeniVidiVici

Санта Барбарис
327
15
198
Тебе нужно исключить часть с Rotate, которая привязана к взгляду игрока, тогда шкала не будет вертеться. Затем подстраиваешь её под нужные координаты через Translate, и регулируешь размер
 
Сверху