Исходник Создаем лоудер на Java | Loader для пастеров

Начинающий
Статус
Оффлайн
Регистрация
7 Мар 2024
Сообщения
294
Реакции[?]
6
Поинты[?]
4K

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

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

Спасибо!

Запасайтесь чипсами, ведь если вы пастер, то вы здесь на долго.
Специально для новичков каждый блок был обозначен, если вам не знакомы некоторые слова советую почитать о них в интернете.

Пожалуйста, авторизуйтесь для просмотра ссылки.

Пожалуйста, авторизуйтесь для просмотра ссылки.

видео с игрой с лоудера

Создаем новый проект с использованием java 17 если у вас чит экспенсив/экселлент и т.д.

1. Создание приложения с инициализацией всего необходимого.

После создание проекта вам нужно добавить в ваш Main класс всю основу

Java:
package loader.starter;

import loader.objects.SettingObject;
import loader.objects.SquareObject;

import javax.swing.*;
import java.awt.*;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/

public class Main {

    /**
     * Главный класс
     * Добавление классов
     */
    public static void main(String[] args) {
        ImageIcon icon = new ImageIcon(Main.class.getResource("/loader/assets/logo.png"));

        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("Loader");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setIconImage(icon.getImage());
            frame.setSize(707, 509);
            frame.setLocationRelativeTo(null);

            frame.setResizable(false);

            JPanel parentPanel = new JPanel(new CardLayout());
            CardLayout cardLayout = (CardLayout) parentPanel.getLayout();

            SquareObject mainPanel = new SquareObject(cardLayout, parentPanel);
            SettingObject settingsPanel = new SettingObject(cardLayout, parentPanel);

            parentPanel.add(mainPanel, "mainPanel");
            parentPanel.add(settingsPanel, "settingsPanel");

            frame.add(parentPanel);
            frame.setVisible(true);
        });
    }
}
2. Создание рендера/конструкторов

Для начала нужно создать класс с цветами которые мы будем использовать, чтобы каждый раз не искать нужный цвет.

Java:
package loader.utils;

import javax.swing.*;
import java.awt.*;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/

/**
* Класс, содержащий все цвета которые можно заюзать
*/
public class ColorUtil extends JPanel {

    public static Color background = new Color(45, 45, 45);

    public static Color headerColor = new Color(29, 29, 31);

    public static Color buttonColor1 = new Color(66, 91, 129);

    public static Color buttonColor2 = new Color(14, 93, 213);
}
Объект рендера главного меню

Java:
package loader.objects;

import loader.objects.buttons.StartButton;
import loader.utils.ColorUtil;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/

/**
* Класс от части всего рендера
*/
public class SquareObject extends JPanel {
    private StartButton startButton;
    private ImageIcon settingsIcon;
    private CardLayout cardLayout;
    private JPanel parentPanel;
    private boolean isRunning = false;
    private boolean isHovered = false;

    /**
     * Конструктор инициализирует главное меню с кнопкой запуска и иконкой настроек
     *
     * @param cardLayout макет для переключения меню
     * @param parentPanel панель для переключения
     */
    public SquareObject(CardLayout cardLayout, JPanel parentPanel) {
        this.cardLayout = cardLayout;
        this.parentPanel = parentPanel;

        /**
         * Рендер заднего фона
         */
        setBackground(ColorUtil.background);
        setLayout(null);

        /**
         * Рендер кнопки "Запустить"
         */
        startButton = new StartButton("Запустить");
        startButton.setBackground(ColorUtil.buttonColor1);
        startButton.setForeground(Color.WHITE);
        startButton.setFont(new Font("Arial", Font.BOLD, 20));

        startButton.setPreferredSize(new Dimension(200, 50));
        startButton.setBounds((707 - 200) / 2, (509 - 50) / 2 + 50, 200, 50);
        add(startButton);

        startButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (!isRunning) {
                    startButton.setBackground(Color.GREEN);
                    startButton.setText("Ожидайте");

                    /**
                     * Запуск майнкрафт в отдельном потоке
                     */
                    new Thread(() -> {
                        loader.starter.Start.main(new String[]{});
                    }).start();

                    isRunning = true;

                    /**
                     * Закрытие лоудера через минуту
                     * Можете поменять значение как вам угодно
                     */
                    Timer timer = new Timer(60000, evt -> {
                        Window window = SwingUtilities.getWindowAncestor(SquareObject.this);
                        if (window != null) {
                            window.dispose();
                        }
                    });
                    timer.setRepeats(false);
                    timer.start();
                }
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                isHovered = true;
                updateButtonAppearance();
            }

            @Override
            public void mouseExited(MouseEvent e) {
                isHovered = false;
                updateButtonAppearance();
            }
        });

        settingsIcon = new ImageIcon(SquareObject.class.getResource("/loader/assets/setting.png"));

        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                int iconX = getWidth() - 50;
                int iconY = 4;
                int iconWidth = 47;
                int iconHeight = 43;

                if (e.getX() >= iconX && e.getX() <= iconX + iconWidth && e.getY() >= iconY && e.getY() <= iconY + iconHeight) {
                    SwingUtilities.invokeLater(() -> cardLayout.show(parentPanel, "settingsPanel"));
                }
            }
        });
    }

    /**
     * Отрисовка компонентов
     *
     * @param g объект Graphics для защиты
     */
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        /**
         * Рендер полосы сверху
         */
        g.setColor(ColorUtil.headerColor);
        g.fillRect(0, 0, getWidth(), 50);

        /**
         * Рендер текста
         */
        String versionText = "v1.0";
        String text = "Minecraft Loader";
        g.setColor(Color.WHITE);

        g.setFont(new Font("Arial", Font.BOLD, 40));
        FontMetrics titleMetrics = g.getFontMetrics(g.getFont());
        int titleX = (getWidth() - titleMetrics.stringWidth(text)) / 2 + 15;
        int titleY = titleMetrics.getHeight() - 6;
        g.drawString(text, titleX, titleY);

        g.setFont(new Font("Arial", Font.BOLD, 20));
        FontMetrics metrics = g.getFontMetrics(g.getFont());
        int x = getWidth() - metrics.stringWidth(versionText) - 10;
        int y = getHeight() - metrics.getHeight() + metrics.getAscent() - 10;
        g.drawString(versionText, x, y);

        if (settingsIcon != null) {
            int iconX = getWidth() - 50;
            int iconY = 4;
            g.drawImage(settingsIcon.getImage(), iconX, iconY, 47, 43, this);
        }
    }

    private void updateButtonAppearance() {
        if (isRunning) {
            startButton.setBackground(Color.GREEN);
            startButton.setText("Ожидайте");
        } else {
            if (isHovered) {
                startButton.setBackground(ColorUtil.buttonColor2);
            } else {
                startButton.setBackground(ColorUtil.buttonColor1);
            }
        }
    }
}
Создание класса объекта меню настроек

