From abc0d3d959bdcb50a352b5a820204f88811d03ae Mon Sep 17 00:00:00 2001 From: chylex <info@chylex.com> Date: Mon, 12 Oct 2015 19:15:59 +0200 Subject: [PATCH] Add a version of Java Checker for shading --- build.gradle | 7 +++++ .../javacheck/report/JavaCheckerReporter.java | 28 ++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 5216038..78ea3e0 100644 --- a/build.gradle +++ b/build.gradle @@ -44,11 +44,18 @@ task java8Jar(type: Jar, dependsOn: "jar"){ archiveName = "Java8Checker"+archiveSuffix } +task shadeJar(type: Jar, dependsOn: "jar"){ + from sourceSets.main.output + + archiveName = "JavaCheckerShade"+archiveSuffix +} + jar.enabled = false reobf{ reobf java7Jar{ classpath -> classpath = configurations.compile } reobf java8Jar{ classpath -> classpath = configurations.compile } + reobf shadeJar{ classpath -> classpath = configurations.compile } } reobf.enabled = false diff --git a/src/main/java/chylex/javacheck/report/JavaCheckerReporter.java b/src/main/java/chylex/javacheck/report/JavaCheckerReporter.java index de26230..bdad478 100644 --- a/src/main/java/chylex/javacheck/report/JavaCheckerReporter.java +++ b/src/main/java/chylex/javacheck/report/JavaCheckerReporter.java @@ -1,6 +1,7 @@ package chylex.javacheck.report; import java.awt.Desktop; -import java.awt.Font; +import java.io.File; +import java.util.List; import javax.swing.JEditorPane; import javax.swing.JLabel; import javax.swing.JOptionPane; @@ -41,6 +42,19 @@ public final class JavaCheckerReporter{ JOptionPane.showMessageDialog(null,pane,"Outdated Java",JOptionPane.ERROR_MESSAGE); throw new OutdatedJavaException(); } + else{ + try{ + Class cmm = findCoreModManager(); + List coremods = (List)cmm.getMethod("getLoadedCoremods").invoke(null); + List reparsed = (List)cmm.getMethod("getReparseableCoremods").invoke(null); + + String myFile = new File(JavaCheckerReporter.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()).getName(); + coremods.remove(myFile); + reparsed.add(myFile); + }catch(Throwable t){ + t.printStackTrace(); + } + } } private static String getConsoleReport(JavaVersion minVersion){ @@ -72,4 +86,16 @@ public final class JavaCheckerReporter{ return null; } + + private static Class findCoreModManager() throws Throwable{ + try{ + return Class.forName("cpw.mods.fml.relauncher.CoreModManager"); + }catch(ClassNotFoundException e){} + + try{ + return Class.forName("net.minecraftforge.fml.relauncher.CoreModManager"); + }catch(ClassNotFoundException e){} + + return null; + } }