diff options
5 files changed, 99 insertions, 14 deletions
diff --git a/build.gradle b/build.gradle index 4d134a80..d4aeae83 100755 --- a/build.gradle +++ b/build.gradle @@ -17,6 +17,11 @@ buildscript { apply plugin: 'net.minecraftforge.gradle.forge' apply plugin: 'com.github.johnrengelman.shadow' +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + /* // for people who want stable - not yet functional for MC 1.8.8 - we require the forgegradle 2.1 snapshot plugins { @@ -40,9 +45,14 @@ minecraft { // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. } +repositories { + jcenter() + mavenCentral() +} dependencies { implementation 'org.jetbrains:annotations-java5:19.0.0' compile "org.java-websocket:Java-WebSocket:1.5.1" + compile 'com.jagrosh:DiscordIPC:0.4' // you may put jars on which you depend on in ./libs // or you may define them like so.. //compile "some.group:artifact:version:classifier" @@ -95,6 +105,10 @@ shadowJar { dependencies { include(dependency("org.java-websocket:Java-WebSocket:1.5.1")) include(dependency("org.slf4j:slf4j-api:1.7.25")) + include(dependency("com.jagrosh:DiscordIPC:0.4")) + include(dependency("org.json:json:20171018")) + include(dependency("com.kohlschutter.junixsocket:junixsocket-common:2.0.4")) + include(dependency("com.kohlschutter.junixsocket:junixsocket-native-common:2.0.4")) } } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/RichPresenceManager.java b/src/main/java/kr/syeyoung/dungeonsguide/RichPresenceManager.java new file mode 100644 index 00000000..f3b75d41 --- /dev/null +++ b/src/main/java/kr/syeyoung/dungeonsguide/RichPresenceManager.java @@ -0,0 +1,74 @@ +package kr.syeyoung.dungeonsguide; + +import com.jagrosh.discordipc.IPCClient; +import com.jagrosh.discordipc.IPCListener; +import com.jagrosh.discordipc.entities.Packet; +import com.jagrosh.discordipc.entities.RichPresence; +import com.jagrosh.discordipc.entities.User; +import com.jagrosh.discordipc.exceptions.NoDiscordClientException; +import kr.syeyoung.dungeonsguide.events.SkyblockJoinedEvent; +import kr.syeyoung.dungeonsguide.events.SkyblockLeftEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import org.json.JSONObject; + +import java.time.OffsetDateTime; + +public class RichPresenceManager implements IPCListener { + public static RichPresenceManager INSTANCE = new RichPresenceManager(); + + private IPCClient ipcClient; + public void setup() throws NoDiscordClientException { + ipcClient = new IPCClient(816298079732498473L); + ipcClient.setListener(this); + ipcClient.connect(); + } + + @Override + public void onReady(IPCClient client) { + updatePresence(); + } + + @Override + public void onActivityJoinRequest(IPCClient client, String secret, User user) { + System.out.println(user.getAsMention()+" wanna join"); + } + + @Override + public void onPacketReceived(IPCClient client, Packet packet) { + System.out.println("Packet recv from rpc "+packet); + } + + @Override + public void onDisconnect(IPCClient client, Throwable t) { + t.printStackTrace(); + try { + setup(); + } catch (NoDiscordClientException e) { + e.printStackTrace(); + } + } + + private SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus(); + + + public void updatePresence() { + if (!skyblockStatus.isOnHypixel()) { + ipcClient.sendRichPresence(null); + } else { + ipcClient.sendRichPresence(new RichPresence.Builder() + .setJoinSecret("")); + } + } + + private String JOIN_SECRET; + + + @SubscribeEvent + public void joinSkyblock(SkyblockJoinedEvent skyblockJoinedEvent) { + updatePresence(); + } + @SubscribeEvent + public void leaveSkyblock(SkyblockLeftEvent skyblockLeftEvent) { + updatePresence(); + } +} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/e.java b/src/main/java/kr/syeyoung/dungeonsguide/e.java index 98fac826..5bc3f0d7 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/e.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/e.java @@ -1,5 +1,7 @@ package kr.syeyoung.dungeonsguide; +import com.jagrosh.discordipc.entities.RichPresence; +import com.jagrosh.discordipc.exceptions.NoDiscordClientException; import kr.syeyoung.dungeonsguide.commands.*; import kr.syeyoung.dungeonsguide.config.Config; import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoomInfoRegistry; @@ -95,19 +97,7 @@ public class e implements c, CloseListener { progressbar.step("Downloading Roomdatas"); try { DungeonRoomInfoRegistry.loadAll(configDir); - } catch (BadPaddingException e) { - e.printStackTrace(); - } catch (InvalidAlgorithmParameterException e) { - e.printStackTrace(); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (IllegalBlockSizeException e) { - e.printStackTrace(); - } catch (NoSuchPaddingException e) { - e.printStackTrace(); - } catch (InvalidKeyException e) { + } catch (BadPaddingException | InvalidKeyException | NoSuchPaddingException | IllegalBlockSizeException | IOException | NoSuchAlgorithmException | InvalidAlgorithmParameterException e) { e.printStackTrace(); } Keybinds.register(); @@ -119,6 +109,12 @@ public class e implements c, CloseListener { } catch (Exception e) { throw new RuntimeException(e); } + try { + RichPresenceManager.INSTANCE.setup(); + } catch (NoDiscordClientException e) { + e.printStackTrace(); + } + MinecraftForge.EVENT_BUS.register(RichPresenceManager.INSTANCE); progressbar.step("Loading Config"); diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java index c758bc25..762527cf 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java @@ -46,6 +46,7 @@ public class FeatureRegistry { public static final FeatureRoomDebugInfo ADVANCED_DEBUG_ROOM = register(new FeatureRoomDebugInfo()); public static final FeatureDebuggableMap ADVANCED_DEBUGGABLE_MAP = register(new FeatureDebuggableMap()); public static final FeatureRoomCoordDisplay ADVANCED_COORDS = register(new FeatureRoomCoordDisplay()); + public static final SimpleFeature ADVANCED_RICHPRESENCE = register(new SimpleFeature("Advanced", "Rich presence (Testing WIP)", "Will support ask to join", "advanced.testrich", false)); public static final SimpleFeature SOLVER_RIDDLE = register(new SimpleFeature("Solver", "Riddle Puzzle (3 weirdo) Solver", "Highlights the correct box after clicking on all 3 weirdos", "solver.riddle")); public static final SimpleFeature SOLVER_KAHOOT = register(new SimpleFeature("Solver", "Trivia Puzzle (Omnicrescent) Solver", "Highlights the correct solution for trivia puzzle", "solver.trivia")); diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureWarningOnPortal.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureWarningOnPortal.java index 2b4c42df..38c2c6f9 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureWarningOnPortal.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureWarningOnPortal.java @@ -90,7 +90,7 @@ public class FeatureWarningOnPortal extends SimpleFeature implements StyledTextP texts.add(new StyledText("There are at least "+context.getMapProcessor().getUndiscoveredRoom()+" undiscovered rooms!\n", "warning")); } else if (!scoreCalculation.isFullyCleared()) { texts.add(new StyledText("Some rooms are not fully cleared!\n", "warning")); - } else if (scoreCalculation.getTombs() <= 5) { + } else if (scoreCalculation.getTombs() < 5) { texts.add(new StyledText("Only less than 5 crypts are blown up!\n", "warning")); } else { texts.add(new StyledText("\n", "warning")); |