From 261bf005f60eb8b3cb554c3844cf36d6ba61fd58 Mon Sep 17 00:00:00 2001 From: Babbaj Date: Wed, 25 Mar 2020 00:28:55 -0400 Subject: [PATCH 1/7] Scuffed support for forge and building a forge jar --- build.gradle | 52 +++++++++++++++-- .../gradle/task/BaritoneGradleTask.java | 35 +++++++++--- .../baritone/gradle/task/CreateDistTask.java | 15 +++-- .../baritone/gradle/task/ProguardTask.java | 56 +++++++++++++------ scripts/proguard.pro | 1 + src/api/java/baritone/api/BaritoneAPI.java | 11 ++-- .../launch/BaritoneMixinConnector.java | 30 ++++++++++ .../launch/mixins/MixinLivingEntity.java | 3 +- .../launch/mixins/MixinMinecraft.java | 3 +- src/launch/resources/META-INF/mods.toml | 36 ++++++++++++ .../services/baritone.api.IBaritoneProvider | 1 - 11 files changed, 199 insertions(+), 44 deletions(-) create mode 100644 src/launch/java/baritone/launch/BaritoneMixinConnector.java create mode 100644 src/launch/resources/META-INF/mods.toml delete mode 100644 src/main/resources/META-INF/services/baritone.api.IBaritoneProvider diff --git a/build.gradle b/build.gradle index 208a2408..d7a9de4f 100755 --- a/build.gradle +++ b/build.gradle @@ -39,6 +39,9 @@ buildscript { import baritone.gradle.task.CreateDistTask import baritone.gradle.task.ProguardTask + +import net.minecraftforge.gradle.userdev.tasks.GenerateSRG +import net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace import org.apache.tools.ant.taskdefs.condition.Os apply plugin: 'java' @@ -83,7 +86,13 @@ task sourceJar(type: Jar, dependsOn: classes) { minecraft { mappings channel: 'snapshot', version: '20200213-1.15.1' - reobfMappings 'notch' + + if (getProject().hasProperty("baritone.forge_build")) { + println 'searge mappings!!' + reobfMappings 'searge' + } else { + reobfMappings 'notch' + } runs { client { @@ -145,7 +154,8 @@ dependencies { } runtime launchCompile('org.ow2.asm:asm-debug-all:5.2') runtime launchCompile('com.github.ImpactDevelopment:SimpleTweaker:1.2') - runtime launchCompile('org.spongepowered:mixin:0.7.11-SNAPSHOT') { + //"org.spongepowered:mixin:0.8.+" + runtime launchCompile('org.spongepowered:mixin:0.8.+') { // Mixin includes a lot of dependencies that are too up-to-date exclude module: 'launchwrapper' exclude module: 'guava' @@ -178,14 +188,48 @@ jar { manifest { attributes( 'MixinConfigs': 'mixins.baritone.json', + "MixinConnector": "baritone.launch.BaritoneMixinConnector", 'Implementation-Title': 'Baritone', - 'Implementation-Version': version + 'Implementation-Version': version, ) } } -task proguard(type: ProguardTask) { +// skidded from ProguardTask +File getClientJar() { + return project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().findByName("launch").getRuntimeClasspath().getFiles() + .stream() + .filter({f -> f.toString().endsWith("client-extra.jar")}) + .map({f -> new File(f.getParentFile(), "client.jar")}) + .findFirst() + .get() +} + +task copyMcJar(type: Copy) { + def mcJar = {getClientJar()} + + from mcJar + into 'build/createMcSrgJar/' + rename {'client-srg.jar'} +} + +task createSrgMc(type: RenameJarInPlace) { + setInput(new File(copyMcJar.getOutputs().getFiles().getSingleFile(), "client-srg.jar")) + setClasspath(files({getClientJar()})) + + // fork + setMappingType(net.minecraftforge.gradle.common.util.MappingFile.Mapping.SEARGE) + setJarTask('nword') +} +project.afterEvaluate { + createSrgMc.dependsOn(extractSrg, copyMcJar) + createSrgMc.setMappings(extractSrg.getOutput()) + //println(createSrgMc.getClasspath().getFiles()) +} + + +task proguard(type: ProguardTask, dependsOn: createSrgMc) { // TODO: dont need to create srg mc if doing notch build url 'https://downloads.sourceforge.net/project/proguard/proguard/6.0/proguard6.0.3.zip' extract 'proguard6.0.3/lib/proguard.jar' } diff --git a/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java b/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java index e9c61f3f..15da0903 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java @@ -20,6 +20,7 @@ package baritone.gradle.task; import org.gradle.api.DefaultTask; import java.io.File; +import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; @@ -43,28 +44,44 @@ class BaritoneGradleTask extends DefaultTask { ARTIFACT_STANDARD = "%s-%s.jar", ARTIFACT_UNOPTIMIZED = "%s-unoptimized-%s.jar", ARTIFACT_API = "%s-api-%s.jar", - ARTIFACT_STANDALONE = "%s-standalone-%s.jar"; + ARTIFACT_STANDALONE = "%s-standalone-%s.jar", + ARTIFACT_FORGE_API = "%s-api-forge-%s.jar"; + // TODO: forge standalone protected String artifactName, artifactVersion; - protected Path artifactPath, artifactUnoptimizedPath, artifactApiPath, artifactStandalonePath, proguardOut; - - protected void verifyArtifacts() throws IllegalStateException { + protected final Path + artifactPath, artifactUnoptimizedPath, + // processed by proguard + artifactApiPath, artifactStandalonePath, + proguardOut; + protected final Path artifactForgeApiPath; + { this.artifactName = getProject().getName(); this.artifactVersion = getProject().getVersion().toString(); - this.artifactPath = this.getBuildFile(formatVersion(ARTIFACT_STANDARD)); - this.artifactUnoptimizedPath = this.getBuildFile(formatVersion(ARTIFACT_UNOPTIMIZED)); - this.artifactApiPath = this.getBuildFile(formatVersion(ARTIFACT_API)); - this.artifactStandalonePath = this.getBuildFile(formatVersion(ARTIFACT_STANDALONE)); + this.artifactPath = this.getBuildFile(formatVersion(ARTIFACT_STANDARD)); + this.artifactUnoptimizedPath = this.getBuildFile(formatVersion(ARTIFACT_UNOPTIMIZED)); + // just make it null if its not used lol + if (getProject().hasProperty("baritone.forge_build")) { + this.artifactForgeApiPath = this.getBuildFile(formatVersion(ARTIFACT_FORGE_API)); + this.artifactApiPath = null; + this.artifactStandalonePath = null; + } else { + this.artifactForgeApiPath = null; + this.artifactApiPath = this.getBuildFile(formatVersion(ARTIFACT_API)); + this.artifactStandalonePath = this.getBuildFile(formatVersion(ARTIFACT_STANDALONE)); + } this.proguardOut = this.getTemporaryFile(PROGUARD_EXPORT_PATH); + } + protected void verifyArtifacts() throws IllegalStateException { if (!Files.exists(this.artifactPath)) { throw new IllegalStateException("Artifact not found! Run build first!"); } } - protected void write(InputStream stream, Path file) throws Exception { + protected void write(InputStream stream, Path file) throws IOException { if (Files.exists(file)) { Files.delete(file); } diff --git a/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java b/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java index b29ed38f..d5f42ef0 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java @@ -45,6 +45,7 @@ public class CreateDistTask extends BaritoneGradleTask { Path api = getRelativeFile("dist/" + formatVersion(ARTIFACT_API)); Path standalone = getRelativeFile("dist/" + formatVersion(ARTIFACT_STANDALONE)); Path unoptimized = getRelativeFile("dist/" + formatVersion(ARTIFACT_UNOPTIMIZED)); + Path forgeApi = getRelativeFile("dist/" + formatVersion(ARTIFACT_FORGE_API)); // NIO will not automatically create directories Path dir = getRelativeFile("dist/"); @@ -53,12 +54,18 @@ public class CreateDistTask extends BaritoneGradleTask { } // Copy build jars to dist/ - Files.copy(this.artifactApiPath, api, REPLACE_EXISTING); - Files.copy(this.artifactStandalonePath, standalone, REPLACE_EXISTING); - Files.copy(this.artifactUnoptimizedPath, unoptimized, REPLACE_EXISTING); + if (getProject().hasProperty("baritone.forge_build")) { + Files.copy(this.artifactForgeApiPath, forgeApi, REPLACE_EXISTING); + } else { + Files.copy(this.artifactApiPath, api, REPLACE_EXISTING); + Files.copy(this.artifactStandalonePath, standalone, REPLACE_EXISTING); + Files.copy(this.artifactUnoptimizedPath, unoptimized, REPLACE_EXISTING); + } + // Calculate all checksums and format them like "shasum" - List shasum = Stream.of(api, standalone, unoptimized) + List shasum = Stream.of(forgeApi, api, standalone, unoptimized) + .filter(f -> false) // TODO: dont sha nonexistant artifacts .map(path -> sha1(path) + " " + path.getFileName().toString()) .collect(Collectors.toList()); diff --git a/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java b/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java index 107d82ff..a4c58097 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java @@ -56,8 +56,12 @@ public class ProguardTask extends BaritoneGradleTask { downloadProguard(); extractProguard(); generateConfigs(); - proguardApi(); - proguardStandalone(); + if (getProject().hasProperty("baritone.forge_build")) { + proguardApi(this.artifactForgeApiPath.toString()); + } else { + proguardApi(this.artifactApiPath.toString()); + proguardStandalone(this.artifactStandalonePath.toString()); + } cleanup(); } @@ -99,18 +103,27 @@ public class ProguardTask extends BaritoneGradleTask { String out = IOUtils.toString(p.getInputStream(), "UTF-8").split("\n")[0].split("Opened ")[1].replace("]", ""); template.add(2, "-libraryjars '" + out + "'"); - // Discover all of the libraries that we will need to acquire from gradle - acquireDependencies().forEach(f -> { - if (f.toString().endsWith("-recomp.jar")) { - // remove MCP mapped jar - return; + { + final Stream libraries; + { + // Discover all of the libraries that we will need to acquire from gradle + final Stream dependencies = acquireDependencies() + // remove MCP mapped jar + .filter(f -> !f.toString().endsWith("-recomp.jar")) + // go from the extra to the original downloaded client + .map(f -> f.toString().endsWith("client-extra.jar") ? new File(f.getParentFile(), "client.jar") : f); + + if (getProject().hasProperty("baritone.forge_build")) { + libraries = dependencies + .map(f -> f.toString().endsWith("client.jar") ? getSrgMcJar() : f); + } else { + libraries = dependencies; + } } - if (f.toString().endsWith("client-extra.jar")) { - // go from the extra to the original downloaded client - f = new File(f.getParentFile(), "client.jar"); - } - template.add(2, "-libraryjars '" + f + "'"); - }); + libraries.forEach(f -> { + template.add(2, "-libraryjars '" + f + "'"); + }); + } // API config doesn't require any changes from the changes that we made to the template Files.write(getTemporaryFile(PROGUARD_API_CONFIG), template); @@ -121,18 +134,25 @@ public class ProguardTask extends BaritoneGradleTask { Files.write(getTemporaryFile(PROGUARD_STANDALONE_CONFIG), standalone); } + private File getSrgMcJar() { + return getProject().getTasks().findByName("copyMcJar").getOutputs().getFiles().getSingleFile(); + } + private Stream acquireDependencies() { - return getProject().getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().findByName("launch").getRuntimeClasspath().getFiles().stream().filter(File::isFile); + return getProject().getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().findByName("launch").getRuntimeClasspath().getFiles() + .stream() + .filter(File::isFile); + //.peek(f -> System.out.println("xd: " + f)); } - private void proguardApi() throws Exception { + private void proguardApi(String artifact) throws Exception { runProguard(getTemporaryFile(PROGUARD_API_CONFIG)); - Determinizer.determinize(this.proguardOut.toString(), this.artifactApiPath.toString()); + Determinizer.determinize(this.proguardOut.toString(), artifact); } - private void proguardStandalone() throws Exception { + private void proguardStandalone(String artifact) throws Exception { runProguard(getTemporaryFile(PROGUARD_STANDALONE_CONFIG)); - Determinizer.determinize(this.proguardOut.toString(), this.artifactStandalonePath.toString()); + Determinizer.determinize(this.proguardOut.toString(), artifact); } private void cleanup() { diff --git a/scripts/proguard.pro b/scripts/proguard.pro index ac199e3b..f1224672 100644 --- a/scripts/proguard.pro +++ b/scripts/proguard.pro @@ -17,6 +17,7 @@ # also lwjgl lol -dontwarn module-info +# please do not change the comment below -keep class baritone.api.** { *; } # this is the keep api # service provider needs these class names diff --git a/src/api/java/baritone/api/BaritoneAPI.java b/src/api/java/baritone/api/BaritoneAPI.java index 53937bd8..66875efe 100644 --- a/src/api/java/baritone/api/BaritoneAPI.java +++ b/src/api/java/baritone/api/BaritoneAPI.java @@ -19,9 +19,6 @@ package baritone.api; import baritone.api.utils.SettingsUtil; -import java.util.Iterator; -import java.util.ServiceLoader; - /** * Exposes the {@link IBaritoneProvider} instance and the {@link Settings} instance for API usage. * @@ -37,9 +34,11 @@ public final class BaritoneAPI { settings = new Settings(); SettingsUtil.readAndApply(settings); - ServiceLoader baritoneLoader = ServiceLoader.load(IBaritoneProvider.class); - Iterator instances = baritoneLoader.iterator(); - provider = instances.next(); + try { + provider = (IBaritoneProvider)Class.forName("baritone.BaritoneProvider").newInstance(); + } catch (ReflectiveOperationException ex) { + throw new RuntimeException(ex); + } } public static IBaritoneProvider getProvider() { diff --git a/src/launch/java/baritone/launch/BaritoneMixinConnector.java b/src/launch/java/baritone/launch/BaritoneMixinConnector.java new file mode 100644 index 00000000..25094ef0 --- /dev/null +++ b/src/launch/java/baritone/launch/BaritoneMixinConnector.java @@ -0,0 +1,30 @@ +/* + * This file is part of Baritone. + * + * Baritone is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Baritone is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Baritone. If not, see . + */ + +package baritone.launch; + +import org.spongepowered.asm.mixin.Mixins; +import org.spongepowered.asm.mixin.connect.IMixinConnector; + + +public class BaritoneMixinConnector implements IMixinConnector { + + @Override + public void connect() { + Mixins.addConfiguration("mixins.baritone.json"); + } +} \ No newline at end of file diff --git a/src/launch/java/baritone/launch/mixins/MixinLivingEntity.java b/src/launch/java/baritone/launch/mixins/MixinLivingEntity.java index 45c5d464..2790dda8 100644 --- a/src/launch/java/baritone/launch/mixins/MixinLivingEntity.java +++ b/src/launch/java/baritone/launch/mixins/MixinLivingEntity.java @@ -32,7 +32,8 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import static org.spongepowered.asm.lib.Opcodes.GETFIELD; +import static org.objectweb.asm.Opcodes.GETFIELD; +//import static org.spongepowered.asm.lib.Opcodes.GETFIELD; /** * @author Brady diff --git a/src/launch/java/baritone/launch/mixins/MixinMinecraft.java b/src/launch/java/baritone/launch/mixins/MixinMinecraft.java index ff36593e..c137ec61 100644 --- a/src/launch/java/baritone/launch/mixins/MixinMinecraft.java +++ b/src/launch/java/baritone/launch/mixins/MixinMinecraft.java @@ -27,7 +27,8 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.entity.player.ClientPlayerEntity; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.world.ClientWorld; -import org.spongepowered.asm.lib.Opcodes; +//import org.spongepowered.asm.lib.Opcodes; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; diff --git a/src/launch/resources/META-INF/mods.toml b/src/launch/resources/META-INF/mods.toml new file mode 100644 index 00000000..7da9c21d --- /dev/null +++ b/src/launch/resources/META-INF/mods.toml @@ -0,0 +1,36 @@ +# This is an example mods.toml file. It contains the data relating to the loading mods. +# There are several mandatory fields (#mandatory), and many more that are optional (#optional). +# The overall format is standard TOML format, v0.5.0. +# Note that there are a couple of TOML lists in this file. +# Find more information on toml format here: https://github.com/toml-lang/toml +# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml +modLoader="javafml" #mandatory +# A version range to match for said mod loader - for regular FML @Mod it will be the forge version +loaderVersion="[31,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. +# A URL to refer people to when problems occur with this mod +issueTrackerURL="http://my.issue.tracker/" #optional +# A list of mods - how many allowed here is determined by the individual mod loader +[[mods]] #mandatory +# The modid of the mod +modId="baritbone" #mandatory +# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it +version="${file.jarVersion}" #mandatory + # A display name for the mod +displayName="Example Mod" #mandatory +# A URL for the "homepage" for this mod, displayed in the mod UI +displayURL="http://example.com/" #optional +# A file name (in the root of the mod JAR) containing a logo for display +logoFile="examplemod.png" #optional +# A text field displayed in the mod UI +credits="Thanks for this example mod goes to Java" #optional +# A text field displayed in the mod UI +authors="Love, Cheese and small house plants" #optional +# The description text for the mod (multi line!) (#mandatory) +description=''' +This is a long form description of the mod. You can write whatever you want here + +Have some lorem ipsum. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mollis lacinia magna. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed sagittis luctus odio eu tempus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque volutpat ligula eget lacus auctor sagittis. In hac habitasse platea dictumst. Nunc gravida elit vitae sem vehicula efficitur. Donec mattis ipsum et arcu lobortis, eleifend sagittis sem rutrum. Cras pharetra quam eget posuere fermentum. Sed id tincidunt justo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. +''' + diff --git a/src/main/resources/META-INF/services/baritone.api.IBaritoneProvider b/src/main/resources/META-INF/services/baritone.api.IBaritoneProvider deleted file mode 100644 index 934db7d3..00000000 --- a/src/main/resources/META-INF/services/baritone.api.IBaritoneProvider +++ /dev/null @@ -1 +0,0 @@ -baritone.BaritoneProvider \ No newline at end of file From db718a178182166d19920a876c4abaa0250c6354 Mon Sep 17 00:00:00 2001 From: Babbaj Date: Wed, 25 Mar 2020 01:16:30 -0400 Subject: [PATCH 2/7] Add @Mod annotated class --- scripts/proguard.pro | 2 ++ .../baritone/launch/BaritoneForgeModXD.class | Bin 0 -> 414 bytes 2 files changed, 2 insertions(+) create mode 100644 src/launch/resources/baritone/launch/BaritoneForgeModXD.class diff --git a/scripts/proguard.pro b/scripts/proguard.pro index f1224672..7e67a22a 100644 --- a/scripts/proguard.pro +++ b/scripts/proguard.pro @@ -16,6 +16,8 @@ -dontwarn org.lwjgl.** # also lwjgl lol -dontwarn module-info +# we dont have forge +-dontwarn baritone.launch.BaritoneForgeModXD # please do not change the comment below -keep class baritone.api.** { *; } # this is the keep api diff --git a/src/launch/resources/baritone/launch/BaritoneForgeModXD.class b/src/launch/resources/baritone/launch/BaritoneForgeModXD.class new file mode 100644 index 0000000000000000000000000000000000000000..d97e9e052d389464addb3706322f506ad6d5b240 GIT binary patch literal 414 zcmah^y-ve07(BO0L(@V_K|+lD48VXFHV_g&>J&f%6tOz4)4ED*DRKHfS~UGu4}=IX)D-tHqXhVfFY1bNJy zKV?fLU4$;f-e32*H!>V0Mmb(;qhuv=m-{rHmj#!$EUn>`e8~{5MA0aQe%m6W8VtQF zZM3^)=$@RWL-Y~H2rys>+(Oq3$I1VdDLS~bGfEpJRN=8HGgZBctRQ8QSSgB>zUlc| zj9+Y1Nj25pvH#o{r%RRUT9f6*80&=7*3>vahsyZF=u$Vr5i#C!AUylP@STJX#)LhR bJ#G^Y+jodfY_ Date: Wed, 25 Mar 2020 19:00:26 -0400 Subject: [PATCH 3/7] cleanup --- .../gradle/task/BaritoneGradleTask.java | 29 +++++++++---------- .../baritone/gradle/task/CreateDistTask.java | 28 +++++++++--------- .../baritone/gradle/task/ProguardTask.java | 17 ++++------- 3 files changed, 34 insertions(+), 40 deletions(-) diff --git a/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java b/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java index 15da0903..9549d7e7 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java @@ -45,31 +45,30 @@ class BaritoneGradleTask extends DefaultTask { ARTIFACT_UNOPTIMIZED = "%s-unoptimized-%s.jar", ARTIFACT_API = "%s-api-%s.jar", ARTIFACT_STANDALONE = "%s-standalone-%s.jar", - ARTIFACT_FORGE_API = "%s-api-forge-%s.jar"; - // TODO: forge standalone + ARTIFACT_FORGE_UNOPTIMIZED = "%s-unoptimized-forge-%s.jar", + ARTIFACT_FORGE_API = "%s-api-forge-%s.jar", + ARTIFACT_FORGE_STANDALONE = "%s-standalone-forge-%s.jar"; protected String artifactName, artifactVersion; protected final Path - artifactPath, artifactUnoptimizedPath, - // processed by proguard - artifactApiPath, artifactStandalonePath, + artifactPath, + artifactUnoptimizedPath, artifactApiPath, artifactStandalonePath, // these are different for forge builds proguardOut; - protected final Path artifactForgeApiPath; - { + + public BaritoneGradleTask() { this.artifactName = getProject().getName(); this.artifactVersion = getProject().getVersion().toString(); this.artifactPath = this.getBuildFile(formatVersion(ARTIFACT_STANDARD)); - this.artifactUnoptimizedPath = this.getBuildFile(formatVersion(ARTIFACT_UNOPTIMIZED)); - // just make it null if its not used lol + if (getProject().hasProperty("baritone.forge_build")) { - this.artifactForgeApiPath = this.getBuildFile(formatVersion(ARTIFACT_FORGE_API)); - this.artifactApiPath = null; - this.artifactStandalonePath = null; + this.artifactUnoptimizedPath = this.getBuildFile(formatVersion(ARTIFACT_FORGE_UNOPTIMIZED)); + this.artifactApiPath = this.getBuildFile(formatVersion(ARTIFACT_FORGE_API)); + this.artifactStandalonePath = this.getBuildFile(formatVersion(ARTIFACT_FORGE_STANDALONE)); } else { - this.artifactForgeApiPath = null; - this.artifactApiPath = this.getBuildFile(formatVersion(ARTIFACT_API)); - this.artifactStandalonePath = this.getBuildFile(formatVersion(ARTIFACT_STANDALONE)); + this.artifactUnoptimizedPath = this.getBuildFile(formatVersion(ARTIFACT_UNOPTIMIZED)); + this.artifactApiPath = this.getBuildFile(formatVersion(ARTIFACT_API)); + this.artifactStandalonePath = this.getBuildFile(formatVersion(ARTIFACT_STANDALONE)); } this.proguardOut = this.getTemporaryFile(PROGUARD_EXPORT_PATH); diff --git a/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java b/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java index d5f42ef0..9b7861ef 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java @@ -42,10 +42,9 @@ public class CreateDistTask extends BaritoneGradleTask { super.verifyArtifacts(); // Define the distribution file paths - Path api = getRelativeFile("dist/" + formatVersion(ARTIFACT_API)); - Path standalone = getRelativeFile("dist/" + formatVersion(ARTIFACT_STANDALONE)); - Path unoptimized = getRelativeFile("dist/" + formatVersion(ARTIFACT_UNOPTIMIZED)); - Path forgeApi = getRelativeFile("dist/" + formatVersion(ARTIFACT_FORGE_API)); + Path api = getRelativeFile("dist/" + getFileName(artifactApiPath)); + Path standalone = getRelativeFile("dist/" + getFileName(artifactStandalonePath)); + Path unoptimized = getRelativeFile("dist/" + getFileName(artifactUnoptimizedPath)); // NIO will not automatically create directories Path dir = getRelativeFile("dist/"); @@ -54,18 +53,15 @@ public class CreateDistTask extends BaritoneGradleTask { } // Copy build jars to dist/ - if (getProject().hasProperty("baritone.forge_build")) { - Files.copy(this.artifactForgeApiPath, forgeApi, REPLACE_EXISTING); - } else { - Files.copy(this.artifactApiPath, api, REPLACE_EXISTING); - Files.copy(this.artifactStandalonePath, standalone, REPLACE_EXISTING); - Files.copy(this.artifactUnoptimizedPath, unoptimized, REPLACE_EXISTING); - } - + // TODO: dont copy files that dont exist + Files.copy(this.artifactApiPath, api, REPLACE_EXISTING); + Files.copy(this.artifactStandalonePath, standalone, REPLACE_EXISTING); + Files.copy(this.artifactUnoptimizedPath, unoptimized, REPLACE_EXISTING); // Calculate all checksums and format them like "shasum" - List shasum = Stream.of(forgeApi, api, standalone, unoptimized) - .filter(f -> false) // TODO: dont sha nonexistant artifacts + // TODO: get the hash for both forge and non forge jars + List shasum = Stream.of(api, standalone, unoptimized) + .filter(Files::exists) .map(path -> sha1(path) + " " + path.getFileName().toString()) .collect(Collectors.toList()); @@ -75,6 +71,10 @@ public class CreateDistTask extends BaritoneGradleTask { Files.write(getRelativeFile("dist/checksums.txt"), shasum); } + private static String getFileName(Path p) { + return p.getFileName().toString(); + } + private static synchronized String sha1(Path path) { try { if (SHA1_DIGEST == null) { diff --git a/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java b/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java index a4c58097..b19efded 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/ProguardTask.java @@ -56,12 +56,8 @@ public class ProguardTask extends BaritoneGradleTask { downloadProguard(); extractProguard(); generateConfigs(); - if (getProject().hasProperty("baritone.forge_build")) { - proguardApi(this.artifactForgeApiPath.toString()); - } else { - proguardApi(this.artifactApiPath.toString()); - proguardStandalone(this.artifactStandalonePath.toString()); - } + proguardApi(); + proguardStandalone(); cleanup(); } @@ -142,17 +138,16 @@ public class ProguardTask extends BaritoneGradleTask { return getProject().getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().findByName("launch").getRuntimeClasspath().getFiles() .stream() .filter(File::isFile); - //.peek(f -> System.out.println("xd: " + f)); } - private void proguardApi(String artifact) throws Exception { + private void proguardApi() throws Exception { runProguard(getTemporaryFile(PROGUARD_API_CONFIG)); - Determinizer.determinize(this.proguardOut.toString(), artifact); + Determinizer.determinize(this.proguardOut.toString(), this.artifactApiPath.toString()); } - private void proguardStandalone(String artifact) throws Exception { + private void proguardStandalone() throws Exception { runProguard(getTemporaryFile(PROGUARD_STANDALONE_CONFIG)); - Determinizer.determinize(this.proguardOut.toString(), artifact); + Determinizer.determinize(this.proguardOut.toString(), this.artifactStandalonePath.toString()); } private void cleanup() { From 6cc31a9422d26603142ce2708cf3f8273854c04e Mon Sep 17 00:00:00 2001 From: Babbaj Date: Wed, 25 Mar 2020 20:23:41 -0400 Subject: [PATCH 4/7] update mods.toml and fix modid --- build.gradle | 5 +---- .../launch/mixins/MixinLivingEntity.java | 1 - .../launch/mixins/MixinMinecraft.java | 1 - src/launch/resources/META-INF/mods.toml | 20 +++++++----------- .../baritone/launch/BaritoneForgeModXD.class | Bin 414 -> 412 bytes src/launch/resources/pack.mcmeta | 6 ++++++ 6 files changed, 15 insertions(+), 18 deletions(-) create mode 100644 src/launch/resources/pack.mcmeta diff --git a/build.gradle b/build.gradle index d7a9de4f..fe4a2279 100755 --- a/build.gradle +++ b/build.gradle @@ -88,7 +88,6 @@ minecraft { mappings channel: 'snapshot', version: '20200213-1.15.1' if (getProject().hasProperty("baritone.forge_build")) { - println 'searge mappings!!' reobfMappings 'searge' } else { reobfMappings 'notch' @@ -154,7 +153,6 @@ dependencies { } runtime launchCompile('org.ow2.asm:asm-debug-all:5.2') runtime launchCompile('com.github.ImpactDevelopment:SimpleTweaker:1.2') - //"org.spongepowered:mixin:0.8.+" runtime launchCompile('org.spongepowered:mixin:0.8.+') { // Mixin includes a lot of dependencies that are too up-to-date exclude module: 'launchwrapper' @@ -220,12 +218,11 @@ task createSrgMc(type: RenameJarInPlace) { // fork setMappingType(net.minecraftforge.gradle.common.util.MappingFile.Mapping.SEARGE) - setJarTask('nword') + setJarTask('trans alaskan pipeline') } project.afterEvaluate { createSrgMc.dependsOn(extractSrg, copyMcJar) createSrgMc.setMappings(extractSrg.getOutput()) - //println(createSrgMc.getClasspath().getFiles()) } diff --git a/src/launch/java/baritone/launch/mixins/MixinLivingEntity.java b/src/launch/java/baritone/launch/mixins/MixinLivingEntity.java index 2790dda8..026a23cf 100644 --- a/src/launch/java/baritone/launch/mixins/MixinLivingEntity.java +++ b/src/launch/java/baritone/launch/mixins/MixinLivingEntity.java @@ -33,7 +33,6 @@ import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import static org.objectweb.asm.Opcodes.GETFIELD; -//import static org.spongepowered.asm.lib.Opcodes.GETFIELD; /** * @author Brady diff --git a/src/launch/java/baritone/launch/mixins/MixinMinecraft.java b/src/launch/java/baritone/launch/mixins/MixinMinecraft.java index c137ec61..53df678f 100644 --- a/src/launch/java/baritone/launch/mixins/MixinMinecraft.java +++ b/src/launch/java/baritone/launch/mixins/MixinMinecraft.java @@ -27,7 +27,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.entity.player.ClientPlayerEntity; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.world.ClientWorld; -//import org.spongepowered.asm.lib.Opcodes; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; diff --git a/src/launch/resources/META-INF/mods.toml b/src/launch/resources/META-INF/mods.toml index 7da9c21d..2e788f38 100644 --- a/src/launch/resources/META-INF/mods.toml +++ b/src/launch/resources/META-INF/mods.toml @@ -8,29 +8,25 @@ modLoader="javafml" #mandatory # A version range to match for said mod loader - for regular FML @Mod it will be the forge version loaderVersion="[31,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. # A URL to refer people to when problems occur with this mod -issueTrackerURL="http://my.issue.tracker/" #optional +issueTrackerURL="https://github.com/cabaletta/baritone/issues" #optional # A list of mods - how many allowed here is determined by the individual mod loader [[mods]] #mandatory # The modid of the mod -modId="baritbone" #mandatory +modId="baritoe" #mandatory # The version number of the mod - there's a few well known ${} variables useable here or just hardcode it version="${file.jarVersion}" #mandatory # A display name for the mod -displayName="Example Mod" #mandatory +displayName="Baritone" #mandatory # A URL for the "homepage" for this mod, displayed in the mod UI -displayURL="http://example.com/" #optional +displayURL="https://github.com/cabaletta/baritone" #optional # A file name (in the root of the mod JAR) containing a logo for display -logoFile="examplemod.png" #optional +#logoFile="examplemod.png" #optional # A text field displayed in the mod UI -credits="Thanks for this example mod goes to Java" #optional +credits="Hat Gamers" #optional # A text field displayed in the mod UI -authors="Love, Cheese and small house plants" #optional +authors="leijurv, Brady" #optional # The description text for the mod (multi line!) (#mandatory) description=''' -This is a long form description of the mod. You can write whatever you want here - -Have some lorem ipsum. - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mollis lacinia magna. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed sagittis luctus odio eu tempus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque volutpat ligula eget lacus auctor sagittis. In hac habitasse platea dictumst. Nunc gravida elit vitae sem vehicula efficitur. Donec mattis ipsum et arcu lobortis, eleifend sagittis sem rutrum. Cras pharetra quam eget posuere fermentum. Sed id tincidunt justo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. +A Minecraft pathfinder bot. ''' diff --git a/src/launch/resources/baritone/launch/BaritoneForgeModXD.class b/src/launch/resources/baritone/launch/BaritoneForgeModXD.class index d97e9e052d389464addb3706322f506ad6d5b240..cfb3137e28463732febb321bc6d1462d94b56cbd 100644 GIT binary patch delta 18 ZcmbQoJcoJ0BzE?s#G=fS{Ef4j838tx#G=fSr2M>%Gnp9yO4$b# diff --git a/src/launch/resources/pack.mcmeta b/src/launch/resources/pack.mcmeta new file mode 100644 index 00000000..1bc61602 --- /dev/null +++ b/src/launch/resources/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "baritoe", + "pack_format": 5 + } +} From b13b86b67a3abdbdbc9b348a6dbb94a0b1286610 Mon Sep 17 00:00:00 2001 From: Babbaj Date: Wed, 25 Mar 2020 20:34:54 -0400 Subject: [PATCH 5/7] get the hash of all jars in the dist directory --- .../src/main/java/baritone/gradle/task/CreateDistTask.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java b/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java index 9b7861ef..6530830e 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java @@ -59,9 +59,8 @@ public class CreateDistTask extends BaritoneGradleTask { Files.copy(this.artifactUnoptimizedPath, unoptimized, REPLACE_EXISTING); // Calculate all checksums and format them like "shasum" - // TODO: get the hash for both forge and non forge jars - List shasum = Stream.of(api, standalone, unoptimized) - .filter(Files::exists) + List shasum = Files.walk(getRelativeFile("dist"), 1) + .filter(p -> p.toString().endsWith(".jar")) .map(path -> sha1(path) + " " + path.getFileName().toString()) .collect(Collectors.toList()); From aead997b133411ecf9a969c90444b66dbd93a6f1 Mon Sep 17 00:00:00 2001 From: Babbaj Date: Wed, 25 Mar 2020 20:53:37 -0400 Subject: [PATCH 6/7] dont sha old jars --- build.gradle | 2 +- .../gradle/task/BaritoneGradleTask.java | 8 ++++---- .../baritone/gradle/task/CreateDistTask.java | 17 ++++++++++++++--- src/api/java/baritone/api/BaritoneAPI.java | 2 +- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index fe4a2279..9943ad3d 100755 --- a/build.gradle +++ b/build.gradle @@ -218,7 +218,7 @@ task createSrgMc(type: RenameJarInPlace) { // fork setMappingType(net.minecraftforge.gradle.common.util.MappingFile.Mapping.SEARGE) - setJarTask('trans alaskan pipeline') + setJarTask('trans alaska pipeline') } project.afterEvaluate { createSrgMc.dependsOn(extractSrg, copyMcJar) diff --git a/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java b/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java index 9549d7e7..b77889d7 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/BaritoneGradleTask.java @@ -41,10 +41,10 @@ class BaritoneGradleTask extends DefaultTask { PROGUARD_STANDALONE_CONFIG = "standalone.pro", PROGUARD_EXPORT_PATH = "proguard_out.jar", - ARTIFACT_STANDARD = "%s-%s.jar", - ARTIFACT_UNOPTIMIZED = "%s-unoptimized-%s.jar", - ARTIFACT_API = "%s-api-%s.jar", - ARTIFACT_STANDALONE = "%s-standalone-%s.jar", + ARTIFACT_STANDARD = "%s-%s.jar", + ARTIFACT_UNOPTIMIZED = "%s-unoptimized-%s.jar", + ARTIFACT_API = "%s-api-%s.jar", + ARTIFACT_STANDALONE = "%s-standalone-%s.jar", ARTIFACT_FORGE_UNOPTIMIZED = "%s-unoptimized-forge-%s.jar", ARTIFACT_FORGE_API = "%s-api-forge-%s.jar", ARTIFACT_FORGE_STANDALONE = "%s-standalone-forge-%s.jar"; diff --git a/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java b/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java index 6530830e..6b9f3bf9 100644 --- a/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java +++ b/buildSrc/src/main/java/baritone/gradle/task/CreateDistTask.java @@ -23,9 +23,9 @@ import javax.xml.bind.DatatypeConverter; import java.nio.file.Files; import java.nio.file.Path; import java.security.MessageDigest; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; -import java.util.stream.Stream; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; @@ -59,8 +59,8 @@ public class CreateDistTask extends BaritoneGradleTask { Files.copy(this.artifactUnoptimizedPath, unoptimized, REPLACE_EXISTING); // Calculate all checksums and format them like "shasum" - List shasum = Files.walk(getRelativeFile("dist"), 1) - .filter(p -> p.toString().endsWith(".jar")) + List shasum = getAllDistJars().stream() + .filter(Files::exists) .map(path -> sha1(path) + " " + path.getFileName().toString()) .collect(Collectors.toList()); @@ -74,6 +74,17 @@ public class CreateDistTask extends BaritoneGradleTask { return p.getFileName().toString(); } + private List getAllDistJars() { + return Arrays.asList( + getRelativeFile("dist/" + formatVersion(ARTIFACT_UNOPTIMIZED)), + getRelativeFile("dist/" + formatVersion(ARTIFACT_API)), + getRelativeFile("dist/" + formatVersion(ARTIFACT_STANDALONE)), + getRelativeFile("dist/" + formatVersion(ARTIFACT_FORGE_UNOPTIMIZED)), + getRelativeFile("dist/" + formatVersion(ARTIFACT_FORGE_API)), + getRelativeFile("dist/" + formatVersion(ARTIFACT_FORGE_STANDALONE)) + ); + } + private static synchronized String sha1(Path path) { try { if (SHA1_DIGEST == null) { diff --git a/src/api/java/baritone/api/BaritoneAPI.java b/src/api/java/baritone/api/BaritoneAPI.java index 66875efe..4a87449c 100644 --- a/src/api/java/baritone/api/BaritoneAPI.java +++ b/src/api/java/baritone/api/BaritoneAPI.java @@ -35,7 +35,7 @@ public final class BaritoneAPI { SettingsUtil.readAndApply(settings); try { - provider = (IBaritoneProvider)Class.forName("baritone.BaritoneProvider").newInstance(); + provider = (IBaritoneProvider) Class.forName("baritone.BaritoneProvider").newInstance(); } catch (ReflectiveOperationException ex) { throw new RuntimeException(ex); } From a4f7207089d21b28ef9561a2435c0b2a95eebf94 Mon Sep 17 00:00:00 2001 From: Babbaj Date: Wed, 25 Mar 2020 21:00:25 -0400 Subject: [PATCH 7/7] ok --- src/launch/java/baritone/launch/BaritoneMixinConnector.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/launch/java/baritone/launch/BaritoneMixinConnector.java b/src/launch/java/baritone/launch/BaritoneMixinConnector.java index 25094ef0..86069e14 100644 --- a/src/launch/java/baritone/launch/BaritoneMixinConnector.java +++ b/src/launch/java/baritone/launch/BaritoneMixinConnector.java @@ -20,7 +20,6 @@ package baritone.launch; import org.spongepowered.asm.mixin.Mixins; import org.spongepowered.asm.mixin.connect.IMixinConnector; - public class BaritoneMixinConnector implements IMixinConnector { @Override