1
0
mirror of https://github.com/chylex/Java-Checker.git synced 2025-06-07 19:34:09 +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 {
repositories {
buildscript{
repositories{
mavenCentral()
maven {
maven{
name = "forge"
url = "http://files.minecraftforge.net/maven"
}
maven {
maven{
name = "sonatype"
url = "https://oss.sonatype.org/content/repositories/snapshots/"
}
}
dependencies {
dependencies{
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
}
}
apply plugin: 'forge'
version = ""
group = "chylex.java7check"
archivesBaseName = "Java7Checker MC-1.8+ v1.1"
String archiveSuffix = " MC-UNIVERSAL v1.2.jar"
minecraft {
version = "1.8-11.14.1.1306"
assetDir = "eclipse/assets"
mappings = "snapshot_nodoc_20141130"
minecraft{
version = "1.7.10-10.13.4.1492-1.7.10"
runDir = "eclipse"
}
jar {
manifest {
attributes 'FMLCorePlugin': 'chylex.javacheck.Java7CheckerCoremod'
}
}
task java8Jar(type: Jar, dependsOn: "jar") {
task java7Jar(type: Jar, dependsOn: "jar"){
from sourceSets.main.output
manifest {
attributes 'FMLCorePlugin': 'chylex.javacheck.Java8CheckerCoremod'
manifest{
attributes 'TweakClass': 'chylex.javacheck.Java7Checker'
}
baseName = "Java8Checker MC-1.8+ v1.1"
archiveName = "Java7Checker"+archiveSuffix
}
reobf {
reobf java8Jar { classpath -> classpath = configurations.compile }
task java8Jar(type: Jar, dependsOn: "jar"){
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 "mcversion", project.minecraft.version
from(sourceSets.main.resources.srcDirs) {
from(sourceSets.main.resources.srcDirs){
include 'mcmod.info'
expand 'version':project.version, 'mcversion':project.minecraft.version
}
from(sourceSets.main.resources.srcDirs) {
from(sourceSets.main.resources.srcDirs){
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;
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 net.minecraftforge.fml.relauncher.FMLRelaunchLog;
import net.minecraftforge.fml.relauncher.IFMLCallHook;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkEvent.EventType;
import javax.swing.event.HyperlinkListener;
import org.apache.commons.lang3.JavaVersion;
import org.apache.commons.lang3.SystemUtils;
public final class JavaCheckerReporter implements IFMLCallHook{
public static JavaVersion minVersion = null;
@Override
public Void call() throws Exception{
if (!SystemUtils.isJavaVersionAtLeast(minVersion)){
FMLRelaunchLog.severe(getConsoleReport());
JOptionPane.showMessageDialog(null, "<html>"+getWindowReport()+"</html>","Outdated Java",JOptionPane.ERROR_MESSAGE);
throw new OutdatedJavaException();
public final class JavaCheckerReporter{
public static void run(JavaVersion minVersion){
if (minVersion == null || !SystemUtils.isJavaVersionAtLeast(minVersion)){
if (minVersion == null)minVersion = JavaVersion.JAVA_1_8;
try{
Class relaunchLog = findRelaunchLog();
if (relaunchLog != null)relaunchLog.getMethod("severe",String.class,Object[].class).invoke(null,getConsoleReport(minVersion),new Object[0]);
}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")
.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")
@ -33,11 +53,23 @@ public final class JavaCheckerReporter implements IFMLCallHook{
.toString();
}
static String getWindowReport(){
private static String getWindowReport(JavaVersion minVersion){
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("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.")
.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);
}
}