-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Привет еще раз,обитатели раздела.
Сейчас дропаю вам гайд на дискорд РПС
Сейчас дропаю вам гайд на дискорд РПС
- -
Расписываю по шагам для удобства
1.Нужно скачать библиотеки для discord RPC(в случае с базой expensive, библиотека от club.minnced - установлена)2.Создать класс где будет хранится наш RPC ( у меня это Client Util в которой храняться все нужные переменные для работы с клиентом)
3.Когда создали класс,нужно имплементировать в него IMinecraft ,чтоб использовать пэкетж mc.
это выглядит так:
- -*так же нужно добавить аннотацию UtilityClass, которая подразумевает то,что класс является утилитным
4.Далее же мы инициализируем переменные для работы с RPC- -
5.Далее нам нужно создать метод startRPC(), в котором будем делать саму логику интеграции дискорд
- -
6.Теперь же нам нужно инициализировать сюда данные о нашем приложении
- -
7. У некоторых может всплыть вопрос, откуда мы берем id в 2 строке?
- Нужно зайти на Пожалуйста, авторизуйтесь для просмотра ссылки.
- Создать приложение
- Скопировать тот самый айди
--- Вставить его в поле для него
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();
}
- -
largeimagekey - это непосредственно сама картинка которая будет видна в дискорде
как же ее установить?
- Заходим на все тот же Пожалуйста, авторизуйтесь для просмотра ссылки.
- Заходим в приложение ,которое создали ранее
- Заходим в вкладку RPC
- Жмем кнопочку add image
- -
- После того как добавили, изменяем название,у меня это ng
- И в поле largeImageKey вводим название своего ассета изображения
Нужно создать метод stopRPC()
и прописать там 2 строки ,чтоб выключить РПС
- -
11. Финальный шаг - инициализация в мейн классе
- На месте подгрузки FriendStorage, StaffStorage
пишем ClientUtil.startRPC();
- -
Вот и все! наше улучшенное рпс готово!
Код для тех,кому в кайф пастить,а не разбираться - ниже:
Код для тех,кому в кайф пастить,а не разбираться - ниже:
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));
}
}
Всем спасибо за внимание,пишите , на что еще сделать гайды!
Вложения
-
59.8 KB Просмотры: 25
Последнее редактирование: