1
0
mirror of https://github.com/chylex/Java-Checker.git synced 2025-07-23 17:59:02 +02:00

Merge pull request from chylex/1.7.10

Full rewrite
This commit is contained in:
chylex 2015-10-12 17:46:54 +02:00
commit 534bfcce9b
7 changed files with 153 additions and 83 deletions

View File

@ -1,62 +1,68 @@
buildscript { buildscript{
repositories { repositories{
mavenCentral() mavenCentral()
maven { maven{
name = "forge" name = "forge"
url = "http://files.minecraftforge.net/maven" url = "http://files.minecraftforge.net/maven"
} }
maven { maven{
name = "sonatype" name = "sonatype"
url = "https://oss.sonatype.org/content/repositories/snapshots/" url = "https://oss.sonatype.org/content/repositories/snapshots/"
} }
} }
dependencies { dependencies{
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
} }
} }
apply plugin: 'forge' apply plugin: 'forge'
version = "" String archiveSuffix = " MC-UNIVERSAL v1.2.jar"
group = "chylex.java7check"
archivesBaseName = "Java7Checker MC-1.8+ v1.1"
minecraft { minecraft{
version = "1.8-11.14.1.1306" version = "1.7.10-10.13.4.1492-1.7.10"
assetDir = "eclipse/assets" runDir = "eclipse"
mappings = "snapshot_nodoc_20141130"
} }
jar { task java7Jar(type: Jar, dependsOn: "jar"){
manifest {
attributes 'FMLCorePlugin': 'chylex.javacheck.Java7CheckerCoremod'
}
}
task java8Jar(type: Jar, dependsOn: "jar") {
from sourceSets.main.output from sourceSets.main.output
manifest { manifest{
attributes 'FMLCorePlugin': 'chylex.javacheck.Java8CheckerCoremod' attributes 'TweakClass': 'chylex.javacheck.Java7Checker'
} }
baseName = "Java8Checker MC-1.8+ v1.1" archiveName = "Java7Checker"+archiveSuffix
} }
reobf { task java8Jar(type: Jar, dependsOn: "jar"){
reobf java8Jar { classpath -> classpath = configurations.compile } from sourceSets.main.output
manifest{
attributes 'TweakClass': 'chylex.javacheck.Java8Checker'
}
archiveName = "Java8Checker"+archiveSuffix
} }
processResources { jar.enabled = false
reobf{
reobf java7Jar{ classpath -> classpath = configurations.compile }
reobf java8Jar{ classpath -> classpath = configurations.compile }
}
reobf.enabled = false
processResources{
inputs.property "version", project.version inputs.property "version", project.version
inputs.property "mcversion", project.minecraft.version inputs.property "mcversion", project.minecraft.version
from(sourceSets.main.resources.srcDirs) { from(sourceSets.main.resources.srcDirs){
include 'mcmod.info' include 'mcmod.info'
expand 'version':project.version, 'mcversion':project.minecraft.version expand 'version':project.version, 'mcversion':project.minecraft.version
} }
from(sourceSets.main.resources.srcDirs) { from(sourceSets.main.resources.srcDirs){
exclude 'mcmod.info' exclude 'mcmod.info'
} }
} }

View File

@ -0,0 +1,27 @@
package chylex.javacheck;
import java.io.File;
import java.util.List;
import net.minecraft.launchwrapper.ITweaker;
import net.minecraft.launchwrapper.LaunchClassLoader;
import org.apache.commons.lang3.JavaVersion;
import chylex.javacheck.report.JavaCheckerReporter;
public class Java7Checker implements ITweaker{
@Override
public void injectIntoClassLoader(LaunchClassLoader classLoader){
JavaCheckerReporter.run(JavaVersion.JAVA_1_7);
}
@Override
public void acceptOptions(List<String> args, File gameDir, File assetsDir, String profile){}
@Override
public String getLaunchTarget(){
return null;
}
@Override
public String[] getLaunchArguments(){
return new String[0];
}
}

View File

@ -1,18 +0,0 @@
package chylex.javacheck;
import java.util.Map;
import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin;
import org.apache.commons.lang3.JavaVersion;
import chylex.javacheck.report.JavaCheckerReporter;
public class Java7CheckerCoremod implements IFMLLoadingPlugin{
@Override
public String getSetupClass(){
JavaCheckerReporter.minVersion = JavaVersion.JAVA_1_7;
return "chylex.javacheck.report.JavaCheckerReporter";
}
@Override public String[] getASMTransformerClass(){ return null; }
@Override public String getAccessTransformerClass(){ return null; }
@Override public String getModContainerClass(){ return null; }
@Override public void injectData(Map<String,Object> data){}
}

View File

@ -0,0 +1,27 @@
package chylex.javacheck;
import java.io.File;
import java.util.List;
import net.minecraft.launchwrapper.ITweaker;
import net.minecraft.launchwrapper.LaunchClassLoader;
import org.apache.commons.lang3.JavaVersion;
import chylex.javacheck.report.JavaCheckerReporter;
public class Java8Checker implements ITweaker{
@Override
public void injectIntoClassLoader(LaunchClassLoader classLoader){
JavaCheckerReporter.run(JavaVersion.JAVA_1_8);
}
@Override
public void acceptOptions(List<String> args, File gameDir, File assetsDir, String profile){}
@Override
public String getLaunchTarget(){
return null;
}
@Override
public String[] getLaunchArguments(){
return new String[0];
}
}

View File

