Skip to content

Commit

Permalink
Update 2.1.0-alpha.2-dev
Browse files Browse the repository at this point in the history
- [#11] Была переписана база подключения на новую библиотеку, которая возможно исправит проблему с архитектурами
- Была сделана функция преобразования старого формата presence на новую
  • Loading branch information
kel committed Nov 25, 2023
1 parent 6bee8a0 commit f59b637
Show file tree
Hide file tree
Showing 6 changed files with 138 additions and 38 deletions.
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ dependencies {
// Discord Libs
include(implementation "club.minnced:discord-rpc-release:v3.4.0")
include(implementation "com.github.MinnDevelopment:java-discord-rpc:v2.0.2")
include(implementation "com.jagrosh.discordipc:DiscordIPC:0.6.0")
// JSON Lib
include(implementation "org.json:json:${project.JSON}")
include(implementation "meteordevelopment:starscript:0.2.2")
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ loader_version=0.14.24
fabric_version=0.90.7+1.20.2

# Mod Properties
mod_version = 2.1.0-alpha.1
mod_version = 2.1.0-alpha.2-dev
maven_group = ru.kelcuprum
archives_base_name = SimplyStatus

Expand Down
136 changes: 109 additions & 27 deletions src/main/java/ru/kelcuprum/simplystatus/SimplyStatus.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@
import club.minnced.discord.rpc.DiscordRPC;
import club.minnced.discord.rpc.DiscordRichPresence;
import club.minnced.discord.rpc.DiscordUser;
import com.google.gson.JsonObject;
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 com.mojang.blaze3d.platform.InputConstants;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
Expand Down Expand Up @@ -43,6 +50,7 @@

public class SimplyStatus implements ClientModInitializer {
private static final Timer TIMER = new Timer();
public static IPCClient client = new IPCClient(345229890980937739L);

// Mod Statud build
public static String version = "0.0.0";
Expand Down Expand Up @@ -79,12 +87,13 @@ public class SimplyStatus implements ClientModInitializer {
public static Boolean isVoiceModsEnable = (svc || plasmo);
public static Boolean isMusicModsEnable = (musicPlayer || waterPlayer);
// Discord
public static final DiscordRPC LIB = DiscordRPC.INSTANCE;
public static final DiscordEventHandlers HANDLERS = new DiscordEventHandlers();
public static DiscordUser USER;
// public static final DiscordRPC LIB = DiscordRPC.INSTANCE;
// public static final DiscordEventHandlers HANDLERS = new DiscordEventHandlers();
// public static DiscordUser USER_OLD;
public static User USER;
public static String APPLICATION_ID;
public static final String STEAM_ID = "";
public static final Boolean AUTO_REGISTER = true;
// public static final String STEAM_ID = "";
// public static final Boolean AUTO_REGISTER = true;
// Discord Status
public static boolean CONNECTED_DISCORD = false;

Expand All @@ -111,29 +120,37 @@ public void onInitializeClient() {
});
}
private void registerApplications(){
HANDLERS.ready = (user) -> {
log("The mod has been connected to Discord", Level.DEBUG);
USER = user;
CONNECTED_DISCORD = true;
};
HANDLERS.disconnected = (err, reason) -> {
log("The mod has been pulled from Discord", Level.DEBUG);
log(String.format("Reason: %s", reason), Level.DEBUG);
CONNECTED_DISCORD = false;
};

// HANDLERS.ready = (user) -> {
// log("The mod has been connected to Discord", Level.DEBUG);
// USER_OLD = user;
// CONNECTED_DISCORD = true;
// };
// HANDLERS.disconnected = (err, reason) -> {
// log("The mod has been pulled from Discord", Level.DEBUG);
// log(String.format("Reason: %s", reason), Level.DEBUG);
// CONNECTED_DISCORD = false;
// };
APPLICATION_ID = userConfig.getBoolean("USE_ANOTHER_ID", false) ? ModConfig.mineID : ModConfig.baseID;
if(userConfig.getBoolean("USE_CUSTOM_APP_ID", false)&& !userConfig.getString("CUSTOM_APP_ID", ModConfig.baseID).isBlank()) APPLICATION_ID = userConfig.getString("CUSTOM_APP_ID", ModConfig.baseID);
customID = APPLICATION_ID;
LIB.Discord_Initialize(APPLICATION_ID, HANDLERS, AUTO_REGISTER, STEAM_ID);
new Thread(() -> {
while (!Thread.currentThread().isInterrupted()) {
LIB.Discord_RunCallbacks();
try {
Thread.sleep(2000);
} catch (InterruptedException ignored) {
}
}
}, "SimplyStatus RPC-Callback-Handler").start();
client = new IPCClient(Long.parseLong(APPLICATION_ID));
setupListener();
try {
client.connect();
} catch (Exception ex){
ex.printStackTrace();
}
// LIB.Discord_Initialize(APPLICATION_ID, HANDLERS, AUTO_REGISTER, STEAM_ID);
// new Thread(() -> {
// while (!Thread.currentThread().isInterrupted()) {
// LIB.Discord_RunCallbacks();
// try {
// Thread.sleep(2000);
// } catch (InterruptedException ignored) {
// }
// }
// }, "SimplyStatus RPC-Callback-Handler").start();
start();
}
private void start(){
Expand All @@ -150,13 +167,62 @@ public void run() {
presence.largeImageKey = "unknown_world";
presence.details = "There was an error, look in the console";
presence.state = "And report the bug on GitHub";
LIB.Discord_UpdatePresence(presence);
updateDiscordPresence(presence);
lastException = ex.getMessage();
}
}
}
}, 500, 500);
}
public static void setupListener(){
client.setListener(new IPCListener(){
@Override
public void onPacketSent(IPCClient ipcClient, Packet packet) {

}

@Override
public void onPacketReceived(IPCClient ipcClient, Packet packet) {

}

@Override
public void onActivityJoin(IPCClient ipcClient, String s) {

}

@Override
public void onActivitySpectate(IPCClient ipcClient, String s) {

}

@Override
public void onActivityJoinRequest(IPCClient ipcClient, String s, User user) {

}

@Override
public void onReady(IPCClient client)
{
log("The mod has been connected to Discord", Level.DEBUG);
USER = client.getCurrentUser();
CONNECTED_DISCORD = true;
}

@Override
public void onClose(IPCClient ipcClient, JsonObject jsonObject) {
CONNECTED_DISCORD = false;
}

@Override
public void onDisconnect(IPCClient ipcClient, Throwable throwable) {
log("The mod has been pulled from Discord", Level.DEBUG);
log(String.format("Reason: %s", throwable.getLocalizedMessage()), Level.DEBUG);
CONNECTED_DISCORD = false;
}
});
}

