Fixed multimeter item rendering

This commit is contained in:
Calclavia 2014-01-30 22:54:35 +08:00
parent fc0f5c2011
commit 5de21946a2
3 changed files with 56 additions and 10 deletions

View file

@ -59,10 +59,7 @@ public class RenderRIItem implements IItemRenderer
} }
else if (item.getItem() instanceof ItemMultimeter) else if (item.getItem() instanceof ItemMultimeter)
{ {
GL11.glRotatef(180, 0, 1, 0); RenderMultimeter.INSTANCE.render();
GL11.glTranslated(0, -1, -0.7);
FMLClientHandler.instance().getClient().renderEngine.bindTexture(RenderMultimeter.TEXTURE);
RenderMultimeter.MODEL.render(0.0625f);
} }
else if (item.getItem() instanceof ItemTransformer) else if (item.getItem() instanceof ItemTransformer)
{ {

View file

@ -27,8 +27,54 @@ import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class RenderMultimeter public class RenderMultimeter
{ {
public static final ModelMultimeter MODEL = new ModelMultimeter(); public static final RenderMultimeter INSTANCE = new RenderMultimeter();
public static final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "multimeter.png"); private final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "multimeter.png");
public static void render()
{
GL11.glPushMatrix();
GL11.glRotatef(90, 1, 0, 0);
RenderUtility.bind(TextureMap.locationBlocksTexture);
// Render the main panel
RenderUtility.renderCube(-0.5, -0.05, -0.5, 0.5, 0.05, 0.5, Archaic.blockMachinePart, ResonantInduction.loadedIconMap.get(Reference.PREFIX + "multimeter_screen"));
ForgeDirection dir = ForgeDirection.NORTH;
final int metadata = 8;
// Render edges
// UP
RenderUtility.renderCube(-0.501, -0.0501, -0.501, 0.501, 0.0501, -0.44, Archaic.blockMachinePart, null, metadata);
// DOWN
RenderUtility.renderCube(-0.501, -0.0501, 0.44, 0.501, 0.0501, 0.501, Archaic.blockMachinePart, null, metadata);
// LEFT
for (int i = 2; i < 6; i++)
{
ForgeDirection check = ForgeDirection.getOrientation(i);
if (dir.offsetX != 0 && check.offsetZ != 0)
{
if (dir.offsetX != check.offsetZ)
{
RenderUtility.renderCube(-0.501, -0.0501, -0.501, -0.44, 0.0501, 0.501, Archaic.blockMachinePart, null, metadata);
}
else if (dir.offsetX == check.offsetZ)
{
RenderUtility.renderCube(0.44, -0.0501, -0.501, 0.501, 0.0501, 0.501, Archaic.blockMachinePart, null, metadata);
}
}
if (dir.offsetZ != 0 && check.offsetX != 0)
{
if (dir.offsetZ == check.offsetX)
{
RenderUtility.renderCube(-0.501, -0.0501, -0.501, -0.44, 0.0501, 0.501, Archaic.blockMachinePart, null, metadata);
}
else if (dir.offsetZ != check.offsetX)
{
RenderUtility.renderCube(0.44, -0.0501, -0.501, 0.501, 0.0501, 0.501, Archaic.blockMachinePart, null, metadata);
}
}
}
GL11.glPopMatrix();
}
public static void render(PartMultimeter part, double x, double y, double z) public static void render(PartMultimeter part, double x, double y, double z)
{ {
@ -96,9 +142,9 @@ public class RenderMultimeter
for (int i = 0; i < 1; i++) for (int i = 0; i < 1; i++)
{ {
//TODO: Add other dispaly info support. // TODO: Add other dispaly info support.
String display = UnitDisplay.getDisplay(part.getNetwork().graph.get(0), Unit.JOULES); String display = UnitDisplay.getDisplay(part.getNetwork().graph.get(0), Unit.JOULES);
if (dir.offsetX == 0) if (dir.offsetX == 0)
RenderUtility.renderText(display, (float) (part.getNetwork().size.x * 0.9f), 0.5f); RenderUtility.renderText(display, (float) (part.getNetwork().size.x * 0.9f), 0.5f);
if (dir.offsetZ == 0) if (dir.offsetZ == 0)
@ -107,4 +153,5 @@ public class RenderMultimeter
GL11.glPopMatrix(); GL11.glPopMatrix();
} }
} }
} }

View file

@ -155,8 +155,9 @@ public class PartTransformer extends JCuboidPart implements JNormalOcclusion, TF
public void load(NBTTagCompound nbt) public void load(NBTTagCompound nbt)
{ {
super.load(nbt); super.load(nbt);
this.placementSide = ForgeDirection.getOrientation(nbt.getByte("side")); placementSide = ForgeDirection.getOrientation(nbt.getByte("side"));
this.stepUp = nbt.getBoolean("stepUp"); stepUp = nbt.getBoolean("stepUp");
multiplier = nbt.getByte("multiplier");
} }
@Override @Override
@ -165,6 +166,7 @@ public class PartTransformer extends JCuboidPart implements JNormalOcclusion, TF
super.save(nbt); super.save(nbt);
nbt.setByte("side", (byte) this.placementSide.ordinal()); nbt.setByte("side", (byte) this.placementSide.ordinal());
nbt.setBoolean("stepUp", this.stepUp); nbt.setBoolean("stepUp", this.stepUp);
nbt.setByte("multiplier", multiplier);
} }
@Override @Override