Feed codacy and leijurv at the same time?
This commit is contained in:
parent
0a2e45b64b
commit
7f73b4554a
@ -107,7 +107,6 @@ jar {
|
|||||||
task proguard(type: ProguardTask) {
|
task proguard(type: ProguardTask) {
|
||||||
url 'https://downloads.sourceforge.net/project/proguard/proguard/6.0/proguard6.0.3.zip'
|
url 'https://downloads.sourceforge.net/project/proguard/proguard/6.0/proguard6.0.3.zip'
|
||||||
extract 'proguard6.0.3/lib/proguard.jar'
|
extract 'proguard6.0.3/lib/proguard.jar'
|
||||||
versionManifest 'https://launchermeta.mojang.com/mc/game/version_manifest.json'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
task createDist(type: CreateDistTask, dependsOn: proguard)
|
task createDist(type: CreateDistTask, dependsOn: proguard)
|
||||||
|
@ -20,9 +20,7 @@ package baritone.gradle.task;
|
|||||||
import baritone.gradle.util.Determinizer;
|
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 com.google.gson.*;
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.nio.file.StandardCopyOption;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.gradle.api.NamedDomainObjectContainer;
|
import org.gradle.api.NamedDomainObjectContainer;
|
||||||
@ -59,10 +57,6 @@ public class ProguardTask extends BaritoneGradleTask {
|
|||||||
@Input
|
@Input
|
||||||
private String extract;
|
private String extract;
|
||||||
|
|
||||||
@Input
|
|
||||||
private String versionManifest;
|
|
||||||
|
|
||||||
private Map<String, String> versionDownloadMap;
|
|
||||||
private List<String> requiredLibraries;
|
private List<String> requiredLibraries;
|
||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
@ -74,7 +68,6 @@ public class ProguardTask extends BaritoneGradleTask {
|
|||||||
downloadProguard();
|
downloadProguard();
|
||||||
extractProguard();
|
extractProguard();
|
||||||
generateConfigs();
|
generateConfigs();
|
||||||
downloadVersionManifest();
|
|
||||||
acquireDependencies();
|
acquireDependencies();
|
||||||
proguardApi();
|
proguardApi();
|
||||||
proguardStandalone();
|
proguardStandalone();
|
||||||
@ -139,20 +132,6 @@ public class ProguardTask extends BaritoneGradleTask {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void downloadVersionManifest() throws Exception {
|
|
||||||
Path manifestJson = getTemporaryFile(VERSION_MANIFEST);
|
|
||||||
write(new URL(this.versionManifest).openStream(), manifestJson);
|
|
||||||
|
|
||||||
// Place all the versions in the map with their download URL
|
|
||||||
this.versionDownloadMap = new HashMap<>();
|
|
||||||
JsonObject json = readJson(Files.readAllLines(manifestJson)).getAsJsonObject();
|
|
||||||
JsonArray versions = json.getAsJsonArray("versions");
|
|
||||||
versions.forEach(element -> {
|
|
||||||
JsonObject object = element.getAsJsonObject();
|
|
||||||
this.versionDownloadMap.put(object.get("id").getAsString(), object.get("url").getAsString());
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void acquireDependencies() throws Exception {
|
private void acquireDependencies() throws Exception {
|
||||||
|
|
||||||
// Create a map of all of the dependencies that we are able to access in this project
|
// Create a map of all of the dependencies that we are able to access in this project
|
||||||
@ -173,7 +152,7 @@ public class ProguardTask extends BaritoneGradleTask {
|
|||||||
// copy from the forgegradle cache
|
// copy from the forgegradle cache
|
||||||
if (lib.equals("minecraft")) {
|
if (lib.equals("minecraft")) {
|
||||||
final Path cachedJar = getMinecraftJar();
|
final Path cachedJar = getMinecraftJar();
|
||||||
final Path inTempDir = getTemporaryFile("tempLibraries/" + "minecraft.jar");
|
final Path inTempDir = getTemporaryFile("tempLibraries/minecraft.jar");
|
||||||
// TODO: maybe try not to copy every time
|
// TODO: maybe try not to copy every time
|
||||||
Files.copy(cachedJar, inTempDir, REPLACE_EXISTING);
|
Files.copy(cachedJar, inTempDir, REPLACE_EXISTING);
|
||||||
|
|
||||||
@ -200,14 +179,14 @@ public class ProguardTask extends BaritoneGradleTask {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// a bunch of bullshit to get the path to the cached jar
|
// a bunch of epic stuff to get the path to the cached jar
|
||||||
private Path getMinecraftJar() throws Exception {
|
private Path getMinecraftJar() throws Exception {
|
||||||
MappingType mappingType;
|
MappingType mappingType;
|
||||||
try {
|
try {
|
||||||
mappingType = getMappingType();
|
mappingType = getMappingType();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.err.println("Failed to get mapping type, assuming NOTCH");
|
System.err.println("Failed to get mapping type, assuming NOTCH.");
|
||||||
mappingType = MappingType.SEARGE;
|
mappingType = MappingType.NOTCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
String suffix;
|
String suffix;
|
||||||
@ -219,12 +198,12 @@ public class ProguardTask extends BaritoneGradleTask {
|
|||||||
suffix = "-srgBin";
|
suffix = "-srgBin";
|
||||||
break;
|
break;
|
||||||
case CUSTOM:
|
case CUSTOM:
|
||||||
throw new IllegalStateException("custom mappings not supported");
|
throw new IllegalStateException("Custom mappings not supported!");
|
||||||
default:
|
default:
|
||||||
throw new IllegalStateException("Unknown mapping type: " + mappingType);
|
throw new IllegalStateException("Unknown mapping type: " + mappingType);
|
||||||
}
|
}
|
||||||
|
|
||||||
DefaultConvention convention = (DefaultConvention)this.getProject().getConvention();
|
DefaultConvention convention = (DefaultConvention) this.getProject().getConvention();
|
||||||
final Object extension = convention.getAsMap().get("minecraft");
|
final Object extension = convention.getAsMap().get("minecraft");
|
||||||
Objects.requireNonNull(extension);
|
Objects.requireNonNull(extension);
|
||||||
|
|
||||||
@ -237,24 +216,23 @@ public class ProguardTask extends BaritoneGradleTask {
|
|||||||
Field replacement_replaceMap = class_replacementProvider.getDeclaredField("replaceMap");
|
Field replacement_replaceMap = class_replacementProvider.getDeclaredField("replaceMap");
|
||||||
replacement_replaceMap.setAccessible(true);
|
replacement_replaceMap.setAccessible(true);
|
||||||
|
|
||||||
final Map<String, Object> replacements = (Map)replacement_replaceMap.get(replacer);
|
final Map<String, Object> replacements = (Map) replacement_replaceMap.get(replacer);
|
||||||
final String cacheDir = replacements.get("CACHE_DIR").toString() + "/net/minecraft";
|
final String cacheDir = replacements.get("CACHE_DIR").toString() + "/net/minecraft";
|
||||||
final String mcVersion = replacements.get("MC_VERSION").toString();
|
final String mcVersion = replacements.get("MC_VERSION").toString();
|
||||||
final String mcpInsert = replacements.get("MAPPING_CHANNEL").toString() + "/" + replacements.get("MAPPING_VERSION").toString();
|
final String mcpInsert = replacements.get("MAPPING_CHANNEL").toString() + "/" + replacements.get("MAPPING_VERSION").toString();
|
||||||
final String fullJarName = "minecraft" + "-" + mcVersion + suffix + ".jar";
|
final String fullJarName = "minecraft-" + mcVersion + suffix + ".jar";
|
||||||
|
|
||||||
final String baseDir = String.format("%s/minecraft/%s/", cacheDir, mcVersion);
|
final String baseDir = String.format("%s/minecraft/%s/", cacheDir, mcVersion);
|
||||||
|
|
||||||
String jarPath;
|
String jarPath;
|
||||||
if (mappingType == MappingType.SEARGE) {
|
if (mappingType == MappingType.SEARGE) {
|
||||||
jarPath = String.format("%s/%s/%s", baseDir, mcpInsert, fullJarName);
|
jarPath = String.format("%s/%s/%s", baseDir, mcpInsert, fullJarName);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
jarPath = baseDir + fullJarName;
|
jarPath = baseDir + fullJarName;
|
||||||
}
|
}
|
||||||
jarPath = jarPath
|
jarPath = jarPath
|
||||||
.replace("/", File.separator)
|
.replace("/", File.separator)
|
||||||
.replace("\\", File.separator);// fucking regex
|
.replace("\\", File.separator); // hecking regex
|
||||||
|
|
||||||
return new File(jarPath).toPath();
|
return new File(jarPath).toPath();
|
||||||
}
|
}
|
||||||
@ -266,10 +244,11 @@ public class ProguardTask extends BaritoneGradleTask {
|
|||||||
|
|
||||||
final List<MappingType> mappingTypes = getUsedMappingTypes(reobf);
|
final List<MappingType> mappingTypes = getUsedMappingTypes(reobf);
|
||||||
final long mappingTypesUsed = mappingTypes.size();
|
final long mappingTypesUsed = mappingTypes.size();
|
||||||
if (mappingTypesUsed == 0)
|
if (mappingTypesUsed == 0) {
|
||||||
throw new IllegalStateException("Failed to find mapping type (no jar task?)");
|
throw new IllegalStateException("Failed to find mapping type (no jar task?)");
|
||||||
if (mappingTypesUsed > 1)
|
} if (mappingTypesUsed > 1) {
|
||||||
throw new IllegalStateException("Ambiguous mapping type (multiple jars with different mapping types?)");
|
throw new IllegalStateException("Ambiguous mapping type (multiple jars with different mapping types?)");
|
||||||
|
}
|
||||||
|
|
||||||
return mappingTypes.get(0);
|
return mappingTypes.get(0);
|
||||||
}
|
}
|
||||||
@ -306,10 +285,6 @@ public class ProguardTask extends BaritoneGradleTask {
|
|||||||
this.extract = extract;
|
this.extract = extract;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVersionManifest(String versionManifest) {
|
|
||||||
this.versionManifest = versionManifest;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void runProguard(Path config) throws Exception {
|
private void runProguard(Path config) throws Exception {
|
||||||
// Delete the existing proguard output file. Proguard probably handles this already, but why not do it ourselves
|
// Delete the existing proguard output file. Proguard probably handles this already, but why not do it ourselves
|
||||||
if (Files.exists(this.proguardOut)) {
|
if (Files.exists(this.proguardOut)) {
|
||||||
|
@ -1,9 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* 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 <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
package baritone.gradle.util;
|
package baritone.gradle.util;
|
||||||
|
|
||||||
// this should be the same as in ForgeGradle
|
/**
|
||||||
// credit 2 asmlibgradle (i made this btw)
|
* All credits go to AsmLibGradle and its contributors.
|
||||||
|
*
|
||||||
|
* @see <a href="https://github.com/pozzed/AsmLibGradle/blob/8f917dbc3939eab7a3d9daf54d9d285fdf34f4b2/src/main/java/net/futureclient/asmlib/forgegradle/MappingType.java">Original Source</a>
|
||||||
|
*/
|
||||||
public enum MappingType {
|
public enum MappingType {
|
||||||
SEARGE,
|
SEARGE,
|
||||||
NOTCH,
|
NOTCH,
|
||||||
CUSTOM // forgegradle
|
CUSTOM // forgegradle
|
||||||
}
|
}
|
@ -1,40 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* 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 <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
package baritone.gradle.util;
|
package baritone.gradle.util;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* All credits go to AsmLibGradle and its contributors.
|
||||||
|
*
|
||||||
|
* @see <a href="https://github.com/pozzed/AsmLibGradle/blob/8f917dbc3939eab7a3d9daf54d9d285fdf34f4b2/src/main/java/net/futureclient/asmlib/forgegradle/ReobfWrapper.java">Original Source</a>
|
||||||
|
*/
|
||||||
public class ReobfWrapper {
|
public class ReobfWrapper {
|
||||||
|
|
||||||
private final Object instance;
|
private final Object instance;
|
||||||
private final Class<?> type;
|
private final Class<?> type;
|
||||||
|
|
||||||
public ReobfWrapper(Object instance) {
|
public ReobfWrapper(Object instance) {
|
||||||
this.instance = instance;
|
this.instance = instance;
|
||||||
Objects.requireNonNull(instance);
|
Objects.requireNonNull(instance);
|
||||||
this.type = instance.getClass();
|
this.type = instance.getClass();
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
try {
|
|
||||||
Field nameField = type.getDeclaredField("name");
|
|
||||||
nameField.setAccessible(true);
|
|
||||||
return (String)nameField.get(this.instance);
|
|
||||||
} catch (ReflectiveOperationException ex) {
|
|
||||||
throw new Error(ex);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public MappingType getMappingType() {
|
public String getName() {
|
||||||
try {
|
try {
|
||||||
Field enumField = type.getDeclaredField("mappingType");
|
Field nameField = type.getDeclaredField("name");
|
||||||
enumField.setAccessible(true);
|
nameField.setAccessible(true);
|
||||||
Enum<?> meme = (Enum<?>) enumField.get(this.instance);
|
return (String) nameField.get(this.instance);
|
||||||
MappingType mappingType = MappingType.values()[meme.ordinal()];
|
} catch (ReflectiveOperationException ex) {
|
||||||
if (!meme.name().equals(mappingType.name()))
|
throw new IllegalStateException(ex);
|
||||||
throw new IllegalStateException("ForgeGradle ReobfMappingType is not equivalent to MappingType (version error?)");
|
}
|
||||||
return mappingType;
|
}
|
||||||
} catch (ReflectiveOperationException ex) {
|
|
||||||
throw new Error(ex);
|
public MappingType getMappingType() {
|
||||||
|
try {
|
||||||
|
Field enumField = type.getDeclaredField("mappingType");
|
||||||
|
enumField.setAccessible(true);
|
||||||
|
Enum<?> aEnum = (Enum<?>) enumField.get(this.instance);
|
||||||
|
MappingType mappingType = MappingType.values()[aEnum.ordinal()];
|
||||||
|
if (!aEnum.name().equals(mappingType.name())) {
|
||||||
|
throw new IllegalStateException("ForgeGradle ReobfMappingType is not equivalent to MappingType (version error?)");
|
||||||
|
}
|
||||||
|
return mappingType;
|
||||||
|
} catch (ReflectiveOperationException ex) {
|
||||||
|
throw new IllegalStateException(ex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
4
scripts/proguard.pro
vendored
4
scripts/proguard.pro
vendored
@ -31,10 +31,8 @@
|
|||||||
|
|
||||||
# copy all necessary libraries into tempLibraries to build
|
# copy all necessary libraries into tempLibraries to build
|
||||||
|
|
||||||
-libraryjars 'tempLibraries/minecraft.jar'
|
|
||||||
|
|
||||||
# The correct jar will be copied from the forgegradle cache based on the mapping type being compiled with
|
# The correct jar will be copied from the forgegradle cache based on the mapping type being compiled with
|
||||||
#-libraryjars 'tempLibraries/minecraft.jar'
|
-libraryjars 'tempLibraries/minecraft.jar'
|
||||||
|
|
||||||
-libraryjars 'tempLibraries/SimpleTweaker-1.2.jar'
|
-libraryjars 'tempLibraries/SimpleTweaker-1.2.jar'
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user