Вопрос Как фиксануть jumpcircles?

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
12 Апр 2025
Сообщения
25
Реакции
0

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

типо прикол в том что в конце анимации прохрачность на 0 ставится
Код:
Expand Collapse Copy
package im.expensive.functions.impl.render;

import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.platform.GlStateManager;
import im.expensive.events.JumpEvent;
import im.expensive.events.WorldEvent;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.settings.impl.SliderSetting;
import im.expensive.utils.render.ColorUtils;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.vector.Vector3d;
import ru.hogoshi.util.Easings;

import java.util.concurrent.CopyOnWriteArrayList;

@FunctionRegister(name = "JumpCircle", type = Category.Render)
public class JumpCircle extends Function {

    private final CopyOnWriteArrayList<Circle> circles = new CopyOnWriteArrayList<>();
    private final SliderSetting sizeSlider = new SliderSetting("Размер", 1.0f, 1.0f, 5.0f, 0.1f);
    private final SliderSetting fadeSpeedSlider = new SliderSetting("Скорость исчезания", 1.0f, 0.5f, 3.0f, 0.1f);

    public JumpCircle() {
        addSettings(sizeSlider, fadeSpeedSlider);
    }

    @Subscribe
    private void onJump(JumpEvent e) {
        circles.add(new Circle(mc.player.getPositon(mc.getRenderPartialTicks()).add(0, 0.05, 0)));
    }

    private final ResourceLocation circle = new ResourceLocation("expensive/images/circle.png");

    @Subscribe
    private void onRender(WorldEvent e) {

        GlStateManager.pushMatrix();
        GlStateManager.shadeModel(7425);
        GlStateManager.blendFunc(770, 771);
        GlStateManager.depthMask(false);
        GlStateManager.enableBlend();
        GlStateManager.disableAlphaTest();
        GlStateManager.disableCull();
        GlStateManager.translated(-mc.getRenderManager().info.getProjectedView().x, -mc.getRenderManager().info.getProjectedView().y, -mc.getRenderManager().info.getProjectedView().z);

        circles.removeIf(c -> System.currentTimeMillis() - c.time > 3000);

        for (Circle c : circles) {
            mc.getTextureManager().bindTexture(circle);

            long timeSinceCreation = System.currentTimeMillis() - c.time;


            double animationProgress = Math.min(1.0, (double) timeSinceCreation / (1500 / fadeSpeedSlider.get()));
            double fadeProgress = Math.max(0.0, 1.0 - (double) (timeSinceCreation - 1500) / (1500 / fadeSpeedSlider.get()));  

            float rad = (float) Easings.SINE_OUT.ease(animationProgress) * sizeSlider.get(); 

            float alpha = (float) (0.01 + (1 - 0.01) * (1 - Easings.SINE_IN.ease(fadeProgress)));

            Vector3d vector3d = c.vector3d;
            vector3d = vector3d.add(-rad / 2f, 0, -rad / 2f);

            buffer.begin(6, DefaultVertexFormats.POSITION_COLOR_TEX);
            int alphaValue = (int) (255 * alpha);

            buffer.pos(vector3d.x, vector3d.y, vector3d.z).color(ColorUtils.setAlpha(ColorUtils.getColor(5), alphaValue)).tex(0, 0).endVertex();
            buffer.pos(vector3d.x + rad, vector3d.y, vector3d.z).color(ColorUtils.setAlpha(ColorUtils.getColor(10), alphaValue)).tex(1, 0).endVertex();
            buffer.pos(vector3d.x + rad, vector3d.y, vector3d.z + rad).color(ColorUtils.setAlpha(ColorUtils.getColor(15), alphaValue)).tex(1, 1).endVertex();
            buffer.pos(vector3d.x, vector3d.y, vector3d.z + rad).color(ColorUtils.setAlpha(ColorUtils.getColor(20), alphaValue)).tex(0, 1).endVertex();
            tessellator.draw();
        }

        GlStateManager.disableBlend();
        GlStateManager.shadeModel(7424);
        GlStateManager.depthMask(true);
        GlStateManager.enableAlphaTest();
        GlStateManager.enableCull();
        GlStateManager.popMatrix();
    }

    private class Circle {

        private final Vector3d vector3d;
        private final long time;

        public Circle(Vector3d vector3d) {
            this.vector3d = vector3d;
            time = System.currentTimeMillis();
        }
    }
}
 
Назад
Сверху Снизу