Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ dependencies {
shadowImpl("com.github.LabyStudio:java-spotify-api:+:all")

// Discord RPC
shadowImpl("com.github.MinnDevelopment:java-discord-rpc:v2.0.2")
shadowImpl("com.github.Vatuu:discord-rpc:1.6.2")

}

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ org.gradle.jvmargs=-Xmx2g
baseGroup = com.github.jtxofficial.flustclient
mcVersion = 1.8.9
modid = flustclient
version = v0.1.1-beta
version = v0.2.1-beta
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
public class FlustClient {

public static final String MODID = "flustclient";
public static final String VERSION = "v0.1.1-beta";
public static final String VERSION = "v0.2.1-beta";
public static final String NAME = "FlustClient";

@Mod.Instance(MODID)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.github.jtxofficial.flustclient.manager;

import club.minnced.discord.rpc.DiscordEventHandlers;
import club.minnced.discord.rpc.DiscordRPC;
import club.minnced.discord.rpc.DiscordRichPresence;
import net.arikia.dev.drpc.DiscordEventHandlers;
import net.arikia.dev.drpc.DiscordRPC;
import net.arikia.dev.drpc.DiscordRichPresence;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ServerData;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
Expand All @@ -12,9 +12,7 @@
public class DiscordRPCManager extends Manager {

private static final String APPLICATION_ID = "1442966231723278510";
private static final DiscordRPC lib = DiscordRPC.INSTANCE;

private final DiscordRichPresence presence = new DiscordRichPresence();
private long startTimestamp;
private int updateCounter = 0;
private static final int UPDATE_INTERVAL = 100; // Update every 5 seconds (100 ticks)
Expand All @@ -24,10 +22,19 @@ public class DiscordRPCManager extends Manager {
@Override
public void init() {
try {
DiscordEventHandlers handlers = new DiscordEventHandlers();
handlers.errored = (errorCode, message) -> System.err.println("Discord RPC error: " + message);

lib.Discord_Initialize(APPLICATION_ID, handlers, true, "");
DiscordEventHandlers handlers = new DiscordEventHandlers.Builder()
.setReadyEventHandler(user -> {
System.out.println("Discord RPC ready! Logged in as: " + user.username + "#" + user.discriminator);
})
.setErroredEventHandler((errorCode, message) -> {
System.err.println("Discord RPC error [" + errorCode + "]: " + message);
})
.setDisconnectedEventHandler((errorCode, message) -> {
System.err.println("Discord RPC disconnected [" + errorCode + "]: " + message);
})
.build();

DiscordRPC.discordInitialize(APPLICATION_ID, handlers, true);
startTimestamp = System.currentTimeMillis() / 1000;

// Set initial presence
Expand All @@ -50,7 +57,7 @@ public void onClientTick(TickEvent.ClientTickEvent event) {
}

// Process Discord callbacks
lib.Discord_RunCallbacks();
DiscordRPC.discordRunCallbacks();

// Update presence periodically
updateCounter++;
Expand Down Expand Up @@ -80,37 +87,39 @@ private void updatePresence() {

if (mc.theWorld == null) {
// Not in a world - show main menu
presence.details = "In Main Menu";
presence.state = "";
presence.largeImageKey = "flust_logo";
presence.largeImageText = "FlustClient";
DiscordRichPresence presence = new DiscordRichPresence.Builder("In Main Menu")
.setDetails("In Main Menu")
.setStartTimestamps(startTimestamp)
.setBigImage("flust_logo", "FlustClient")
.build();
DiscordRPC.discordUpdatePresence(presence);
} else {
ServerData serverData = mc.getCurrentServerData();

if (serverData != null) {
// On a multiplayer server
presence.details = "Playing on Server";
presence.state = serverData.serverIP;
DiscordRichPresence.Builder builder = new DiscordRichPresence.Builder(serverData.serverIP)
.setDetails("Playing on Server")
.setStartTimestamps(startTimestamp)
.setBigImage("flust_logo", "FlustClient");

// Show player count if available
if (mc.getNetHandler() != null && mc.getNetHandler().getPlayerInfoMap() != null) {
int playerCount = mc.getNetHandler().getPlayerInfoMap().size();
presence.partySize = playerCount;
presence.partyMax = 0; // Max players not easily available in 1.8.9
builder.setParty("party", playerCount, 0);
}

DiscordRPC.discordUpdatePresence(builder.build());
} else {
// Singleplayer or LAN
presence.details = "Playing Singleplayer";
presence.state = "";
DiscordRichPresence presence = new DiscordRichPresence.Builder("")
.setDetails("Playing Singleplayer")
.setStartTimestamps(startTimestamp)
.setBigImage("flust_logo", "FlustClient")
.build();
DiscordRPC.discordUpdatePresence(presence);
}

presence.largeImageKey = "flust_logo";
presence.largeImageText = "FlustClient Beta";
}

presence.startTimestamp = startTimestamp;

lib.Discord_UpdatePresence(presence);
} catch (Exception e) {
System.err.println("Failed to update Discord presence: " + e.getMessage());
}
Expand All @@ -119,7 +128,7 @@ private void updatePresence() {
public void shutdown() {
if (initialized) {
try {
lib.Discord_Shutdown();
DiscordRPC.discordShutdown();
unregister();
initialized = false;
} catch (Exception e) {
Expand Down