Skip to content

Commit

Permalink
Revamp DiscordRPC
Browse files Browse the repository at this point in the history
  • Loading branch information
TangyKiwi committed Feb 29, 2024
1 parent 2a3e5ec commit af5ba00
Show file tree
Hide file tree
Showing 22 changed files with 401 additions and 77 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ dependencies {
modCompileOnly "maven.modrinth:sodium:${project.sodium_version}"
// include "maven.modrinth:sodium:${project.sodium_version}"

implementation "com.github.Vatuu:discord-rpc:1.6.2"
include "com.github.Vatuu:discord-rpc:1.6.2"
// implementation "com.github.Vatuu:discord-rpc:1.6.2"
// include "com.github.Vatuu:discord-rpc:1.6.2"

implementation "com.github.LlamaLad7.MixinExtras:mixinextras-fabric:0.2.0-beta.8"
annotationProcessor "com.github.LlamaLad7.MixinExtras:mixinextras-fabric:0.2.0-beta.8"
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ org.gradle.parallel=true
loader_version=0.15.0

# Mod Properties
mod_version = 8.15.51
mod_version = 8.15.52
maven_group = com.tangykiwi.kiwiclient
archives_base_name = kiwiclient

Expand Down
57 changes: 36 additions & 21 deletions src/main/java/com/tangykiwi/kiwiclient/KiwiClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
import com.tangykiwi.kiwiclient.modules.client.ClickGui;
import com.tangykiwi.kiwiclient.modules.player.ArmorSwap;
import com.tangykiwi.kiwiclient.util.*;
import com.tangykiwi.kiwiclient.util.discord.DiscordEventHandlers;
import com.tangykiwi.kiwiclient.util.discord.DiscordRPC;
import com.tangykiwi.kiwiclient.util.discord.DiscordRichPresence;
import com.tangykiwi.kiwiclient.util.render.CustomMatrix;
import com.tangykiwi.kiwiclient.util.tooltip.EChestMemory;
import net.fabricmc.api.ModInitializer;
Expand Down Expand Up @@ -37,7 +40,8 @@ public class KiwiClient implements ModInitializer {

public static String name = "KiwiClient " + SharedConstants.getGameVersion().getName(), version = "8.14.51";

public static DiscordRP discordRPC;
public static DiscordRichPresence discordRPC;
public static DiscordRPC rpc = DiscordRPC.INSTANCE;
public static ModuleManager moduleManager;
public static CommandManager commandManager;
public static String PREFIX = ",";
Expand Down Expand Up @@ -67,8 +71,8 @@ public void onInitialize() {
commandManager = new CommandManager();
commandManager.init();

discordRPC = new DiscordRP();
discordRPC.start();
discordRPC = new DiscordRichPresence();
startRPC();

EChestMemory eChestMemory = new EChestMemory();
TickRate tickRate = new TickRate();
Expand All @@ -86,24 +90,24 @@ public void onInitialize() {
ResourceManagerHelper.registerBuiltinResourcePack(new Identifier("kiwiclient:kiwitweaks"), "resourcepacks/kiwitweaks", modContainer, true);
});

UseItemCallback.EVENT.register((player, world, hand) -> {
MinecraftClient mc = MinecraftClient.getInstance();
ClientPlayerInteractionManager interactionManager = mc.interactionManager;
if (mc.mouse.wasRightButtonClicked() && moduleManager.getModule(ArmorSwap.class).isEnabled()) {
ItemStack stack = player.getMainHandStack();
int currentItemIndex = player.getInventory().main.indexOf(stack);
EquipmentSlot equipmentSlot = MobEntity.getPreferredEquipmentSlot(stack);
int armorIndexSlot = determineIndex(equipmentSlot);

if (hand == Hand.MAIN_HAND && armorIndexSlot != -1) {
SoundEvent sound = determineSound(stack.getItem());
player.playSound(sound, 1.0F, 1.0F);
interactionManager.clickSlot(player.playerScreenHandler.syncId, armorIndexSlot, currentItemIndex, SlotActionType.SWAP, player);
return TypedActionResult.success(stack);
}
}
return TypedActionResult.pass(ItemStack.EMPTY);
});
// UseItemCallback.EVENT.register((player, world, hand) -> {
// MinecraftClient mc = MinecraftClient.getInstance();
// ClientPlayerInteractionManager interactionManager = mc.interactionManager;
// if (mc.mouse.wasRightButtonClicked() && moduleManager.getModule(ArmorSwap.class).isEnabled()) {
// ItemStack stack = player.getMainHandStack();
// int currentItemIndex = player.getInventory().main.indexOf(stack);
// EquipmentSlot equipmentSlot = MobEntity.getPreferredEquipmentSlot(stack);
// int armorIndexSlot = determineIndex(equipmentSlot);
//
// if (hand == Hand.MAIN_HAND && armorIndexSlot != -1) {
// SoundEvent sound = determineSound(stack.getItem());
// player.playSound(sound, 1.0F, 1.0F);
// interactionManager.clickSlot(player.playerScreenHandler.syncId, armorIndexSlot, currentItemIndex, SlotActionType.SWAP, player);
// return TypedActionResult.success(stack);
// }
// }
// return TypedActionResult.pass(ItemStack.EMPTY);
// });

KeyBindingHelper.registerKeyBinding(zoomKey);
}
Expand Down Expand Up @@ -135,4 +139,15 @@ private static int determineIndex(EquipmentSlot type) {
return -1;
}
}

public static void startRPC() {
DiscordEventHandlers handlers = new DiscordEventHandlers();
rpc.Discord_Initialize("790758093113917491", handlers, true, "");
discordRPC.startTimestamp = System.currentTimeMillis() / 1000L;
discordRPC.largeImageKey = "discord_background";
rpc.Discord_UpdatePresence(discordRPC);
discordRPC.details = "Loading";
discordRPC.button_label_1 = "Download";
discordRPC.button_url_1 = "https://github.com/TangyKiwi/KiwiClient";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import java.util.List;

import static com.tangykiwi.kiwiclient.KiwiClient.discordRPC;
import static com.tangykiwi.kiwiclient.KiwiClient.rpc;

@Mixin(MinecraftClient.class)
public class MinecraftClientMixin {
Expand Down Expand Up @@ -69,26 +70,28 @@ private void getWindowTitle(final CallbackInfoReturnable<String> info) {
ClientPlayNetworkHandler clientPlayNetworkHandler = client.getNetworkHandler();
if (clientPlayNetworkHandler != null && clientPlayNetworkHandler.getConnection().isOpen()) {
title += " - ";
discordRPC.details = "Playing";
if (client.getServer() != null && !client.getServer().isRemote()) {
title += I18n.translate("title.singleplayer");
discordRPC.update("Playing", "Singleplayer");
discordRPC.state = "Singleplayer";
} else if (client.getCurrentServerEntry().isRealm()) {
title += I18n.translate("title.multiplayer.realms");
discordRPC.update("Playing", "Realms");
discordRPC.state = "Realms";
} else if (client.getServer() == null && (client.getCurrentServerEntry() == null || !client.getCurrentServerEntry().isLocal())) {
title += I18n.translate("title.multiplayer.other");
if(KiwiClient.moduleManager.getModule(NoIP.class).isEnabled()) {
discordRPC.update("Playing", "Multiplayer");
discordRPC.state = "Multiplayer";
} else {
discordRPC.update("Playing", client.getCurrentServerEntry().address);
discordRPC.state = client.getCurrentServerEntry().address;
}
} else {
title += I18n.translate("title.multiplayer.lan");
discordRPC.update("Playing", "LAN Server");
discordRPC.state = "LAN Server";
}
}
else {
discordRPC.update("Idle", "Main Menu");
discordRPC.details = "Idle";
discordRPC.state = "Main Menu";
}

info.setReturnValue(title);
Expand All @@ -108,7 +111,7 @@ public void openScreen(Screen screen, CallbackInfo info) {

@Inject(method = "stop", at = @At("HEAD"))
public void shutdown(CallbackInfo info) {
discordRPC.shutdown();
rpc.Discord_Shutdown();
KiwiClient.moduleManager.getModule(Freecam.class).setToggled(false);
ConfigManager.saveModules("default");
ConfigManager.saveClickGui("default");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@

import com.tangykiwi.kiwiclient.KiwiClient;
import com.tangykiwi.kiwiclient.gui.mainmenu.MainMenu;
import net.minecraft.client.gui.LogoDrawer;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.TitleScreen;
import net.minecraft.text.Text;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
Expand All @@ -15,6 +18,8 @@
@Mixin(TitleScreen.class)
public class TitleScreenMixin extends Screen {

@Shadow @Final private LogoDrawer logoDrawer;

protected TitleScreenMixin(Text t) {
super(t);
}
Expand All @@ -25,6 +30,7 @@ private void init(CallbackInfo info) {
this.client.setScreen(new MainMenu());
}

discordRPC.update("Idle", "Main Menu");
discordRPC.details = "Idle";
discordRPC.state = "Main Menu";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ public void init() {
//player
moduleList.add(new AntiBlind());
moduleList.add(new AntiHunger());
moduleList.add(new ArmorSwap());
//moduleList.add(new ArmorSwap());
moduleList.add(new AutoContainer());
moduleList.add(new AutoTool());

Expand Down
44 changes: 0 additions & 44 deletions src/main/java/com/tangykiwi/kiwiclient/util/DiscordRP.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.tangykiwi.kiwiclient.util.discord;

import com.sun.jna.Structure;
import com.tangykiwi.kiwiclient.util.discord.callbacks.*;

import java.util.Arrays;
import java.util.List;

public class DiscordEventHandlers extends Structure {
public DisconnectedCallback disconnected;
public JoinRequestCallback joinRequest;
public SpectateGameCallback spectateGame;
public ReadyCallback ready;
public ErroredCallback errored;
public JoinGameCallback joinGame;

protected List<String> getFieldOrder() {
return Arrays.asList("ready", "disconnected", "errored", "joinGame", "spectateGame", "joinRequest");
}

public static class Builder {
private final DiscordEventHandlers handlers;

public Builder() {
this.handlers = new DiscordEventHandlers();
}

public DiscordEventHandlers build() {
return this.handlers;
}

public Builder disconnected(final DisconnectedCallback disconnected) {
this.handlers.disconnected = disconnected;
return this;
}

public Builder errored(final ErroredCallback errored) {
this.handlers.errored = errored;
return this;
}

public Builder ready(final ReadyCallback ready) {
this.handlers.ready = ready;
return this;
}

public Builder joinRequest(final JoinRequestCallback joinRequest) {
this.handlers.joinRequest = joinRequest;
return this;
}

public Builder joinGame(final JoinGameCallback joinGame) {
this.handlers.joinGame = joinGame;
return this;
}

public Builder spectateGame(final SpectateGameCallback spectateGame) {
this.handlers.spectateGame = spectateGame;
return this;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.tangykiwi.kiwiclient.util.discord;

import com.sun.jna.Library;
import com.sun.jna.Native;

public interface DiscordRPC extends Library {
DiscordRPC INSTANCE = Native.loadLibrary("discord-rpc", DiscordRPC.class);

void Discord_UpdateHandlers(final DiscordEventHandlers p0);

void Discord_UpdatePresence(final DiscordRichPresence p0);

void Discord_Respond(final String p0, final int p1);

void Discord_Register(final String p0, final String p1);

void Discord_Shutdown();

void Discord_UpdateConnection();

void Discord_RegisterSteamGame(final String p0, final String p1);

void Discord_RunCallbacks();

void Discord_Initialize(final String p0, final DiscordEventHandlers p1, final boolean p2, final String p3);

void Discord_ClearPresence();
}
Loading

0 comments on commit af5ba00

Please sign in to comment.