Add a DiscordRPC.kt feature
This commit is contained in:
		
							parent
							
								
									6f5817389d
								
							
						
					
					
						commit
						6552adbf70
					
				| @ -52,8 +52,9 @@ subprojects { | |||||||
|             "$kotlinX:kotlinx-datetime:0.2.1", |             "$kotlinX:kotlinx-datetime:0.2.1", | ||||||
|             "com.typesafe:config:1.4.1", |             "com.typesafe:config:1.4.1", | ||||||
|             "io.github.config4k:config4k:0.4.2", |             "io.github.config4k:config4k:0.4.2", | ||||||
|             "org.jetbrains:annotations:20.1.0" |             "org.jetbrains:annotations:20.1.0", | ||||||
|         ).forEach { implementation(it); shadowC(it) { isTransitive = false; } } |             "com.github.Vatuu:discord-rpc:1.6.2" | ||||||
|  |         ).forEach { implementation(it); shadowC(it) { isTransitive = false; exclude("com.sun.jna") } } | ||||||
|         "minecraft"("com.mojang:minecraft:${rootProject.property("minecraft")}") |         "minecraft"("com.mojang:minecraft:${rootProject.property("minecraft")}") | ||||||
|         "mappings"(mappingsDep) |         "mappings"(mappingsDep) | ||||||
|     } |     } | ||||||
| @ -73,6 +74,7 @@ subprojects { | |||||||
|             relocate("com.typesafe.config", "${rootProject.group}.typesafe.config") |             relocate("com.typesafe.config", "${rootProject.group}.typesafe.config") | ||||||
|             relocate("io.github.config4k", "${rootProject.group}.config4k") |             relocate("io.github.config4k", "${rootProject.group}.config4k") | ||||||
|             relocate("net.arikia.dev.drpc", "${rootProject.group}.drpc") |             relocate("net.arikia.dev.drpc", "${rootProject.group}.drpc") | ||||||
|  |             exclude("com/sun/jna/**/*") // The shadowed JNA from discord-rpc isn't needed since it is already available at runtime | ||||||
|             exclude("**/*.kotlin_metadata") |             exclude("**/*.kotlin_metadata") | ||||||
|             exclude("**/*.kotlin_builtins") |             exclude("**/*.kotlin_builtins") | ||||||
|             exclude("META-INF/maven/**/*") |             exclude("META-INF/maven/**/*") | ||||||
| @ -99,6 +101,9 @@ subprojects { | |||||||
|             adaptclassstrings() |             adaptclassstrings() | ||||||
|             "$group.**".also { dontnote(it); dontwarn(it) } |             "$group.**".also { dontnote(it); dontwarn(it) } | ||||||
| 
 | 
 | ||||||
|  |             // Required for discord-rpc | ||||||
|  |             keep("class $group.drpc.** { public * ; }") | ||||||
|  | 
 | ||||||
|             dontwarn("kotlinx.serialization.**") |             dontwarn("kotlinx.serialization.**") | ||||||
| 
 | 
 | ||||||
|             doFirst { |             doFirst { | ||||||
|  | |||||||
| @ -0,0 +1,23 @@ | |||||||
|  | package fr.username404.snowygui.gui.feature | ||||||
|  | 
 | ||||||
|  | import net.arikia.dev.drpc.DiscordRichPresence | ||||||
|  | import net.minecraft.client.Minecraft | ||||||
|  | import fr.username404.snowygui.gui.feature.ButtonInfo.Companion.Type | ||||||
|  | import net.arikia.dev.drpc.DiscordEventHandlers | ||||||
|  | import net.arikia.dev.drpc.DiscordRPC as discord_rpc | ||||||
|  | 
 | ||||||
|  | @ButtonInfo(Category.MISC, kind = Type.TOGGLE) | ||||||
|  | object DiscordRPC: ButtonImpl() { | ||||||
|  |     private val RPCHandlers: DiscordEventHandlers = DiscordEventHandlers.Builder().build() | ||||||
|  |     private val RichPresence: DiscordRichPresence.Builder = DiscordRichPresence | ||||||
|  |         .Builder("Playing Minecraft ${Minecraft.getInstance().game.version.name} (${Minecraft.getInstance().launchedVersion})") | ||||||
|  |         .setBigImage("icon", "SnowyGUI") | ||||||
|  |     override fun execAction() { | ||||||
|  |         if (toggled) discord_rpc.discordUpdatePresence(RichPresence.build()) | ||||||
|  |         else discord_rpc.discordClearPresence() | ||||||
|  |     } | ||||||
|  |     init { | ||||||
|  |         Runtime.getRuntime().addShutdownHook(Thread { discord_rpc.discordShutdown() }) | ||||||
|  |         discord_rpc.discordInitialize("839058922102849538", RPCHandlers, true) | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user