Исходник Nursultan Dragging | MCP 1.16.5 | EXPENSIVE 3.1 - 3.0 |EXPENSIVE 2.0 - HL - EXPENSIVE UPGRADE

Начинающий
Статус
Оффлайн
Регистрация
22 Авг 2022
Сообщения
331
Реакции[?]
3
Поинты[?]
3K

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

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

Спасибо!

made in China
made in johON0, attack.dev, china (xzxcasd)
by Centric Developers



Drag.java:
public class Drag {

    private float xPos, yPos;
    private float startX, startY;
    private boolean dragging;

    public Drag(float initialXVal, float initialYVal) {
        this.xPos = initialXVal;
        this.yPos = initialYVal;
    }

    public float getX() {
        return xPos;
    }

    public void setX(float x) {
        this.xPos = x;
    }

    public float getY() {
        return yPos;
    }

    public void setY(float y) {
        this.yPos = y;
    }

    public final void onDraw(int mouseX, int mouseY) {
        if (dragging) {
            xPos = (mouseX - startX);
            yPos = (mouseY - startY);
        }
    }

    public final void onDrawNegX(int mouseX, int mouseY) {
        if (dragging) {
            xPos = -(mouseX - startX);
            yPos = (mouseY - startY);
        }
    }

    public final void onClick(int mouseX, int mouseY, int button, boolean canDrag) {
        if (button == 0 && canDrag) {
            dragging = true;
            startX = (int) (mouseX - xPos);
            startY = (int) (mouseY - yPos);
        }
    }

    public final void onClickAddX(int mouseX, int mouseY, int button, boolean canDrag) {
        if (button == 0 && canDrag) {
            dragging = true;
            startX = (int) (mouseX + xPos);
            startY = (int) (mouseY - yPos);
        }
    }

    public final void onRelease(int button) {
        if (button == 0) dragging = false;
    }

}

Dragging.java:
public class Dragging {
    @Expose
    @SerializedName("x")
    private float xPos;
    @Expose
    @SerializedName("y")
    private float yPos;

    public float initialXVal;
    public float initialYVal;

    private float startX, startY;
    private boolean dragging;

    private float width, height;

    @Expose
    @SerializedName("name")
    private final String name;

    private final Function module;

    private static final float grid = 20;
    private static final float snap_thr = 10;

    private float lineAlpha = 0.0f;
    private long lastUpdateTime;

    private boolean showVerticalLine = false;
    private boolean showHorizontalLine = false;
    private float closestVerticalLine = 0;
    private float closestHorizontalLine = 0;

    private final float resetButtonWidth = 110;
    private final float resetButtonHeight = 16;
    private final String resetButtonText = "Reset Draggables";

    public Dragging(Function module, String name, float initialXVal, float initialYVal) {
        this.module = module;
        this.name = name;
        this.xPos = initialXVal;
        this.yPos = initialYVal;
        this.initialXVal = initialXVal;
        this.initialYVal = initialYVal;
    }

    public Function getModule() {
        return module;
    }


    public String getName() {
        return name;
    }

    public float getWidth() {
        return width;
    }

    public void setWidth(float width) {
        this.width = width;
    }

    public float getHeight() {
        return height;
    }

    public void setHeight(float height) {
        this.height = height;
    }

    public float getX() {
        return xPos;
    }

    public void setX(float x) {
        this.xPos = x;
    }

    public float getY() {
        return yPos;
    }

    public void setY(float y) {
        this.yPos = y;
    }

    public final void onDraw(int mouseX, int mouseY, MainWindow res) {
        Vec2i fixed = ClientUtil.getMouse(mouseX, mouseY);
        mouseX = fixed.getX();
        mouseY = fixed.getY();

        if (dragging) {
            xPos = (mouseX - startX);
            yPos = (mouseY - startY);

            xPos = snap(xPos, grid, snap_thr);
            yPos = snap(yPos, grid, snap_thr);

            if (xPos + width > res.scaledWidth()) {
                xPos = res.scaledWidth() - width;
            }
            if (yPos + height > res.scaledHeight()) {
                yPos = res.scaledHeight() - height;
            }
            if (xPos < 0) {
                xPos = 0;
            }
            if (yPos < 0) {
                yPos = 0;
            }

            updateLineAlpha(true);
            checkClosestGridLines();
        } else {
            updateLineAlpha(false);
            showVerticalLine = false;
            showHorizontalLine = false;
        }

        drawGridLines(res);
        drawResetButton(res, mouseX, mouseY);
    }