Java:
package loader.objects;

import loader.utils.ColorUtil;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.net.URI;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/

/**
* Объект настроек с возможностью возврата к главному меню
*/
public class SettingObject extends JPanel {
    private CardLayout cardLayout;
    private JPanel parentPanel;

    private int clickableTextX = 20;
    private int clickableTextY = 150;
    private int clickableTextWidth = 300;
    private int clickableTextHeight = 20;
    /**
     * Отрисовка меню
     */
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        /**
         * Рендер фона и элементов интерфейса
         */
        setBackground(ColorUtil.background);
        setLayout(null);

        g.setColor(ColorUtil.headerColor);
        g.fillRect(0, 0, getWidth(), 50);

        g.setColor(Color.WHITE);
        g.setFont(new Font("Arial", Font.PLAIN, 20));


        int textX = 20;
        int textY = 100;

        g.drawString("Информация", textX, textY);
        g.drawString("Данный лоудер просто прототип", textX, textY + 30);
        g.drawString("Вы можете наложить свою обфускацию по желанию", textX, textY + 60);

        FontMetrics fm = g.getFontMetrics();
        String clickableText = "Ссылка на канал Tense client";
        int textWidth = fm.stringWidth(clickableText);
        g.setColor(Color.WHITE);
        g.drawString(clickableText, clickableTextX, clickableTextY + 35);


        Rectangle clickableArea = new Rectangle(clickableTextX, clickableTextY - fm.getAscent() + 35, textWidth, fm.getHeight());
        addClickableArea(clickableArea);


    }

    /**
     * Добавляет область кликабельной зоны
     *
     * @param clickableArea кликабельная область
     */
    private void addClickableArea(Rectangle clickableArea) {
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (clickableArea.contains(e.getPoint())) {
                    openBrowser("https://www.youtube.com/@rarchik/videos");
                }
            }
        });
    }

    /**
     * Открывает браузер с указанной ссылкой
     *
     * @param url URL для открытия в браузере
     */
    private void openBrowser(String url) {
        try {
            Desktop.getDesktop().browse(new URI(url));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    /**
     * Конструктор кнопки возврата
     *
     * @param cardLayout макет для переключения панелей
     * @param parentPanel панель для переключения
     */
    public SettingObject(CardLayout cardLayout, JPanel parentPanel) {
        this.cardLayout = cardLayout;
        this.parentPanel = parentPanel;

        JLabel backButton = new JLabel(new ImageIcon(SettingObject.class.getResource("/loader/assets/back_arrow.png")));
        backButton.setBounds(10, 10, 100, 100);
        backButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                SwingUtilities.invokeLater(() -> cardLayout.show(parentPanel, "mainPanel"));
            }
        });
        add(backButton);

        JLabel settingsLabel = new JLabel("Настройки", SwingConstants.CENTER);
        settingsLabel.setFont(new Font("Arial", Font.BOLD, 40));
        settingsLabel.setForeground(Color.WHITE);
        settingsLabel.setBounds(0, 50, getWidth(), 50);
        add(settingsLabel);

    }
}
Класс кнопки старта

Java:
package loader.objects.buttons;

import loader.utils.ColorUtil;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.RoundRectangle2D;

/** @author BossThisGame for product tense
* <p>
*  Version 1.0
* <p>
* Minecraft loader
*/

/**
* Добавление кнопки "Запуск"
*/
public class StartButton extends JButton {

    public StartButton(String text) {
        super(text);
        setContentAreaFilled(false);
        setFocusPainted(false);

        /**
         * Установка стандартных цветов фона и текста
         */
        setBackground(ColorUtil.buttonColor1);
        setForeground(Color.WHITE);


        /**
         * Обработчик событий мыши для эффекта наведения
         */
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                setBackground(ColorUtil.buttonColor2);
            }

            @Override
            public void mouseExited(MouseEvent e) {
                setBackground(ColorUtil.buttonColor1);
            }
        });


        /**
         * Установка шрифта для текста кнопки
         */
        setFont(new Font("Arial", Font.BOLD, 20));
    }

    /**
     * Кастомное рисование компонента кнопки
     *
     * @param g объект Graphics для защиты
     */
    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g.create();
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g2.setColor(getBackground());
        g2.fill(new RoundRectangle2D.Float(0, 0, getWidth(), getHeight(), 30, 30));
        super.paintComponent(g2);
        g2.dispose();
    }

    /**
     * Обновление свойств кнопки
     */
    @Override
    public void updateUI() {
        super.updateUI();
        setOpaque(false);
        setBorder(BorderFactory.createEmptyBorder(5, 15, 5, 15));
    }
}
Java:
package loader.starter;

import java.util.Arrays;

import net.minecraft.client.main.Main;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/



public class Start
{


    public static void main(String[] args)
    {
        String assets = System.getenv().containsKey("assetDirectory") ? System.getenv("assetDirectory") : "assets";
        Main.main(concat(new String[] {"--version", "mcp", "--accessToken", "0", "--assetsDir", assets, "--assetIndex", "1.16", "--userProperties", "{}"}, args));
    }

   
    public static <T> T[] concat(T[] first, T[] second)
    {
        T[] result = Arrays.copyOf(first, first.length + second.length);
        System.arraycopy(second, 0, result, first.length, second.length);
        return result;
    }
}
3. Нужно создать папку с ресурсами (png)
Можете сделать как у меня
1719836862765.png

Дальше обязательно нужно сделать манифест чтобы лоудер можно было запускать как исполняемый файл
1719837002446.png

Код:
Manifest-Version: 1.0
Can-Retransform-Classes: true
Main-Class: loader.starter.Main
SplashScreen-Image: l.png
Дальше нужно создать директорию где будет хранится ваш чит. У меня это будет здесь (Не забудьте про нативки)
1719837215929.png


Дальше использую imgur так как на форуме лимит загрузки изображений

Нужно добавить вашу джарку в библиотеку
Пожалуйста, авторизуйтесь для просмотра ссылки.


Теперь осталось забилдить проект. Заходим в
Пожалуйста, авторизуйтесь для просмотра ссылки.


Создаем новый
Пожалуйста, авторизуйтесь для просмотра ссылки.


Дальше можно выбрать название с каким названием будет сохранятся ваша джарка (НЕ ОБЯЗАТЕЛЬНО)

И делаем как на
Пожалуйста, авторизуйтесь для просмотра ссылки.


Важно: С какой джавы вы билдили проект с такой джавы и нужно запускать джарку

Сохраняем,
Пожалуйста, авторизуйтесь для просмотра ссылки.
Build - Build Artifacts и выбираем наш артифакт

После билда можете запускать ваш лоудер.

Так же не пишите мне за ассетсы майнкрафта, к примеру в Экселленте ассесты грузятся из диска C, а добавить их самостоятельно вы и сами сможете.
Пожалуйста, авторизуйтесь для просмотра ссылки.


Я вам не скинул целый уже готовый проект чтобы вы поняли как это делать. Удачи. Так же вы должны учесть, что это не протект лоудер. Здесь нету проверки хвида и т.д. Систему хвида сделать не сложно, поэтому используйте лоудер как хотите
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
16 Дек 2023
Сообщения
492
Реакции[?]
8
Поинты[?]
4K
Запасайтесь чипсами, ведь если вы пастер, то вы здесь на долго.
Специально для новичков каждый блок был обозначен, если вам не знакомы некоторые слова советую почитать о них в интернете.

Пожалуйста, авторизуйтесь для просмотра ссылки.

Пожалуйста, авторизуйтесь для просмотра ссылки.

видео с игрой с лоудера

Создаем новый проект с использованием java 17 если у вас чит экспенсив/экселлент и т.д.

1. Создание приложения с инициализацией всего необходимого.

После создание проекта вам нужно добавить в ваш Main класс всю основу

Java:
package loader.starter;

import loader.objects.SettingObject;
import loader.objects.SquareObject;

import javax.swing.*;
import java.awt.*;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/

public class Main {

    /**
     * Главный класс
     * Добавление классов
     */
    public static void main(String[] args) {
        ImageIcon icon = new ImageIcon(Main.class.getResource("/loader/assets/logo.png"));

        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("Loader");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setIconImage(icon.getImage());
            frame.setSize(707, 509);
            frame.setLocationRelativeTo(null);

            frame.setResizable(false);

            JPanel parentPanel = new JPanel(new CardLayout());
            CardLayout cardLayout = (CardLayout) parentPanel.getLayout();

            SquareObject mainPanel = new SquareObject(cardLayout, parentPanel);
            SettingObject settingsPanel = new SettingObject(cardLayout, parentPanel);

            parentPanel.add(mainPanel, "mainPanel");
            parentPanel.add(settingsPanel, "settingsPanel");

            frame.add(parentPanel);
            frame.setVisible(true);
        });
    }
}
2. Создание рендера/конструкторов

Для начала нужно создать класс с цветами которые мы будем использовать, чтобы каждый раз не искать нужный цвет.

Java:
package loader.utils;

import javax.swing.*;
import java.awt.*;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/

/**
* Класс, содержащий все цвета которые можно заюзать
*/
public class ColorUtil extends JPanel {

    public static Color background = new Color(45, 45, 45);

    public static Color headerColor = new Color(29, 29, 31);

    public static Color buttonColor1 = new Color(66, 91, 129);

    public static Color buttonColor2 = new Color(14, 93, 213);
}
Объект рендера главного меню

Java:
package loader.objects;

import loader.objects.buttons.StartButton;
import loader.utils.ColorUtil;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/

/**
* Класс от части всего рендера
*/
public class SquareObject extends JPanel {
    private StartButton startButton;
    private ImageIcon settingsIcon;
    private CardLayout cardLayout;
    private JPanel parentPanel;
    private boolean isRunning = false;
    private boolean isHovered = false;

    /**
     * Конструктор инициализирует главное меню с кнопкой запуска и иконкой настроек
     *
     * @param cardLayout макет для переключения меню
     * @param parentPanel панель для переключения
     */
    public SquareObject(CardLayout cardLayout, JPanel parentPanel) {
        this.cardLayout = cardLayout;
        this.parentPanel = parentPanel;

        /**
         * Рендер заднего фона
         */
        setBackground(ColorUtil.background);
        setLayout(null);

        /**
         * Рендер кнопки "Запустить"
         */
        startButton = new StartButton("Запустить");
        startButton.setBackground(ColorUtil.buttonColor1);
        startButton.setForeground(Color.WHITE);
        startButton.setFont(new Font("Arial", Font.BOLD, 20));

        startButton.setPreferredSize(new Dimension(200, 50));
        startButton.setBounds((707 - 200) / 2, (509 - 50) / 2 + 50, 200, 50);
        add(startButton);

        startButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (!isRunning) {
                    startButton.setBackground(Color.GREEN);
                    startButton.setText("Ожидайте");

                    /**
                     * Запуск майнкрафт в отдельном потоке
                     */
                    new Thread(() -> {
                        loader.starter.Start.main(new String[]{});
                    }).start();

                    isRunning = true;

                    /**
                     * Закрытие лоудера через минуту
                     * Можете поменять значение как вам угодно
                     */
                    Timer timer = new Timer(60000, evt -> {
                        Window window = SwingUtilities.getWindowAncestor(SquareObject.this);
                        if (window != null) {
                            window.dispose();
                        }
                    });
                    timer.setRepeats(false);
                    timer.start();
                }
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                isHovered = true;
                updateButtonAppearance();
            }

