From ffa7b405f6a55c010db3170f55bcd3a12d21dbd1 Mon Sep 17 00:00:00 2001 From: JFronny Date: Tue, 28 Sep 2021 20:21:29 +0200 Subject: [PATCH] Attempt 3 --- build.gradle | 153 +++++++++++++----- libjf-devutil-v0/build.gradle | 6 + .../jfronny/libjf/devutil/DevUtilMain.java | 11 ++ .../jfronny/libjf/devutil/NoOpUserApi.java | 107 ++++++++++++ .../devutil/mixin/MinecraftClientMixin.java | 20 +++ .../src/main/resources/fabric.mod.json | 25 +++ .../resources/libjf-devutil-v0.mixins.json | 14 ++ settings.gradle | 1 + 8 files changed, 293 insertions(+), 44 deletions(-) create mode 100644 libjf-devutil-v0/build.gradle create mode 100644 libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/DevUtilMain.java create mode 100644 libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/NoOpUserApi.java create mode 100644 libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/mixin/MinecraftClientMixin.java create mode 100644 libjf-devutil-v0/src/main/resources/fabric.mod.json create mode 100644 libjf-devutil-v0/src/main/resources/libjf-devutil-v0.mixins.json diff --git a/build.gradle b/build.gradle index aca8966..37078e8 100644 --- a/build.gradle +++ b/build.gradle @@ -1,15 +1,30 @@ plugins { - id "java-library" - id "eclipse" + id "java" id "idea" + id "eclipse" + id "java-library" id "maven-publish" - id "fabric-loom" version "0.10-SNAPSHOT" apply false + id "fabric-loom" version "0.9.50" apply false id "com.matthewprenger.cursegradle" version "1.4.0" id "com.modrinth.minotaur" version "1.1.0" } version = "$project.mod_version" +static Node getOrCreateNode(Node node, String name) { + Node dependencies = null + for(Node n : node) { + if(name == n.name()) { + dependencies = n + break + } + } + if(dependencies == null) { + dependencies = node.appendNode(name) + } + return dependencies +} + def moduleDependencies(project, List depNames) { def deps = depNames.iterator().collect { project.dependencies.project(path: ":$it", configuration: 'dev') } project.dependencies { @@ -17,11 +32,12 @@ def moduleDependencies(project, List depNames) { api it } } - /*project.publishing { + //TODO re-enable to list dependencies for subprojects + project.publishing { publications { mavenJava(MavenPublication) { pom.withXml { - def depsNode = asNode().appendNode("dependencies") + def depsNode = getOrCreateNode(asNode(), "dependencies") deps.each { def depNode = depsNode.appendNode("dependency") depNode.appendNode("groupId", it.group) @@ -32,11 +48,12 @@ def moduleDependencies(project, List depNames) { } } } - }*/ + } } allprojects { apply plugin: "java-library" + apply plugin: "maven-publish" apply plugin: "fabric-loom" tasks.withType(JavaCompile).configureEach { @@ -92,6 +109,7 @@ allprojects { name = 'TerraformersMC' url = 'https://maven.terraformersmc.com/' } + mavenLocal() } jar { @@ -147,17 +165,101 @@ subprojects { } } } + /*publications.register(project.name, MavenPublication) { + afterEvaluate { + System.out.println(project.name) + artifact(project.tasks.remapJar) { + builtBy project.tasks.remapJar + } + + artifact(sourcesJar) { + builtBy project.tasks.remapSourcesJar + } + } + }*/ + + repositories { + maven { + url = "https://gitlab.com/api/v4/projects/25805200/packages/maven" + name = "gitlab" + + credentials(HttpHeaderCredentials) { + name = "Job-Token" + value = System.getenv("CI_JOB_TOKEN") + } + authentication { + header(HttpHeaderAuthentication) + } + } + } + } +} + +task remapMavenJar(type: net.fabricmc.loom.task.RemapJarTask, dependsOn: jar) { + input = jar.archiveFile + archiveFileName = "${archivesBaseName}-${project.version}-maven.jar" + addNestedDependencies = false +} +build.dependsOn remapMavenJar + +publishing { + publications { + mavenJava(MavenPublication) { + artifact(remapMavenJar) { + builtBy remapMavenJar + } + + artifact(sourcesJar) { + builtBy remapSourcesJar + } + + pom.withXml { + def depsNode = getOrCreateNode(asNode(), "dependencies") + subprojects.each { + def depNode = depsNode.appendNode("dependency") + depNode.appendNode("groupId", it.group) + depNode.appendNode("artifactId", it.name) + depNode.appendNode("version", it.version) + depNode.appendNode("scope", "compile") + } + } + } + } + + repositories { + maven { + url = "https://gitlab.com/api/v4/projects/25805200/packages/maven" + name = "gitlab" + + credentials(HttpHeaderCredentials) { + name = "Job-Token" + value = System.getenv("CI_JOB_TOKEN") + } + authentication { + header(HttpHeaderAuthentication) + } + } } } subprojects.each { remapJar.dependsOn("${it.path}:remapJar") } +sourceSets { + testmod +} + +def devOnlyModules = [ + "libjf-devutil-v0" +] + dependencies { afterEvaluate { subprojects.each { api project(path: ":${it.name}", configuration: "dev") - include project("${it.name}:") + if (!(it.name in devOnlyModules)) { + include project("${it.name}:") + } testmodImplementation project("${it.name}:").sourceSets.testmod.output } @@ -199,41 +301,4 @@ curseforge { options { forgeGradleIntegration = false } -} - -task remapMavenJar(type: net.fabricmc.loom.task.RemapJarTask, dependsOn: jar) { - input = jar.archiveFile - archiveFileName = "${archivesBaseName}-${project.version}-maven.jar" - addNestedDependencies = false -} -build.dependsOn remapMavenJar - -publishing { - repositories { - maven { - url = "https://gitlab.com/api/v4/projects/25805200/packages/maven" - name = "gitlab" - - credentials(HttpHeaderCredentials) { - name = "Job-Token" - value = System.getenv("CI_JOB_TOKEN") - } - authentication { - header(HttpHeaderAuthentication) - } - } - } - - - publications { - maven(MavenPublication) { - artifact(remapMavenJar) { - builtBy remapMavenJar - } - - artifact(sourcesJar) { - builtBy remapSourcesJar - } - } - } } \ No newline at end of file diff --git a/libjf-devutil-v0/build.gradle b/libjf-devutil-v0/build.gradle new file mode 100644 index 0000000..46e4343 --- /dev/null +++ b/libjf-devutil-v0/build.gradle @@ -0,0 +1,6 @@ +archivesBaseName = "libjf-devutil-v0" +version = "1.0" + +dependencies { + moduleDependencies(project, ["libjf-base"]) +} \ No newline at end of file diff --git a/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/DevUtilMain.java b/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/DevUtilMain.java new file mode 100644 index 0000000..c2693ec --- /dev/null +++ b/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/DevUtilMain.java @@ -0,0 +1,11 @@ +package io.gitlab.jfronny.libjf.devutil; + +import net.fabricmc.api.ModInitializer; +import net.minecraft.SharedConstants; + +public class DevUtilMain implements ModInitializer { + @Override + public void onInitialize() { + SharedConstants.isDevelopment = true; + } +} diff --git a/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/NoOpUserApi.java b/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/NoOpUserApi.java new file mode 100644 index 0000000..041dfd0 --- /dev/null +++ b/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/NoOpUserApi.java @@ -0,0 +1,107 @@ +package io.gitlab.jfronny.libjf.devutil; + +import com.mojang.authlib.minecraft.TelemetryEvent; +import com.mojang.authlib.minecraft.TelemetryPropertyContainer; +import com.mojang.authlib.minecraft.TelemetrySession; +import com.mojang.authlib.minecraft.UserApiService; + +import java.util.UUID; +import java.util.concurrent.Executor; +import java.util.function.Consumer; + +public class NoOpUserApi implements UserApiService { + @Override + public boolean serversAllowed() { + return true; + } + + @Override + public boolean realmsAllowed() { + return false; + } + + @Override + public boolean chatAllowed() { + return true; + } + + @Override + public boolean telemetryAllowed() { + return false; + } + + @Override + public boolean isBlockedPlayer(UUID playerID) { + return false; + } + + @Override + public TelemetrySession newTelemetrySession(Executor executor) { + return new TelemetrySession() { + @Override + public boolean isEnabled() { + return false; + } + + @Override + public TelemetryPropertyContainer globalProperties() { + return new TelemetryPropertyContainer() { + @Override + public void addProperty(String id, String value) { + // ignored + } + + @Override + public void addProperty(String id, int value) { + // ignored + } + + @Override + public void addProperty(String id, boolean value) { + // ignored + } + + @Override + public void addNullProperty(String id) { + // ignored + } + }; + } + + @Override + public void eventSetupFunction(Consumer eventSetupFunction) { + // ignored + } + + @Override + public TelemetryEvent createNewEvent(String type) { + return new TelemetryEvent() { + @Override + public void send() { + // ignored + } + + @Override + public void addProperty(String id, String value) { + // ignored + } + + @Override + public void addProperty(String id, int value) { + // ignored + } + + @Override + public void addProperty(String id, boolean value) { + // ignored + } + + @Override + public void addNullProperty(String id) { + // ignored + } + }; + } + }; + } +} diff --git a/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/mixin/MinecraftClientMixin.java b/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/mixin/MinecraftClientMixin.java new file mode 100644 index 0000000..0fe8d3f --- /dev/null +++ b/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/mixin/MinecraftClientMixin.java @@ -0,0 +1,20 @@ +package io.gitlab.jfronny.libjf.devutil.mixin; + +import com.mojang.authlib.minecraft.UserApiService; +import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService; +import io.gitlab.jfronny.libjf.devutil.NoOpUserApi; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.RunArgs; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(MinecraftClient.class) +public class MinecraftClientMixin { + /** + * @author JFronny + */ + @Overwrite + private UserApiService createSocialInteractionsService(YggdrasilAuthenticationService yggdrasilAuthenticationService, RunArgs runArgs) { + return new NoOpUserApi(); + } +} diff --git a/libjf-devutil-v0/src/main/resources/fabric.mod.json b/libjf-devutil-v0/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..ef8cb65 --- /dev/null +++ b/libjf-devutil-v0/src/main/resources/fabric.mod.json @@ -0,0 +1,25 @@ +{ + "schemaVersion": 1, + "id": "libjf-devutil-v0", + "version": "${version}", + "authors": [ + "JFronny" + ], + "contact": { + "website": "https://jfronny.gitlab.io", + "repo": "https://gitlab.com/jfmods/libjf" + }, + "license": "MIT", + "environment": "*", + "entrypoints": { + "main": [ + "io.gitlab.jfronny.libjf.devutil.DevUtilMain" + ] + }, + "mixins": ["libjf-devutil-v0.mixins.json"], + "custom": { + "modmenu": { + "parent": "libjf" + } + } +} diff --git a/libjf-devutil-v0/src/main/resources/libjf-devutil-v0.mixins.json b/libjf-devutil-v0/src/main/resources/libjf-devutil-v0.mixins.json new file mode 100644 index 0000000..134904b --- /dev/null +++ b/libjf-devutil-v0/src/main/resources/libjf-devutil-v0.mixins.json @@ -0,0 +1,14 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "io.gitlab.jfronny.libjf.devutil.mixin", + "compatibilityLevel": "JAVA_16", + "mixins": [ + "MinecraftClientMixin" + ], + "client": [ + ], + "injectors": { + "defaultRequire": 1 + } +} diff --git a/settings.gradle b/settings.gradle index 4aede86..b8fd6ba 100644 --- a/settings.gradle +++ b/settings.gradle @@ -15,4 +15,5 @@ include 'libjf-base' include 'libjf-config-v0' include 'libjf-data-v0' include 'libjf-data-manipulation-v0' +include 'libjf-devutil-v0' include 'libjf-unsafe-v0' \ No newline at end of file