- 77
- 2
- 2
Доброго времени суток, пытаюсь реализовать анимацию на заднем фоне при открытии/закрытии GUI
Код отрисовки взял с эффекта при телепортации в ад
Проблема №1 - при открытии TAB анимация как будто перемножается
Проблема №2 - при участии сторонних модов в отрисовке экрана так-же усиливается
Не могу разобраться в чем проблема, так-как в GL11 я нубас
Демонстрация - Jdk1.8.0_241 2023.08.09 - 03.12.37.05.mp4
Код отрисовки взял с эффекта при телепортации в ад
Проблема №1 - при открытии TAB анимация как будто перемножается
Проблема №2 - при участии сторонних модов в отрисовке экрана так-же усиливается
Не могу разобраться в чем проблема, так-как в GL11 я нубас
Демонстрация - Jdk1.8.0_241 2023.08.09 - 03.12.37.05.mp4
Метод отрисовки анимации:
public static void drawAnimatedBackground(float started, int x, int y) {
GL11.glPushMatrix();
GL11.glDisable(3008);
GL11.glDisable(2929);
GL11.glDepthMask(false);
GL11.glBlendFunc(770, 771);
GL11.glColor4f(1.0F, 1.0F, 1.0F, started);
Icon icon = MoreItems.animatedPortal.getBlockTextureFromSide(1);
Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture);
float f1 = icon.getMinU();
float f2 = icon.getMinV();
float f3 = icon.getMaxU();
float f4 = icon.getMaxV();
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV(0.0D, y, -90.0D, f1, f4);
tessellator.addVertexWithUV(x, y, -90.0D, f3, f4);
tessellator.addVertexWithUV(x, 0.0D, -90.0D, f3, f2);
tessellator.addVertexWithUV(0.0D, 0.0D, -90.0D, f1, f2);
tessellator.draw();
GL11.glDepthMask(true);
GL11.glEnable(2929);
GL11.glEnable(3008);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glPopMatrix();
}
RenderScreenListener:
@ForgeSubscribe(priority = EventPriority.HIGHEST)
public void renderAnimation(RenderGameOverlayEvent.Post event) {
Minecraft mc = Minecraft.getMinecraft();
if(mc == null) {
return;
}
if (event.type != RenderGameOverlayEvent.ElementType.ALL) {
return;
}
if(UniqueConstants.CLOSING_ANIMATION) {
if(System.currentTimeMillis() % 10 == 0L) {
if(UniqueConstants.ANIMATION_TIME <= 0.00F) {
UniqueConstants.CLOSING_ANIMATION = false;
}
UniqueConstants.ANIMATION_TIME -= 0.01F;
}
DrawingHelper.drawAnimatedBackground(UniqueConstants.ANIMATION_TIME, event.resolution.getScaledWidth(), event.resolution.getScaledHeight());
}
}