Attempt 3

This commit is contained in:
JFronny 2021-09-28 20:21:29 +02:00
parent 6e7676cc86
commit ffa7b405f6
No known key found for this signature in database
GPG Key ID: BEC5ACBBD4EE17E5
8 changed files with 293 additions and 44 deletions

View File

@ -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<String> depNames) {
def deps = depNames.iterator().collect { project.dependencies.project(path: ":$it", configuration: 'dev') }
project.dependencies {
@ -17,11 +32,12 @@ def moduleDependencies(project, List<String> 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<String> 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
}
}
}
}

View File

@ -0,0 +1,6 @@
archivesBaseName = "libjf-devutil-v0"
version = "1.0"
dependencies {
moduleDependencies(project, ["libjf-base"])
}

View File

@ -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;
}
}

View File

@ -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<TelemetryPropertyContainer> 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
}
};
}
};
}
}

View File

@ -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();
}
}

View File

@ -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"
}
}
}

View File

@ -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
}
}

View File

@ -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'