close #318 and close #306

This commit is contained in:
Bella 2020-01-13 20:11:28 -05:00
parent 2a9022bbb4
commit da3f109155
4 changed files with 108 additions and 238 deletions

View File

@ -4,257 +4,83 @@ import club.minnced.discord.rpc.DiscordEventHandlers;
import club.minnced.discord.rpc.DiscordRPC;
import club.minnced.discord.rpc.DiscordRichPresence;
import me.zeroeightsix.kami.module.ModuleManager;
import me.zeroeightsix.kami.module.modules.bewwawho.misc.BlueDiscordRPC;
import me.zeroeightsix.kami.module.modules.bewwawho.misc.DiscordSettings;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ServerData;
import net.minecraftforge.fml.common.FMLLog;
import static me.zeroeightsix.kami.KamiMod.MODVER;
import static me.zeroeightsix.kami.KamiMod.APP_ID;
/***
* @author snowmii
* Updated by S-B99 on 19/12/19
* @author S-B99
* Updated by S-B99 on 13/01/20
*/
public class DiscordPresence {
private static final String APP_ID = "638403216278683661";
private static final DiscordRPC rpc;
public static DiscordRichPresence presence;
private static boolean hasStarted;
public static final Minecraft mc = Minecraft.getMinecraft();
private static String details;
private static String state;
private static int players;
private static int maxPlayers;
private static ServerData svr;
private static String[] popInfo;
private static int players2;
private static int maxPlayers2;
public static void disable() {
DiscordPresence.presence.state = "";
}
private static DiscordSettings discordSettings;
private static String separator = " | ";
public static void start() {
boolean versionPrivateStart = ((BlueDiscordRPC) ModuleManager.getModuleByName("DiscordRPC")).versionGlobal.getValue();
FMLLog.log.info("Starting Discord RPC");
if (DiscordPresence.hasStarted) {
return;
}
if (DiscordPresence.hasStarted) return;
DiscordPresence.hasStarted = true;
final DiscordEventHandlers handlers = new DiscordEventHandlers();
handlers.disconnected = ((var1, var2) -> System.out.println("Discord RPC disconnected, var1: " + String.valueOf(var1) + ", var2: " + var2));
DiscordPresence.rpc.Discord_Initialize(APP_ID, handlers, true, "");
DiscordPresence.presence.startTimestamp = System.currentTimeMillis() / 1000L;
if (versionPrivateStart) {
DiscordPresence.presence.details = MODVER + " - " + "Main Menu";
}
else {
DiscordPresence.presence.details = "Main Menu";
}
DiscordPresence.presence.state = "";
discordSettings = ((DiscordSettings) ModuleManager.getModuleByName("DiscordRPC"));
details = discordSettings.getLine(discordSettings.line1Setting.getValue()) + " " + discordSettings.getLine(discordSettings.line3Setting.getValue());
state = discordSettings.getLine(discordSettings.line2Setting.getValue()) + " " + discordSettings.getLine(discordSettings.line4Setting.getValue());
DiscordPresence.presence.details = details;
DiscordPresence.presence.state = state;
DiscordPresence.presence.largeImageKey = "kami";
DiscordPresence.presence.largeImageText = "bella.wtf/kamiblue";
DiscordPresence.rpc.Discord_UpdatePresence(DiscordPresence.presence);
new Thread(() -> {
while (!Thread.currentThread().isInterrupted()) {
boolean versionPrivate = ((BlueDiscordRPC) ModuleManager.getModuleByName("DiscordRPC")).versionGlobal.getValue();
boolean ipPrivate = ((BlueDiscordRPC) ModuleManager.getModuleByName("DiscordRPC")).ipGlobal.getValue();
boolean hpPrivate = ((BlueDiscordRPC) ModuleManager.getModuleByName("DiscordRPC")).hpGlobal.getValue();
boolean userNamePrivate = ((BlueDiscordRPC) ModuleManager.getModuleByName("DiscordRPC")).usernameGlobal.getValue();
try {
DiscordPresence.rpc.Discord_RunCallbacks();
details = "";
state = "";
players = 0;
maxPlayers = 0;
if (mc.isIntegratedServerRunning()) {
if (userNamePrivate) {
if (versionPrivate) {
details = MODVER + " - " + mc.player.getName();
} else {
details = mc.player.getName();
}
}
else {
if (versionPrivate) {
details = MODVER + " - " + "Singleplayer";
} else {
details = "Singleplayer";
}
}
}
else if (mc.getCurrentServerData() != null) {
svr = mc.getCurrentServerData();
if (!svr.serverIP.equals("")) {
if (userNamePrivate) {
if (versionPrivate) {
details = MODVER + " - " + mc.player.getName();
} else {
details = mc.player.getName();
}
}
else {
if (versionPrivate) {
details = MODVER + " - " + "Multiplayer";
} else {
details = "Multiplayer";
}
}
if (ipPrivate) {
if (hpPrivate) {
state = svr.serverIP + " (" + ((int) mc.player.getHealth()) + " hp)";
}
else {
state = svr.serverIP;
}
if (svr.populationInfo != null) {
popInfo = svr.populationInfo.split("/");
if (popInfo.length > 2) {
players2 = Integer.parseInt(popInfo[0]);
maxPlayers2 = Integer.parseInt(popInfo[1]);
}
}
}
else {
if (hpPrivate) {
state = "(" + ((int) mc.player.getHealth()) + " hp)";
}
else {
state = "";
}
}
}
}
else {
if (versionPrivate) {
details = MODVER + " - " + "Main Menu";
}
else {
details = "Main Menu";
}
state = "";
}
if (!details.equals(DiscordPresence.presence.details) || !state.equals(DiscordPresence.presence.state)) {
DiscordPresence.presence.startTimestamp = System.currentTimeMillis() / 1000L;
}
discordSettings = ((DiscordSettings) ModuleManager.getModuleByName("DiscordRPC"));
details = discordSettings.getLine(discordSettings.line1Setting.getValue()) + separator + discordSettings.getLine(discordSettings.line3Setting.getValue());
state = discordSettings.getLine(discordSettings.line2Setting.getValue()) + separator + discordSettings.getLine(discordSettings.line4Setting.getValue());
DiscordPresence.presence.details = details;
DiscordPresence.presence.state = state;
DiscordPresence.rpc.Discord_UpdatePresence(DiscordPresence.presence);
}
catch (Exception e2) {
e2.printStackTrace();
}
try {
Thread.sleep(5000L);
}
catch (InterruptedException e3) {
e3.printStackTrace();
}
catch (Exception e2) { e2.printStackTrace(); }
try { Thread.sleep(4000L); }
catch (InterruptedException e3) { e3.printStackTrace(); }
}
return;
}, "Discord-RPC-Callback-Handler").start();
FMLLog.log.info("Discord RPC initialised succesfully");
FMLLog.log.info("Discord RPC initialised successfully");
}
private static /* synthetic */ void lambdastart1() {
while (!Thread.currentThread().isInterrupted()) {
boolean versionPrivate = ((BlueDiscordRPC) ModuleManager.getModuleByName("DiscordRPC")).versionGlobal.getValue();
boolean ipPrivate = ((BlueDiscordRPC) ModuleManager.getModuleByName("DiscordRPC")).ipGlobal.getValue();
boolean hpPrivate = ((BlueDiscordRPC) ModuleManager.getModuleByName("DiscordRPC")).hpGlobal.getValue();
boolean userNamePrivate = ((BlueDiscordRPC) ModuleManager.getModuleByName("DiscordRPC")).usernameGlobal.getValue();
try {
DiscordPresence.rpc.Discord_RunCallbacks();
String details = "";
String state = "";
int players = 0;
int maxPlayers = 0;
if (mc.isIntegratedServerRunning()) {
if (userNamePrivate) {
if (versionPrivate) {
details = MODVER + " - " + mc.player.getName();
} else {
details = mc.player.getName();
}
}
else {
if (versionPrivate) {
details = MODVER + " - " + "Singleplayer";
} else {
details = "Singleplayer";
}
}
}
else if (mc.getCurrentServerData() != null) {
final ServerData svr = mc.getCurrentServerData();
if (!svr.serverIP.equals("")) {
if (userNamePrivate) {
if (versionPrivate) {
details = MODVER + " - " + mc.player.getName();
} else {
details = mc.player.getName();
}
}
else {
if (versionPrivate) {
details = MODVER + " - " + "Multiplayer";
} else {
details = "Multiplayer";
}
}
if (ipPrivate) {
if (hpPrivate) {
state = svr.serverIP + " (" + ((int) mc.player.getHealth()) + " hp)";
}
else {
state = svr.serverIP;
}
if (svr.populationInfo != null) {
popInfo = svr.populationInfo.split("/");
if (popInfo.length > 2) {
players2 = Integer.parseInt(popInfo[0]);
maxPlayers2 = Integer.parseInt(popInfo[1]);
}
}
}
else {
if (hpPrivate) {
state = "(" + ((int) mc.player.getHealth()) + " hp)";
}
else {
state = "";
}
}
}
}
else {
if (versionPrivate) {
details = MODVER + " - " + "Main Menu";
}
else {
details = "Main Menu";
}
state = "";
}
if (!details.equals(DiscordPresence.presence.details) || !state.equals(DiscordPresence.presence.state)) {
DiscordPresence.presence.startTimestamp = System.currentTimeMillis() / 1000L;
}
discordSettings = ((DiscordSettings) ModuleManager.getModuleByName("DiscordRPC"));
details = discordSettings.getLine(discordSettings.line1Setting.getValue()) + separator + discordSettings.getLine(discordSettings.line3Setting.getValue());
state = discordSettings.getLine(discordSettings.line2Setting.getValue()) + separator + discordSettings.getLine(discordSettings.line4Setting.getValue());
DiscordPresence.presence.details = details;
DiscordPresence.presence.state = state;
DiscordPresence.rpc.Discord_UpdatePresence(DiscordPresence.presence);
}
catch (Exception e2) {
e2.printStackTrace();
}
try {
Thread.sleep(5000L);
}
catch (InterruptedException e3) {
e3.printStackTrace();
}
catch (Exception e2) { e2.printStackTrace(); }
try { Thread.sleep(4000L); }
catch (InterruptedException e3) { e3.printStackTrace(); }
}
}

View File

@ -18,7 +18,7 @@ import me.zeroeightsix.kami.gui.rgui.util.Docking;
import me.zeroeightsix.kami.module.Module;
import me.zeroeightsix.kami.module.ModuleManager;
import me.zeroeightsix.kami.module.modules.bewwawho.capes.Capes;
import me.zeroeightsix.kami.module.modules.bewwawho.misc.BlueDiscordRPC;
import me.zeroeightsix.kami.module.modules.bewwawho.misc.DiscordSettings;
import me.zeroeightsix.kami.module.modules.zeroeightysix.misc.CustomChat;
import me.zeroeightsix.kami.module.modules.zeroeightysix.render.TabFriends;
import me.zeroeightsix.kami.setting.Setting;
@ -48,7 +48,6 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
/**
@ -66,15 +65,16 @@ public class KamiMod {
static final String MODID = "kamiblue";
static final String MODNAME = "KAMI Blue";
public static final String MODVER = "v1.1.1";
public static final String APP_ID = "638403216278683661";
static final String UPDATE_JSON = "https://raw.githubusercontent.com/S-B99/KAMI/assets/assets/updateChecker.json";
public static final String DONATORS_JSON = "https://raw.githubusercontent.com/S-B99/KAMI/assets/assets/donators.json";
public static final String CAPES_JSON = "https://raw.githubusercontent.com/S-B99/KAMI/assets/assets/capes.json";
public static final String KAMI_HIRAGANA = "\u304B\u307F";
public static final String KAMI_KATAKANA = "\u30AB\u30DF";
// public static final String KAMI_HIRAGANA = "\u304B\u307F";
// public static final String KAMI_KATAKANA = "\u30AB\u30DF";
// public static final String KAMI_BLUE = "\u1d0b\u1d00\u1d0d\u026a \u0299\u029f\u1d1c\u1d07";
public static final String KAMI_KANJI = "\u30ab\u30df\u30d6\u30eb"; //\u30ab\u30df\u30d6\u30eb //\u795E
public static final String KAMI_BLUE = "\u1d0b\u1d00\u1d0d\u026a \u0299\u029f\u1d1c\u1d07";
private static final String KAMI_CONFIG_NAME_DEFAULT = "KAMIBlueConfig.json";
@ -183,7 +183,7 @@ public class KamiMod {
try { // load modules that are on by default
ModuleManager.getModuleByName("InfoOverlay").setEnabled(true);
if (((BlueDiscordRPC) ModuleManager.getModuleByName("DiscordRPC")).startupGlobal.getValue()) {
if (((DiscordSettings) ModuleManager.getModuleByName("DiscordRPC")).startupGlobal.getValue()) {
ModuleManager.getModuleByName("DiscordRPC").setEnabled(true);
}
// if (((AntiChunkLoadPatch) ModuleManager.getModuleByName("AntiChunkLoadPatch")).startupGlobal.getValue()) {

View File

@ -1,26 +0,0 @@
package me.zeroeightsix.kami.module.modules.bewwawho.misc;
import me.zeroeightsix.kami.DiscordPresence;
import me.zeroeightsix.kami.module.Module;
import me.zeroeightsix.kami.setting.Setting;
import me.zeroeightsix.kami.setting.Settings;
/**
* @author S-B99
*/
@Module.Info(name = "DiscordRPC", category = Module.Category.MISC, description = "Discord Rich Presence")
public class BlueDiscordRPC extends Module {
public Setting<Boolean> startupGlobal = register(Settings.b("Enable Automatically", true));
public Setting<Boolean> versionGlobal = register(Settings.b("Version", true));
public Setting<Boolean> usernameGlobal = register(Settings.b("Username", true));
public Setting<Boolean> hpGlobal = register(Settings.b("Health", true));
public Setting<Boolean> ipGlobal = register(Settings.b("Server IP", true));
@Override
public void onEnable() {
DiscordPresence.start();
}
public void onDisable() { DiscordPresence.disable(); }
}

View File

@ -0,0 +1,70 @@
package me.zeroeightsix.kami.module.modules.bewwawho.misc;
import me.zeroeightsix.kami.DiscordPresence;
import me.zeroeightsix.kami.KamiMod;
import me.zeroeightsix.kami.command.Command;
import me.zeroeightsix.kami.module.Module;
import me.zeroeightsix.kami.setting.Setting;
import me.zeroeightsix.kami.setting.Settings;
/**
* @author S-B99
* Updated by S-B99 on 13/01/20
*/
@Module.Info(name = "DiscordRPC", category = Module.Category.MISC, description = "Discord Rich Presence")
public class DiscordSettings extends Module {
public Setting<Boolean> startupGlobal = register(Settings.b("Enable Automatically", true));
public Setting<Boolean> coordsConfirm = register(Settings.b("Coords Confirm", false));
public Setting<LineInfo> line1Setting = register(Settings.e("Line 1 Left", LineInfo.VERSION)); // details left
public Setting<LineInfo> line3Setting = register(Settings.e("Line 1 Right", LineInfo.USERNAME)); // details right
public Setting<LineInfo> line2Setting = register(Settings.e("Line 2 Left", LineInfo.SERVERIP)); // state left
public Setting<LineInfo> line4Setting = register(Settings.e("Line 2 Right", LineInfo.HEALTH)); // state right
public enum LineInfo {
VERSION, WORLD, USERNAME, HEALTH, SERVERIP, COORDS, NONE
}
public String getLine(LineInfo line) {
switch (line) {
case VERSION: return KamiMod.MODVER;
case WORLD:
if (mc.isIntegratedServerRunning()) return "Singleplayer";
else if (mc.getCurrentServerData() != null) return "Multiplayer";
else return "Main Menu";
case USERNAME:
if (mc.player != null) return mc.player.getName();
else return "(Not logged in)";
case HEALTH:
if (mc.player != null) return "(" + ((int) mc.player.getHealth()) + " hp)";
else return "(No hp)";
case SERVERIP:
if (mc.getCurrentServerData() != null) return mc.getCurrentServerData().serverIP;
else return "(Offline)";
case COORDS:
if (mc.player != null && coordsConfirm.getValue()) return "(" + (int) mc.player.posX + " " + (int) mc.player.posY + " " + (int) mc.player.posZ + ")";
else return "(No coords)";
default: return "";
}
}
@Override
public void onEnable() {
DiscordPresence.start();
}
private static long startTime = 0;
@Override
public void onUpdate() {
if (startTime == 0) startTime = System.currentTimeMillis();
if (startTime + 10000 <= System.currentTimeMillis()) { // 10 seconds in milliseconds
if (line1Setting.getValue().equals(LineInfo.COORDS) || line2Setting.getValue().equals(LineInfo.COORDS) || line3Setting.getValue().equals(LineInfo.COORDS) || line4Setting.getValue().equals(LineInfo.COORDS)) {
if (!coordsConfirm.getValue() && mc.player != null) {
Command.sendWarningMessage("[DiscordRPC] Warning: In order to use the coords option please enable the coords confirmation option. This will display your coords on the discord rpc. Do NOT use this if you do not want your coords displayed");
}
}
startTime = System.currentTimeMillis();
}
}
}