            @Override
            public void mouseExited(MouseEvent e) {
                isHovered = false;
                updateButtonAppearance();
            }
        });

        settingsIcon = new ImageIcon(SquareObject.class.getResource("/loader/assets/setting.png"));

        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                int iconX = getWidth() - 50;
                int iconY = 4;
                int iconWidth = 47;
                int iconHeight = 43;

                if (e.getX() >= iconX && e.getX() <= iconX + iconWidth && e.getY() >= iconY && e.getY() <= iconY + iconHeight) {
                    SwingUtilities.invokeLater(() -> cardLayout.show(parentPanel, "settingsPanel"));
                }
            }
        });
    }

    /**
     * Отрисовка компонентов
     *
     * @param g объект Graphics для защиты
     */
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        /**
         * Рендер полосы сверху
         */
        g.setColor(ColorUtil.headerColor);
        g.fillRect(0, 0, getWidth(), 50);

        /**
         * Рендер текста
         */
        String versionText = "v1.0";
        String text = "Minecraft Loader";
        g.setColor(Color.WHITE);

        g.setFont(new Font("Arial", Font.BOLD, 40));
        FontMetrics titleMetrics = g.getFontMetrics(g.getFont());
        int titleX = (getWidth() - titleMetrics.stringWidth(text)) / 2 + 15;
        int titleY = titleMetrics.getHeight() - 6;
        g.drawString(text, titleX, titleY);

        g.setFont(new Font("Arial", Font.BOLD, 20));
        FontMetrics metrics = g.getFontMetrics(g.getFont());
        int x = getWidth() - metrics.stringWidth(versionText) - 10;
        int y = getHeight() - metrics.getHeight() + metrics.getAscent() - 10;
        g.drawString(versionText, x, y);

        if (settingsIcon != null) {
            int iconX = getWidth() - 50;
            int iconY = 4;
            g.drawImage(settingsIcon.getImage(), iconX, iconY, 47, 43, this);
        }
    }

    private void updateButtonAppearance() {
        if (isRunning) {
            startButton.setBackground(Color.GREEN);
            startButton.setText("Ожидайте");
        } else {
            if (isHovered) {
                startButton.setBackground(ColorUtil.buttonColor2);
            } else {
                startButton.setBackground(ColorUtil.buttonColor1);
            }
        }
    }
}
Создание класса объекта меню настроек

Java:
package loader.objects;

import loader.utils.ColorUtil;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.net.URI;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/

/**
* Объект настроек с возможностью возврата к главному меню
*/
public class SettingObject extends JPanel {
    private CardLayout cardLayout;
    private JPanel parentPanel;

    private int clickableTextX = 20;
    private int clickableTextY = 150;
    private int clickableTextWidth = 300;
    private int clickableTextHeight = 20;
    /**
     * Отрисовка меню
     */
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        /**
         * Рендер фона и элементов интерфейса
         */
        setBackground(ColorUtil.background);
        setLayout(null);

        g.setColor(ColorUtil.headerColor);
        g.fillRect(0, 0, getWidth(), 50);

        g.setColor(Color.WHITE);
        g.setFont(new Font("Arial", Font.PLAIN, 20));


        int textX = 20;
        int textY = 100;

        g.drawString("Информация", textX, textY);
        g.drawString("Данный лоудер просто прототип", textX, textY + 30);
        g.drawString("Вы можете наложить свою обфускацию по желанию", textX, textY + 60);

        FontMetrics fm = g.getFontMetrics();
        String clickableText = "Ссылка на канал Tense client";
        int textWidth = fm.stringWidth(clickableText);
        g.setColor(Color.WHITE);
        g.drawString(clickableText, clickableTextX, clickableTextY + 35);


        Rectangle clickableArea = new Rectangle(clickableTextX, clickableTextY - fm.getAscent() + 35, textWidth, fm.getHeight());
        addClickableArea(clickableArea);


    }

    /**
     * Добавляет область кликабельной зоны
     *
     * @param clickableArea кликабельная область
     */
    private void addClickableArea(Rectangle clickableArea) {
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (clickableArea.contains(e.getPoint())) {
                    openBrowser("https://www.youtube.com/@rarchik/videos");
                }
            }
        });
    }

    /**
     * Открывает браузер с указанной ссылкой
     *
     * @param url URL для открытия в браузере
     */
    private void openBrowser(String url) {
        try {
            Desktop.getDesktop().browse(new URI(url));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    /**
     * Конструктор кнопки возврата
     *
     * @param cardLayout макет для переключения панелей
     * @param parentPanel панель для переключения
     */
    public SettingObject(CardLayout cardLayout, JPanel parentPanel) {
        this.cardLayout = cardLayout;
        this.parentPanel = parentPanel;

        JLabel backButton = new JLabel(new ImageIcon(SettingObject.class.getResource("/loader/assets/back_arrow.png")));
        backButton.setBounds(10, 10, 100, 100);
        backButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                SwingUtilities.invokeLater(() -> cardLayout.show(parentPanel, "mainPanel"));
            }
        });
        add(backButton);

        JLabel settingsLabel = new JLabel("Настройки", SwingConstants.CENTER);
        settingsLabel.setFont(new Font("Arial", Font.BOLD, 40));
        settingsLabel.setForeground(Color.WHITE);
        settingsLabel.setBounds(0, 50, getWidth(), 50);
        add(settingsLabel);

    }
}
Класс кнопки старта

Java:
package loader.objects.buttons;

import loader.utils.ColorUtil;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.RoundRectangle2D;

/** @author BossThisGame for product tense
* <p>
*  Version 1.0
* <p>
* Minecraft loader
*/

/**
* Добавление кнопки "Запуск"
*/
public class StartButton extends JButton {

    public StartButton(String text) {
        super(text);
        setContentAreaFilled(false);
        setFocusPainted(false);

        /**
         * Установка стандартных цветов фона и текста
         */
        setBackground(ColorUtil.buttonColor1);
        setForeground(Color.WHITE);


        /**
         * Обработчик событий мыши для эффекта наведения
         */
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                setBackground(ColorUtil.buttonColor2);
            }

            @Override
            public void mouseExited(MouseEvent e) {
                setBackground(ColorUtil.buttonColor1);
            }
        });


        /**
         * Установка шрифта для текста кнопки
         */
        setFont(new Font("Arial", Font.BOLD, 20));
    }

    /**
     * Кастомное рисование компонента кнопки
     *
     * @param g объект Graphics для защиты
     */
    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g.create();
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g2.setColor(getBackground());
        g2.fill(new RoundRectangle2D.Float(0, 0, getWidth(), getHeight(), 30, 30));
        super.paintComponent(g2);
        g2.dispose();
    }

    /**
     * Обновление свойств кнопки
     */
    @Override
    public void updateUI() {
        super.updateUI();
        setOpaque(false);
        setBorder(BorderFactory.createEmptyBorder(5, 15, 5, 15));
    }
}
Java:
package loader.starter;

import java.util.Arrays;

import net.minecraft.client.main.Main;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/



public class Start
{


    public static void main(String[] args)
    {
        String assets = System.getenv().containsKey("assetDirectory") ? System.getenv("assetDirectory") : "assets";
        Main.main(concat(new String[] {"--version", "mcp", "--accessToken", "0", "--assetsDir", assets, "--assetIndex", "1.16", "--userProperties", "{}"}, args));
    }

 
    public static <T> T[] concat(T[] first, T[] second)
    {
        T[] result = Arrays.copyOf(first, first.length + second.length);
        System.arraycopy(second, 0, result, first.length, second.length);
        return result;
    }
}
3. Нужно создать папку с ресурсами (png)
Можете сделать как у меня
Посмотреть вложение 280336

Дальше обязательно нужно сделать манифест чтобы лоудер можно было запускать как исполняемый файл
Посмотреть вложение 280338

Код:
Manifest-Version: 1.0
Can-Retransform-Classes: true
Main-Class: loader.starter.Main
SplashScreen-Image: l.png
Дальше нужно создать директорию где будет хранится ваш чит. У меня это будет здесь (Не забудьте про нативки)
Посмотреть вложение 280339


Дальше использую imgur так как на форуме лимит загрузки изображений

Нужно добавить вашу джарку в библиотеку
Пожалуйста, авторизуйтесь для просмотра ссылки.


Теперь осталось забилдить проект. Заходим в
Пожалуйста, авторизуйтесь для просмотра ссылки.


Создаем новый
Пожалуйста, авторизуйтесь для просмотра ссылки.


Дальше можно выбрать название с каким названием будет сохранятся ваша джарка (НЕ ОБЯЗАТЕЛЬНО)

И делаем как на
Пожалуйста, авторизуйтесь для просмотра ссылки.


Важно: С какой джавы вы билдили проект с такой джавы и нужно запускать джарку

Сохраняем,
Пожалуйста, авторизуйтесь для просмотра ссылки.
Build - Build Artifacts и выбираем наш артифакт

После билда можете запускать ваш лоудер.

Так же не пишите мне за ассетсы майнкрафта, к примеру в Экселленте ассесты грузятся из диска C, а добавить их самостоятельно вы и сами сможете.
Пожалуйста, авторизуйтесь для просмотра ссылки.


Я вам не скинул целый уже готовый проект чтобы вы поняли как это делать. Удачи. Так же вы должны учесть, что это не протект лоудер. Здесь нету проверки хвида и т.д. Систему хвида сделать не сложно, поэтому используйте лоудер как хотите
?
1719912109396.png
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
7 Мар 2024
Сообщения
294
Реакции[?]
6
Поинты[?]
4K
Начинающий
Статус
Оффлайн
Регистрация
7 Мар 2024
Сообщения
294
Реакции[?]
6
Поинты[?]
4K
(◣_◢)
Участник
Статус
Оффлайн
Регистрация
1 Фев 2021
Сообщения
447
Реакции[?]
152
Поинты[?]
71K
Пастер на Hunger обиделся? Он так и не разобрался в умном инвентори клеанере
нет просто это хуйня и все) ебать в рот, я понимаю что ты пытаешься себя успокоить напридумав хуйни ебаной, но нет, я лишь просто написал что это хуйня полная, ни больше ни меньше.
 
minced client
Read Only
Статус
Оффлайн
Регистрация
8 Май 2022
Сообщения
616
Реакции[?]
61
Поинты[?]
2K
Запасайтесь чипсами, ведь если вы пастер, то вы здесь на долго.
Специально для новичков каждый блок был обозначен, если вам не знакомы некоторые слова советую почитать о них в интернете.

Пожалуйста, авторизуйтесь для просмотра ссылки.

Пожалуйста, авторизуйтесь для просмотра ссылки.

видео с игрой с лоудера

Создаем новый проект с использованием java 17 если у вас чит экспенсив/экселлент и т.д.

1. Создание приложения с инициализацией всего необходимого.

После создание проекта вам нужно добавить в ваш Main класс всю основу

Java:
package loader.starter;

import loader.objects.SettingObject;
import loader.objects.SquareObject;

