Как делать блоки с *.obj моделью

Статус
В этой теме нельзя размещать новые ответы.
34
0
Расскажи пожалуйста как можно более подробнее, как делать блоки с *.obj моделью
Или киньте ссылку на какой нибудь гайд
 
905
5
Да легко.
Код:
    @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());
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху