Круглые показатели

Версия Minecraft
1.7.10
1,470
19
189
Как сделать типа такого? 

rust_ico.jpg


Для прямых использую drawTexturedModalRect
 
Решение
1ca4138916fe.png

Код:
public void drawStats(double xC, double yC)
 {
 GL11.glPushMatrix();
 GL11.glDisable(GL11.GL_TEXTURE_2D);
 GL11.glEnable(GL11.GL_BLEND);
 double x, y;
 GL11.glColor4f(0.2f, 0.2f, 0.2f, 1);
 Tessellator tess = new Tessellator();
 tess.startDrawing(GL11.GL_TRIANGLE_FAN);
 tess.addVertex(xC, yC, 0);
 for(int i = 0;i<=30;i++)
 {
 x = (16*Math.sin(Math.toRadians(i*(360/30)))) + xC;
 y = (16*Math.cos(Math.toRadians(i*(360/30)))) + yC;
 tess.addVertex(x, y, 0);
 }
 tess.draw();
 
 float hp = Minecraft.getMinecraft().thePlayer.getHealth();
 float maxHP = Minecraft.getMinecraft().thePlayer.getMaxHealth();
 GL11.glColor4f(1f, 0f, 0f, 1)...
250
12
24
1ca4138916fe.png

Код:
public void drawStats(double xC, double yC)
 {
 GL11.glPushMatrix();
 GL11.glDisable(GL11.GL_TEXTURE_2D);
 GL11.glEnable(GL11.GL_BLEND);
 double x, y;
 GL11.glColor4f(0.2f, 0.2f, 0.2f, 1);
 Tessellator tess = new Tessellator();
 tess.startDrawing(GL11.GL_TRIANGLE_FAN);
 tess.addVertex(xC, yC, 0);
 for(int i = 0;i<=30;i++)
 {
 x = (16*Math.sin(Math.toRadians(i*(360/30)))) + xC;
 y = (16*Math.cos(Math.toRadians(i*(360/30)))) + yC;
 tess.addVertex(x, y, 0);
 }
 tess.draw();
 
 float hp = Minecraft.getMinecraft().thePlayer.getHealth();
 float maxHP = Minecraft.getMinecraft().thePlayer.getMaxHealth();
 GL11.glColor4f(1f, 0f, 0f, 1);
 tess.startDrawing(GL11.GL_TRIANGLE_FAN);
 GL11.glDisable(GL11.GL_CULL_FACE);
 tess.addVertex(xC, yC, 0);
 
 for(int i = 0;i<=hp;i++)
 {
 double angle = 360-(i*(360/maxHP));
 x = (16*Math.sin(Math.toRadians(angle))) + xC;
 y = (16*Math.cos(Math.toRadians(angle))) + yC;
 tess.addVertex(x, y, 0);
 }
 tess.draw();
 GL11.glEnable(GL11.GL_TEXTURE_2D);
 GL11.glEnable(GL11.GL_CULL_FACE);
 this.mc.getTextureManager().bindTexture(new ResourceLocation(ModInfo.MODID + ":" + "textures/gui/circleStats.png"));
 GL11.glColor3f(1, 1, 1);
 GL11.glTranslated(0, 0, 500);
 this.drawTexturedModalRect((int)xC-16, (int)yC-16, 0, 0, 256, 256);
 

 GL11.glPopMatrix();
}
Куда вставить его, как вызвать  и как заменить текстуру надеюсь объяснять не надо?
Еще надеюсь разберешься как изменить радиус при необходимости и так далее
 

Icosider

Kotliner
Администратор
3,603
99
664
RinKirin написал(а):
1ca4138916fe.png

Код:
public void drawStats(double xC, double yC)
 {
 GL11.glPushMatrix();
 GL11.glDisable(GL11.GL_TEXTURE_2D);
 GL11.glEnable(GL11.GL_BLEND);
 double x, y;
 GL11.glColor4f(0.2f, 0.2f, 0.2f, 1);
 Tessellator tess = new Tessellator();
 tess.startDrawing(GL11.GL_TRIANGLE_FAN);
 tess.addVertex(xC, yC, 0);
 for(int i = 0;i<=30;i++)
 {
 x = (16*Math.sin(Math.toRadians(i*(360/30)))) + xC;
 y = (16*Math.cos(Math.toRadians(i*(360/30)))) + yC;
 tess.addVertex(x, y, 0);
 }
 tess.draw();
 
 float hp = Minecraft.getMinecraft().thePlayer.getHealth();
 float maxHP = Minecraft.getMinecraft().thePlayer.getMaxHealth();
 GL11.glColor4f(1f, 0f, 0f, 1);
 tess.startDrawing(GL11.GL_TRIANGLE_FAN);
 GL11.glDisable(GL11.GL_CULL_FACE);
 tess.addVertex(xC, yC, 0);
 
 for(int i = 0;i<=hp;i++)
 {
 double angle = 360-(i*(360/maxHP));
 x = (16*Math.sin(Math.toRadians(angle))) + xC;
 y = (16*Math.cos(Math.toRadians(angle))) + yC;
 tess.addVertex(x, y, 0);
 }
 tess.draw();
 GL11.glEnable(GL11.GL_TEXTURE_2D);
 GL11.glEnable(GL11.GL_CULL_FACE);
 this.mc.getTextureManager().bindTexture(new ResourceLocation(ModInfo.MODID + ":" + "textures/gui/circleStats.png"));
 GL11.glColor3f(1, 1, 1);
 GL11.glTranslated(0, 0, 500);
 this.drawTexturedModalRect((int)xC-16, (int)yC-16, 0, 0, 256, 256);
 

 GL11.glPopMatrix();
}
Куда вставить его, как вызвать  и как заменить текстуру надеюсь объяснять не надо?
Еще надеюсь разберешься как изменить радиус при необходимости и так далее

Теперь ты создал ему геморой в виде "а че это у тебя за метод, у меня такого нет"
 
1,470
19
189
250
12
24
Nix13Chanel написал(а):
Ivasik написал(а):
Nix13Chanel написал(а):
В итоге круг опять не видно :/

Ну так прозрачность сделай, в чём проблема?

В том, что он рендерится под текстурой
А точно, я ж свою текстурку сделал, да. Там нужно сделать только контуры для текстуры.
Вот моя если надо 
71afd2cd79a3.png



Ivasik написал(а):
RinKirin написал(а):
Главное что работает)
Лол, действительно, зачем инстансить уже загруженный класс, когда можно загрузить по новый?

Вот именно я так тоже думаю нет не думаю, забыл, потому что не использую теселятор, но это уже другая история
 
1,470
19
189
RinKirin написал(а):
Nix13Chanel написал(а):
Ivasik написал(а):
Nix13Chanel написал(а):
В итоге круг опять не видно :/

Ну так прозрачность сделай, в чём проблема?

В том, что он рендерится под текстурой
А точно, я ж свою текстурку сделал, да. Там нужно сделать только контуры для текстуры.
Вот моя если надо 
71afd2cd79a3.png



Ivasik написал(а):
RinKirin написал(а):
Главное что работает)
Лол, действительно, зачем инстансить уже загруженный класс, когда можно загрузить по новый?

Вот именно я так тоже думаю нет не думаю, забыл, потому что не использую теселятор, но это уже другая история



Спасибо! Чуть модифицирую код, и всё
P.S. Сделаю несколько показателей
 
Сверху