import javax.swing.*;
import java.awt.*;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/

public class Main {

    /**
     * Главный класс
     * Добавление классов
     */
    public static void main(String[] args) {
        ImageIcon icon = new ImageIcon(Main.class.getResource("/loader/assets/logo.png"));

        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("Loader");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setIconImage(icon.getImage());
            frame.setSize(707, 509);
            frame.setLocationRelativeTo(null);

            frame.setResizable(false);

            JPanel parentPanel = new JPanel(new CardLayout());
            CardLayout cardLayout = (CardLayout) parentPanel.getLayout();

            SquareObject mainPanel = new SquareObject(cardLayout, parentPanel);
            SettingObject settingsPanel = new SettingObject(cardLayout, parentPanel);

            parentPanel.add(mainPanel, "mainPanel");
            parentPanel.add(settingsPanel, "settingsPanel");

            frame.add(parentPanel);
            frame.setVisible(true);
        });
    }
}
2. Создание рендера/конструкторов

Для начала нужно создать класс с цветами которые мы будем использовать, чтобы каждый раз не искать нужный цвет.

Java:
package loader.utils;

import javax.swing.*;
import java.awt.*;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/

/**
* Класс, содержащий все цвета которые можно заюзать
*/
public class ColorUtil extends JPanel {

    public static Color background = new Color(45, 45, 45);

    public static Color headerColor = new Color(29, 29, 31);

    public static Color buttonColor1 = new Color(66, 91, 129);

    public static Color buttonColor2 = new Color(14, 93, 213);
}
Объект рендера главного меню

Java:
package loader.objects;

import loader.objects.buttons.StartButton;
import loader.utils.ColorUtil;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/

/**
* Класс от части всего рендера
*/
public class SquareObject extends JPanel {
    private StartButton startButton;
    private ImageIcon settingsIcon;
    private CardLayout cardLayout;
    private JPanel parentPanel;
    private boolean isRunning = false;
    private boolean isHovered = false;

    /**
     * Конструктор инициализирует главное меню с кнопкой запуска и иконкой настроек
     *
     * @param cardLayout макет для переключения меню
     * @param parentPanel панель для переключения
     */
    public SquareObject(CardLayout cardLayout, JPanel parentPanel) {
        this.cardLayout = cardLayout;
        this.parentPanel = parentPanel;

        /**
         * Рендер заднего фона
         */
        setBackground(ColorUtil.background);
        setLayout(null);

        /**
         * Рендер кнопки "Запустить"
         */
        startButton = new StartButton("Запустить");
        startButton.setBackground(ColorUtil.buttonColor1);
        startButton.setForeground(Color.WHITE);
        startButton.setFont(new Font("Arial", Font.BOLD, 20));

        startButton.setPreferredSize(new Dimension(200, 50));
        startButton.setBounds((707 - 200) / 2, (509 - 50) / 2 + 50, 200, 50);
        add(startButton);

        startButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (!isRunning) {
                    startButton.setBackground(Color.GREEN);
                    startButton.setText("Ожидайте");

                    /**
                     * Запуск майнкрафт в отдельном потоке
                     */
                    new Thread(() -> {
                        loader.starter.Start.main(new String[]{});
                    }).start();

                    isRunning = true;

                    /**
                     * Закрытие лоудера через минуту
                     * Можете поменять значение как вам угодно
                     */
                    Timer timer = new Timer(60000, evt -> {
                        Window window = SwingUtilities.getWindowAncestor(SquareObject.this);
                        if (window != null) {
                            window.dispose();
                        }
                    });
                    timer.setRepeats(false);
                    timer.start();
                }
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                isHovered = true;
                updateButtonAppearance();
            }

            @Override
            public void mouseExited(MouseEvent e) {
                isHovered = false;
                updateButtonAppearance();
            }
        });

        settingsIcon = new ImageIcon(SquareObject.class.getResource("/loader/assets/setting.png"));

        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                int iconX = getWidth() - 50;
                int iconY = 4;
                int iconWidth = 47;
                int iconHeight = 43;

                if (e.getX() >= iconX && e.getX() <= iconX + iconWidth && e.getY() >= iconY && e.getY() <= iconY + iconHeight) {
                    SwingUtilities.invokeLater(() -> cardLayout.show(parentPanel, "settingsPanel"));
                }
            }
        });
    }

    /**
     * Отрисовка компонентов
     *
     * @param g объект Graphics для защиты
     */
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        /**
         * Рендер полосы сверху
         */
        g.setColor(ColorUtil.headerColor);
        g.fillRect(0, 0, getWidth(), 50);

        /**
         * Рендер текста
         */
        String versionText = "v1.0";
        String text = "Minecraft Loader";
        g.setColor(Color.WHITE);

        g.setFont(new Font("Arial", Font.BOLD, 40));
        FontMetrics titleMetrics = g.getFontMetrics(g.getFont());
        int titleX = (getWidth() - titleMetrics.stringWidth(text)) / 2 + 15;
        int titleY = titleMetrics.getHeight() - 6;
        g.drawString(text, titleX, titleY);

        g.setFont(new Font("Arial", Font.BOLD, 20));
        FontMetrics metrics = g.getFontMetrics(g.getFont());
        int x = getWidth() - metrics.stringWidth(versionText) - 10;
        int y = getHeight() - metrics.getHeight() + metrics.getAscent() - 10;
        g.drawString(versionText, x, y);

        if (settingsIcon != null) {
            int iconX = getWidth() - 50;
            int iconY = 4;
            g.drawImage(settingsIcon.getImage(), iconX, iconY, 47, 43, this);
        }
    }

    private void updateButtonAppearance() {
        if (isRunning) {
            startButton.setBackground(Color.GREEN);
            startButton.setText("Ожидайте");
        } else {
            if (isHovered) {
                startButton.setBackground(ColorUtil.buttonColor2);
            } else {
                startButton.setBackground(ColorUtil.buttonColor1);
            }
        }
    }
}
Создание класса объекта меню настроек

