diff --git a/build.gradle.kts b/build.gradle.kts index 0081488..f8e2e0f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -30,8 +30,6 @@ dependencies { modCompileOnly("dev.isxander", "yet-another-config-lib", property("deps.yacl").toString()) modCompileOnly("com.terraformersmc", "modmenu", property("deps.modmenu").toString()) - - include(implementation("club.bottomservices.git.nep", "DiscordRPC4j16", "1.2.2")) } // Add placeholder-api dependency if property exists diff --git a/src/main/java/cc/aabss/eventutils/DiscordRPC.java b/src/main/java/cc/aabss/eventutils/DiscordRPC.java deleted file mode 100644 index a294645..0000000 --- a/src/main/java/cc/aabss/eventutils/DiscordRPC.java +++ /dev/null @@ -1,93 +0,0 @@ -package cc.aabss.eventutils; - -import club.bottomservices.discordrpc.lib.DiscordRPCClient; -import club.bottomservices.discordrpc.lib.EventListener; -import club.bottomservices.discordrpc.lib.RichPresence; -import club.bottomservices.discordrpc.lib.User; -import club.bottomservices.discordrpc.lib.exceptions.DiscordException; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.server.integrated.IntegratedServer; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Objects; -import java.util.concurrent.TimeUnit; -import java.util.function.Supplier; - - -public class DiscordRPC { - private static final long START = System.currentTimeMillis() / 1000; - - @NotNull private final EventUtils mod; - @Nullable public DiscordRPCClient client; - - public DiscordRPC(@NotNull EventUtils mod) { - this.mod = mod; - } - - public void connect() { - if (!mod.config.discordRpc || client != null) return; - - // Build presence - final String username = MinecraftClient.getInstance().getSession().getUsername(); - client = new DiscordRPCClient(new EventListener() { - @Override - public void onReady(@NotNull DiscordRPCClient newClient, @NotNull User user) { - EventUtils.LOGGER.info("DISCORD RPC: Logged in as {}", user.username); - mod.scheduler.scheduleAtFixedRate(() -> { - final Status status = Status.get(); - newClient.sendPresence(new RichPresence.Builder() - .setText("Playing as " + username, "Currently in " + status.text) - .setTimestamps(START, null) - .setAssets(status.asset.get(), "Minecraft" + (Versions.MC_VERSION != null ? " v" + Versions.MC_VERSION : ""), "logo", "EventUtils" + (Versions.EU_VERSION != null ? " v" + Versions.EU_VERSION : "")) - .addButton("Download the mod!", "https://modrinth.com/mod/alerts") - .addButton("Join the Discord!", "https://discord.gg/aGDuQcduWZ") - .build()); - }, 0, 10, TimeUnit.SECONDS); - } - }, "1351016544779374735"); - - // Connect - try { - client.connect(); - } catch (final DiscordException e) { - EventUtils.LOGGER.error("DISCORD RPC: Failed to connect", e); - client = null; - } - } - - public void disconnect() { - if (client == null) return; - if (client.isConnected) client.disconnect(); - client = null; - } - - private enum Status { - SINGLEPLAYER("Singleplayer", "dirt"), - MULTIPLAYER("Multiplayer", () -> "https://api.mcstatus.io/v2/icon/" + Objects.requireNonNull(MinecraftClient.getInstance().getCurrentServerEntry()).address), - MAIN_MENU("the Main Menu", "grass"); - - @NotNull private final String text; - @NotNull private final Supplier asset; - - Status(@NotNull String text, @NotNull Supplier asset) { - this.text = text; - this.asset = asset; - } - - Status(@NotNull String text, @NotNull String asset) { - this(text, () -> asset); - } - - @NotNull - public static Status get() { - final MinecraftClient client = MinecraftClient.getInstance(); - final IntegratedServer server = client.getServer(); - if (server != null && server.isRunning()) return Status.SINGLEPLAYER; - if (client.getCurrentServerEntry() != null) return Status.MULTIPLAYER; - return Status.MAIN_MENU; - } - } -} diff --git a/src/main/java/cc/aabss/eventutils/EventUtils.java b/src/main/java/cc/aabss/eventutils/EventUtils.java index 69337f2..31f560c 100644 --- a/src/main/java/cc/aabss/eventutils/EventUtils.java +++ b/src/main/java/cc/aabss/eventutils/EventUtils.java @@ -56,7 +56,6 @@ public class EventUtils implements ClientModInitializer { @NotNull public final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(3); @NotNull public final Set webSockets = new HashSet<>(); @NotNull public final UpdateChecker updateChecker = new UpdateChecker(this); - @NotNull public final DiscordRPC discordRPC = new DiscordRPC(this); @NotNull public final Map lastIps = new EnumMap<>(EventType.class); public boolean hidePlayers = false; @@ -66,7 +65,6 @@ public EventUtils() { @Override public void onInitializeClient() { - discordRPC.connect(); // Websockets webSockets.add(new WebSocketClient(this, SocketEndpoint.EVENT_POSTED)); @@ -78,7 +76,6 @@ public void onInitializeClient() { // Game closed ClientLifecycleEvents.CLIENT_STOPPING.register(client -> { webSockets.forEach(socket -> socket.close("Game closed")); - discordRPC.disconnect(); }); // Update checker diff --git a/src/main/java/cc/aabss/eventutils/config/ConfigScreen.java b/src/main/java/cc/aabss/eventutils/config/ConfigScreen.java index 2826019..4848dd2 100644 --- a/src/main/java/cc/aabss/eventutils/config/ConfigScreen.java +++ b/src/main/java/cc/aabss/eventutils/config/ConfigScreen.java @@ -47,19 +47,6 @@ public static Screen getConfigScreen(@Nullable Screen parent) { config.setSave("simple_queue_message", config.simpleQueueMessage); }) .controller(ConfigScreen::getBooleanBuilder).build()) - .option(Option.createBuilder() - .name(translatable("eventutils.config.discord.title")) - .description(OptionDescription.of(translatable("eventutils.config.discord.description"))) - .binding(EventConfig.Defaults.DISCORD_RPC, () -> config.discordRpc, newValue -> { - config.discordRpc = newValue; - config.setSave("discord_rpc", config.discordRpc); - if (Boolean.TRUE.equals(newValue)) { - EventUtils.MOD.discordRPC.connect(); - } else { - EventUtils.MOD.discordRPC.disconnect(); - } - }) - .controller(ConfigScreen::getBooleanBuilder).build()) .option(Option.createBuilder() .name(translatable("eventutils.config.update.title")) .description(OptionDescription.of(translatable("eventutils.config.update.description")))