Непрозрачная текстура энтити

Версия Minecraft
1.12.2
5,018
47
783
Нету прозрачности у текстуры. Сделал свою модель для энтити, все че положено, сделал, но вместо прозрачной текстуры рендерится серый цвет...
Я думаю надо куда то в рендер вставить функцию, которая включает прозрачность... но я не знаю как она называется. Подскажите пожалуйста.
 
5,018
47
783
Да, спасибо. Если быть более точным, GlStateManager.enableBlend(); и GlStateManager.disableBlend();
 
5,018
47
783
и ну еще... воу, простите, но воду не видно:)

Почему и как сделать чтобы было видно?
1533190819773.png
 
5,018
47
783
В GlStateManager ничего подобного нету. В GL11 прямо есть только такая функция. GL11.glPassThrough(1); Но она ровным счетом ничего не меняет
 
5,018
47
783
В рендере энтити.

Java:
    public void doRender(EntitySubmarine entity, double x, double y, double z, float entityYaw, float partialTicks)
    {
        GlStateManager.pushMatrix();
        this.setupTranslation(x, y, z);
        this.setupRotation(entity, entityYaw, partialTicks);
        this.bindEntityTexture(entity);

        if (this.renderOutlines)
        {
            GlStateManager.enableColorMaterial();
        
            GlStateManager.enableOutlineMode(this.getTeamColor(entity));
        }

        this.modelBoat.render(entity, partialTicks, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);

        if (this.renderOutlines)
        {
            GlStateManager.disableOutlineMode();
            GlStateManager.disableColorMaterial();
        }

        GlStateManager.popMatrix();
        super.doRender(entity, x, y, z, entityYaw, partialTicks);
    }
Java:
 public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale)
    {
         GlStateManager.rotate(90.0F, 0.0F, 1.0F, 0.0F);
         EntitySubmarine entityboat = (EntitySubmarine)entityIn;
         this.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale, entityIn);

         for (int i = 0; i < 5; ++i)
         {
             this.boatSides[i].render(scale);
         }

         this.renderPaddle(entityboat, 0, scale, limbSwing);
         this.renderPaddle(entityboat, 1, scale, limbSwing);
         GlStateManager.enableBlend();
        
         GlStateManager.rotate(90.0F, 0.0F, 1.0F, 0.0F);
         GlStateManager.translate(-0.945D, 0.15, 0.935);
         GlStateManager.scale(1.005, 1.1, 1);
         GL11.glPassThrough(1);
         this.window.render(scale);
        
         GlStateManager.disableBlend();
    }
 
7,099
324
1,510
Попробуй выключить Z-сорт на время рисования лодки
 
5,018
47
783
Сработало! но... есть побочный эффект. Я не знаю как объяснить, поэтому вот видео
Java:
    @Override
    public boolean shouldRenderInPass(int pass)
    {
        return pass == 1;
    }
 
Последнее редактирование:
1,990
18
105
Тогда надо рисовать в оба пасса (0, и 1), но в нулевом рисовать только саму лодку, а в первом только окно (и другие прозрачные части).
В render методе текущий пасс можно достать через MinecraftForgeClient#getRenderPass (не уверен, что в 1.12 есть такой же метод, но должен быть похожий).
 
5,018
47
783
Сверху