.obj - Частицы блока,модель в инвентаре

Версия Minecraft
1.7.10
12
4
3
В чем проблема: В инвентаре вместо блока - пустота
g2sw8x1.png
Когда ломаю - тоже частицы пустоты
fYtXRcG.png
А сама модель блока рендерится 
zATR4I6.png
BlockGoldOre.class
Код:
public class BlockGoldOre extends BlockContainer {

    public BlockGoldOre() {
        super(Material.rock);
    }

    public boolean shouldSideBeRendered(IBlockAccess iblockaccess, int i, int j, int k, int l) {
        return false;
    }

    public void dropBlockAsItemWithChance(World p_149690_1_, int p_149690_2_, int p_149690_3_, int p_149690_4_, int p_149690_5_, float p_149690_6_, int p_149690_7_) {
        super.dropBlockAsItemWithChance(p_149690_1_, p_149690_2_, p_149690_3_, p_149690_4_, p_149690_5_, p_149690_6_, p_149690_7_);
    }

    public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
        return RpgThings.ghostIronGem;
    }

    public int quantityDropped(Random p_149745_1_) {
        return p_149745_1_.nextInt(8);
    }

    public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) {
        super.updateTick(par1World, par2, par3, par4, par5Random);
    }

    public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, Block par5) {
        if(!this.canBlockStay(par1World, par2, par3, par4)) {
            int id = par1World.getBlockMetadata(par2, par3, par4);
            if(id >= 0 && id <= 3) {
                this.dropBlockAsItem(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0);
            } else {
                for(int x = 0; x < 2 + par1World.rand.nextInt(5); ++x) {
                    this.dropBlockAsItem(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0);
                }
            }

            par1World.setBlockToAir(par2, par3, par4);
        }

        super.onNeighborBlockChange(par1World, par2, par3, par4, par5);
    }

    public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) {
        int l1 = MathHelper.floor_double((double)(par5EntityLivingBase.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
        if(par6ItemStack.getItemDamage() == 0) {
            par1World.setBlockMetadataWithNotify(par2, par3, par4, l1, 1);
        } else {
            par1World.setBlockMetadataWithNotify(par2, par3, par4, l1 + 4, 1);
        }

    }

    public boolean canBlockStay(World par1World, int par2, int par3, int par4) {
        return par1World.getBlock(par2, par3 - 1, par4) == Blocks.air?false:super.canBlockStay(par1World, par2, par3, par4);
    }

    public void breakBlock(World par1World, int par2, int par3, int par4, Block par5, int par6) {
        int id = par1World.getBlockMetadata(par2, par3, par4);
        if(id >= 0 && id <= 3) {
            this.dropBlockAsItem(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0);
        } else {
            for(int x = 0; x < 2 + par1World.rand.nextInt(5); ++x) {
                this.dropBlockAsItem(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0);
            }
        }

        super.breakBlock(par1World, par2, par3, par4, par5, par6);
    }

    public boolean isOpaqueCube() {
        return false;
    }

    @SideOnly(Side.CLIENT)
    public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List p_149666_3_) {
        p_149666_3_.add(new ItemStack(p_149666_1_, 1, 0));
        p_149666_3_.add(new ItemStack(p_149666_1_, 1, 1));
    }

    public boolean canPlaceBlockAt(World par1World, int par2, int par3, int par4) {
        Block id = par1World.getBlock(par2, par3, par4);
        return id == Blocks.stone?true:super.canPlaceBlockAt(par1World, par2, par3, par4);
    }

    public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
        return new TileEntityGoldOre();
    }

    @SideOnly(Side.CLIENT)
    public void registerBlockIcons(IIconRegister iconRegister) {
        super.blockIcon = iconRegister.registerIcon("modid:textures/model/texturename.png");
    }
}
TileEntityGoldOre.class
Код:
public class TileEntityGoldOre extends TileEntity {

    public void updateEntity() {
        super.blockMetadata = super.worldObj.getBlockMetadata(super.xCoord, super.yCoord, super.zCoord);
        super.updateEntity();
    }
}
TileEntityRenderGoldOre.class
Код:
public class TileEntityRenderGoldOre extends TileEntitySpecialRenderer {

    public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) {
        int id = tileEntity.blockMetadata;
        int m;
        if(id >= 0 && id <= 3) {
            GL11.glPushMatrix();
            GL11.glTranslated(x, y, z);
            m = tileEntity.blockMetadata;
            this.bindTexture(PTTReference.TEXTURE_GOLD_SMALL);
            GL11.glTranslatef(0.5F, 0.0F, 0.5F);
            GL11.glScalef(0.4F, 0.4F, 0.4F);
            if(m == 2) {
                GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F);
            } else if(m == 3) {
                GL11.glRotatef(-180.0F, 0.0F, 1.0F, 0.0F);
            } else if(m == 0) {
                GL11.glRotatef(-270.0F, 0.0F, 1.0F, 0.0F);
            }

            PTTReference.MODEL_GHOST_IRON_SMALL.renderAll();
            this.bindTexture(PTTReference.TEXTURE_GOLD_CRYSTAL);
            PTTReference.MODEL_GHOST_IRON_SMALL_CRYSTAL.renderAll();
            GL11.glPopMatrix();
        } else {
            GL11.glPushMatrix();
            GL11.glTranslated(x, y, z);
            m = tileEntity.blockMetadata;
            this.bindTexture(PTTReference.TEXTURE_GOLD_BIG);
            GL11.glTranslatef(0.5F, 0.0F, 0.5F);
            GL11.glScalef(0.4F, 0.4F, 0.4F);
            if(m == 6) {
                GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F);
            } else if(m == 7) {
                GL11.glRotatef(-180.0F, 0.0F, 1.0F, 0.0F);
            } else if(m == 4) {
                GL11.glRotatef(-270.0F, 0.0F, 1.0F, 0.0F);
            }

            PTTReference.MODEL_GHOST_IRON_BIG.renderAll();
            this.bindTexture(PTTReference.TEXTURE_GOLD_CRYSTAL);
            PTTReference.MODEL_GHOST_IRON_BIG_CRYSTAL.renderAll();
            GL11.glPopMatrix();
        }

    }
}
Если нужно еще что-то скинуть - напишите
 
Решение
Рендер блока в инвентаре отличается от рендера блока в мире. В инвентаре рендер блоку нужно дать как предмету, но для блока.
Частицы нужно давать нужную текстуру для блока, не для рендера, а для блока (в конструкторе setBlockTextureName("glass") или другое своё).

timaxa007

Модератор
5,831
409
672
Рендер блока в инвентаре отличается от рендера блока в мире. В инвентаре рендер блоку нужно дать как предмету, но для блока.
Частицы нужно давать нужную текстуру для блока, не для рендера, а для блока (в конструкторе setBlockTextureName("glass") или другое своё).
 
12
4
3
timaxa007 написал(а):
Рендер блока в инвентаре отличается от рендера блока в мире. В инвентаре рендер блоку нужно дать как предмету, но для блока.
Частицы нужно давать нужную текстуру для блока, не для рендера, а для блока (в конструкторе setBlockTextureName("glass") или другое своё).

Спасибо,все решил.
 
Сверху