Туториал [1.7+] Отрисовка (Rendering) предмета на вашем блоке

Nicolayka

Владелец
Команда форума
Регистрация
4 Апр 2025
Сообщения
24
Реакции
0
Баллы
1
Город
Санкт-Петербург
Веб-сайт
paxgame.ru
Discord
nicolayka
Это разработано для TileEntity, но Вы можете переделать его под другие нужды!
Урок разработан для 1.7+, но он может работать в более старых версиях.

Предполагая, что Вы используете TileEntity, тогда Ваш рендер-класс должен выглядеть так:
Java:
package your.package;

import stuff.here;

public class MyTileRendererClass extends TileEntitySpecialRenderer
{
    public MyModel model = new MyModel();

    @Override
    public void renderTileEntityAt(TileEntity entity, double x, double y, double z, float f)
    {
        GL11.glPushMatrix();
        //Render Model Here
        GL11.glPopMatrix();
    }
}
После "public MyModel model..." добавьте:
Java:
ItemStack stack = new ItemStack(your_item_here, 1, 0);
EntityItem entItem = new EntityItem(Minecraft.getMinecraft().theWorld, 0D, 0D, 0D, stack);
Теперь после GL11.glPopMatrix (), добавьте это:
Java:
GL11.glPushMatrix();
//Without the below line, the item will spazz out
this.entItem.hoverStart = 0.0F;
RenderItem.renderInFrame = true;
GL11.glTranslatef((float)x + 0.5F, (float)y + 1.02F, (float)z + 0.3F);
GL11.glRotatef(180, 0, 1, 1);
RenderManager.instance.renderEntityWithPosYaw(this.entItem, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F);
RenderItem.renderInFrame = false;
GL11.glPopMatrix();
Примечание: Удостоверьтесь, что Ваш класс TileEntity осуществляет IInventory!

После "public MyModel model..." добавьте:
Java:
EntityItem entItem = null;
Теперь после GL11.glPopMatrix (), добавьте это:
Java:
int slot = SLOT_IN_INVENTORY_TO_RENDER; //Example: int slot = 1;
TileEntityMyBlock tileEntity = (TileEntityMyBlock)tile;
if((entItem == null) || entItem.getEntityItem().getItem() != tileEntity.getStackInSlot(slot).getItem())
entItem = new EntityItem(tileEntity.getWorldObj(), x, y, z, tileEntity.getStackInSlot(slot));
GL11.glPushMatrix();
this.entItem.hoverStart = 0.0F;
RenderItem.renderInFrame = true;
GL11.glTranslatef((float)x + 0.5F, (float)y + 1.02F, (float)z + 0.3F);
GL11.glRotatef(180, 0, 1, 1);
RenderManager.instance.renderEntityWithPosYaw(this.entItem, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F);
RenderItem.renderInFrame = false;
GL11.glPopMatrix();

И теперь Ваш TileEntity должен иметь предмет на нём!
 
Главная Регистрация
Назад
Сверху