add a fill progress bar

This commit is contained in:
George Paton 2026-01-08 22:07:21 +11:00
parent b77633b152
commit 7757e3cb53
2 changed files with 33 additions and 6 deletions

View File

@ -10,6 +10,7 @@ import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -55,13 +56,12 @@ public class RenderMassStorage extends TileEntitySpecialRenderer {
GL11.glPushMatrix(); GL11.glPushMatrix();
{ {
GL11.glTranslatef(4, 3, 0); // adjust up one pixel GL11.glTranslatef(4.0F, 2.5F, 0); // adjust to centered location
GL11.glScalef(8.0F / 16.0F, 8.0F / 16.0F, 1); // scale to 8 pixels across GL11.glScalef(8.0F / 16.0F, 8.0F / 16.0F, 1); // scale to 8 pixels across
RenderHelper.disableStandardItemLighting(); RenderHelper.disableStandardItemLighting();
itemRenderer.renderItemIntoGUI(mc.fontRenderer, mc.renderEngine, storage.type, 0, 0, true); itemRenderer.renderItemIntoGUI(mc.fontRenderer, mc.renderEngine, storage.type, 0, 0, true);
itemRenderer.renderItemOverlayIntoGUI(mc.fontRenderer, mc.renderEngine, storage.type, 0, 0);
} }
GL11.glPopMatrix(); GL11.glPopMatrix();
@ -71,7 +71,7 @@ public class RenderMassStorage extends TileEntitySpecialRenderer {
String text = getTextForCount(storage.getStockpile(), mc.fontRenderer.getUnicodeFlag()); String text = getTextForCount(storage.getStockpile(), mc.fontRenderer.getUnicodeFlag());
int textX = 32 - mc.fontRenderer.getStringWidth(text) / 2; int textX = 32 - mc.fontRenderer.getStringWidth(text) / 2;
int textY = 46; int textY = 44;
GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_LIGHTING);
GL11.glPushMatrix(); GL11.glPushMatrix();
@ -81,16 +81,38 @@ public class RenderMassStorage extends TileEntitySpecialRenderer {
int fontColor = 0x00FF00; int fontColor = 0x00FF00;
// funky text shadow rendering with no z-fighting and alpha testing still enabled
mc.fontRenderer.drawString(text, textX + 1, textY + 1, (fontColor & 16579836) >> 2 | fontColor & -16777216); mc.fontRenderer.drawString(text, textX + 1, textY + 1, (fontColor & 16579836) >> 2 | fontColor & -16777216);
GL11.glTranslatef(0, 0, 1); GL11.glTranslatef(0, 0, 1);
mc.fontRenderer.drawString(text, textX, textY, 0x00FF00); mc.fontRenderer.drawString(text, textX, textY, 0x00FF00);
} }
GL11.glPopMatrix(); GL11.glPopMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
double fraction = (double) storage.getStockpile() / (double) storage.getCapacity();
GL11.glColor3d(1.0 - fraction, fraction, 0.0);
double bMinX = 2;
double bMaxX = 2 + fraction * 12;
double bMinY = 13.5;
double bMaxY = 14;
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertex(bMinX, bMaxY, 0);
tessellator.addVertex(bMaxX, bMaxY, 0);
tessellator.addVertex(bMaxX, bMinY, 0);
tessellator.addVertex(bMinX, bMinY, 0);
tessellator.draw();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_LIGHTING);
RenderHelper.enableStandardItemLighting();
} }
GL11.glPopMatrix(); GL11.glPopMatrix();
} }

View File

@ -91,7 +91,7 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements IContr
} }
} }
networkPackNT(64); // TE render distance networkPackNT(32); // TE render distance
} }
} }
@ -294,6 +294,11 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements IContr
nbt.setByte("redstone", (byte) redstone); nbt.setByte("redstone", (byte) redstone);
} }
@SideOnly(Side.CLIENT)
public double getMaxRenderDistanceSquared() {
return 1024.0D; // only render mass storage info 32 blocks away, for performance
}
@Override @Override
public void nextMode(int i) { public void nextMode(int i) {