Гайд Гайд на адекватное Discord RPC с отображением гифок,сервера.

Read Only
Статус
Оффлайн
Регистрация
29 Апр 2023
Сообщения
1,002
Реакции[?]
17
Поинты[?]
22K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

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

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

Спасибо!

Привет еще раз,обитатели раздела.
Сейчас дропаю вам гайд на дискорд РПС

- 1735305011259.png -

Расписываю по шагам для удобства
1.Нужно скачать библиотеки для discord RPC(в случае с базой expensive, библиотека от club.minnced - установлена)
2.Создать класс где будет хранится наш RPC ( у меня это Client Util в которой храняться все нужные переменные для работы с клиентом)
3.Когда создали класс,нужно имплементировать в него IMinecraft ,чтоб использовать пэкетж mc.
это выглядит так:
- 1735305318500.png -
*так же нужно добавить аннотацию UtilityClass, которая подразумевает то,что класс является утилитным
4.Далее же мы инициализируем переменные для работы с RPC
- 1735305395819.png-
5.Далее нам нужно создать метод startRPC(), в котором будем делать саму логику интеграции дискорд
- 1735305483755.png-
6.Теперь же нам нужно инициализировать сюда данные о нашем приложении
- 1735305526554.png-
7. У некоторых может всплыть вопрос, откуда мы берем id в 2 строке?
  • Нужно зайти на
    Пожалуйста, авторизуйтесь для просмотра ссылки.
  • Создать приложение
