Skip to content

Instantly share code, notes, and snippets.

@No-Eul
Last active January 28, 2021 17:59
Show Gist options
  • Save No-Eul/d54e653bc9f7902b1421ebf400c3992a to your computer and use it in GitHub Desktop.
Save No-Eul/d54e653bc9f7902b1421ebf400c3992a to your computer and use it in GitHub Desktop.
HKDev Leaderboard in JavaScript with Rhino JS & JDA & HKLeaderboard.jar
const Class = java.lang.Class,
JavaArray = java.lang.reflect.Array;
let jarFiles = JavaArray.newInstance(Class.forName("java.net.URL"), 1);
JavaArray.set(jarFiles, 0, new java.io.File("HKLeaderboard-1.0.0.jar").toURI().toURL());
const Enum = java.lang.Enum,
Integer = java.lang.Integer,
JavaString = java.lang.String;
let classLoader = java.net.URLClassLoader.newInstance(jarFiles),
leaderBoardClass = Class.forName("com.noeul.discord.hk.leaderboard.Leaderboard", true, classLoader),
headerClass = Class.forName("com.noeul.discord.hk.leaderboard.Leaderboard$Header", true, classLoader),
format = "%3s %3s %5s /%5s %7s %s\n",
profile = message.getJDA().getSelfUser();
message.getChannel().sendMessage(
new net.dv8tion.jda.api.EmbedBuilder()
.setColor(java.awt.Color.HSBtoRGB(Math.random(), 1, 1))
.setAuthor("HK Level Leaderboard", "https://hkdev.xyz/leaderboard", "https://cdn.discordapp.com/icons/645137556777992203/f22f972c225a746ff3aab6186f0fbc56.webp")
.appendDescription("```cs\n")
.appendDescription(JavaString.format(format, "Rnk", "Lv", "Exp", "UpTo", "TotalXp", "Tag"))
.appendDescription("=============================================================\n")
.appendDescription(
Array.from(leaderBoardClass.getDeclaredMethod("getData", Integer.TYPE, Integer.TYPE).invoke(null, Integer.valueOf(10), Integer.valueOf(1)))
.reduce((a, $) => a + JavaString.format(format, ["RANK", "LEVEL", "EXP", "UP_TO", "TOTAL_XP", "TAG"].map($$ => $.get(Enum.valueOf(headerClass, $$)))), "")
).appendDescription("```")
.setFooter(profile.getAsTag() + " • Powered by 노을", profile.getEffectiveAvatarUrl())
.setTimestamp(java.time.OffsetDateTime.now())
.build()
).queue();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment