Сделал блок с кастомным рендером, когда ставишь его, рендер работает, но в инвентаре иконка предмета не 3D . (Должна быть 3D моделька в инветаре и в руке, а не 2D).
Где может быть ошибка?
ItemRender:
Client Proxy :
Block Render:
Block:
Model :
Где может быть ошибка?
ItemRender:
Java:
public class ItemRenderOakTable implements IItemRenderer {
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
return true;
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return true;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
TileEntityRendererDispatcher.instance.renderTileEntityAt(new TileEntityOakTableBlock(), 0.0d, 0.0d, 0.0d, 0.0f);
}
}
Client Proxy :
Java:
public class ClientProxy extends CommonProxy {
public void registerRenderThings() {
//Oak table
TileEntitySpecialRenderer render = new RenderOakTable();
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityOakTableBlock.class, render);
MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(Solyanka.blockOakTableBlock), new ItemRenderOakTable());
}
Block Render:
Java:
public class RenderOakTable extends TileEntitySpecialRenderer{
private static final ResourceLocation texture = new ResourceLocation(Solyanka.modid+ ":" + "textures/model/Oak table.png");
private OakTable model;
public RenderOakTable() {
this.model = new OakTable();
}
@Override
public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) {
GL11.glPushMatrix();
GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F);
GL11.glRotatef(180, 0F, 0F, 1F);
this.bindTexture(texture);
GL11.glPushMatrix();
this.model.renderModel(0.0625F);
GL11.glPopMatrix();
GL11.glPopMatrix();
}
}
Block:
Java:
public class OakTableBlock extends BlockContainer{
public OakTableBlock(Material matrerial) {
super(matrerial);
this.setHardness(1.6F);
this.setResistance(2.1F);
this.setBlockBounds(1f/16f*6f, 0.0f, 1f/16f*6f, 1f-1f/16f*6f, 1f-1f/16f*11f,1f-1f/16f*6f);
this.setCreativeTab(Solyanka.solyankaTab);
}
public int getRenderType() {
return -9060;
}
public boolean isOpaqueCube() {
return false;
}
public boolean renderAsNormalBlock() {
return false;
}
@Override
public TileEntity createNewTileEntity(World world, int p_149915_2_) {
return new TileEntityOakTableBlock();
}
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconRegister) {
this.blockIcon = iconRegister.registerIcon(Solyanka.modid + ":" + this.getUnlocalizedName().substring(5));
}
@SideOnly(Side.CLIENT)
public Block getBlockDropped(int par1, Random par2, int par3)
{
return Solyanka.blockOakTableBlock;
}
}
Model :
Java:
public class OakTable extends ModelBase
{
//fields
ModelRenderer Shape1;
ModelRenderer Shape2;
ModelRenderer Shape3;
ModelRenderer Shape4;
ModelRenderer Shape5;
public OakTable()
{
textureWidth = 64;
textureHeight = 64;
Shape1 = new ModelRenderer(this, 0, 0);
Shape1.addBox(0F, 0F, 0F, 16, 2, 16);
Shape1.setRotationPoint(-8F, 11F, -8F);
Shape1.setTextureSize(64, 64);
Shape1.mirror = true;
setRotation(Shape1, 0F, 0F, 0F);
Shape2 = new ModelRenderer(this, 0, 0);
Shape2.addBox(0F, 0F, 0F, 2, 11, 2);
Shape2.setRotationPoint(-7F, 13F, -7F);
Shape2.setTextureSize(64, 64);
Shape2.mirror = true;
setRotation(Shape2, 0F, 0F, 0F);
Shape3 = new ModelRenderer(this, 0, 0);
Shape3.addBox(0F, 0F, 0F, 2, 11, 2);
Shape3.setRotationPoint(5F, 13F, 5F);
Shape3.setTextureSize(64, 64);
Shape3.mirror = true;
setRotation(Shape3, 0F, 0F, 0F);
Shape4 = new ModelRenderer(this, 0, 0);
Shape4.addBox(0F, 0F, 0F, 2, 11, 2);
Shape4.setRotationPoint(-7F, 13F, 5F);
Shape4.setTextureSize(64, 64);
Shape4.mirror = true;
setRotation(Shape4, 0F, 0F, 0F);
Shape5 = new ModelRenderer(this, 0, 0);
Shape5.addBox(0F, 0F, 0F, 2, 11, 2);
Shape5.setRotationPoint(5F, 13F, -7F);
Shape5.setTextureSize(64, 64);
Shape5.mirror = true;
setRotation(Shape5, 0F, 0F, 0F);
}
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
{
super.render(entity, f, f1, f2, f3, f4, f5);
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
Shape1.render(f5);
Shape2.render(f5);
Shape3.render(f5);
Shape4.render(f5);
Shape5.render(f5);
}
public void renderModel(float f) {
Shape1.render(f);
Shape2.render(f);
Shape3.render(f);
Shape4.render(f);
Shape5.render(f);
}
public void setRotation(ModelRenderer model, float x, float y, float z)
{
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
{
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
}
}