- 1735305634832.png-
- Скопировать тот самый айди​
-1735305669191.png-
- Вставить его в поле для него​
8. Далее же мы реализовываем логику строки playing on: сервер
Прикреплю код как я ее реализовал ,через thread и замену state`ов

Код:
new Thread(() -> {
            while (true) {
                try {
                    if (mc.currentScreen instanceof MainMenuScreen || mc.currentScreen instanceof MainScreen) {
                        state = "In main menu";
                    } else if (mc.currentScreen instanceof MultiplayerScreen) {
                        state = "Choosing Server";
                    } else if (mc.isSingleplayer()) {
                        state = "In single player";
                    } else if (mc.getCurrentServerData() != null) {
                        state = "Playing on " + mc.getCurrentServerData().serverIP.replace("mc.", "").replace("play.", "").replace("gg.", "").replace("go.", "").replace("join.", "").replace("creative.", "")
                                .replace(".top", "").replace(".ru", "").replace(".cc", "").replace(".space", "").replace(".eu", "").replace(".com", "").replace(".net", "").replace(".xyz", "").replace(".gg", "").replace(".me", "").replace(".su", "").replace(".fun", "").replace(".org", "").replace(".host", "")
                                .replace("localhost", "LocalServer").replace(":25565", "" )

                        ;
                    } else if (mc.currentScreen instanceof OptionsScreen) {
                        state = "On settings";
                    } else if (mc.currentScreen instanceof WorldSelectionScreen) {
                        state = "Choosing world";
                    } else if (mc.currentScreen instanceof AltScreen) {
                        state = "Choosing alt";
                    } else if (mc.currentScreen instanceof GreetingScreen) {
                        state = "Just loaded";
                    } else {
                        state = "Loading...";
                    }

                    discordRichPresence.largeImageKey = "ng";
                    discordRichPresence.details = state;
                    discordRichPresence.state = "Happy New Year!";
                    discordRPC.Discord_UpdatePresence(discordRichPresence);

                    Thread.sleep(2000);
                } catch (InterruptedException ignored) {

                }
            }
        }).start();
    }
9. Далее же ,у вас возникает вопрос,откуда брать значения для строк ниже?
- 1735305810199.png-
largeimagekey - это непосредственно сама картинка которая будет видна в дискорде
как же ее установить?
  • Заходим на все тот же
    Пожалуйста, авторизуйтесь для просмотра ссылки.
  • Заходим в приложение ,которое создали ранее
  • Заходим в вкладку RPC
- 1735305915334.png-
- Жмем кнопочку add image
- 1735305961426.png -
  • После того как добавили, изменяем название,у меня это ng
  • И в поле largeImageKey вводим название своего ассета изображения
10.Логика выключения РПС
Нужно создать метод stopRPC()
и прописать там 2 строки ,чтоб выключить РПС
- 1735306074660.png -

11. Финальный шаг - инициализация в мейн классе
- На месте подгрузки FriendStorage, StaffStorage
пишем ClientUtil.startRPC();

- 1735306141601.png -
:frog-wow:Вот и все! наше улучшенное рпс готово!:frog-wow:

Код для тех,кому в кайф пастить,а не разбираться - ниже:

1:
@UtilityClass
public class ClientUtil implements IMinecraft {

    public static String getUsername() {
        return System.getProperty("user.name");
    }

 

    private static Clip currentClip = null;
    private static boolean pvpMode;
    private static UUID uuid;

    public static String state = "";
    public static String alt = "";
    public static DiscordRichPresence discordRichPresence = new DiscordRichPresence();
    public static DiscordRPC discordRPC = DiscordRPC.INSTANCE;
    public static HitAura aura;

    public static void startRPC() {
        DiscordEventHandlers eventHandlers = new DiscordEventHandlers();
        discordRPC.Discord_Initialize("1308751341245562932", eventHandlers, true, null);
        discordRichPresence.startTimestamp = System.currentTimeMillis() / 1000L;
        discordRichPresence.largeImageText = "Version: " + Main.version + " | Build: " + Main.build;
        discordRPC.Discord_UpdatePresence(discordRichPresence);


        new Thread(() -> {
            while (true) {
                try {
                    if (mc.currentScreen instanceof MainMenuScreen || mc.currentScreen instanceof MainScreen) {
                        state = "In main menu";
                    } else if (mc.currentScreen instanceof MultiplayerScreen) {
                        state = "Choosing Server";
                    } else if (mc.isSingleplayer()) {
                        state = "In single player";
                    } else if (mc.getCurrentServerData() != null) {
                        state = "Playing on " + mc.getCurrentServerData().serverIP.replace("mc.", "").replace("play.", "").replace("gg.", "").replace("go.", "").replace("join.", "").replace("creative.", "")
                                .replace(".top", "").replace(".ru", "").replace(".cc", "").replace(".space", "").replace(".eu", "").replace(".com", "").replace(".net", "").replace(".xyz", "").replace(".gg", "").replace(".me", "").replace(".su", "").replace(".fun", "").replace(".org", "").replace(".host", "")
                                .replace("localhost", "LocalServer").replace(":25565", "" )

                        ;
                    } else if (mc.currentScreen instanceof OptionsScreen) {
                        state = "On settings";
                    } else if (mc.currentScreen instanceof WorldSelectionScreen) {
                        state = "Choosing world";
                    } else if (mc.currentScreen instanceof AltScreen) {
                        state = "Choosing alt";
                    } else if (mc.currentScreen instanceof GreetingScreen) {
                        state = "Just loaded";
                    } else {
                        state = "Loading...";
                    }

                    discordRichPresence.largeImageKey = "ng";
                    discordRichPresence.details = state;
                    discordRichPresence.state = "Happy New Year!";
                    discordRPC.Discord_UpdatePresence(discordRichPresence);

                    Thread.sleep(2000);
                } catch (InterruptedException ignored) {

                }
            }
        }).start();
    }

    public static void stopRPC() {
        discordRPC.Discord_Shutdown();
        discordRPC.Discord_ClearPresence();
    }

    public void updateBossInfo(SUpdateBossInfoPacket packet) {
        if (packet.getOperation() == SUpdateBossInfoPacket.Operation.ADD) {
            if (StringUtils.stripControlCodes(packet.getName().getString()).toLowerCase().contains("pvp")) {
                pvpMode = true;
                uuid = packet.getUniqueId();
            }
        } else if (packet.getOperation() == SUpdateBossInfoPacket.Operation.REMOVE) {
            if (packet.getUniqueId().equals(uuid))
                pvpMode = false;
        }
    }
    public boolean isConnectedToServer(String ip) {
        return mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP != null && mc.getCurrentServerData().serverIP.contains(ip);
    }
    public boolean isPvP() {
        return pvpMode;
    }

    public void playSound(String sound, float value, boolean nonstop) {
        if (currentClip != null && currentClip.isRunning()) {
            currentClip.stop();
        }
        try {
            currentClip = AudioSystem.getClip();
            InputStream is = mc.getResourceManager().getResource(new ResourceLocation("aurum/sounds/" + sound + ".wav")).getInputStream();
            BufferedInputStream bis = new BufferedInputStream(is);
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(bis);
            if (audioInputStream == null) {
                System.out.println("Sound not found!");
                return;
            }

            currentClip.open(audioInputStream);
            currentClip.start();
            FloatControl floatControl = (FloatControl) currentClip.getControl(FloatControl.Type.MASTER_GAIN);
            float min = floatControl.getMinimum();
            float max = floatControl.getMaximum();
            float volumeInDecibels = (float) (min * (1 - (value / 100.0)) + max * (value / 100.0));
            floatControl.setValue(volumeInDecibels);
            if (nonstop) {
                currentClip.addLineListener(event -> {
                    if (event.getType() == LineEvent.Type.STOP) {
                        currentClip.setFramePosition(0);
                        currentClip.start();
                    }
                });
            }
        } catch (Exception exception) {
            // Обработка исключения
            exception.printStackTrace();
        }
    }

    public void stopSound() {
        if (currentClip != null) {
            currentClip.stop();
            currentClip.close();
            currentClip = null;
        }
    }

    public int calc(int value) {
        MainWindow rs = mc.getMainWindow();
        return (int) (value * rs.getGuiScaleFactor() / 2);
    }

    public Vec2i getMouse(int mouseX, int mouseY) {
        return new Vec2i((int) (mouseX * Minecraft.getInstance().getMainWindow().getGuiScaleFactor() / 2), (int) (mouseY * Minecraft.getInstance().getMainWindow().getGuiScaleFactor() / 2));
    }
}
Всем спасибо за внимание,пишите , на что еще сделать гайды!
 

Вложения

Последнее редактирование:
Read Only
Статус
Оффлайн
Регистрация
29 Апр 2023
Сообщения
1,002
Реакции[?]
17
Поинты[?]
22K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
нормально мужик токен ебанул
да,мне всеравно на этот токен,я не пользуюсь этим приложением впринципе,поэтому можно и слить) пускай пользуются,интересно что они смогут через него сделать)
 
Новичок
Статус
Оффлайн
Регистрация
14 Дек 2022
Сообщения
1
Реакции[?]
0
Поинты[?]
0
созд поста сигма, работает заебись. работает
ну пока я там не наверну кринжа работает)
 
Read Only
Статус
Оффлайн
Регистрация
29 Апр 2023
Сообщения
1,002
Реакции[?]
17
Поинты[?]
22K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
28 Дек 2024
Сообщения
4
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
я бы сделал легче по другим гайдам ну нормис всеравно кста спс что с notnull памог
 
Read Only
Статус
Оффлайн
Регистрация
29 Апр 2023
Сообщения
1,002
Реакции[?]
17
Поинты[?]
22K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
11 Авг 2023
Сообщения
4
Реакции[?]
0
Поинты[?]
0
Блен вот читаю хочу спастить и тут такие закавырестые слова которые первый раз вижу ._.
а так имба тема :seemsgood:
 
Read Only
Статус
Оффлайн
Регистрация
29 Апр 2023
Сообщения
1,002
Реакции[?]
17
Поинты[?]
22K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
10 Дек 2022
Сообщения
52
Реакции[?]
0
Поинты[?]
0
нужно в поле largeimagekey ссылку на гифку
Да это я знаю, я имею в виду на сайте дискорд. Но как разобрался, нет. Поэтому я просто сделал ссылкой на картинку
 
Сверху Снизу