@ -1,18 +0,0 @@
package chylex.javacheck;
import java.util.Map;
import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin;
import org.apache.commons.lang3.JavaVersion;
import chylex.javacheck.report.JavaCheckerReporter;
public class Java8CheckerCoremod implements IFMLLoadingPlugin{
@Override
public String getSetupClass(){
JavaCheckerReporter.minVersion = JavaVersion.JAVA_1_8;
return "chylex.javacheck.report.JavaCheckerReporter";
}
@Override public String[] getASMTransformerClass(){ return null; }
@Override public String getAccessTransformerClass(){ return null; }
@Override public String getModContainerClass(){ return null; }
@Override public void injectData(Map<String,Object> data){}
}

View File

@ -1,29 +1,49 @@
package chylex.javacheck.report; package chylex.javacheck.report;
import java.util.Map; import java.awt.Desktop;
import java.awt.Font;
import javax.swing.JEditorPane;
import javax.swing.JLabel;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import net.minecraftforge.fml.relauncher.FMLRelaunchLog; import javax.swing.event.HyperlinkEvent;
import net.minecraftforge.fml.relauncher.IFMLCallHook; import javax.swing.event.HyperlinkEvent.EventType;
import javax.swing.event.HyperlinkListener;
import org.apache.commons.lang3.JavaVersion; import org.apache.commons.lang3.JavaVersion;
import org.apache.commons.lang3.SystemUtils; import org.apache.commons.lang3.SystemUtils;
public final class JavaCheckerReporter implements IFMLCallHook{ public final class JavaCheckerReporter{
public static JavaVersion minVersion = null; public static void run(JavaVersion minVersion){
if (minVersion == null || !SystemUtils.isJavaVersionAtLeast(minVersion)){
@Override if (minVersion == null)minVersion = JavaVersion.JAVA_1_8;
public Void call() throws Exception{
if (!SystemUtils.isJavaVersionAtLeast(minVersion)){ try{
FMLRelaunchLog.severe(getConsoleReport()); Class relaunchLog = findRelaunchLog();
JOptionPane.showMessageDialog(null, "<html>"+getWindowReport()+"</html>","Outdated Java",JOptionPane.ERROR_MESSAGE); if (relaunchLog != null)relaunchLog.getMethod("severe",String.class,Object[].class).invoke(null,getConsoleReport(minVersion),new Object[0]);
throw new OutdatedJavaException(); }catch(Throwable t){}
String style = "font-family:Dialog;font-size:12;font-weight:bold";
JEditorPane pane = new JEditorPane("text/html","<html><body style='"+style+"'>"+getWindowReport(minVersion)+"</body></html>");
pane.setBackground(new JLabel().getBackground());
pane.setEditable(false);
pane.addHyperlinkListener(new HyperlinkListener(){
@Override
public void hyperlinkUpdate(HyperlinkEvent e){
if (e.getEventType() == EventType.ACTIVATED){
try{
if (Desktop.isDesktopSupported())Desktop.getDesktop().browse(e.getURL().toURI());
}catch(Exception ex){
ex.printStackTrace();
}
}
}
});
JOptionPane.showMessageDialog(null,pane,"Outdated Java",JOptionPane.ERROR_MESSAGE);
throw new OutdatedJavaException();
} }
return null;
} }
@Override
public void injectData(Map<String,Object> data){}
static String getConsoleReport(){ private static String getConsoleReport(JavaVersion minVersion){
return new StringBuilder(242).append("\n") return new StringBuilder(242).append("\n")
.append("\n!! DO NOT REPORT !!\n\n") .append("\n!! DO NOT REPORT !!\n\n")
.append("One of the mods requires Java "+minVersion.toString()+" or newer, you are using ").append(SystemUtils.JAVA_VERSION).append(".\n") .append("One of the mods requires Java "+minVersion.toString()+" or newer, you are using ").append(SystemUtils.JAVA_VERSION).append(".\n")
@ -33,11 +53,23 @@ public final class JavaCheckerReporter implements IFMLCallHook{
.toString(); .toString();
} }
static String getWindowReport(){ private static String getWindowReport(JavaVersion minVersion){
return new StringBuilder(230) return new StringBuilder(230)
.append("One of the mods requires Java "+minVersion.toString()+" or newer, you are using ").append(SystemUtils.JAVA_VERSION).append(".<br>") .append("One of the mods requires Java "+minVersion.toString()+" or newer, you are using ").append(SystemUtils.JAVA_VERSION).append(".<br>")
.append("Visit <span style=\"color:red\">https://java.com/download/</span> for the latest version.<br>") .append("Visit <a href=\"https://java.com/download/\"><span style=\"color:blue\">https://java.com/download/</span></a> for the latest version.<br>")
.append("Please, uninstall the old version first to prevent further issues.") .append("Please, uninstall the old version first to prevent further issues.")
.toString(); .toString();
} }
private static Class findRelaunchLog() throws Throwable{
try{
return Class.forName("cpw.mods.fml.relauncher.FMLRelaunchLog");
}catch(ClassNotFoundException e){}
try{
return Class.forName("net.minecraftforge.fml.relauncher.FMLRelaunchLog");
}catch(ClassNotFoundException e){}
return null;
}
} }

View File

@ -0,0 +1,14 @@
package chylex.javacheck.test;
import org.apache.commons.lang3.JavaVersion;
import chylex.javacheck.report.JavaCheckerReporter;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
@Mod(modid = "JavaCheckerTestMod")
public class JavaCheckerTestMod{
@EventHandler
public void onPreInit(FMLPreInitializationEvent e){
JavaCheckerReporter.run(null);
}
}