    private float snap(float pos, float gridSpacing, float snapThreshold) {
        float gridPos = Math.round(pos / gridSpacing) * gridSpacing;
        if (Math.abs(pos - gridPos) < snapThreshold) {
            return gridPos;
        }
        return pos;
    }

    private void updateLineAlpha(boolean increasing) {
        long currentTime = System.currentTimeMillis();
        float deltaTime = (currentTime - lastUpdateTime) / 1000.0f;
        lastUpdateTime = currentTime;

        if (increasing) {
            lineAlpha += deltaTime * 4;
            if (lineAlpha > 1.0f) {
                lineAlpha = 1.0f;
            }
        } else {
            lineAlpha -= deltaTime * 4;
            if (lineAlpha < 0.0f) {
                lineAlpha = 0.0f;
            }
        }
    }

    private void checkClosestGridLines() {
        closestVerticalLine = Math.round(xPos / grid) * grid;
        closestHorizontalLine = Math.round(yPos / grid) * grid;

        showVerticalLine = Math.abs(xPos - closestVerticalLine) < snap_thr;
        showHorizontalLine = Math.abs(yPos - closestHorizontalLine) < snap_thr;
    }

    private void drawGridLines(MainWindow res) {
        float alpha = lineAlpha * 1;
        int color = ((int) (alpha * 255) << 24) | 0xFFFFFF;

        if (showVerticalLine) {
            DisplayUtils.drawRoundedRect(closestVerticalLine, 0, 1, res.scaledHeight(), 1, color);
        }

        if (showHorizontalLine) {
            DisplayUtils.drawRoundedRect(0, closestHorizontalLine, res.scaledWidth(), 1, 1, color);
        }
    }

    private void drawResetButton(MainWindow res, int mouseX, int mouseY) {
        MatrixStack matrixStack = new MatrixStack();
        if (Minecraft.getInstance().ingameGUI.getChatGUI().getChatOpen()) {
            float centerX = (res.scaledWidth() - resetButtonWidth) / 2;
            float centerY = 5;

            boolean hovered = mouseX >= centerX && mouseX <= centerX + resetButtonWidth && mouseY >= centerY && mouseY <= centerY + resetButtonHeight;
            int color = hovered ? 0x90FFFFFF : 0x60FFFFFF;

            DisplayUtils.drawRoundedRect(centerX, centerY + 20, resetButtonWidth, resetButtonHeight, 6, ColorUtils.rgba(0,0,0,40));
            ClientFonts.small_pixel[24].drawString(matrixStack, resetButtonText, centerX + 8, centerY + 25, -1);
        }
    }

    public final boolean onClick(double mouseX, double mouseY, int button) {
        Vec2i fixed = ClientUtil.getMouse((int) mouseX, (int) mouseY);
        mouseX = fixed.getX();
        mouseY = fixed.getY();

        if (Minecraft.getInstance().ingameGUI.getChatGUI().getChatOpen()) {
            float centerX = (Minecraft.getInstance().getMainWindow().getScaledWidth() - resetButtonWidth) / 2;
            float centerY = 5;
            if (button == 0 && mouseX >= centerX && mouseX <= centerX + resetButtonWidth && mouseY >= centerY + 20 && mouseY <= centerY + 20 + resetButtonHeight) {
                DragManager.resetAllPositions();
                return true;
            }
        }

        if (button == 0 && MathUtil.isHovered((float) mouseX, (float) mouseY, xPos, yPos, width, height)) {
            dragging = true;
            startX = (int) (mouseX - xPos);
            startY = (int) (mouseY - yPos);
            lastUpdateTime = System.currentTimeMillis();
            return true;
        }
        return false;
    }

    public final void onRelease(int button) {
        if (button == 0) dragging = false;
    }

    public void resetPosition() {
        this.xPos = this.initialXVal;
        this.yPos = this.initialYVal;
    }
}

DragManager.java:
package fun.centric.api.utils.drag;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import net.minecraft.client.Minecraft;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.StandardOpenOption;
import java.util.LinkedHashMap;

