mirror of
https://github.com/chylex/Java-Checker.git
synced 2025-06-07 19:34:09 +02:00
commit
534bfcce9b
build.gradle
src/main/java/chylex/javacheck
60
build.gradle
60
build.gradle
@ -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'
|
||||
}
|
||||
}
|
27
src/main/java/chylex/javacheck/Java7Checker.java
Normal file
27
src/main/java/chylex/javacheck/Java7Checker.java
Normal 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];
|
||||
}
|
||||
}
|
@ -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){}
|
||||
}
|
27
src/main/java/chylex/javacheck/Java8Checker.java
Normal file
27
src/main/java/chylex/javacheck/Java8Checker.java
Normal 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];
|
||||
}
|
||||
}
|
@ -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){}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
14
src/main/java/chylex/javacheck/test/JavaCheckerTestMod.java
Normal file
14
src/main/java/chylex/javacheck/test/JavaCheckerTestMod.java
Normal 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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user