11package simpleclient ;
22
33import net .fabricmc .api .ClientModInitializer ;
4+ import net .fabricmc .fabric .api .client .event .lifecycle .v1 .ClientEntityEvents ;
5+ import net .fabricmc .fabric .api .client .event .lifecycle .v1 .ClientLifecycleEvents ;
6+ import net .fabricmc .fabric .api .client .networking .v1 .ClientPlayConnectionEvents ;
7+ import net .fabricmc .fabric .api .entity .event .v1 .ServerEntityWorldChangeEvents ;
48import net .fabricmc .loader .api .FabricLoader ;
9+ import net .minecraft .client .Minecraft ;
10+ import net .minecraft .client .multiplayer .ClientLevel ;
11+ import net .minecraft .client .player .AbstractClientPlayer ;
12+ import net .minecraft .client .player .LocalPlayer ;
13+ import net .minecraft .world .entity .player .Player ;
514import org .slf4j .Logger ;
615import org .slf4j .LoggerFactory ;
716import simpleclient .adapter .TranslationAdapter ;
817import simpleclient .adapter .TranslationAdapterImpl ;
918import simpleclient .feature .FeatureManager ;
19+ import simpleclient .util .DiscordRPC ;
20+
21+ import java .net .InetSocketAddress ;
22+ import java .time .Instant ;
1023
1124public class SimpleClient implements ClientModInitializer {
1225 public static final Logger LOGGER = LoggerFactory .getLogger ("simpleclient" );
@@ -17,6 +30,23 @@ public void onInitializeClient() {
1730 VERSION = loadVersion ();
1831 TranslationAdapter .INSTANCE = new TranslationAdapterImpl ();
1932 FeatureManager .INSTANCE .init ();
33+ DiscordRPC .INSTANCE .init (() -> {
34+ Minecraft mc = Minecraft .getInstance ();
35+ if (mc .player != null && mc .level != null ) {
36+ if (DiscordRPC .INSTANCE .getIngameTimestamp () == null ) DiscordRPC .INSTANCE .setIngameTimestamp (Instant .now ());
37+ if (mc .getSingleplayerServer () == null ) {
38+ InetSocketAddress address = (InetSocketAddress ) mc .getConnection ().getConnection ().getRemoteAddress ();
39+ return DiscordRPC .activity ("Multiplayer" , address .getHostName (), DiscordRPC .INSTANCE .getIngameTimestamp ());
40+ } else {
41+ String gamemode = mc .player .isCreative () ? "Creative Mode" : mc .player .isSpectator () ? "Spectator Mode" : "Survival Mode" ;
42+ return DiscordRPC .activity ("Singleplayer" , gamemode , DiscordRPC .INSTANCE .getIngameTimestamp ());
43+ }
44+ } else {
45+ if (DiscordRPC .INSTANCE .getIngameTimestamp () != null ) DiscordRPC .INSTANCE .setIngameTimestamp (null );
46+ return DiscordRPC .activity ("Not playing" , null , DiscordRPC .INSTANCE .getStartTimestamp ());
47+ }
48+ });
49+ ClientLifecycleEvents .CLIENT_STOPPING .register (client -> DiscordRPC .INSTANCE .close ());
2050 }
2151
2252 public String loadVersion () {
0 commit comments