Безопасно ли отключать блединг в кастомном итем рендере?

Версия Minecraft
1.7.10

RareScrap

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

Я решил эту проблему заюзав перед рендером 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;
                }
            }*/
        }
    }
 
Назад
Сверху