diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index e2fa68a..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,40 +0,0 @@ -# Automatically build the project and run any configured tests for every push -# and submitted pull request. This can help catch issues that only occur on -# certain platforms or Java versions, and provides a first line of defence -# against bad commits. - -name: build -on: [pull_request, push] - -jobs: - build: - strategy: - matrix: - # Use these Java versions - java: [ - 17, # Current Java LTS & minimum supported by Minecraft - ] - # and run on both Linux and Windows - os: [ubuntu-22.04, windows-2022] - runs-on: ${{ matrix.os }} - steps: - - name: checkout repository - uses: actions/checkout@v3 - - name: validate gradle wrapper - uses: gradle/wrapper-validation-action@v1 - - name: setup jdk ${{ matrix.java }} - uses: actions/setup-java@v3 - with: - java-version: ${{ matrix.java }} - distribution: 'microsoft' - - name: make gradle wrapper executable - if: ${{ runner.os != 'Windows' }} - run: chmod +x ./gradlew - - name: build - run: ./gradlew build - - name: capture build artifacts - if: ${{ runner.os == 'Linux' && matrix.java == '17' }} # Only upload artifacts built from latest java on one OS - uses: actions/upload-artifact@v3 - with: - name: Artifacts - path: build/libs/ diff --git a/.github/workflows/call_build.yml b/.github/workflows/call_build.yml new file mode 100644 index 0000000..4e707fe --- /dev/null +++ b/.github/workflows/call_build.yml @@ -0,0 +1,7 @@ +name: Build + +on: [ pull_request, push, workflow_dispatch ] + +jobs: + call-workflow: + uses: KessokuTeaTime/.github/.github/workflows/build.yml@main diff --git a/.github/workflows/call_release.yml b/.github/workflows/call_release.yml new file mode 100644 index 0000000..cf6f4de --- /dev/null +++ b/.github/workflows/call_release.yml @@ -0,0 +1,15 @@ +name: Publish Release + +on: + workflow_dispatch: + release: + types: + - published + +permissions: + contents: write + +jobs: + call-workflow: + uses: KessokuTeaTime/.github/.github/workflows/release.yml@main + secrets: inherit diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..7997347 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,9 @@ +### Changes + +- Unified publishing using **modpublisher.** +- Jar name migrate: `{id}-{mcversion}-{modversion}` -> `{id}-{modversion}-{loader}{mcversion}`. +- Tag name migrate: `{id}-{modversion}-mc{mcversion}` -> `{id}-{modversion}-{loader}{mcversion}`. + +### Ownership Transfer + +- **Transferred** ownership to **[Kessoku Tea Time.](https://github.com/KessokuTeaTime)** diff --git a/README.md b/README.md index e6363c6..84b8fe0 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -###
[`→` Modrinth](https://modrinth.com/mod/ive-spoken)
+###[`→` CurseForge](https://www.curseforge.com/minecraft/mc-mods/ive-spoken) [`→` Modrinth](https://modrinth.com/mod/ive-spoken)
# I've Spoken -**I've Spoken** pops a RPG-like dialog on top of one's name when he or she speaks, and lasts for about 5 seconds before vanishing (configurable). +**I've Spoken** pops an RPG-like dialog on top of one's name when he or she speaks, and lasts for about 5 seconds before vanishing (configurable). It's just something like this: -![I've spoken.](https://github.com/KrLite/Mod.Ive-Spoken/blob/artwork/content/spoken.png) +![I've spoken.](https://github.com/KessokuTeaTime/Ive-Spoken/blob/artwork/content/spoken.png) The content will be truncated if too long (configurable). diff --git a/build.gradle.kts b/build.gradle.kts index 49222e4..bcfd1f4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,13 +1,26 @@ +class Display { + lateinit var name: String + lateinit var loader: String + lateinit var version: String +} + +var display: Display = Display() + plugins { base java idea `maven-publish` alias(libs.plugins.fabric.loom) + alias(libs.plugins.modpublisher) } group = libs.versions.maven.group.get() -version = "${libs.versions.minecraft.get()}-${libs.versions.mod.get()}" +version = "${libs.versions.mod.get()}-${libs.versions.loader.get()}${libs.versions.minecraft.get()}" + +display.name = libs.versions.display.name.get() +display.loader = libs.versions.display.loader.get() +display.version = libs.versions.display.version.get() base { archivesName.set(libs.versions.archives.name) @@ -38,10 +51,11 @@ java { tasks { processResources { - inputs.property("version", libs.versions.mod.get()) - filesMatching("fabric.mod.json") { - expand(mapOf("version" to libs.versions.mod.get())) + expand(mapOf( + "version" to libs.versions.mod.get(), + "display" to display + )) } } @@ -60,3 +74,34 @@ publishing { repositories { } } + +publisher { + apiKeys { + modrinth(System.getenv("MODRINTH_TOKEN")) + curseforge(System.getenv("CURSEFORGE_TOKEN")) + } + + modrinthID.set(libs.versions.id.modrinth) + curseID.set(libs.versions.id.curseforge) + + versionType.set("release") + projectVersion.set(project.version.toString()) + gameVersions.set(listOf("1.20", "1.20.1", "1.20.2", "1.20.3", "1.20.4")) + loaders.set(listOf("fabric", "quilt")) + curseEnvironment.set("both") + + modrinthDepends.required("fabric-api") + modrinthDepends.optional() + modrinthDepends.embedded() + + curseDepends.required("fabric-api") + curseDepends.optional() + curseDepends.embedded() + + displayName.set("${display.name} ${libs.versions.mod.get()} for ${display.loader} ${display.version}") + + artifact.set(tasks.remapJar) + addAdditionalFile(tasks.remapSourcesJar) + + changelog.set(file("CHANGELOG.md")) +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2d16ad8..0dcebf7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,17 +1,28 @@ [versions] -maven-group = "net.krlite" +maven-group = "band.kessokuteatime" archives-name = "ivespoken" -mod = "2.0.3-alpha.1" +mod = "2.1.0" +loader = "fabric" minecraft = "1.20" yarn = "1.20+build.1" -fabric-loader = "0.15.7" +fabric-loader = "0.15.10" fabric-api = "0.83.0+1.20" -fabric-loom = "1.5-SNAPSHOT" +fabric-loom = "1.6-SNAPSHOT" +modpublisher = "2.1.0" cloth-config = "11.1.118" modmenu = "7.0.1" +# id +id-modrinth = "OidSa416" +id-curseforge = "998412" + +# display +display-name = "I've Spoken" +display-loader = "Fabric" +display-version = "1.20.x" + [libraries] minecraft = { group = "com.mojang", name = "minecraft", version.ref = "minecraft" } yarn = { group = "net.fabricmc", name = "yarn", version.ref = "yarn" } @@ -23,6 +34,7 @@ modmenu = { group = "com.terraformersmc", name = "modmenu", version.ref = "modme [plugins] fabric-loom = { id = "fabric-loom", version.ref = "fabric-loom" } +modpublisher = { id = "com.hypherionmc.modutils.modpublisher", version.ref = "modpublisher" } [bundles] fabric = ["fabric-loader", "fabric-api"] diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c30b486..20db9ad 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle.kts b/settings.gradle.kts index a7f3f56..a07ef70 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -4,6 +4,7 @@ pluginManagement { name = "Fabric" url = uri("https://maven.fabricmc.net/") } + maven { url = uri("https://maven.firstdark.dev/releases") } // modpublisher mavenCentral() gradlePluginPortal() } diff --git a/src/main/java/net/krlite/ivespoken/IveSpoken.java b/src/main/java/band/kessokuteatime/ivespoken/IveSpoken.java similarity index 97% rename from src/main/java/net/krlite/ivespoken/IveSpoken.java rename to src/main/java/band/kessokuteatime/ivespoken/IveSpoken.java index f9205e6..4ed578b 100644 --- a/src/main/java/net/krlite/ivespoken/IveSpoken.java +++ b/src/main/java/band/kessokuteatime/ivespoken/IveSpoken.java @@ -1,11 +1,11 @@ -package net.krlite.ivespoken; +package band.kessokuteatime.ivespoken; import com.google.common.collect.ImmutableMap; import me.shedaniel.autoconfig.AutoConfig; import me.shedaniel.autoconfig.ConfigHolder; import me.shedaniel.autoconfig.serializer.Toml4jConfigSerializer; import net.fabricmc.api.ClientModInitializer; -import net.krlite.ivespoken.config.IveSpokenConfig; +import band.kessokuteatime.ivespoken.config.IveSpokenConfig; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.network.AbstractClientPlayerEntity; diff --git a/src/main/java/net/krlite/ivespoken/StampedMessage.java b/src/main/java/band/kessokuteatime/ivespoken/StampedMessage.java similarity index 84% rename from src/main/java/net/krlite/ivespoken/StampedMessage.java rename to src/main/java/band/kessokuteatime/ivespoken/StampedMessage.java index 77fe07e..c2ca328 100644 --- a/src/main/java/net/krlite/ivespoken/StampedMessage.java +++ b/src/main/java/band/kessokuteatime/ivespoken/StampedMessage.java @@ -1,4 +1,4 @@ -package net.krlite.ivespoken; +package band.kessokuteatime.ivespoken; import net.minecraft.text.Text; diff --git a/src/main/java/net/krlite/ivespoken/config/IveSpokenConfig.java b/src/main/java/band/kessokuteatime/ivespoken/config/IveSpokenConfig.java similarity index 90% rename from src/main/java/net/krlite/ivespoken/config/IveSpokenConfig.java rename to src/main/java/band/kessokuteatime/ivespoken/config/IveSpokenConfig.java index 3d3527e..5aa95b6 100644 --- a/src/main/java/net/krlite/ivespoken/config/IveSpokenConfig.java +++ b/src/main/java/band/kessokuteatime/ivespoken/config/IveSpokenConfig.java @@ -1,4 +1,4 @@ -package net.krlite.ivespoken.config; +package band.kessokuteatime.ivespoken.config; import me.shedaniel.autoconfig.ConfigData; import me.shedaniel.autoconfig.annotation.Config; diff --git a/src/main/java/net/krlite/ivespoken/config/IveSpokenModMenuIntegration.java b/src/main/java/band/kessokuteatime/ivespoken/config/IveSpokenModMenuIntegration.java similarity index 83% rename from src/main/java/net/krlite/ivespoken/config/IveSpokenModMenuIntegration.java rename to src/main/java/band/kessokuteatime/ivespoken/config/IveSpokenModMenuIntegration.java index 671ffa1..f4cf0d3 100644 --- a/src/main/java/net/krlite/ivespoken/config/IveSpokenModMenuIntegration.java +++ b/src/main/java/band/kessokuteatime/ivespoken/config/IveSpokenModMenuIntegration.java @@ -1,9 +1,9 @@ -package net.krlite.ivespoken.config; +package band.kessokuteatime.ivespoken.config; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; import me.shedaniel.autoconfig.AutoConfig; -import net.krlite.ivespoken.IveSpoken; +import band.kessokuteatime.ivespoken.IveSpoken; public class IveSpokenModMenuIntegration implements ModMenuApi { @Override diff --git a/src/main/java/net/krlite/ivespoken/mixin/ChatTracker.java b/src/main/java/band/kessokuteatime/ivespoken/mixin/ChatTracker.java similarity index 93% rename from src/main/java/net/krlite/ivespoken/mixin/ChatTracker.java rename to src/main/java/band/kessokuteatime/ivespoken/mixin/ChatTracker.java index af9fe24..81d5da5 100644 --- a/src/main/java/net/krlite/ivespoken/mixin/ChatTracker.java +++ b/src/main/java/band/kessokuteatime/ivespoken/mixin/ChatTracker.java @@ -1,6 +1,6 @@ -package net.krlite.ivespoken.mixin; +package band.kessokuteatime.ivespoken.mixin; -import net.krlite.ivespoken.IveSpoken; +import band.kessokuteatime.ivespoken.IveSpoken; import net.minecraft.client.gui.hud.ChatHud; import net.minecraft.client.gui.hud.MessageIndicator; import net.minecraft.network.message.MessageSignatureData; diff --git a/src/main/java/net/krlite/ivespoken/mixin/DialogRenderer.java b/src/main/java/band/kessokuteatime/ivespoken/mixin/DialogRenderer.java similarity index 93% rename from src/main/java/net/krlite/ivespoken/mixin/DialogRenderer.java rename to src/main/java/band/kessokuteatime/ivespoken/mixin/DialogRenderer.java index 509124d..ee34e11 100644 --- a/src/main/java/net/krlite/ivespoken/mixin/DialogRenderer.java +++ b/src/main/java/band/kessokuteatime/ivespoken/mixin/DialogRenderer.java @@ -1,6 +1,6 @@ -package net.krlite.ivespoken.mixin; +package band.kessokuteatime.ivespoken.mixin; -import net.krlite.ivespoken.IveSpoken; +import band.kessokuteatime.ivespoken.IveSpoken; import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.entity.EntityRenderer; diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 6d1d317..da9e4a8 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -3,15 +3,16 @@ "id": "ivespoken", "version": "${version}", - "name": "I've Spoken", + "name": "${display.name}", "description": "Displays RPG-like dialogs above players' names. I've spoken.", "authors": [ + "Kessoku Tea Time", "KrLite" ], "contact": { "homepage": "https://modrinth.com/mod/ive-spoken", - "sources": "https://github.com/KrLite/Mod.Ive-Spoken", - "issues": "https://github.com/KrLite/Mod.Ive-Spoken/issues" + "sources": "https://github.com/KessokuTeaTime/Ive-Spoken", + "issues": "https://github.com/KessokuTeaTime/Ive-Spoken/issues" }, "license": "GPL-3.0", @@ -20,10 +21,10 @@ "environment": "client", "entrypoints": { "client": [ - "net.krlite.ivespoken.IveSpoken" + "band.kessokuteatime.ivespoken.IveSpoken" ], "modmenu": [ - "net.krlite.ivespoken.config.IveSpokenModMenuIntegration" + "band.kessokuteatime.ivespoken.config.IveSpokenModMenuIntegration" ] }, "mixins": [ diff --git a/src/main/resources/ivespoken.mixins.json b/src/main/resources/ivespoken.mixins.json index 9874a23..ababf09 100644 --- a/src/main/resources/ivespoken.mixins.json +++ b/src/main/resources/ivespoken.mixins.json @@ -1,7 +1,7 @@ { "required": true, "minVersion": "0.8", - "package": "net.krlite.ivespoken.mixin", + "package": "band.kessokuteatime.ivespoken.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ ],