BloodMagic/src/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderChemistrySet.java
2015-07-30 14:52:39 -04:00

166 lines
5.1 KiB
Java

package WayofTime.alchemicalWizardry.common.renderer.block;
import WayofTime.alchemicalWizardry.common.tileEntity.TEChemistrySet;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.client.FMLClientHandler;
import org.lwjgl.opengl.GL11;
import WayofTime.alchemicalWizardry.common.renderer.model.ModelChemistrySet;
public class RenderChemistrySet extends TileEntitySpecialRenderer
{
private ModelChemistrySet modelChemistrySet = new ModelChemistrySet();
private final RenderItem customRenderItem;
public RenderChemistrySet()
{
customRenderItem = Minecraft.getMinecraft().getRenderItem();
}
@Override
public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f, int a)
{
if (tileEntity instanceof TEChemistrySet)
{
TEChemistrySet tileAltar = (TEChemistrySet) tileEntity;
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glPushMatrix();
GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F);
ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/WritingTable.png");
FMLClientHandler.instance().getClient().renderEngine.bindTexture(test);
GL11.glPushMatrix();
GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
this.modelChemistrySet.render(null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
GL11.glPopMatrix();
GL11.glPopMatrix();
for (int i = 1; i <= 6; i++)
{
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_LIGHTING);
if (tileAltar.getStackInSlot(i) != null)
{
float scaleFactor = getGhostItemScaleFactor(tileAltar.getStackInSlot(i));
float rotationAngle = Minecraft.getMinecraft().gameSettings.fancyGraphics ? (float) (720.0 * (System.currentTimeMillis() & 0x3FFFL) / 0x3FFFL) : 0;
EntityItem ghostEntityItem = new EntityItem(tileAltar.getWorld());
ghostEntityItem.hoverStart = 0.0F;
ghostEntityItem.setEntityItemStack(tileAltar.getStackInSlot(i));
float displacementX = getXDisplacementForSlot(i);
float displacementY = getYDisplacementForSlot(i);
float displacementZ = getZDisplacementForSlot(i);
if (ghostEntityItem.getEntityItem().getItem() instanceof ItemBlock)
{
GL11.glTranslatef((float) d0 + 0.5F + displacementX, (float) d1 + displacementY + 0.7F, (float) d2 + 0.5F + displacementZ);
} else
{
GL11.glTranslatef((float) d0 + 0.5F + displacementX, (float) d1 + displacementY + 0.6F, (float) d2 + 0.5F + displacementZ);
}
GL11.glScalef(scaleFactor, scaleFactor, scaleFactor);
GL11.glRotatef(rotationAngle, 0.0F, 1.0F, 0.0F);
customRenderItem.func_175043_b(ghostEntityItem.getEntityItem()); //renderItemModel
}
GL11.glPopMatrix();
}
}
}
private float getGhostItemScaleFactor(ItemStack itemStack)
{
float scaleFactor = 0.8F;
if (itemStack != null)
{
if (itemStack.getItem() instanceof ItemBlock)
{
return 0.9f * scaleFactor;
} else
{
return 0.65F * scaleFactor;
}
}
return scaleFactor;
}
private float getXDisplacementForSlot(int slot)
{
switch (slot)
{
case 0:
return 0.0f;
case 1:
return -0.375f;
case 2:
return -0.125f;
case 3:
return 0.3125f;
case 4:
return 0.3125f;
case 5:
return -0.125f;
default:
return 0.0f;
}
}
private float getYDisplacementForSlot(int slot)
{
switch (slot)
{
case 0:
return 0.4f;
case 1:
return -0.35f;
case 6:
return 0.4f;
default:
return -0.35f;
}
}
private float getZDisplacementForSlot(int slot)
{
switch (slot)
{
case 0:
return 0.0f;
case 1:
return 0.0f;
case 2:
return 0.375f;
case 3:
return 0.25f;
case 4:
return -0.25f;
case 5:
return -0.375f;
default:
return 0.0f;
}
}
}