mirror of
https://github.com/chylex/Java-Checker.git
synced 2025-07-23 17:59:02 +02:00
commit
534bfcce9b
build.gradle
src/main/java/chylex/javacheck
60
build.gradle
60
build.gradle
@ -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'
|
||||||
}
|
}
|
||||||
}
|
}
|
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;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
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