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/build.gradle.kts b/build.gradle.kts index 850b3f1..9792833 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) @@ -32,10 +45,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 + )) } } @@ -54,3 +68,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("client") + + 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 9fe4592..c5156cc 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,13 +1,24 @@ [versions] -maven-group = "net.krlite" +maven-group = "band.kessokuteatime" archives-name = "taptab" -mod = "3.2.2" +mod = "3.3.0" +loader = "fabric" minecraft = "1.20" yarn = "1.20+build.1" fabric-loader = "0.15.7" fabric-api = "0.83.0+1.20" -fabric-loom = "1.5-SNAPSHOT" +fabric-loom = "1.6-SNAPSHOT" +modpublisher = "2.1.0" + +# id +id-modrinth = "id" +id-curseforge = "id" + +# display +display-name = "Tap Tab" +display-loader = "Fabric" +display-version = "1.20.x" [libraries] minecraft = { group = "com.mojang", name = "minecraft", version.ref = "minecraft" } @@ -17,6 +28,7 @@ fabric-api = { group = "net.fabricmc.fabric-api", name = "fabric-api", version.r [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/taptab/InventorySwapper.java b/src/main/java/band/kessokuteatime/taptab/InventorySwapper.java similarity index 94% rename from src/main/java/net/krlite/taptab/InventorySwapper.java rename to src/main/java/band/kessokuteatime/taptab/InventorySwapper.java index 8e0e70b..c6d7e42 100644 --- a/src/main/java/net/krlite/taptab/InventorySwapper.java +++ b/src/main/java/band/kessokuteatime/taptab/InventorySwapper.java @@ -1,4 +1,4 @@ -package net.krlite.taptab; +package band.kessokuteatime.taptab; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerEntity; @@ -6,11 +6,7 @@ import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; -import net.minecraft.screen.slot.Slot; import net.minecraft.screen.slot.SlotActionType; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.integrated.IntegratedServer; -import net.minecraft.server.network.ServerPlayerEntity; import org.jetbrains.annotations.Range; import java.util.Arrays; diff --git a/src/main/java/net/krlite/taptab/TapTab.java b/src/main/java/band/kessokuteatime/taptab/TapTab.java similarity index 99% rename from src/main/java/net/krlite/taptab/TapTab.java rename to src/main/java/band/kessokuteatime/taptab/TapTab.java index d18b53c..fcdbb4e 100644 --- a/src/main/java/net/krlite/taptab/TapTab.java +++ b/src/main/java/band/kessokuteatime/taptab/TapTab.java @@ -1,4 +1,4 @@ -package net.krlite.taptab; +package band.kessokuteatime.taptab; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; diff --git a/src/main/java/net/krlite/taptab/TooltipKeyBinding.java b/src/main/java/band/kessokuteatime/taptab/TooltipKeyBinding.java similarity index 95% rename from src/main/java/net/krlite/taptab/TooltipKeyBinding.java rename to src/main/java/band/kessokuteatime/taptab/TooltipKeyBinding.java index 47581b8..bad0b49 100644 --- a/src/main/java/net/krlite/taptab/TooltipKeyBinding.java +++ b/src/main/java/band/kessokuteatime/taptab/TooltipKeyBinding.java @@ -1,4 +1,4 @@ -package net.krlite.taptab; +package band.kessokuteatime.taptab; import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.option.KeyBinding; diff --git a/src/main/java/net/krlite/taptab/mixin/InGameHudAnimator.java b/src/main/java/band/kessokuteatime/taptab/mixin/InGameHudAnimator.java similarity index 90% rename from src/main/java/net/krlite/taptab/mixin/InGameHudAnimator.java rename to src/main/java/band/kessokuteatime/taptab/mixin/InGameHudAnimator.java index 4eb7386..bce9404 100644 --- a/src/main/java/net/krlite/taptab/mixin/InGameHudAnimator.java +++ b/src/main/java/band/kessokuteatime/taptab/mixin/InGameHudAnimator.java @@ -1,7 +1,7 @@ -package net.krlite.taptab.mixin; +package band.kessokuteatime.taptab.mixin; -import net.krlite.taptab.InventorySwapper; -import net.krlite.taptab.TapTab; +import band.kessokuteatime.taptab.InventorySwapper; +import band.kessokuteatime.taptab.TapTab; import net.minecraft.client.gui.hud.InGameHud; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; diff --git a/src/main/java/net/krlite/taptab/mixin/KeyBindingEntryMixin.java b/src/main/java/band/kessokuteatime/taptab/mixin/KeyBindingEntryMixin.java similarity index 92% rename from src/main/java/net/krlite/taptab/mixin/KeyBindingEntryMixin.java rename to src/main/java/band/kessokuteatime/taptab/mixin/KeyBindingEntryMixin.java index c4f1fe7..b6665a3 100644 --- a/src/main/java/net/krlite/taptab/mixin/KeyBindingEntryMixin.java +++ b/src/main/java/band/kessokuteatime/taptab/mixin/KeyBindingEntryMixin.java @@ -1,6 +1,6 @@ -package net.krlite.taptab.mixin; +package band.kessokuteatime.taptab.mixin; -import net.krlite.taptab.TooltipKeyBinding; +import band.kessokuteatime.taptab.TooltipKeyBinding; import net.minecraft.client.gui.screen.option.ControlsListWidget; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.option.KeyBinding; diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 8dc66d1..ac15c11 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -3,15 +3,16 @@ "id": "taptab", "version": "${version}", - "name": "Tap Tab", + "name": "${display.name}", "description": "Double-tap tab and cycle your hotbar through inventory!", "authors": [ + "Kessoku Tea Time", "KrLite" ], "contact": { "homepage": "https://modrinth.com/mod/tap-tab", - "sources": "https://github.com/KrLite/Mod.Tap-Tab", - "issues": "https://github.com/KrLite/Mod.Tap-Tab/issues" + "sources": "https://github.com/KessokuTeaTime/Tap-Tab", + "issues": "https://github.com/KessokuTeaTime/Tap-Tab/issues" }, "license": "GPL-3.0", @@ -20,11 +21,11 @@ "environment": "client", "entrypoints": { "main": [ - "net.krlite.taptab.TapTab" + "band.kessokuteatime.taptab.TapTab" ] }, "mixins": [ - "tap_tab.mixins.json" + "taptab.mixins.json" ], "depends": { diff --git a/src/main/resources/tap_tab.mixins.json b/src/main/resources/taptab.mixins.json similarity index 81% rename from src/main/resources/tap_tab.mixins.json rename to src/main/resources/taptab.mixins.json index cfb6745..d562e40 100644 --- a/src/main/resources/tap_tab.mixins.json +++ b/src/main/resources/taptab.mixins.json @@ -1,7 +1,7 @@ { "required": true, "minVersion": "0.8", - "package": "net.krlite.taptab.mixin", + "package": "band.kessokuteatime.taptab.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ ],