RareScrap
Модератор
- 1,334
- 40
- 645
Непонятно почему, но в слоте инвентаря вкладки креатива, полигоны в модели моего блока рисуются прозрачными (кстати странно что в обычном слоте они рисуются нормально):

Я решил эту проблему заюзав перед рендером
Вот сам код рендера, но в нем нет ничего интересного помимо моих ругательств:

Я решил эту проблему заюзав перед рендером
GL11.glDisable(GL11.GL_BLEND), но насколько такое решение безопасно? Или быть может что-то не так с самой моей моделью? В тред призываются все люди, способные в рендер.Вот сам код рендера, но в нем нет ничего интересного помимо моих ругательств:
Renderer.jav:
public static class Renderer implements IItemRenderer {
TileEntitySpecialRenderer render;
private TileEntity te; // Хз зачем, но в туторе нужно
public Renderer(TileEntitySpecialRenderer render, TileEntity te) {
this.render = render;
this.te = te;
}
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
return true;
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return true;
}
// Прикол в том, что Renderer не может использоать UpgradeStationTESR#model. Хз почему. Даже если она - статик. Так что я создаю model еще раз
//IModelCustom model = AdvancedModelLoader.loadModel(new ResourceLocation(RSStats.MODID, "obj/upgrade_station.obj"));
//ResourceLocation texture = new ResourceLocation(RSStats.MODID, "textures/t.png");
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
// Было в туторе, но смещает центр, когда итем выбрасывается игроком, из-за чего он вертится не вокруг своего логического центра
/*if (type == IItemRenderer.ItemRenderType.ENTITY) {
GL11.glTranslatef(-0.5F, 0.0F, -0.5F);
}*/
if (type == ItemRenderType.EQUIPPED) {
GL11.glTranslatef(0.5F, 0.0F, 0.5F); // Делаем так, чтобы рука игрока держалась за центр блока
GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); // Поворачиваем тисками в другую сторону, чтобы сами тиски были видны. А то некрасиво
}
if (type == ItemRenderType.INVENTORY) {
// GL11.glDisable(GL11.GL_BLEND);
GL11.glTranslatef(0.0F, -0.5F, 0.0F); // Чутка опустим предмет вниз, чтобы он нормально отображался в слоте инвентаря
//GL11.glScalef(1.3F, 1.3F, 1.3F);
} else {
// Делаем его чуть-больше, чтобы лучше смотрелся
//GL11.glScalef(1.5F, 1.5F, 1.5F);
}
if (type == ItemRenderType.EQUIPPED_FIRST_PERSON) {
GL11.glTranslatef(0.0F, 0.35F, 0.5F); // Смещаем центр предмета в руке, чтобы он рисовался там же, где и все остальные блоки, когда их держит юзер
//GL11.glScalef(1.3F, 1.3F, 1.3F);
}
// О БЛЯ! ТОЖЕ РАБОТАЕТ!
Minecraft.getMinecraft().renderEngine.bindTexture(((UpgradeStationTESR) render).texture);
((UpgradeStationTESR) render).model.renderAll();
// Не работает. жалуется на нехватку текстур или что-то в этом духе. Хотя по тутору - должно.
//this.render.renderTileEntityAt(this.te, 0.0D, 0.0D, 0.0D, 0.0F);
// Рабочий бинд текстуры
//Minecraft.getMinecraft().renderEngine.bindTexture(texture);
// К моему удивлению - это работает. Но крайне криво
//model.renderAll();
// Дебажная вещь
/*switch (type) {
case ENTITY: {
System.out.println("ENTITY");
break;
}
case EQUIPPED: {
System.out.println("EQUIPPED");
break;
}
case EQUIPPED_FIRST_PERSON: {
System.out.println("EQUIPPED_FIRST_PERSON");
break;
}case FIRST_PERSON_MAP: {
System.out.println("FIRST_PERSON_MAP");
break;
}case INVENTORY: {
System.out.println("INVENTORY");
break;
}
}*/
}
}