Java:
package loader.objects;

import loader.utils.ColorUtil;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.net.URI;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/

/**
* Объект настроек с возможностью возврата к главному меню
*/
public class SettingObject extends JPanel {
    private CardLayout cardLayout;
    private JPanel parentPanel;

    private int clickableTextX = 20;
    private int clickableTextY = 150;
    private int clickableTextWidth = 300;
    private int clickableTextHeight = 20;
    /**
     * Отрисовка меню
     */
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        /**
         * Рендер фона и элементов интерфейса
         */
        setBackground(ColorUtil.background);
        setLayout(null);

        g.setColor(ColorUtil.headerColor);
        g.fillRect(0, 0, getWidth(), 50);

        g.setColor(Color.WHITE);
        g.setFont(new Font("Arial", Font.PLAIN, 20));


        int textX = 20;
        int textY = 100;

        g.drawString("Информация", textX, textY);
        g.drawString("Данный лоудер просто прототип", textX, textY + 30);
        g.drawString("Вы можете наложить свою обфускацию по желанию", textX, textY + 60);

        FontMetrics fm = g.getFontMetrics();
        String clickableText = "Ссылка на канал Tense client";
        int textWidth = fm.stringWidth(clickableText);
        g.setColor(Color.WHITE);
        g.drawString(clickableText, clickableTextX, clickableTextY + 35);


        Rectangle clickableArea = new Rectangle(clickableTextX, clickableTextY - fm.getAscent() + 35, textWidth, fm.getHeight());
        addClickableArea(clickableArea);


    }

    /**
     * Добавляет область кликабельной зоны
     *
     * @param clickableArea кликабельная область
     */
    private void addClickableArea(Rectangle clickableArea) {
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (clickableArea.contains(e.getPoint())) {
                    openBrowser("https://www.youtube.com/@rarchik/videos");
                }
            }
        });
    }

    /**
     * Открывает браузер с указанной ссылкой
     *
     * @param url URL для открытия в браузере
     */
    private void openBrowser(String url) {
        try {
            Desktop.getDesktop().browse(new URI(url));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    /**
     * Конструктор кнопки возврата
     *
     * @param cardLayout макет для переключения панелей
     * @param parentPanel панель для переключения
     */
    public SettingObject(CardLayout cardLayout, JPanel parentPanel) {
        this.cardLayout = cardLayout;
        this.parentPanel = parentPanel;

        JLabel backButton = new JLabel(new ImageIcon(SettingObject.class.getResource("/loader/assets/back_arrow.png")));
        backButton.setBounds(10, 10, 100, 100);
        backButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                SwingUtilities.invokeLater(() -> cardLayout.show(parentPanel, "mainPanel"));
            }
        });
        add(backButton);

        JLabel settingsLabel = new JLabel("Настройки", SwingConstants.CENTER);
        settingsLabel.setFont(new Font("Arial", Font.BOLD, 40));
        settingsLabel.setForeground(Color.WHITE);
        settingsLabel.setBounds(0, 50, getWidth(), 50);
        add(settingsLabel);

    }
}
Класс кнопки старта

Java:
package loader.objects.buttons;

import loader.utils.ColorUtil;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.RoundRectangle2D;

/** @author BossThisGame for product tense
* <p>
*  Version 1.0
* <p>
* Minecraft loader
*/

/**
* Добавление кнопки "Запуск"
*/
public class StartButton extends JButton {

    public StartButton(String text) {
        super(text);
        setContentAreaFilled(false);
        setFocusPainted(false);

        /**
         * Установка стандартных цветов фона и текста
         */
        setBackground(ColorUtil.buttonColor1);
        setForeground(Color.WHITE);


        /**
         * Обработчик событий мыши для эффекта наведения
         */
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                setBackground(ColorUtil.buttonColor2);
            }

            @Override
            public void mouseExited(MouseEvent e) {
                setBackground(ColorUtil.buttonColor1);
            }
        });


        /**
         * Установка шрифта для текста кнопки
         */
        setFont(new Font("Arial", Font.BOLD, 20));
    }

    /**
     * Кастомное рисование компонента кнопки
     *
     * @param g объект Graphics для защиты
     */
    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g.create();
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g2.setColor(getBackground());
        g2.fill(new RoundRectangle2D.Float(0, 0, getWidth(), getHeight(), 30, 30));
        super.paintComponent(g2);
        g2.dispose();
    }

    /**
     * Обновление свойств кнопки
     */
    @Override
    public void updateUI() {
        super.updateUI();
        setOpaque(false);
        setBorder(BorderFactory.createEmptyBorder(5, 15, 5, 15));
    }
}
Java:
package loader.starter;

import java.util.Arrays;

import net.minecraft.client.main.Main;

/** @author BossThisGame for product tense
* <p>
* Version 1.0
* <p>
* Minecraft loader
*/



public class Start
{


    public static void main(String[] args)
    {
        String assets = System.getenv().containsKey("assetDirectory") ? System.getenv("assetDirectory") : "assets";
        Main.main(concat(new String[] {"--version", "mcp", "--accessToken", "0", "--assetsDir", assets, "--assetIndex", "1.16", "--userProperties", "{}"}, args));
    }

  
    public static <T> T[] concat(T[] first, T[] second)
    {
        T[] result = Arrays.copyOf(first, first.length + second.length);
        System.arraycopy(second, 0, result, first.length, second.length);
        return result;
    }
}
3. Нужно создать папку с ресурсами (png)
Можете сделать как у меня
Посмотреть вложение 280336

Дальше обязательно нужно сделать манифест чтобы лоудер можно было запускать как исполняемый файл
Посмотреть вложение 280338

Код:
Manifest-Version: 1.0
Can-Retransform-Classes: true
Main-Class: loader.starter.Main
SplashScreen-Image: l.png
Дальше нужно создать директорию где будет хранится ваш чит. У меня это будет здесь (Не забудьте про нативки)
Посмотреть вложение 280339


