Merge branch 'master' of github.com:cabaletta/baritone
This commit is contained in:
commit
460833f7d6
17
README.md
17
README.md
@ -21,13 +21,14 @@
|
|||||||
![Lines of Code](https://tokei.rs/b1/github/cabaletta/baritone?category=code)
|
![Lines of Code](https://tokei.rs/b1/github/cabaletta/baritone?category=code)
|
||||||
[![GitHub contributors](https://img.shields.io/github/contributors/cabaletta/baritone.svg)](https://github.com/cabaletta/baritone/graphs/contributors/)
|
[![GitHub contributors](https://img.shields.io/github/contributors/cabaletta/baritone.svg)](https://github.com/cabaletta/baritone/graphs/contributors/)
|
||||||
[![GitHub commits](https://img.shields.io/github/commits-since/cabaletta/baritone/v1.0.0.svg)](https://github.com/cabaletta/baritone/commit/)
|
[![GitHub commits](https://img.shields.io/github/commits-since/cabaletta/baritone/v1.0.0.svg)](https://github.com/cabaletta/baritone/commit/)
|
||||||
[![Impact integration](https://img.shields.io/badge/Impact%20integration-v1.2.10%20/%20v1.3.5%20/%20v1.4.3-brightgreen.svg)](https://impactclient.net/)
|
[![Impact integration](https://img.shields.io/badge/Impact%20integration-v1.2.14%20/%20v1.3.8%20/%20v1.4.6%20/%20v1.5.3-brightgreen.svg)](https://impactclient.net/)
|
||||||
[![KAMI Blue integration](https://img.shields.io/badge/KAMI%20Blue%20integration-v1.2.14--master-green)](https://github.com/kami-blue/client)
|
[![KAMI Blue integration](https://img.shields.io/badge/KAMI%20Blue%20integration-v1.2.14--master-green)](https://github.com/kami-blue/client)
|
||||||
[![ForgeHax integration](https://img.shields.io/badge/ForgeHax%20%22integration%22-scuffed-yellow.svg)](https://github.com/fr1kin/ForgeHax/)
|
[![ForgeHax integration](https://img.shields.io/badge/ForgeHax%20%22integration%22-scuffed-yellow.svg)](https://github.com/fr1kin/ForgeHax/)
|
||||||
[![Aristois add-on integration](https://img.shields.io/badge/Aristois%20add--on%20integration-v1.3.4%20/%20v1.4.1-green.svg)](https://gitlab.com/emc-mods-indrit/baritone_api)
|
[![Aristois add-on integration](https://img.shields.io/badge/Aristois%20add--on%20integration-v1.3.4%20/%20v1.4.1-green.svg)](https://gitlab.com/emc-mods-indrit/baritone_api)
|
||||||
[![rootNET integration](https://img.shields.io/badge/rootNET%20integration-v1.2.11-green.svg)](https://rootnet.dev/)
|
[![rootNET integration](https://img.shields.io/badge/rootNET%20integration-v1.2.11-green.svg)](https://rootnet.dev/)
|
||||||
[![WWE integration](https://img.shields.io/badge/WWE%20%22integration%22-master%3F-green.svg)](https://wweclient.com/)
|
[![WWE integration](https://img.shields.io/badge/WWE%20%22integration%22-master%3F-green.svg)](https://wweclient.com/)
|
||||||
[![Future integration](https://img.shields.io/badge/Future%20integration-Soon™%3F%3F%3F-red.svg)](https://futureclient.net/)
|
[![Future integration](https://img.shields.io/badge/Future%20integration-v1.2.12%20%2F%20v1.3.6%20%2F%20v1.4.4-red)](https://futureclient.net/)
|
||||||
|
[![RusherHack integration](https://img.shields.io/badge/RusherHack%20integration-v1.2.14-green)](https://rusherhack.org/)
|
||||||
[![forthebadge](https://forthebadge.com/images/badges/built-with-swag.svg)](http://forthebadge.com/)
|
[![forthebadge](https://forthebadge.com/images/badges/built-with-swag.svg)](http://forthebadge.com/)
|
||||||
[![forthebadge](https://forthebadge.com/images/badges/mom-made-pizza-rolls.svg)](http://forthebadge.com/)
|
[![forthebadge](https://forthebadge.com/images/badges/mom-made-pizza-rolls.svg)](http://forthebadge.com/)
|
||||||
|
|
||||||
@ -89,6 +90,16 @@ That's what it's for, sure! (As long as usage is in compliance with the LGPL 3.0
|
|||||||
|
|
||||||
Magic. (Hours of [leijurv](https://github.com/leijurv/) enduring excruciating pain)
|
Magic. (Hours of [leijurv](https://github.com/leijurv/) enduring excruciating pain)
|
||||||
|
|
||||||
|
### Additional Special Thanks To:
|
||||||
|
|
||||||
|
![YourKit-Logo](https://www.yourkit.com/images/yklogo.png)
|
||||||
|
|
||||||
|
YourKit supports open source projects with innovative and intelligent tools for monitoring and profiling Java and .NET applications.
|
||||||
|
|
||||||
|
YourKit is the creator of the [YourKit Java Profiler](https://www.yourkit.com/java/profiler/), [YourKit .NET Profiler](https://www.yourkit.com/.net/profiler/), and [YourKit YouMonitor](https://www.yourkit.com/youmonitor/).
|
||||||
|
|
||||||
|
We thank them for granting Baritone an OSS license so that we can make our software the best it can be.
|
||||||
|
|
||||||
## Why is it called Baritone?
|
## Why is it called Baritone?
|
||||||
|
|
||||||
It's named for FitMC's deep sultry voice.
|
It's named for FitMC's deep sultry voice.
|
||||||
|
@ -21,13 +21,21 @@ import baritone.gradle.util.Determinizer;
|
|||||||
import baritone.gradle.util.MappingType;
|
import baritone.gradle.util.MappingType;
|
||||||
import baritone.gradle.util.ReobfWrapper;
|
import baritone.gradle.util.ReobfWrapper;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.gradle.api.JavaVersion;
|
||||||
import org.gradle.api.NamedDomainObjectContainer;
|
import org.gradle.api.NamedDomainObjectContainer;
|
||||||
import org.gradle.api.artifacts.Configuration;
|
import org.gradle.api.artifacts.Configuration;
|
||||||
import org.gradle.api.artifacts.Dependency;
|
import org.gradle.api.artifacts.Dependency;
|
||||||
|
import org.gradle.api.internal.file.IdentityFileResolver;
|
||||||
import org.gradle.api.internal.plugins.DefaultConvention;
|
import org.gradle.api.internal.plugins.DefaultConvention;
|
||||||
import org.gradle.api.tasks.Input;
|
import org.gradle.api.tasks.Input;
|
||||||
import org.gradle.api.tasks.TaskAction;
|
import org.gradle.api.tasks.TaskAction;
|
||||||
|
import org.gradle.api.tasks.TaskCollection;
|
||||||
|
import org.gradle.api.tasks.compile.ForkOptions;
|
||||||
|
import org.gradle.api.tasks.compile.JavaCompile;
|
||||||
import org.gradle.internal.Pair;
|
import org.gradle.internal.Pair;
|
||||||
|
import org.gradle.internal.jvm.Jvm;
|
||||||
|
import org.gradle.internal.jvm.inspection.DefaultJvmVersionDetector;
|
||||||
|
import org.gradle.process.internal.DefaultExecActionFactory;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
@ -101,6 +109,101 @@ public class ProguardTask extends BaritoneGradleTask {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getJavaBinPathForProguard() throws Exception {
|
||||||
|
String path;
|
||||||
|
try {
|
||||||
|
path = findJavaPathByGradleConfig();
|
||||||
|
if (path != null) return path;
|
||||||
|
}
|
||||||
|
catch (Exception ex) {
|
||||||
|
System.err.println("Unable to find java by javaCompile options");
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
path = findJavaByJavaHome();
|
||||||
|
if (path != null) return path;
|
||||||
|
}
|
||||||
|
catch(Exception ex) {
|
||||||
|
System.err.println("Unable to find java by JAVA_HOME");
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
path = findJavaByGradleCurrentRuntime();
|
||||||
|
if (path != null) return path;
|
||||||
|
|
||||||
|
throw new Exception("Unable to find java to determine ProGuard libraryjars. Please specify forkOptions.executable in javaCompile," +
|
||||||
|
" JAVA_HOME environment variable, or make sure to run Gradle with the correct JDK (a v1.8 only)");
|
||||||
|
}
|
||||||
|
|
||||||
|
private String findJavaByGradleCurrentRuntime() {
|
||||||
|
String path = Jvm.current().getJavaExecutable().getAbsolutePath();
|
||||||
|
|
||||||
|
if (this.validateJavaVersion(path)) {
|
||||||
|
System.out.println("Using Gradle's runtime Java for ProGuard");
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String findJavaByJavaHome() {
|
||||||
|
final String javaHomeEnv = System.getenv("JAVA_HOME");
|
||||||
|
if (javaHomeEnv != null) {
|
||||||
|
|
||||||
|
String path = Jvm.forHome(new File(javaHomeEnv)).getJavaExecutable().getAbsolutePath();
|
||||||
|
if (this.validateJavaVersion(path)) {
|
||||||
|
System.out.println("Detected Java path by JAVA_HOME");
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String findJavaPathByGradleConfig() {
|
||||||
|
final TaskCollection<JavaCompile> javaCompiles = super.getProject().getTasks().withType(JavaCompile.class);
|
||||||
|
|
||||||
|
final JavaCompile compileTask = javaCompiles.iterator().next();
|
||||||
|
final ForkOptions forkOptions = compileTask.getOptions().getForkOptions();
|
||||||
|
|
||||||
|
if (forkOptions != null) {
|
||||||
|
String javacPath = forkOptions.getExecutable();
|
||||||
|
if (javacPath != null) {
|
||||||
|
File javacFile = new File(javacPath);
|
||||||
|
if (javacFile.exists()) {
|
||||||
|
File[] maybeJava = javacFile.getParentFile().listFiles(new FilenameFilter() {
|
||||||
|
@Override
|
||||||
|
public boolean accept(File dir, String name) {
|
||||||
|
return name.equals("java");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (maybeJava != null && maybeJava.length > 0) {
|
||||||
|
String path = maybeJava[0].getAbsolutePath();
|
||||||
|
if (this.validateJavaVersion(path)) {
|
||||||
|
System.out.println("Detected Java path by forkOptions");
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean validateJavaVersion(String java) {
|
||||||
|
final JavaVersion javaVersion = new DefaultJvmVersionDetector(new DefaultExecActionFactory(new IdentityFileResolver())).getJavaVersion(java);
|
||||||
|
|
||||||
|
if (!javaVersion.getMajorVersion().equals("8")) {
|
||||||
|
System.out.println("Failed to validate Java version " + javaVersion.toString() + " [" + java + "] for ProGuard libraryjars");
|
||||||
|
// throw new RuntimeException("Java version incorrect: " + javaVersion.getMajorVersion() + " for " + java);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("Validated Java version " + javaVersion.toString() + " [" + java + "] for ProGuard libraryjars");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private void generateConfigs() throws Exception {
|
private void generateConfigs() throws Exception {
|
||||||
Files.copy(getRelativeFile(PROGUARD_CONFIG_TEMPLATE), getTemporaryFile(PROGUARD_CONFIG_DEST), REPLACE_EXISTING);
|
Files.copy(getRelativeFile(PROGUARD_CONFIG_TEMPLATE), getTemporaryFile(PROGUARD_CONFIG_DEST), REPLACE_EXISTING);
|
||||||
|
|
||||||
@ -110,7 +213,7 @@ public class ProguardTask extends BaritoneGradleTask {
|
|||||||
template.add(1, "-outjars " + this.getTemporaryFile(PROGUARD_EXPORT_PATH));
|
template.add(1, "-outjars " + this.getTemporaryFile(PROGUARD_EXPORT_PATH));
|
||||||
|
|
||||||
// Acquire the RT jar using "java -verbose". This doesn't work on Java 9+
|
// Acquire the RT jar using "java -verbose". This doesn't work on Java 9+
|
||||||
Process p = new ProcessBuilder("java", "-verbose").start();
|
Process p = new ProcessBuilder(this.getJavaBinPathForProguard(), "-verbose").start();
|
||||||
String out = IOUtils.toString(p.getInputStream(), "UTF-8").split("\n")[0].split("Opened ")[1].replace("]", "");
|
String out = IOUtils.toString(p.getInputStream(), "UTF-8").split("\n")[0].split("Opened ")[1].replace("]", "");
|
||||||
template.add(2, "-libraryjars '" + out + "'");
|
template.add(2, "-libraryjars '" + out + "'");
|
||||||
|
|
||||||
|
@ -761,6 +761,12 @@ public final class Settings {
|
|||||||
*/
|
*/
|
||||||
public final Setting<Boolean> layerOrder = new Setting<>(false);
|
public final Setting<Boolean> layerOrder = new Setting<>(false);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start building the schematic at a specific layer.
|
||||||
|
* Can help on larger builds when schematic wants to break things its already built
|
||||||
|
*/
|
||||||
|
public final Setting<Integer> startAtLayer = new Setting<>(0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* How far to move before repeating the build. 0 to disable repeating on a certain axis, 0,0,0 to disable entirely
|
* How far to move before repeating the build. 0 to disable repeating on a certain axis, 0,0,0 to disable entirely
|
||||||
*/
|
*/
|
||||||
|
@ -97,7 +97,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil
|
|||||||
}
|
}
|
||||||
this.origin = new Vec3i(x, y, z);
|
this.origin = new Vec3i(x, y, z);
|
||||||
this.paused = false;
|
this.paused = false;
|
||||||
this.layer = 0;
|
this.layer = Baritone.settings().startAtLayer.value;
|
||||||
this.numRepeats = 0;
|
this.numRepeats = 0;
|
||||||
this.observedCompleted = new LongOpenHashSet();
|
this.observedCompleted = new LongOpenHashSet();
|
||||||
}
|
}
|
||||||
@ -744,7 +744,7 @@ public final class BuilderProcess extends BaritoneProcessHelper implements IBuil
|
|||||||
name = null;
|
name = null;
|
||||||
schematic = null;
|
schematic = null;
|
||||||
realSchematic = null;
|
realSchematic = null;
|
||||||
layer = 0;
|
layer = Baritone.settings().startAtLayer.value;
|
||||||
numRepeats = 0;
|
numRepeats = 0;
|
||||||
paused = false;
|
paused = false;
|
||||||
observedCompleted = null;
|
observedCompleted = null;
|
||||||
|
Loading…
Reference in New Issue
Block a user