Fix remapJar (#55)

This commit is contained in:
ZekerZhayard authored and Alexander Xia committed 2019-05-23 23:35:56 +08:00
1 parent 917f9f650b
commit 3bee9281ec
8 files changed
+94 -293

No files matched your search

+4
View File
@@ -9,6 +9,7 @@ CL: net/minecraft/client/renderer/texture/TextureManager net/minecraft/class_106
CL: net/minecraft/client/resources/DefaultPlayerSkin net/minecraft/class_1068
CL: net/minecraft/client/resources/SkinManager net/minecraft/class_1071
CL: net/minecraft/client/resources/SkinManager$SkinAvailableCallback net/minecraft/class_1071$class_1072
CL: net/minecraft/client/texture/PlayerSkinProvider net/minecraft/class_1071
CL: net/minecraft/util/ResourceLocation net/minecraft/class_2960
CL: net/minecraft/util/Session net/minecraft/class_320
CL: net/minecraft/util/StringUtils net/minecraft/class_3544
@@ -36,5 +37,8 @@ MD: net/minecraft/client/resources/DefaultPlayerSkin/func_177334_a (Ljava/util/U
MD: net/minecraft/client/resources/DefaultPlayerSkin/func_177335_a ()Lnet/minecraft/util/ResourceLocation; net/minecraft/class_1068/method_4649 ()Lnet/minecraft/class_2960;
MD: net/minecraft/client/resources/SkinManager/func_152790_a (Lcom/mojang/authlib/GameProfile;Lnet/minecraft/client/resources/SkinManager$SkinAvailableCallback;Z)V net/minecraft/class_1071/method_4652 (Lcom/mojang/authlib/GameProfile;Lnet/minecraft/class_1071$class_1072;Z)V
MD: net/minecraft/client/resources/SkinManager$SkinAvailableCallback/func_180521_a (Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;Lnet/minecraft/util/ResourceLocation;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;)V net/minecraft/class_1071$class_1072/onSkinTextureAvailable (Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;Lnet/minecraft/class_2960;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;)V
MD: net/minecraft/client/texture/PlayerSkinProvider/loadSkin (Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;Lnet/minecraft/client/resources/SkinManager$SkinAvailableCallback;)Lnet/minecraft/util/ResourceLocation; net/minecraft/class_1071/method_4651 (Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;Lnet/minecraft/class_1071$class_1072;)Lnet/minecraft/class_2960;
MD: net/minecraft/client/texture/PlayerSkinProvider/loadSkin (Lcom/mojang/authlib/GameProfile;Lnet/minecraft/client/resources/SkinManager$SkinAvailableCallback;Z)V net/minecraft/class_1071/method_4652 (Lcom/mojang/authlib/GameProfile;Lnet/minecraft/class_1071$class_1072;Z)V
MD: net/minecraft/client/texture/PlayerSkinProvider/getTextures (Lcom/mojang/authlib/GameProfile;)Ljava/util/Map; net/minecraft/class_1071/method_4654 (Lcom/mojang/authlib/GameProfile;)Ljava/util/Map;
MD: net/minecraft/util/Session/func_148256_e ()Lcom/mojang/authlib/GameProfile; net/minecraft/class_320/method_1677 ()Lcom/mojang/authlib/GameProfile;
MD: net/minecraft/util/StringUtils/func_76338_a (Ljava/lang/String;)Ljava/lang/String; net/minecraft/class_3544/method_15440 (Ljava/lang/String;)Ljava/lang/String;
+49 -44
View File
@@ -1,23 +1,54 @@
//apply plugin: 'fabric-loom'
apply from: project.file("fabric.compact.gradle")
apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: 'org.spongepowered.mixin'
ext.configFile = file "build.properties"
configFile.withReader {
def prop = new Properties()
prop.load(it)
project.ext.config = new ConfigSlurper().parse prop
}
apply from: rootProject.file("BuildScripts/version.gradle")
archivesBaseName = project.archives_base_name
version = getCSLVersion()
group = project.maven_group
project.extensions.getByName("minecraftfabric").refmapName = "customskinloader.refmap.json"
ext.MINECRAFT_VERSION = "1.12.2"
ext.FORGE_VERSION = "14.23.5.2768"
ext.MAPPING_VERSION = "stable_39"
ext.MINECRAFT_FULL_VERSIONS = "1.14,1.14.1"
group = config.group
archivesBaseName = rootProject.ext.config.name + "_" + config.minecraft_version
ext.shortVersion = getShortVersion()
sourceCompatibility = targetCompatibility = 1.6
compileJava {
sourceCompatibility = targetCompatibility = 1.6
}
minecraft {
version = config.forge_mc_version + "-" + config.forge_version
runDir = "run"
mappings = config.mappings_version
replace '@MOD_VERSION@', rootProject.ext.config.version
replace '@MOD_FULL_VERSION@', project.version
replaceIn 'CustomSkinLoader.java'
}
jar {
exclude 'net/**'
}
repositories {
maven {
name = "sponge"
url = "https://repo.spongepowered.org/maven"
}
}
dependencies {
implementation 'org.spongepowered:mixin:0.7.11-SNAPSHOT'
}
mixin {
add sourceSets.main, "customskinloader.refmap.json"
reobfSrgFile = config.srg_notch_map
}
sourceSets {
main {
java {
@@ -36,46 +67,20 @@ sourceSets {
}
}
minecraft {
version = MINECRAFT_VERSION + "-" + FORGE_VERSION
runDir = "run"
mappings = MAPPING_VERSION
replace '@MOD_VERSION@', rootProject.ext.config.version
replace '@MOD_FULL_VERSION@', project.version
replaceIn 'CustomSkinLoader.java'
}
dependencies {
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}"
modCompile "net.fabricmc:fabric-loader:${project.loader_version}"
modCompile "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
}
jar {
exclude 'net/**'
}
processResources {
expand([
modVersion : rootProject.ext.config.version,
modFullVersion: project.version,
mcVersion : MINECRAFT_VERSION,
mcFullVersions: MINECRAFT_FULL_VERSIONS,
forgeVersion : FORGE_VERSION,
gitVersion : System.getenv("CIRCLE_SHA1"),
buildUrl : System.getenv("CIRCLE_BUILD_URL")
modVersion : rootProject.ext.config.version,
modFullVersion : project.version,
modShortFullVersion: shortVersion,
mcVersion : config.minecraft_version,
mcFullVersions : config.minecraft_full_versions,
forgeVersion : config.forge_version,
gitVersion : System.getenv("CIRCLE_SHA1"),
buildUrl : System.getenv("CIRCLE_BUILD_URL")
])
}
apply from: rootProject.file("BuildScripts/remap.gradle")
ext.configFile = file "gradle.properties"
configFile.withReader {
def prop = new Properties()
prop.load(it)
project.ext.config = new ConfigSlurper().parse prop
}
task afterBuild {
doLast {
//renameSrgJar
+7
View File
@@ -0,0 +1,7 @@
minecraft_version=Fabric
minecraft_full_versions=1.14,1.14.1
#forge gradle needs forge version
forge_mc_version=1.12.2
forge_version=14.23.5.2768
mappings_version=stable_39
srg_notch_map=Fabric.srg
-216
View File
@@ -1,216 +0,0 @@
buildscript {
repositories {
mavenCentral()
maven {
name = 'Fabric'
url = 'https://maven.fabricmc.net/'
}
}
dependencies {
classpath 'fabric-loom:fabric-loom.gradle.plugin:0.2.2-SNAPSHOT'
}
}
import java.nio.file.Path;
import com.google.common.collect.ImmutableMap;
import net.fabricmc.loom.AbstractPlugin;
import net.fabricmc.loom.LoomGradleExtension;
import net.fabricmc.loom.LoomGradlePlugin;
import net.fabricmc.loom.providers.MappingsProvider;
import net.fabricmc.loom.providers.MinecraftLibraryProvider;
import net.fabricmc.loom.task.*;
import net.fabricmc.loom.task.fernflower.FernFlowerTask;
import net.fabricmc.loom.util.Constants;
// From: https://github.com/FabricMC/fabric-loom/blob/dev/0.2.2/src/main/java/net/fabricmc/loom/AbstractPlugin.java
// https://github.com/FabricMC/fabric-loom/blob/dev/0.2.2/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java
public class Fabric_Compact extends LoomGradlePlugin {
@Override
public void apply(Project target) {
// AbstractPlugin.java:
this.project = target;
project.getLogger().lifecycle("Fabric Loom: " + AbstractPlugin.class.getPackage().getImplementationVersion());
// Apply default plugins
project.apply(ImmutableMap.of("plugin", "java"));
project.apply(ImmutableMap.of("plugin", "eclipse"));
project.apply(ImmutableMap.of("plugin", "idea"));
//project.getExtensions().create("minecraft", LoomGradleExtension.class, project);
project.getExtensions().create("minecraftfabric", LoomGradleExtension.class, project);
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
// Force add Mojang repository
addMavenRepo(target, "Mojang", "https://libraries.minecraft.net/");
Configuration compileModsConfig = project.getConfigurations().maybeCreate(Constants.COMPILE_MODS);
compileModsConfig.setTransitive(true);
Configuration compileModsMappedConfig = project.getConfigurations().maybeCreate(Constants.COMPILE_MODS_MAPPED);
compileModsMappedConfig.setTransitive(false); // Don't get transitive deps of already remapped mods
Configuration minecraftNamedConfig = project.getConfigurations().maybeCreate(Constants.MINECRAFT_NAMED);
minecraftNamedConfig.setTransitive(false); // The launchers do not recurse dependencies
Configuration minecraftIntermediaryConfig = project.getConfigurations().maybeCreate(Constants.MINECRAFT_INTERMEDIARY);
minecraftIntermediaryConfig.setTransitive(false);
Configuration minecraftDependenciesConfig = project.getConfigurations().maybeCreate(Constants.MINECRAFT_DEPENDENCIES);
minecraftDependenciesConfig.setTransitive(false);
Configuration minecraftConfig = project.getConfigurations().maybeCreate(Constants.MINECRAFT);
minecraftConfig.setTransitive(false);
Configuration includeConfig = project.getConfigurations().maybeCreate(Constants.INCLUDE);
includeConfig.setTransitive(false); // Dont get transitive deps
project.getConfigurations().maybeCreate(Constants.MAPPINGS);
configureIDEs();
configureCompile();
extendsFrom(Constants.MINECRAFT_NAMED, Constants.MINECRAFT_DEPENDENCIES);
extendsFrom(Constants.MINECRAFT_INTERMEDIARY, Constants.MINECRAFT_DEPENDENCIES);
extendsFrom(Constants.COMPILE_MODS_MAPPED, Constants.MINECRAFT_NAMED);
extendsFrom("compile", Constants.COMPILE_MODS_MAPPED);
extendsFrom("compile", Constants.MAPPINGS);
extendsFrom("annotationProcessor", Constants.COMPILE_MODS_MAPPED);
extendsFrom("annotationProcessor", Constants.MAPPINGS);
Map<Project, Set<Task>> taskMap = project.getAllTasks(true);
for (Map.Entry<Project, Set<Task>> entry : taskMap.entrySet()) {
Project project = entry.getKey();
Set<Task> taskSet = entry.getValue();
for (Task task : taskSet) {
if (task instanceof JavaCompile && !(task.getName().contains("Test")) && !(task.getName().contains("test"))) {
JavaCompile javaCompileTask = (JavaCompile) task;
javaCompileTask.doFirst({ task1 ->
project.getLogger().lifecycle(":setting java compiler args");
try {
javaCompileTask.getOptions().getCompilerArgs().add("-AinMapFileNamedIntermediary=" + extension.getMappingsProvider().MAPPINGS_TINY.getCanonicalPath());
javaCompileTask.getOptions().getCompilerArgs().add("-AoutMapFileNamedIntermediary=" + extension.getMappingsProvider().MAPPINGS_MIXIN_EXPORT.getCanonicalPath());
javaCompileTask.getOptions().getCompilerArgs().add("-AoutRefMapFile=" + new File(javaCompileTask.getDestinationDir(), extension.getRefmapName()).getCanonicalPath());
javaCompileTask.getOptions().getCompilerArgs().add("-AdefaultObfuscationEnv=named:intermediary");
} catch (IOException e) {
e.printStackTrace();
}
});
}
}
}
configureMaven();
// LoomGradlePlugin.java:
TaskContainer tasks = target.getTasks();
tasks.register("cleanLoomBinaries", CleanLoomBinaries.class);
tasks.register("cleanLoomMappings", CleanLoomMappings.class);
tasks.register("migrateMappings", MigrateMappingsTask.class, { t ->
t.getOutputs().upToDateWhen({ o -> false });
});
tasks.register("remapJar", RemapJar.class);
tasks.register("genSourcesDecompile", FernFlowerTask.class, { t ->
t.getOutputs().upToDateWhen({ o -> false });
});
tasks.register("genSourcesRemapLineNumbers", RemapLineNumbersTask.class, { t ->
t.getOutputs().upToDateWhen({ o -> false });
});
tasks.register("genSources", { t ->
t.getOutputs().upToDateWhen({ o -> false });
});
project.afterEvaluate({ p ->
AbstractDecompileTask decompileTask = (AbstractDecompileTask) p.getTasks().getByName("genSourcesDecompile");
RemapLineNumbersTask remapLineNumbersTask = (RemapLineNumbersTask) p.getTasks().getByName("genSourcesRemapLineNumbers");
Task genSourcesTask = p.getTasks().getByName("genSources");
genSourcesTask.dependsOn(remapLineNumbersTask);
remapLineNumbersTask.dependsOn(decompileTask);
Project project = this.getProject();
LoomGradleExtension loomGradleExtension = project.getExtensions().getByType(LoomGradleExtension.class);
MinecraftLibraryProvider libraryProvider = loomGradleExtension.getMinecraftProvider().libraryProvider;
MappingsProvider mappingsProvider = loomGradleExtension.getMappingsProvider();
File mappedJar = mappingsProvider.mappedProvider.getMappedJar();
File linemappedJar = getMappedByproduct(project, "-linemapped.jar");
File sourcesJar = getMappedByproduct(project, "-sources.jar");
File linemapFile = getMappedByproduct(project, "-sources.lmap");
decompileTask.setInput(mappedJar);
decompileTask.setOutput(sourcesJar);
decompileTask.setLineMapFile(linemapFile);
decompileTask.setLibraries(libraryProvider.getLibraries());
remapLineNumbersTask.setInput(mappedJar);
remapLineNumbersTask.setLineMapFile(linemapFile);
remapLineNumbersTask.setOutput(linemappedJar);
Path mappedJarPath = mappedJar.toPath();
Path linemappedJarPath = linemappedJar.toPath();
genSourcesTask.doLast({ tt ->
if (Files.exists(linemappedJarPath)) {
try {
Files.deleteIfExists(mappedJarPath);
Files.copy(linemappedJarPath, mappedJarPath);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
});
});
tasks.register("downloadAssets", DownloadAssetsTask.class);
tasks.register("genIdeaWorkspace", GenIdeaProjectTask.class, { t ->
t.dependsOn("idea", "downloadAssets");
t.setGroup("ide");
});
tasks.register("genEclipseRuns", GenEclipseRunsTask.class, { t ->
t.dependsOn("downloadAssets");
t.setGroup("ide");
});
tasks.register("vscode", GenVsCodeProjectTask.class, { t ->
t.dependsOn("downloadAssets");
t.setGroup("ide");
});
tasks.register("remapSourcesJar", RemapSourcesJar.class);
// runClient
tasks.register("runFabricClient", RunClientTask.class, { t ->
t.dependsOn("buildNeeded", "downloadAssets");
t.setGroup("minecraftMapped");
});
// runServer
tasks.register("runFabricServer", RunServerTask.class, { t ->
t.dependsOn("buildNeeded");
t.setGroup("minecraftMapped");
});
}
private void extendsFrom(String a, String b) {
project.getConfigurations().getByName(a).extendsFrom(project.getConfigurations().getByName(b));
}
private static File getMappedByproduct(Project project, String suffix) {
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
MappingsProvider mappingsProvider = extension.getMappingsProvider();
File mappedJar = mappingsProvider.mappedProvider.getMappedJar();
String path = mappedJar.getAbsolutePath();
if (!path.toLowerCase(Locale.ROOT).endsWith(".jar")) {
throw new RuntimeException("Invalid mapped JAR path: " + path);
}
return new File(path.substring(0, path.length() - 4) + suffix);
}
}
apply plugin: Fabric_Compact
-15
View File
@@ -1,15 +0,0 @@
# Fabric Properties
# check these on https://fabricmc.net/use
minecraft_version=1.14.1
yarn_mappings=1.14.1+build.5
loader_version=0.4.7+build.147
# Mod Properties
maven_group = customskinloader
archives_base_name = CustomSkinLoader_Fabric
# Dependencies
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric
fabric_version=0.3.0-pre+build.156
srg_notch_map=Fabric.srg
@@ -7,10 +7,10 @@ import com.mojang.authlib.GameProfile;
import com.mojang.authlib.minecraft.MinecraftProfileTexture;
import com.mojang.authlib.minecraft.MinecraftSessionService;
import customskinloader.fake.FakeSkinManager;
import net.minecraft.client.texture.PlayerSkinProvider;
import net.minecraft.client.texture.TextureManager;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.client.resources.SkinManager;
import net.minecraft.util.Identifier;
import net.minecraft.client.texture.PlayerSkinProvider;
import net.minecraft.util.ResourceLocation;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.injection.At;
@@ -23,22 +23,17 @@ public abstract class MixinPlayerSkinProvider {
@Inject(method = "<init>", at = @At("RETURN"))
private void initFakeSkinManager(TextureManager textureManagerInstance, File skinCacheDirectory, MinecraftSessionService sessionService, CallbackInfo callbackInfo) {
this.fakeManager = new FakeSkinManager((net.minecraft.client.renderer.texture.TextureManager) (Object) textureManagerInstance, skinCacheDirectory, sessionService);
this.fakeManager = new FakeSkinManager(textureManagerInstance, skinCacheDirectory, sessionService);
}
@Overwrite
public Identifier loadSkin(MinecraftProfileTexture profileTexture, MinecraftProfileTexture.Type textureType) {
return this.loadSkin(profileTexture, textureType, null);
public ResourceLocation loadSkin(MinecraftProfileTexture profileTexture, MinecraftProfileTexture.Type textureType, SkinManager.SkinAvailableCallback skinAvailableCallback) {
return this.fakeManager.loadSkin(profileTexture, textureType, skinAvailableCallback);
}
@Overwrite
public Identifier loadSkin(MinecraftProfileTexture profileTexture, MinecraftProfileTexture.Type textureType, PlayerSkinProvider.SkinTextureAvailableCallback skinAvailableCallback) {
return (Identifier) (Object) this.fakeManager.loadSkin(profileTexture, textureType, (SkinManager.SkinAvailableCallback) skinAvailableCallback);
}
@Overwrite
public void loadSkin(GameProfile profile, PlayerSkinProvider.SkinTextureAvailableCallback skinAvailableCallback, boolean requireSecure) {
this.fakeManager.loadProfileTextures(profile, (SkinManager.SkinAvailableCallback) skinAvailableCallback, requireSecure);
public void loadSkin(GameProfile profile, SkinManager.SkinAvailableCallback skinAvailableCallback, boolean requireSecure) {
this.fakeManager.loadProfileTextures(profile, skinAvailableCallback, requireSecure);
}
@Overwrite
@@ -0,0 +1,21 @@
package net.minecraft.client.texture;
import java.util.Map;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.minecraft.MinecraftProfileTexture;
import net.minecraft.client.resources.SkinManager;
import net.minecraft.util.ResourceLocation;
public class PlayerSkinProvider {
public ResourceLocation loadSkin(MinecraftProfileTexture profileTexture, MinecraftProfileTexture.Type textureType, SkinManager.SkinAvailableCallback skinAvailableCallback) {
return null;
}
public void loadSkin(GameProfile profile, SkinManager.SkinAvailableCallback skinAvailableCallback, boolean requireSecure) {
}
public Map<MinecraftProfileTexture.Type, MinecraftProfileTexture> getTextures(GameProfile profile) {
return null;
}
}
+5 -5
View File
@@ -11,18 +11,18 @@ buildscript {
repositories {
mavenCentral()
jcenter()
maven {
name = "fabric"
url = "https://maven.fabricmc.net/"
}
maven {
name = "forge"
url = "http://files.minecraftforge.net/maven"
}
maven {
name = "sponge"
url = "https://repo.spongepowered.org/maven"
}
}
dependencies {
classpath 'fabric-loom:fabric-loom.gradle.plugin:0.2.2-SNAPSHOT'
classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
classpath 'org.spongepowered:mixingradle:0.6-SNAPSHOT'
}
}