Визуальная часть MotionGraph 1.21

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
7 Фев 2024
Сообщения
80
Реакции
0
Выберите загрузчик игры
  1. Fabric
Корооочч да, сделал моушен под 1.21, с оптимизацией есть траблы, если нужно, то сами исправите
1754034537106.png


MotionGraph:
Expand Collapse Copy
package fever.visual.features.hud.impl;
import fever.visual.FeverVisual;
import fever.visual.core.Managers;
import fever.visual.features.hud.HudElement;
import fever.visual.gui.font.FontRenderers;
import fever.visual.setting.Setting;
import fever.visual.utility.math.MathUtility;
import fever.visual.utility.render.Render2DEngine;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.util.math.MatrixStack;

import java.awt.*;
import java.util.ArrayDeque;
import java.util.Queue;

public class MotionGraph extends HudElement {
    private final Setting<Boolean> average = new Setting<>("Average", true);
    private final Setting<Color> primaryColor = new Setting<>("Primary Color", new Color(65, 148, 255));
    private final Setting<Color> secondaryColor = new Setting<>("Secondary Color", new Color(0, 0, 0, 180));
    private final Setting<Integer> historySize = new Setting<>("History Size", 30, 10, 100);
    private final Queue<Float> speedHistory = new ArrayDeque<>();
    private final float[] renderedPoints = new float[100];
    private long lastUpdateTime;
    private static final int animation = 8;
    public MotionGraph() {
        super("MotionGraph", 50, 50);
        for (int i = 0; i < historySize.getValue(); i++) {
            speedHistory.add(0f);
            renderedPoints[i] = 0f;
        }
    }
    @Override
    public void onRender2D(DrawContext context) {
        super.onRender2D(context);
        float currentSpeed = getSpeedBpS() * FeverVisual.TICK_TIMER;
        final float maxSpeed = 20f;
        if (speedHistory.size() >= historySize.getValue()) {
            speedHistory.poll();
        }
        speedHistory.add(currentSpeed);
        long currentTime = System.currentTimeMillis();
        float deltaTime = Math.min((currentTime - lastUpdateTime) / 1000f, 0.1f);
        lastUpdateTime = currentTime;
        Float[] speeds = speedHistory.toArray(new Float[0]);
        int pointCount = speeds.length;
        final float totalHeight = 50f;
        final float bottomMargin = 1f;
        final float maxLineHeight = totalHeight - 18f;
        final float graphBottom = getPosY() + totalHeight - bottomMargin;
        final float bulletWidth = FontRenderers.sf_bold.getStringWidth("•");
        final String str = "MotionGraph";
        final float textWidth = FontRenderers.sf_bold.getStringWidth(str);
        final float totalWidth = Math.max(100, 4 + bulletWidth + 2 + textWidth + 4);
        final float pX = getPosX() > mc.getWindow().getScaledWidth() / 2f ? getPosX() - totalWidth : getPosX();
        Render2DEngine.drawRound(context.getMatrices(), pX, getPosY(), totalWidth, totalHeight, 5f, secondaryColor.getValue());
        for (int i = 0; i < renderedPoints.length; i++) {
            if (i < pointCount) {
                float targetY = graphBottom - (Math.min(speeds[i] / maxSpeed, 1f) * maxLineHeight);
                renderedPoints[i] += (targetY - renderedPoints[i]) * 0.1f * deltaTime * 60f;
            } else {
                renderedPoints[i] = graphBottom;
            }
        }
        drawGraph(context, pX, getPosY(), totalWidth, totalHeight, pointCount);
        renderText(context, pX, getPosY(), totalWidth, bulletWidth, str, speeds, pointCount);
        setBounds(pX, getPosY(), totalWidth, totalHeight);
    }
    private void drawGraph(DrawContext context, float x, float y, float width, float height, int pointCount) {
        if (pointCount < 2) return;
        MatrixStack matrices = context.getMatrices();
        Color graphColor = primaryColor.getValue();
        float segmentWidth = (width - 10) / (historySize.getValue() - 1);
        float xStart = x + 5;
        for (int i = 0; i < pointCount - 1; i++) {
            float x1 = xStart + i * segmentWidth;
            float y1 = renderedPoints[i];
            float x2 = xStart + (i + 1) * segmentWidth;
            float y2 = renderedPoints[i + 1];

            Render2DEngine.drawLine(x1, y1, x2, y2, graphColor.getRGB());
        }
    }
    private void renderText(DrawContext context, float pX, float pY, float totalWidth,
                            float bulletWidth, String str, Float[] speeds, int pointCount) {
        FontRenderers.sf_bold.drawString(context.getMatrices(), "•", pX + 4, pY + 4.5f, Color.WHITE.getRGB());
        FontRenderers.sf_bold.drawString(context.getMatrices(), str, pX + 4 + bulletWidth + 2, pY + 5, Color.WHITE.getRGB());
        if (pointCount > 0) {
            String speedText = MathUtility.round(speeds[pointCount - 1]) + " b/s";
            FontRenderers.sf_medium.drawString(context.getMatrices(), speedText,
                    pX + totalWidth - 5 - FontRenderers.sf_medium.getStringWidth(speedText),
                    pY + 6, Color.WHITE.getRGB());
        }
    }
    public float getSpeedBpS() {
        return (average.getValue() ? Managers.PLAYER.averagePlayerSpeed : Managers.PLAYER.currentPlayerSpeed) * 20f;
    }
}
 
Последнее редактирование:
Шедевральная (нет) база тх?
 
