From 3bee9281ec2f657e0c09235cf3ab45c52ee82c8e Mon Sep 17 00:00:00 2001 From: ZekerZhayard <41327811+ZekerZhayard@users.noreply.github.com> Date: Thu, 23 May 2019 23:35:56 +0800 Subject: [PATCH] Fix remapJar (#55) --- Fabric/Fabric.srg | 4 + Fabric/build.gradle | 93 ++++---- Fabric/build.properties | 7 + Fabric/fabric.compact.gradle | 216 ------------------ Fabric/gradle.properties | 15 -- .../fabric/mixin/MixinPlayerSkinProvider.java | 21 +- .../client/texture/PlayerSkinProvider.java | 21 ++ build.gradle | 10 +- 8 files changed, 94 insertions(+), 293 deletions(-) create mode 100644 Fabric/build.properties delete mode 100644 Fabric/fabric.compact.gradle delete mode 100644 Fabric/gradle.properties create mode 100644 Fabric/source/net/minecraft/client/texture/PlayerSkinProvider.java diff --git a/Fabric/Fabric.srg b/Fabric/Fabric.srg index 6894b8c..d59393e 100644 --- a/Fabric/Fabric.srg +++ b/Fabric/Fabric.srg @@ -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; \ No newline at end of file diff --git a/Fabric/build.gradle b/Fabric/build.gradle index 618a80b..6325188 100644 --- a/Fabric/build.gradle +++ b/Fabric/build.gradle @@ -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 diff --git a/Fabric/build.properties b/Fabric/build.properties new file mode 100644 index 0000000..95ad61a --- /dev/null +++ b/Fabric/build.properties @@ -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 \ No newline at end of file diff --git a/Fabric/fabric.compact.gradle b/Fabric/fabric.compact.gradle deleted file mode 100644 index 4e0307d..0000000 --- a/Fabric/fabric.compact.gradle +++ /dev/null @@ -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> taskMap = project.getAllTasks(true); - for (Map.Entry> entry : taskMap.entrySet()) { - Project project = entry.getKey(); - Set 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 \ No newline at end of file diff --git a/Fabric/gradle.properties b/Fabric/gradle.properties deleted file mode 100644 index 61ea7fb..0000000 --- a/Fabric/gradle.properties +++ /dev/null @@ -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 diff --git a/Fabric/source/customskinloader/fabric/mixin/MixinPlayerSkinProvider.java b/Fabric/source/customskinloader/fabric/mixin/MixinPlayerSkinProvider.java index b0eb976..98225ea 100644 --- a/Fabric/source/customskinloader/fabric/mixin/MixinPlayerSkinProvider.java +++ b/Fabric/source/customskinloader/fabric/mixin/MixinPlayerSkinProvider.java @@ -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 = "", 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 diff --git a/Fabric/source/net/minecraft/client/texture/PlayerSkinProvider.java b/Fabric/source/net/minecraft/client/texture/PlayerSkinProvider.java new file mode 100644 index 0000000..f118ea8 --- /dev/null +++ b/Fabric/source/net/minecraft/client/texture/PlayerSkinProvider.java @@ -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 getTextures(GameProfile profile) { + return null; + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle index 949f566..3542536 100644 --- a/build.gradle +++ b/build.gradle @@ -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' } }