Рендер блока в руке с помощью ISimpleBlockRenderingHandler

Версия Minecraft
1.5.2
63
1
5
Привет.
Сделал костыльный рендер блока который должен пропадать при выходе из креатива. В мире всё нормально работает, а в инвентаре нет. С obj, techne моделями всё нормально работает.
Сделал бы отдельный рендер как для предмета, но в 1.5.2 не нашел метода типа getItemFromBlock (может слишком плохо искал...).
А способ менять иконку методом Icon getIcon() работает некорректно. (нужно ставить блок чтобы иконка поменялась) Хотя возможно нужно юзать пакеты... Не знаю...
CommonProxy:
public class CommonProxy {
   
    public static int renderID = RenderingRegistry.getNextAvailableRenderId();
    /*
     *не помню почему здесь регистрировал. ну и ладно. потом уберу.
     */
    public void preInit(FMLPreInitializationEvent event) {
        RenderingRegistry.registerBlockHandler(renderID, new BlockHandler());  
    }
   
    public void init(FMLInitializationEvent event) {
       
    }
   
    public void postInit(FMLPostInitializationEvent event) {
       
    }
}
BlockHandler:
public class BlockHandler implements ISimpleBlockRenderingHandler{

    @Override
    public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) {
        if(block == Main.barrierBlock) {
            TileEntityRenderer.instance.renderTileEntityAt(new TileBarrier(), -0.5D, -0.5D, -0.5D, 0.0F);
    }
        ...
RenderBarrier:
public class RenderBarrier extends TileEntitySpecialRenderer {

    @Override
    public void renderTileEntityAt(TileEntity tileentity, double d0, double d1, double d2, float f) {
        renderBarrier((TileBarrier)tileentity,  d0,  d1,  d2,  f);
    }
   
    void renderBarrier(TileBarrier tileentity, double var2, double var3, double var4, float f) {
        this.bindTextureByName("/mods/cool/textures/blocks/sugarBag_front.png");
       
        if(Minecraft.getMinecraft().thePlayer.capabilities.isCreativeMode && tileentity.worldObj != null) {
           
            //south
            GL11.glPushMatrix();
            Tessellator tess = Tessellator.instance;
            tess.startDrawingQuads();
            tess.setColorRGBA_F(1.0f, 1.0f, 1.0f, 1.0f);
           
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 0.0f, (float)var4 - 0.0f, 1.0f, 1.0f);
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 1.0f, (float)var4 - 0.0f, 1.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 1.0f, (float)var4 - 0.0f, 0.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 0.0f, (float)var4 - 0.0f, 0.0f, 1.0f);
           
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 0.0f, (float)var4 - 0.0f, 0.0f, 1.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 1.0f, (float)var4 - 0.0f, 0.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 1.0f, (float)var4 - 0.0f, 1.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 0.0f, (float)var4 - 0.0f, 1.0f, 1.0f);
           
            tess.draw();
            GL11.glPopMatrix();
           
            //west
            GL11.glPushMatrix();
            tess.startDrawingQuads();
           
            this.bindTextureByName("/mods/cool/textures/blocks/sugarBag.png");

            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 0.0f, (float)var4 + 1.0f, 1.0f, 1.0f);
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 1.0f, (float)var4 + 1.0f, 1.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 1.0f, (float)var4 + 0.0f, 0.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 0.0f, (float)var4 + 0.0f, 0.0f, 1.0f);
   
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 0.0f, (float)var4 + 0.0f, 0.0f, 1.0f);
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 1.0f, (float)var4 + 0.0f, 0.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 1.0f, (float)var4 + 1.0f, 1.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 0.0f, (float)var4 + 1.0f, 1.0f, 1.0f);
           
            //north
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 0.0f, (float)var4 + 1.0f, 0.0f, 1.0f);
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 1.0f, (float)var4 + 1.0f, 0.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 1.0f, (float)var4 + 1.0f, 1.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 0.0f, (float)var4 + 1.0f, 1.0f, 1.0f);
           
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 0.0f, (float)var4 + 1.0f, 1.0f, 1.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 1.0f, (float)var4 + 1.0f, 1.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 1.0f, (float)var4 + 1.0f, 0.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 0.0f, (float)var4 + 1.0f, 0.0f, 1.0f);
           
            //down
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 0.0f, (float)var4 + 1.0f, 0.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 0.0f, (float)var4 + 1.0f, 1.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 0.0f, (float)var4 + 0.0f, 1.0f, 1.0f);
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 0.0f, (float)var4 + 0.0f, 0.0f, 1.0f);
           
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 0.0f, (float)var4 + 0.0f, 0.0f, 1.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 0.0f, (float)var4 + 0.0f, 1.0f, 1.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 0.0f, (float)var4 + 1.0f, 1.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 0.0f, (float)var3 + 0.0f, (float)var4 + 1.0f, 0.0f, 0.0f);

            //east
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 0.0f, (float)var4 + 1.0f, 0.0f, 1.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 1.0f, (float)var4 + 1.0f, 0.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 1.0f, (float)var4 + 0.0f, 1.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 0.0f, (float)var4 + 0.0f, 1.0f, 1.0f);
           
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 0.0f, (float)var4 + 0.0f, 1.0f, 1.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 1.0f, (float)var4 + 0.0f, 1.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 1.0f, (float)var4 + 1.0f, 0.0f, 0.0f);
            tess.addVertexWithUV((float)var2 + 1.0f, (float)var3 + 0.0f, (float)var4 + 1.0f, 0.0f, 1.0f);

            tess.draw();
            GL11.glPopMatrix();
        }
    }
}
BlockBarrier:
public class BlockBarrier extends Block implements ITileEntityProvider{

//    Icon[] icons = new Icon[2];
   
    public BlockBarrier(int par1) {
        super(par1, Material.rock);
        this.setCreativeTab(Main.es_tab);
        this.setHardness(1000F);
        this.setResistance(1000F);
        this.setUnlocalizedName("barrier");
    }
   
    public void registerIcons(IconRegister icon) {
        this.blockIcon = icon.registerIcon("cool:barrier");
    }

   
    public int getRenderType(){
        return CommonProxy.renderID;
    }
   
    public boolean isOpaqueCube(){
        return false;
    }
   
    public boolean renderAsNormalBlock(){
        return false;
    }

    @Override
    public TileEntity createNewTileEntity(World world) {
        return new TileBarrier();
    }

}
Главный класс думаю смысла предоставлять нет. Ничего сверхъестественного там тоже нет. Блок, Тайл зарегистрированы.
 

Вложения

  • Screenshot_2.png
    Screenshot_2.png
    325.8 KB · Просмотры: 15
Сверху