Я создаю мотив minecraft, который реализует новую систему «энергии» для игрока. Существуют различные способы приобретения этой энергии, и я хочу, чтобы она отображала количество энергии игрока на экране. Мой план это сделать GUI (с OpenGL, так как Minecraft использует), который использует файл с именем "energybar.png":Поверните целое число в набор изображений
для печати номеров. Это код, который у меня есть для метода, который будет действовать, как описано.
@SubscribeEvent
public void onGUIRenderEvent(RenderGameOverlayEvent event){
if(event.isCancelable() || event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE)
{
return;
}
int xPos = 10;
int yPos = 10;
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_LIGHTING);
mc.renderEngine.bindTexture(energybar);
String energyString = Integer.toString(Energy.PlayerTotalEnergy);
for(int i=0; i < energyString.length(); i++) {
LogHelper.info("Energy: " + energyString);
drawTexturedModalRect(xPos, yPos, (Energy.PlayerTotalEnergy/(int)Math.pow(10, i))*16, 0, 16, 16);
xPos += 16;
}
}
Каждое число на фото разнесены поэтому она должна быть в своих соответствующих 16 пикселей (то есть: 0 х позиции 0-16, 1 х позиции 17-32 и т.д.). Фотография 256x256, как определено стандартами GUI-системы minecraft. Это макет методы нарисовать картину:
void drawTexturedModalRect(int xPosition, int yPosition, int uPosition, int vPosition, int width, int height)
У меня есть проблема с этим состоит в том, что позиции U для чисел мне нужно напечатать на экране не работает правильно.
Я также попытался прохождения:
energyString.substring(i, i)
к способу, который принимает подстроку и преобразует его обратно в целое число и умножает его на 16, чтобы получить uPosition, но когда я делаю:
String energyString = Integer.toString(Energy.PlayerTotalEnergy);
Integer.toString()
а также String.valueOf()
методы имеют проблемы с нулями. Например, если Energy.PlayerTotalEnergy
был только 0
, они не вернули строку "0"
, они просто вернули ""
.
Если кто-то может помочь мне выяснить, почему я не могу заставить это работать, или придумать, как я могу использовать Minecraft и OpenGL для печати этого номера на моем экране. Причина, по которой я не просто печатаю ее как число, - это то, что я хочу сохранить красные цифры по мере их появления.
Оооо, я всегда забываю о по модулю XD. Спасибо за помощь! –