В чем проблема: В инвентаре вместо блока - пустота
Когда ломаю - тоже частицы пустоты
А сама модель блока рендерится
BlockGoldOre.class
TileEntityGoldOre.class
TileEntityRenderGoldOre.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");
}
}
Код:
public class TileEntityGoldOre extends TileEntity {
public void updateEntity() {
super.blockMetadata = super.worldObj.getBlockMetadata(super.xCoord, super.yCoord, super.zCoord);
super.updateEntity();
}
}
Код:
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();
}
}
}