Дальше использую imgur так как на форуме лимит загрузки изображений

Нужно добавить вашу джарку в библиотеку
Пожалуйста, авторизуйтесь для просмотра ссылки.


Теперь осталось забилдить проект. Заходим в
Пожалуйста, авторизуйтесь для просмотра ссылки.


Создаем новый
Пожалуйста, авторизуйтесь для просмотра ссылки.


Дальше можно выбрать название с каким названием будет сохранятся ваша джарка (НЕ ОБЯЗАТЕЛЬНО)

И делаем как на
Пожалуйста, авторизуйтесь для просмотра ссылки.


Важно: С какой джавы вы билдили проект с такой джавы и нужно запускать джарку

Сохраняем,
Пожалуйста, авторизуйтесь для просмотра ссылки.
Build - Build Artifacts и выбираем наш артифакт

После билда можете запускать ваш лоудер.

Так же не пишите мне за ассетсы майнкрафта, к примеру в Экселленте ассесты грузятся из диска C, а добавить их самостоятельно вы и сами сможете.
Пожалуйста, авторизуйтесь для просмотра ссылки.


Я вам не скинул целый уже готовый проект чтобы вы поняли как это делать. Удачи. Так же вы должны учесть, что это не протект лоудер. Здесь нету проверки хвида и т.д. Систему хвида сделать не сложно, поэтому используйте лоудер как хотите
НЕ чат гпт ЯВНО БЛЯТЬ) ВЫЕБНУЛСЯ НАХУЙ)
 
Пользователь
Статус
Оффлайн
Регистрация
7 Фев 2024
Сообщения
143
Реакции[?]
32
Поинты[?]
12K
Нестандартное звание?
Пользователь
Статус
Оффлайн
Регистрация
23 Июл 2021
Сообщения
421
Реакции[?]
81
Поинты[?]
2K
Начните писать лоадер на плюсах, скорее всего в ваших руках он проживет дольше, нежели чем на Java. Никто вам не запрещает также и писать на самой Java, либо мазохистам Python, но задумайтесь, как будет лучше)
 
Начинающий
Статус
Оффлайн
Регистрация
7 Мар 2024
Сообщения
294
Реакции[?]
6
Поинты[?]
4K
Начните писать лоадер на плюсах, скорее всего в ваших руках он проживет дольше, нежели чем на Java. Никто вам не запрещает также и писать на самой Java, либо мазохистам Python, но задумайтесь, как будет лучше)
Тогда что ты скажешь на счет DoomsDay ?
твой лоадер бесполезный, боюсь представить кто им пользоваться будет
Ни кто не запрщал делать его полезным. Просто зачем открывать легаси и что-то там настраивать. Открыл джарку, нажал запустить и всё
 
Нестандартное звание?
Пользователь
Статус
Оффлайн
Регистрация
23 Июл 2021
Сообщения
421
Реакции[?]
81
Поинты[?]
2K
Тогда что ты скажешь на счет DoomsDay ?

Ни кто не запрщал делать его полезным. Просто зачем открывать легаси и что-то там настраивать. Открыл джарку, нажал запустить и всё
Хах) Ничего не смогу сказать насчет этого)
 
Начинающий
Статус
Оффлайн
Регистрация
7 Мар 2024
Сообщения
294
Реакции[?]
6
Поинты[?]
4K
НЕ чат гпт ЯВНО БЛЯТЬ) ВЫЕБНУЛСЯ НАХУЙ)
Не всё в этом мире чат гпт сделает, я искренне надеюсь что ты когда ни будь это поймешь
Хах) Ничего не смогу сказать насчет этого)
Ну проект существует 6 лет, у него лоудер на Java написан. Ни разу слив срц не было, взломов дампов хуямпов. Типо в чем проблема, это зависит от человека который юзать будет
нет просто это хуйня и все) ебать в рот, я понимаю что ты пытаешься себя успокоить напридумав хуйни ебаной, но нет, я лишь просто написал что это хуйня полная, ни больше ни меньше.
Это хуйня полная только потому, что ты не представляешь как это заюзать можно? Это же чистый прототип, а как человек им распоряжаться будет это ужее другой диалог
я ебу? У меня 17 с идеи а не в винде
скачай
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
7 Мар 2024
Сообщения
294
Реакции[?]
6
Поинты[?]
4K
Нахуя ты опрадываешь свою тупость и сравниваешь свое ебанное дерьмо с Doomsday) Сидит поеботу пишет, сидя с чат гпт)
:roflanEbalo:
Тебя что роняли или ты читать не умеешь
 
Начинающий
Статус
Оффлайн
Регистрация
8 Апр 2023
Сообщения
217
Реакции[?]
20
Поинты[?]
23K
Код:
/**
* Класс, содержащий все цвета которые можно заюзать
*/
public class ColorUtil extends JPanel {

    public static Color background = new Color(45, 45, 45);

    public static Color headerColor = new Color(29, 29, 31);

    public static Color buttonColor1 = new Color(66, 91, 129);

    public static Color buttonColor2 = new Color(14, 93, 213);
}
бля а класс ColorUtil обязательно от JPanel наследовать?
 
Начинающий
Статус
Оффлайн
Регистрация
29 Авг 2022
Сообщения
64
Реакции[?]
1
Поинты[?]
0
Не всё в этом мире чат гпт сделает, я искренне надеюсь что ты когда ни будь это поймешь

Ну проект существует 6 лет, у него лоудер на Java написан. Ни разу слив срц не было, взломов дампов хуямпов. Типо в чем проблема, это зависит от человека который юзать будет

Это хуйня полная только потому, что ты не представляешь как это заюзать можно? Это же чистый прототип, а как человек им распоряжаться будет это ужее другой диалог

скачай
Проект хуетень значит раз его не тронули
 
Сверху Снизу