@Override
public TileEntity createNewTileEntity(World world, int intgr)
{
return new TileCrystal();
}
@Override
public int getRenderType()
{
return -1;
}
@Override
public boolean hasTileEntity()
{
return true;
}
@Override
public boolean isOpaqueCube()
{
return false;
}
@Override
public boolean renderAsNormalBlock()
{
return false;
}
public class ModelCrystal extends ModelBase
{
public String type;
public float size;
private IModelCustom modelCrystal;
public ModelCrystal()
{
modelCrystal = AdvancedModelLoader.loadModel(new ResourceLocation("mod:models/crystal.obj"));
}
public void render()
{
modelCrystal.renderAll();
}
public void render(double x, double y, double z)
{
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glTranslatef((float) x + 0.5f, (float) y, (float) z + 0.5f);
GL11.glScalef(0.5f, 0.5f, 0.5f);
FMLClientHandler.instance().getClient().renderEngine.bindTexture(new ResourceLocation("mod:textures/blocks/crystal.png"));
this.render();
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
}
}
public class TileCrystalRenderer extends TileEntitySpecialRenderer
{
private ModelCrystal modelCrystal;
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float tick)
{
if (tileEntity instanceof TileCrystal)
{
TileCrystal tileCrystal = (TileCrystal) tileEntity;
modelCrystal = new ModelCrystal();
modelCrystal.render(x, y, z);
}
}
}
public class ItemCrystalRenderer implements IItemRenderer
{
private ModelCrystal modelCrystal;
public ItemCrystalRenderer()
{
modelCrystal = new ModelCrystal();
}
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type)
{
return true;
}
private void renderCrystal(float x, float y, float z, float scale)
{
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glTranslatef(x, y - 0.75f, z);
GL11.glScalef(scale * 3f, scale * 3f, scale * 3f);
FMLClientHandler.instance().getClient().renderEngine.bindTexture(new ResourceLocation("mod:textures/blocks/crystal.png"));
modelCrystal.render();
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data)
{
switch (type)
{
case ENTITY:
{
renderCrystal(0f, 0f, 0f, 0.5f);
return;
}
case EQUIPPED:
{
renderCrystal(0f, 1f, 1f, 0.5f);
return;
}
case INVENTORY:
{
renderCrystal(0f, 0f, 0f, 0.5f);
return;
}
default:
return;
}
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper)
{
return true;
}
}
ClientRegistry.bindTileEntitySpecialRenderer(TileCrystal.class, new TileCrystalRenderer());
MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(SC.Crystal), new ItemCrystalRenderer());