Корооочч да, сделал моушен под 1.21, с оптимизацией есть траблы, если нужно, то сами исправите
Посмотреть вложение 312163

MotionGraph:
Expand Collapse Copy
package fever.visual.features.hud.impl;
import fever.visual.FeverVisual;
import fever.visual.core.Managers;
import fever.visual.features.hud.HudElement;
import fever.visual.gui.font.FontRenderers;
import fever.visual.setting.Setting;
import fever.visual.utility.math.MathUtility;
import fever.visual.utility.render.Render2DEngine;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.util.math.MatrixStack;

import java.awt.*;
import java.util.ArrayDeque;
import java.util.Queue;

public class MotionGraph extends HudElement {
    private final Setting<Boolean> average = new Setting<>("Average", true);
    private final Setting<Color> primaryColor = new Setting<>("Primary Color", new Color(65, 148, 255));
    private final Setting<Color> secondaryColor = new Setting<>("Secondary Color", new Color(0, 0, 0, 180));
    private final Setting<Integer> historySize = new Setting<>("History Size", 30, 10, 100);
    private final Queue<Float> speedHistory = new ArrayDeque<>();
    private final float[] renderedPoints = new float[100];
    private long lastUpdateTime;
    private static final int animation = 8;
    public MotionGraph() {
        super("MotionGraph", 50, 50);
        for (int i = 0; i < historySize.getValue(); i++) {
            speedHistory.add(0f);
            renderedPoints[i] = 0f;
        }
    }
    @Override
    public void onRender2D(DrawContext context) {
        super.onRender2D(context);
        float currentSpeed = getSpeedBpS() * FeverVisual.TICK_TIMER;
        final float maxSpeed = 20f;
        if (speedHistory.size() >= historySize.getValue()) {
            speedHistory.poll();
        }
        speedHistory.add(currentSpeed);
        long currentTime = System.currentTimeMillis();
        float deltaTime = Math.min((currentTime - lastUpdateTime) / 1000f, 0.1f);
        lastUpdateTime = currentTime;
        Float[] speeds = speedHistory.toArray(new Float[0]);
        int pointCount = speeds.length;
        final float totalHeight = 50f;
        final float bottomMargin = 1f;
        final float maxLineHeight = totalHeight - 18f;
        final float graphBottom = getPosY() + totalHeight - bottomMargin;
        final float bulletWidth = FontRenderers.sf_bold.getStringWidth("•");
        final String str = "MotionGraph";
        final float textWidth = FontRenderers.sf_bold.getStringWidth(str);
        final float totalWidth = Math.max(100, 4 + bulletWidth + 2 + textWidth + 4);
        final float pX = getPosX() > mc.getWindow().getScaledWidth() / 2f ? getPosX() - totalWidth : getPosX();
        Render2DEngine.drawRound(context.getMatrices(), pX, getPosY(), totalWidth, totalHeight, 5f, secondaryColor.getValue());
        for (int i = 0; i < renderedPoints.length; i++) {
            if (i < pointCount) {
                float targetY = graphBottom - (Math.min(speeds[i] / maxSpeed, 1f) * maxLineHeight);
                renderedPoints[i] += (targetY - renderedPoints[i]) * 0.1f * deltaTime * 60f;
            } else {
                renderedPoints[i] = graphBottom;
            }
        }
        drawGraph(context, pX, getPosY(), totalWidth, totalHeight, pointCount);
        renderText(context, pX, getPosY(), totalWidth, bulletWidth, str, speeds, pointCount);
        setBounds(pX, getPosY(), totalWidth, totalHeight);
    }
    private void drawGraph(DrawContext context, float x, float y, float width, float height, int pointCount) {
        if (pointCount < 2) return;
        MatrixStack matrices = context.getMatrices();
        Color graphColor = primaryColor.getValue();
        float segmentWidth = (width - 10) / (historySize.getValue() - 1);
        float xStart = x + 5;
        for (int i = 0; i < pointCount - 1; i++) {
            float x1 = xStart + i * segmentWidth;
            float y1 = renderedPoints[i];
            float x2 = xStart + (i + 1) * segmentWidth;
            float y2 = renderedPoints[i + 1];

            Render2DEngine.drawLine(x1, y1, x2, y2, graphColor.getRGB());
        }
    }
    private void renderText(DrawContext context, float pX, float pY, float totalWidth,
                            float bulletWidth, String str, Float[] speeds, int pointCount) {
        FontRenderers.sf_bold.drawString(context.getMatrices(), "•", pX + 4, pY + 4.5f, Color.WHITE.getRGB());
        FontRenderers.sf_bold.drawString(context.getMatrices(), str, pX + 4 + bulletWidth + 2, pY + 5, Color.WHITE.getRGB());
        if (pointCount > 0) {
            String speedText = MathUtility.round(speeds[pointCount - 1]) + " b/s";
            FontRenderers.sf_medium.drawString(context.getMatrices(), speedText,
                    pX + totalWidth - 5 - FontRenderers.sf_medium.getStringWidth(speedText),
                    pY + 6, Color.WHITE.getRGB());
        }
    }
    public float getSpeedBpS() {
        return (average.getValue() ? Managers.PLAYER.averagePlayerSpeed : Managers.PLAYER.currentPlayerSpeed) * 20f;
    }
}
def thunderhack ? какая оптимизация это в 1 строчку сделать так и ещё деф тх -_-
 
слей InventoryHud под 1.21 (TH)
 
Назад
Сверху Снизу