private void updatePresence(){
ASSETS = new AssetsConfig();
if(userConfig.getBoolean("USE_CUSTOM_APP_ID", false)) ASSETS = ModConfig.defaultUrlsAssets;
Expand Down Expand Up @@ -214,7 +280,23 @@ else if(ModConfig.debugPresence){
}
if(lastPresence == null || !lastPresence.equals(presence)){
lastPresence = presence;
if(CONNECTED_DISCORD) LIB.Discord_UpdatePresence(presence);
RichPresence.Builder rich = new RichPresence.Builder();
if(presence != null) {
if (presence.details != null) rich.setDetails(presence.details);
if (presence.state != null) rich.setState(presence.state);
if (presence.startTimestamp >= 0) rich.setStartTimestamp(presence.startTimestamp);
if (presence.endTimestamp >= 0) rich.setEndTimestamp(presence.endTimestamp);
if (presence.largeImageKey != null && presence.largeImageText == null)
rich.setLargeImage(presence.largeImageKey);
if (presence.largeImageKey != null && presence.largeImageText != null)
rich.setLargeImage(presence.largeImageKey, presence.largeImageText);
if (presence.smallImageKey != null && presence.smallImageText == null)
rich.setSmallImage(presence.smallImageKey);
if (presence.smallImageKey != null && presence.smallImageText != null)
rich.setSmallImage(presence.smallImageKey, presence.smallImageText);
}
// if(CONNECTED_DISCORD) LIB.Discord_UpdatePresence(presence);
if(CONNECTED_DISCORD) client.sendRichPresence(rich.build());
if(ModConfig.debugPresence) LOG.info("Update presence");
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ru.kelcuprum.simplystatus.config.gui;

import com.jagrosh.discordipc.IPCClient;
import dev.isxander.yacl3.api.YetAnotherConfigLib;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.Screen;
Expand Down Expand Up @@ -39,8 +40,16 @@ private static void save(){
}
if(!SimplyStatus.customID.equals(APPLICATION_ID)) {
SimplyStatus.customID = APPLICATION_ID;
SimplyStatus.LIB.Discord_Shutdown();
SimplyStatus.LIB.Discord_Initialize(APPLICATION_ID, SimplyStatus.HANDLERS, SimplyStatus.AUTO_REGISTER, SimplyStatus.STEAM_ID);
// SimplyStatus.LIB.Discord_Shutdown();
// SimplyStatus.LIB.Discord_Initialize(APPLICATION_ID, SimplyStatus.HANDLERS, SimplyStatus.AUTO_REGISTER, SimplyStatus.STEAM_ID);
SimplyStatus.client.close();
SimplyStatus.client = new IPCClient(Long.parseLong(APPLICATION_ID));
SimplyStatus.setupListener();
try {
SimplyStatus.client.connect();
} catch (Exception ex){
ex.printStackTrace();
}
SimplyStatus.lastPresence = null;
}
} else if((SimplyStatus.useAnotherID != SimplyStatus.userConfig.getBoolean("USE_ANOTHER_ID", false)) || (SimplyStatus.useCustomID != SimplyStatus.userConfig.getBoolean("USE_CUSTOM_APP_ID", false))){
Expand All @@ -49,8 +58,16 @@ private static void save(){
SimplyStatus.customID = "";
String APPLICATION_ID = SimplyStatus.userConfig.getBoolean("USE_ANOTHER_ID", false) ? ModConfig.mineID : ModConfig.baseID;

SimplyStatus.LIB.Discord_Shutdown();
SimplyStatus.LIB.Discord_Initialize(APPLICATION_ID, SimplyStatus.HANDLERS, SimplyStatus.AUTO_REGISTER, SimplyStatus.STEAM_ID);
// SimplyStatus.LIB.Discord_Shutdown();
// SimplyStatus.LIB.Discord_Initialize(APPLICATION_ID, SimplyStatus.HANDLERS, SimplyStatus.AUTO_REGISTER, SimplyStatus.STEAM_ID);
SimplyStatus.client.close();
SimplyStatus.client = new IPCClient(Long.parseLong(APPLICATION_ID));
SimplyStatus.setupListener();
try {
SimplyStatus.client.connect();
} catch (Exception ex){
ex.printStackTrace();
}
SimplyStatus.lastPresence = null;
}
SimplyStatus.userConfig.save();
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/ru/kelcuprum/simplystatus/info/Player.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class Player {
static Minecraft CLIENT = Minecraft.getInstance();
public static String getName(){
if(SimplyStatus.userConfig.getBoolean("VIEW_PLAYER_NAME", true) || !SimplyStatus.CONNECTED_DISCORD) return CLIENT.getUser().getName();
else return SimplyStatus.USER.username;
else return SimplyStatus.USER.getName();
}
public static String getURLAvatar(){
if(CLIENT.getUser().getType().name().toLowerCase().equals("msa") || CLIENT.getUser().getType().name().toLowerCase().equals("mojang")){
Expand All @@ -31,7 +31,7 @@ public static String getURLAvatar(){
}
}
} else {
if(SimplyStatus.CONNECTED_DISCORD) return "https://cdn.discordapp.com/avatars/"+SimplyStatus.USER.userId+"/"+SimplyStatus.USER.avatar+".png?size=480";
if(SimplyStatus.CONNECTED_DISCORD) return "https://cdn.discordapp.com/avatars/"+SimplyStatus.USER.getId()+"/"+SimplyStatus.USER.getAvatarId()+".png?size=480";
else return "https://kelcuprum.ru/ass/other/error.png";
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,10 +157,10 @@ public static void init() {
ss.set("time", () -> Value.string(LocalTime.now().format(DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT))));
// Discord
ss.set("discord", new ValueMap()
.set("name", () -> Value.string(SimplyStatus.USER.username))
.set("discriminator", () -> Value.string(SimplyStatus.USER.discriminator))
.set("id", () -> Value.string(SimplyStatus.USER.userId))
.set("avatar", () -> Value.string(SimplyStatus.USER.avatar))
.set("name", () -> Value.string(SimplyStatus.USER.getName()))
.set("discriminator", () -> Value.string(SimplyStatus.USER.getDiscriminator()))
.set("id", () -> Value.string(SimplyStatus.USER.getId()))
.set("avatar", () -> Value.string(SimplyStatus.USER.getAvatarId()))
);
// Player
ss.set("player", new ValueMap()
Expand Down

0 comments on commit f59b637

Please sign in to comment.