public class DragManager {
    public static LinkedHashMap<String, Dragging> draggables = new LinkedHashMap<>();

    private static final File DRAG_DATA = new File(Minecraft.getInstance().gameDir, "\\centric\\files\\drags.json");
    private static final Gson GSON = new GsonBuilder().setPrettyPrinting().excludeFieldsWithoutExposeAnnotation().create();

    public static void save() {
        if (!DRAG_DATA.exists()) {
            DRAG_DATA.getParentFile().mkdirs();
        }
        try {
            Files.writeString(DRAG_DATA.toPath(), GSON.toJson(draggables.values()));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    public static void load() {
        if (!DRAG_DATA.exists()) {
            DRAG_DATA.getParentFile().mkdirs();
            return;
        }
        try {
            String jsonData = Files.readString(DRAG_DATA.toPath());
            Dragging[] draggings = GSON.fromJson(jsonData, Dragging[].class);
            if (draggings != null) {
                for (Dragging dragging : draggings) {
                    draggables.put(dragging.getName(), dragging);
                }
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    public static void resetAllPositions() {
        for (Dragging dragging : draggables.values()) {
            dragging.resetPosition();
        }
        save();
    }

    public static void addDraggable(Dragging dragging) {
        draggables.put(dragging.getName(), dragging);
        save();
    }

    public static void removeDraggable(String name) {
        draggables.remove(name);
        save();
    }
}
:screamcat::screamcat::screamcat:
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
15 Июл 2024
Сообщения
43
Реакции[?]
0
Поинты[?]
1K
made in China
ade in johON0, attack.dev, china (xzxcasd)
by Centric Developers



Drag.java:
public class Drag {

    private float xPos, yPos;
    private float startX, startY;
    private boolean dragging;

    public Drag(float initialXVal, float initialYVal) {
        this.xPos = initialXVal;
        this.yPos = initialYVal;
    }

    public float getX() {
        return xPos;
    }

    public void setX(float x) {
        this.xPos = x;
    }

    public float getY() {
        return yPos;
    }

    public void setY(float y) {
        this.yPos = y;
    }

    public final void onDraw(int mouseX, int mouseY) {
        if (dragging) {
            xPos = (mouseX - startX);
            yPos = (mouseY - startY);
        }
    }

    public final void onDrawNegX(int mouseX, int mouseY) {
        if (dragging) {
            xPos = -(mouseX - startX);
            yPos = (mouseY - startY);
        }
    }

    public final void onClick(int mouseX, int mouseY, int button, boolean canDrag) {
        if (button == 0 && canDrag) {
            dragging = true;
            startX = (int) (mouseX - xPos);
            startY = (int) (mouseY - yPos);
        }
    }

    public final void onClickAddX(int mouseX, int mouseY, int button, boolean canDrag) {
        if (button == 0 && canDrag) {
            dragging = true;
            startX = (int) (mouseX + xPos);
            startY = (int) (mouseY - yPos);
        }
    }

    public final void onRelease(int button) {
        if (button == 0) dragging = false;
    }

}

Dragging.java:
public class Dragging {
    @Expose
    @SerializedName("x")
    private float xPos;
    @Expose
    @SerializedName("y")
    private float yPos;

    public float initialXVal;
    public float initialYVal;

    private float startX, startY;
    private boolean dragging;

    private float width, height;

    @Expose
    @SerializedName("name")
    private final String name;

    private final Function module;

    private static final float grid = 20;
    private static final float snap_thr = 10;

    private float lineAlpha = 0.0f;
    private long lastUpdateTime;

    private boolean showVerticalLine = false;
    private boolean showHorizontalLine = false;
    private float closestVerticalLine = 0;
    private float closestHorizontalLine = 0;

    private final float resetButtonWidth = 110;
    private final float resetButtonHeight = 16;
    private final String resetButtonText = "Reset Draggables";

    public Dragging(Function module, String name, float initialXVal, float initialYVal) {
        this.module = module;
        this.name = name;
        this.xPos = initialXVal;
        this.yPos = initialYVal;
        this.initialXVal = initialXVal;
        this.initialYVal = initialYVal;
    }

    public Function getModule() {
        return module;
    }


    public String getName() {
        return name;
    }

    public float getWidth() {
        return width;
    }

    public void setWidth(float width) {
        this.width = width;
    }

    public float getHeight() {
        return height;
    }

    public void setHeight(float height) {
        this.height = height;
    }

    public float getX() {
        return xPos;
    }

    public void setX(float x) {
        this.xPos = x;
    }

    public float getY() {
        return yPos;
    }

    public void setY(float y) {
        this.yPos = y;
    }

    public final void onDraw(int mouseX, int mouseY, MainWindow res) {
        Vec2i fixed = ClientUtil.getMouse(mouseX, mouseY);
        mouseX = fixed.getX();
        mouseY = fixed.getY();

        if (dragging) {
            xPos = (mouseX - startX);
            yPos = (mouseY - startY);

            xPos = snap(xPos, grid, snap_thr);
            yPos = snap(yPos, grid, snap_thr);

            if (xPos + width > res.scaledWidth()) {
                xPos = res.scaledWidth() - width;
            }
            if (yPos + height > res.scaledHeight()) {
                yPos = res.scaledHeight() - height;
            }
            if (xPos < 0) {
                xPos = 0;
            }
            if (yPos < 0) {
                yPos = 0;
            }

            updateLineAlpha(true);
            checkClosestGridLines();
        } else {
            updateLineAlpha(false);
            showVerticalLine = false;
            showHorizontalLine = false;
        }

        drawGridLines(res);
        drawResetButton(res, mouseX, mouseY);
    }

    private float snap(float pos, float gridSpacing, float snapThreshold) {
        float gridPos = Math.round(pos / gridSpacing) * gridSpacing;
        if (Math.abs(pos - gridPos) < snapThreshold) {
            return gridPos;
        }
        return pos;
    }

    private void updateLineAlpha(boolean increasing) {
        long currentTime = System.currentTimeMillis();
        float deltaTime = (currentTime - lastUpdateTime) / 1000.0f;
        lastUpdateTime = currentTime;

        if (increasing) {
            lineAlpha += deltaTime * 4;
            if (lineAlpha > 1.0f) {
                lineAlpha = 1.0f;
            }
        } else {
            lineAlpha -= deltaTime * 4;
            if (lineAlpha < 0.0f) {
                lineAlpha = 0.0f;
            }
        }
    }

    private void checkClosestGridLines() {
        closestVerticalLine = Math.round(xPos / grid) * grid;
        closestHorizontalLine = Math.round(yPos / grid) * grid;

        showVerticalLine = Math.abs(xPos - closestVerticalLine) < snap_thr;
        showHorizontalLine = Math.abs(yPos - closestHorizontalLine) < snap_thr;
    }

    private void drawGridLines(MainWindow res) {
        float alpha = lineAlpha * 1;
        int color = ((int) (alpha * 255) << 24) | 0xFFFFFF;

        if (showVerticalLine) {
            DisplayUtils.drawRoundedRect(closestVerticalLine, 0, 1, res.scaledHeight(), 1, color);
        }

        if (showHorizontalLine) {
            DisplayUtils.drawRoundedRect(0, closestHorizontalLine, res.scaledWidth(), 1, 1, color);
        }
    }

    private void drawResetButton(MainWindow res, int mouseX, int mouseY) {
        MatrixStack matrixStack = new MatrixStack();
        if (Minecraft.getInstance().ingameGUI.getChatGUI().getChatOpen()) {
            float centerX = (res.scaledWidth() - resetButtonWidth) / 2;
            float centerY = 5;

            boolean hovered = mouseX >= centerX && mouseX <= centerX + resetButtonWidth && mouseY >= centerY && mouseY <= centerY + resetButtonHeight;
            int color = hovered ? 0x90FFFFFF : 0x60FFFFFF;

            DisplayUtils.drawRoundedRect(centerX, centerY + 20, resetButtonWidth, resetButtonHeight, 6, ColorUtils.rgba(0,0,0,40));
            ClientFonts.small_pixel[24].drawString(matrixStack, resetButtonText, centerX + 8, centerY + 25, -1);
        }
    }

    public final boolean onClick(double mouseX, double mouseY, int button) {
        Vec2i fixed = ClientUtil.getMouse((int) mouseX, (int) mouseY);
        mouseX = fixed.getX();
        mouseY = fixed.getY();

        if (Minecraft.getInstance().ingameGUI.getChatGUI().getChatOpen()) {
            float centerX = (Minecraft.getInstance().getMainWindow().getScaledWidth() - resetButtonWidth) / 2;
            float centerY = 5;
            if (button == 0 && mouseX >= centerX && mouseX <= centerX + resetButtonWidth && mouseY >= centerY + 20 && mouseY <= centerY + 20 + resetButtonHeight) {
                DragManager.resetAllPositions();
                return true;
            }
        }

        if (button == 0 && MathUtil.isHovered((float) mouseX, (float) mouseY, xPos, yPos, width, height)) {
            dragging = true;
            startX = (int) (mouseX - xPos);
            startY = (int) (mouseY - yPos);
            lastUpdateTime = System.currentTimeMillis();
            return true;
        }
        return false;
    }

    public final void onRelease(int button) {
        if (button == 0) dragging = false;
    }

    public void resetPosition() {
        this.xPos = this.initialXVal;
        this.yPos = this.initialYVal;
    }
}

DragManager.java:
package fun.centric.api.utils.drag;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import net.minecraft.client.Minecraft;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.StandardOpenOption;
import java.util.LinkedHashMap;

public class DragManager {
    public static LinkedHashMap<String, Dragging> draggables = new LinkedHashMap<>();

    private static final File DRAG_DATA = new File(Minecraft.getInstance().gameDir, "\\centric\\files\\drags.json");
    private static final Gson GSON = new GsonBuilder().setPrettyPrinting().excludeFieldsWithoutExposeAnnotation().create();

    public static void save() {
        if (!DRAG_DATA.exists()) {
            DRAG_DATA.getParentFile().mkdirs();
        }
        try {
            Files.writeString(DRAG_DATA.toPath(), GSON.toJson(draggables.values()));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    public static void load() {
        if (!DRAG_DATA.exists()) {
            DRAG_DATA.getParentFile().mkdirs();
            return;
        }
        try {
            String jsonData = Files.readString(DRAG_DATA.toPath());
            Dragging[] draggings = GSON.fromJson(jsonData, Dragging[].class);
            if (draggings != null) {
                for (Dragging dragging : draggings) {
                    draggables.put(dragging.getName(), dragging);
                }
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    public static void resetAllPositions() {
        for (Dragging dragging : draggables.values()) {
            dragging.resetPosition();
        }
        save();
    }

    public static void addDraggable(Dragging dragging) {
        draggables.put(dragging.getName(), dragging);
        save();
    }

    public static void removeDraggable(String name) {
        draggables.remove(name);
        save();
    }
}
:screamcat::screamcat::screamcat:
нахуй это ?
 
Начинающий
Статус
Оффлайн
Регистрация
23 Апр 2024
Сообщения
398
Реакции[?]
0
Поинты[?]
1K
made in China
made in johON0, attack.dev, china (xzxcasd)
by Centric Developers



Drag.java:
public class Drag {

    private float xPos, yPos;
    private float startX, startY;
    private boolean dragging;

    public Drag(float initialXVal, float initialYVal) {
        this.xPos = initialXVal;
        this.yPos = initialYVal;
    }

    public float getX() {
        return xPos;
    }

    public void setX(float x) {
        this.xPos = x;
    }

    public float getY() {
        return yPos;
    }

    public void setY(float y) {
        this.yPos = y;
    }

    public final void onDraw(int mouseX, int mouseY) {
        if (dragging) {
            xPos = (mouseX - startX);
            yPos = (mouseY - startY);
        }
    }

    public final void onDrawNegX(int mouseX, int mouseY) {
        if (dragging) {
            xPos = -(mouseX - startX);
            yPos = (mouseY - startY);
        }
    }

    public final void onClick(int mouseX, int mouseY, int button, boolean canDrag) {
        if (button == 0 && canDrag) {
            dragging = true;
            startX = (int) (mouseX - xPos);
            startY = (int) (mouseY - yPos);
        }
    }

    public final void onClickAddX(int mouseX, int mouseY, int button, boolean canDrag) {
        if (button == 0 && canDrag) {
            dragging = true;
            startX = (int) (mouseX + xPos);
            startY = (int) (mouseY - yPos);
        }
    }

    public final void onRelease(int button) {
        if (button == 0) dragging = false;
    }

}

Dragging.java:
public class Dragging {
    @Expose
    @SerializedName("x")
    private float xPos;
    @Expose
    @SerializedName("y")
    private float yPos;

    public float initialXVal;
    public float initialYVal;

    private float startX, startY;
    private boolean dragging;

    private float width, height;

    @Expose
    @SerializedName("name")
    private final String name;

    private final Function module;

    private static final float grid = 20;
    private static final float snap_thr = 10;

    private float lineAlpha = 0.0f;
    private long lastUpdateTime;

    private boolean showVerticalLine = false;
    private boolean showHorizontalLine = false;
    private float closestVerticalLine = 0;
    private float closestHorizontalLine = 0;

    private final float resetButtonWidth = 110;
    private final float resetButtonHeight = 16;
    private final String resetButtonText = "Reset Draggables";

    public Dragging(Function module, String name, float initialXVal, float initialYVal) {
        this.module = module;
        this.name = name;
        this.xPos = initialXVal;
        this.yPos = initialYVal;
        this.initialXVal = initialXVal;
        this.initialYVal = initialYVal;
    }

    public Function getModule() {
        return module;
    }


    public String getName() {
        return name;
    }

    public float getWidth() {
        return width;
    }

    public void setWidth(float width) {
        this.width = width;
    }

    public float getHeight() {
        return height;
    }

    public void setHeight(float height) {
        this.height = height;
    }

    public float getX() {
        return xPos;
    }

    public void setX(float x) {
        this.xPos = x;
    }

    public float getY() {
        return yPos;
    }

    public void setY(float y) {
        this.yPos = y;
    }

    public final void onDraw(int mouseX, int mouseY, MainWindow res) {
        Vec2i fixed = ClientUtil.getMouse(mouseX, mouseY);
        mouseX = fixed.getX();
        mouseY = fixed.getY();

        if (dragging) {
            xPos = (mouseX - startX);
            yPos = (mouseY - startY);

            xPos = snap(xPos, grid, snap_thr);
            yPos = snap(yPos, grid, snap_thr);

            if (xPos + width > res.scaledWidth()) {
                xPos = res.scaledWidth() - width;
            }
            if (yPos + height > res.scaledHeight()) {
                yPos = res.scaledHeight() - height;
            }
            if (xPos < 0) {
                xPos = 0;
            }
            if (yPos < 0) {
                yPos = 0;
            }

            updateLineAlpha(true);
            checkClosestGridLines();
        } else {
            updateLineAlpha(false);
            showVerticalLine = false;
            showHorizontalLine = false;
        }

        drawGridLines(res);
        drawResetButton(res, mouseX, mouseY);
    }

    private float snap(float pos, float gridSpacing, float snapThreshold) {
        float gridPos = Math.round(pos / gridSpacing) * gridSpacing;
        if (Math.abs(pos - gridPos) < snapThreshold) {
            return gridPos;
        }
        return pos;
    }

    private void updateLineAlpha(boolean increasing) {
        long currentTime = System.currentTimeMillis();
        float deltaTime = (currentTime - lastUpdateTime) / 1000.0f;
        lastUpdateTime = currentTime;

        if (increasing) {
            lineAlpha += deltaTime * 4;
            if (lineAlpha > 1.0f) {
                lineAlpha = 1.0f;
            }
        } else {
            lineAlpha -= deltaTime * 4;
            if (lineAlpha < 0.0f) {
                lineAlpha = 0.0f;
            }
        }
    }

    private void checkClosestGridLines() {
        closestVerticalLine = Math.round(xPos / grid) * grid;
        closestHorizontalLine = Math.round(yPos / grid) * grid;

        showVerticalLine = Math.abs(xPos - closestVerticalLine) < snap_thr;
        showHorizontalLine = Math.abs(yPos - closestHorizontalLine) < snap_thr;
    }

    private void drawGridLines(MainWindow res) {
        float alpha = lineAlpha * 1;
        int color = ((int) (alpha * 255) << 24) | 0xFFFFFF;

        if (showVerticalLine) {
            DisplayUtils.drawRoundedRect(closestVerticalLine, 0, 1, res.scaledHeight(), 1, color);
        }

        if (showHorizontalLine) {
            DisplayUtils.drawRoundedRect(0, closestHorizontalLine, res.scaledWidth(), 1, 1, color);
        }
    }

    private void drawResetButton(MainWindow res, int mouseX, int mouseY) {
        MatrixStack matrixStack = new MatrixStack();
        if (Minecraft.getInstance().ingameGUI.getChatGUI().getChatOpen()) {
            float centerX = (res.scaledWidth() - resetButtonWidth) / 2;
            float centerY = 5;

            boolean hovered = mouseX >= centerX && mouseX <= centerX + resetButtonWidth && mouseY >= centerY && mouseY <= centerY + resetButtonHeight;
            int color = hovered ? 0x90FFFFFF : 0x60FFFFFF;

            DisplayUtils.drawRoundedRect(centerX, centerY + 20, resetButtonWidth, resetButtonHeight, 6, ColorUtils.rgba(0,0,0,40));
            ClientFonts.small_pixel[24].drawString(matrixStack, resetButtonText, centerX + 8, centerY + 25, -1);
        }
    }

    public final boolean onClick(double mouseX, double mouseY, int button) {
        Vec2i fixed = ClientUtil.getMouse((int) mouseX, (int) mouseY);
        mouseX = fixed.getX();
        mouseY = fixed.getY();

        if (Minecraft.getInstance().ingameGUI.getChatGUI().getChatOpen()) {
            float centerX = (Minecraft.getInstance().getMainWindow().getScaledWidth() - resetButtonWidth) / 2;
            float centerY = 5;
            if (button == 0 && mouseX >= centerX && mouseX <= centerX + resetButtonWidth && mouseY >= centerY + 20 && mouseY <= centerY + 20 + resetButtonHeight) {
                DragManager.resetAllPositions();
                return true;
            }
        }

        if (button == 0 && MathUtil.isHovered((float) mouseX, (float) mouseY, xPos, yPos, width, height)) {
            dragging = true;
            startX = (int) (mouseX - xPos);
            startY = (int) (mouseY - yPos);
            lastUpdateTime = System.currentTimeMillis();
            return true;
        }
        return false;
    }

    public final void onRelease(int button) {
        if (button == 0) dragging = false;
    }

    public void resetPosition() {
        this.xPos = this.initialXVal;
        this.yPos = this.initialYVal;
    }
}

DragManager.java:
package fun.centric.api.utils.drag;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import net.minecraft.client.Minecraft;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.StandardOpenOption;
import java.util.LinkedHashMap;

public class DragManager {
    public static LinkedHashMap<String, Dragging> draggables = new LinkedHashMap<>();

    private static final File DRAG_DATA = new File(Minecraft.getInstance().gameDir, "\\centric\\files\\drags.json");
    private static final Gson GSON = new GsonBuilder().setPrettyPrinting().excludeFieldsWithoutExposeAnnotation().create();

    public static void save() {
        if (!DRAG_DATA.exists()) {
            DRAG_DATA.getParentFile().mkdirs();
        }
        try {
            Files.writeString(DRAG_DATA.toPath(), GSON.toJson(draggables.values()));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    public static void load() {
        if (!DRAG_DATA.exists()) {
            DRAG_DATA.getParentFile().mkdirs();
            return;
        }
        try {
            String jsonData = Files.readString(DRAG_DATA.toPath());
            Dragging[] draggings = GSON.fromJson(jsonData, Dragging[].class);
            if (draggings != null) {
                for (Dragging dragging : draggings) {
                    draggables.put(dragging.getName(), dragging);
                }
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    public static void resetAllPositions() {
        for (Dragging dragging : draggables.values()) {
            dragging.resetPosition();
        }
        save();
    }

    public static void addDraggable(Dragging dragging) {
        draggables.put(dragging.getName(), dragging);
        save();
    }

    public static void removeDraggable(String name) {
        draggables.remove(name);
        save();
    }
}
:screamcat::screamcat::screamcat:
ПАСТЕРЫ ДРАГГЕРОВ
 
Начинающий
Статус
Оффлайн
Регистрация
22 Авг 2022
Сообщения
331
Реакции[?]
3
Поинты[?]
3K
Начинающий
Статус
Оффлайн
Регистрация
20 Апр 2021
Сообщения
1,234
Реакции[?]
25
Поинты[?]
38K
Сверху Снизу