diff --git a/src/main/java/me/zeroeightsix/kami/DiscordPresence.java b/src/main/java/me/zeroeightsix/kami/DiscordPresence.java index 948145864..2f38bb4b0 100644 --- a/src/main/java/me/zeroeightsix/kami/DiscordPresence.java +++ b/src/main/java/me/zeroeightsix/kami/DiscordPresence.java @@ -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(); } } } diff --git a/src/main/java/me/zeroeightsix/kami/KamiMod.java b/src/main/java/me/zeroeightsix/kami/KamiMod.java index 73543d00f..c3f5aa56f 100644 --- a/src/main/java/me/zeroeightsix/kami/KamiMod.java +++ b/src/main/java/me/zeroeightsix/kami/KamiMod.java @@ -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()) { diff --git a/src/main/java/me/zeroeightsix/kami/module/modules/bewwawho/misc/BlueDiscordRPC.java b/src/main/java/me/zeroeightsix/kami/module/modules/bewwawho/misc/BlueDiscordRPC.java deleted file mode 100644 index d64e4f43b..000000000 --- a/src/main/java/me/zeroeightsix/kami/module/modules/bewwawho/misc/BlueDiscordRPC.java +++ /dev/null @@ -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 startupGlobal = register(Settings.b("Enable Automatically", true)); - public Setting versionGlobal = register(Settings.b("Version", true)); - public Setting usernameGlobal = register(Settings.b("Username", true)); - public Setting hpGlobal = register(Settings.b("Health", true)); - public Setting ipGlobal = register(Settings.b("Server IP", true)); - - @Override - public void onEnable() { - DiscordPresence.start(); - } - - public void onDisable() { DiscordPresence.disable(); } -} diff --git a/src/main/java/me/zeroeightsix/kami/module/modules/bewwawho/misc/DiscordSettings.java b/src/main/java/me/zeroeightsix/kami/module/modules/bewwawho/misc/DiscordSettings.java new file mode 100644 index 000000000..06b6fda69 --- /dev/null +++ b/src/main/java/me/zeroeightsix/kami/module/modules/bewwawho/misc/DiscordSettings.java @@ -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 startupGlobal = register(Settings.b("Enable Automatically", true)); + public Setting coordsConfirm = register(Settings.b("Coords Confirm", false)); + public Setting line1Setting = register(Settings.e("Line 1 Left", LineInfo.VERSION)); // details left + public Setting line3Setting = register(Settings.e("Line 1 Right", LineInfo.USERNAME)); // details right + public Setting line2Setting = register(Settings.e("Line 2 Left", LineInfo.SERVERIP)); // state left + public Setting 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(); + } + } + +}