- 37
- 1
- 3
Довольно глупый вопрос и довольно простая задача, но вот я уже второй день не могу понять, как это работает. Есть у меня gui, пытаюсь рисовать в нём прогрессбар. Знаю, что рисовать нужно методом
А, ещё один опциональный вопрос: насколько я знаю, прогрессбар надо синхронизировать с сервером: зачем и как?
drawTexturedModalRect
, знаю, какие переменные в этом методом за что отвечают. Могу просто разместить прогрессбар в гуи. Есть уже анимация, которая рисуает прогрессбар сверху вниз. Но вот как нарисовать снизу вверх ума не приложу, сижу перебираю комбинации перемнных, но ничего внятного не получаю. Прошу тапки не кидать.А, ещё один опциональный вопрос: насколько я знаю, прогрессбар надо синхронизировать с сервером: зачем и как?
Класс Gui:
private final InventoryPlayer playerInventory;
private final IInventory tileFurnace;
public GuiElchemyExtractor(InventoryPlayer playerInv, IInventory furnaceInv)
{
super(new ContainerAlchemyExtractor(playerInv, furnaceInv));
this.playerInventory = playerInv;
this.tileFurnace = furnaceInv;
}
public void drawScreen(int mouseX, int mouseY, float partialTicks)
{
this.drawDefaultBackground();
super.drawScreen(mouseX, mouseY, partialTicks);
this.renderHoveredToolTip(mouseX, mouseY);
}
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
{
String s = "Alchemy Furnace";
this.fontRenderer.drawString(s, 135 - this.fontRenderer.getStringWidth(s) / 2, 6, 4210752);
this.fontRenderer.drawString(this.playerInventory.getDisplayName().getUnformattedText(), 8, this.ySize - 96 + 2, 4210752);
}
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY)
{
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.getTextureManager().bindTexture(EXTRACTOR_GUI_TEXTURES);
int i = (this.width - this.xSize) / 2; //Ширина в GUI
int j = (this.height - this.ySize) / 2; //Высота в GUI
this.drawTexturedModalRect(i, j, 0, 0, this.xSize, this.ySize);
//Собственно, тут рисуется прогрессбар
if (TileAlchemyExtractor.isBurning(this.tileFurnace))
{
int k = this.getBurnLeftScaled(19); //Так и не допёр, что это
this.drawTexturedModalRect(i + 29, j + 51 - k, 176, 64 - k, 7, k+1);
}
}
private int getBurnLeftScaled(int pixels)
{
int i = this.tileFurnace.getField(1);
if (i==0) {
i = 200;
}
return this.tileFurnace.getField(0) * pixels / i;
}
}