83 lines
3.2 KiB
Java
83 lines
3.2 KiB
Java
package resonantinduction.atomic.particle.quantum;
|
|
|
|
import net.minecraft.client.renderer.RenderBlocks;
|
|
import net.minecraft.client.renderer.entity.RenderItem;
|
|
import net.minecraft.client.renderer.entity.RenderManager;
|
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
|
import net.minecraft.entity.item.EntityItem;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.ResourceLocation;
|
|
import net.minecraftforge.client.model.AdvancedModelLoader;
|
|
import net.minecraftforge.client.model.IModelCustom;
|
|
|
|
import org.apache.commons.lang3.ArrayUtils;
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
import resonantinduction.core.Reference;
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public class RenderQuantumAssembler extends TileEntitySpecialRenderer
|
|
{
|
|
public static final IModelCustom MODEL = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "quantumAssembler.tcn");
|
|
public static final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "quantumAssembler.png");
|
|
|
|
private final RenderBlocks renderBlocks = new RenderBlocks();
|
|
|
|
public void render(TileQuantumAssembler tileEntity, double x, double y, double z, float f)
|
|
{
|
|
GL11.glPushMatrix();
|
|
GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5);
|
|
|
|
final String[] hands = new String[]
|
|
{ "Back Arm Upper", "Back Arm Lower", "Right Arm Upper", "Right Arm Lower", "Front Arm Upper", "Front Arm Lower", "Left Arm Upper", "Left Arm Lower" };
|
|
final String[] arms = new String[]
|
|
{ "Middle Rotor Focus Lazer", "Middle Rotor Uppper Arm", "Middle Rotor Lower Arm", "Middle Rotor Arm Base", "Middle Rotor" };
|
|
final String[] largeArms = new String[]
|
|
{ "Bottom Rotor Upper Arm", "Bottom Rotor Lower Arm", "Bottom Rotor Arm Base", "Bottom Rotor", "Bottom Rotor Resonator Arm" };
|
|
|
|
bindTexture(TEXTURE);
|
|
|
|
GL11.glPushMatrix();
|
|
GL11.glRotatef(-tileEntity.rotationYaw1(), 0, 1f, 0);
|
|
MODEL.renderOnly(hands);
|
|
MODEL.renderOnly("Resonance_Crystal");
|
|
GL11.glPopMatrix();
|
|
|
|
/** Small Laser Arm */
|
|
GL11.glPushMatrix();
|
|
GL11.glRotatef(tileEntity.rotationYaw2(), 0, 1f, 0);
|
|
MODEL.renderOnly(arms);
|
|
|
|
GL11.glPopMatrix();
|
|
|
|
/** Large Laser Arm */
|
|
GL11.glPushMatrix();
|
|
GL11.glRotatef(-tileEntity.rotationYaw3(), 0, 1f, 0);
|
|
MODEL.renderOnly(largeArms);
|
|
GL11.glPopMatrix();
|
|
|
|
MODEL.renderAllExcept(ArrayUtils.add(ArrayUtils.addAll(ArrayUtils.addAll(hands, arms), largeArms), "Resonance_Crystal"));
|
|
GL11.glPopMatrix();
|
|
|
|
/** Render the item */
|
|
RenderItem renderItem = ((RenderItem) RenderManager.instance.getEntityClassRenderObject(EntityItem.class));
|
|
|
|
GL11.glPushMatrix();
|
|
|
|
if (tileEntity.entityItem() != null)
|
|
{
|
|
renderItem.doRenderItem(tileEntity.entityItem(), x + 0.5, y + 0.4, z + 0.5, 0, 0);
|
|
}
|
|
|
|
GL11.glPopMatrix();
|
|
|
|
}
|
|
|
|
@Override
|
|
public void renderTileEntityAt(TileEntity tileEntity, double var2, double var4, double var6, float var8)
|
|
{
|
|
this.render((TileQuantumAssembler) tileEntity, var2, var4, var6, var8);
|
|
}
|
|
} |