From 9d9ca87d54cb5e54cdecaa97e4bc61f74ec2aaa5 Mon Sep 17 00:00:00 2001 From: OroArmor Date: Wed, 20 Jan 2021 17:01:43 -0800 Subject: [PATCH] Make mod not depend on fabric api and bintray upload --- .github/workflows/publish.yml | 25 +++++++++++ README.md | 11 +++-- build.gradle | 41 +++++++++++------- gradle.properties | 4 +- .../config/command/ConfigCommand.java | 6 +-- src/main/resources/oro-config_icon.jpg | Bin 61820 -> 13567 bytes .../config/testmod/OroConfigTestMod.java | 2 +- 7 files changed, 63 insertions(+), 26 deletions(-) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..fae2f9a --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,25 @@ +name: Publish to Bintray + +on: + release: + types: [published] + workflow_dispatch: + +jobs: + publish: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Grant execute permission for gradlew + run: chmod +x gradlew + - name: Build with Gradle + run: ./gradlew bintrayUpload --parallel --stacktrace + env: + BINTRAY_USER: oroarmor + BINTRAY_KEY: ${{ secrets.BINTRAY_KEY }} \ No newline at end of file diff --git a/README.md b/README.md index d2ea1a2..2ba1b4c 100644 --- a/README.md +++ b/README.md @@ -9,19 +9,22 @@ My goal in creating this library was to make an light-weight config library that ## How to include Include my library in your mod by adding it to your `build.gradle` file. -Make sure jitpack is included in your repositiories section: +Make sure my bintray repo is included in your repositiories section: ``` repositories { maven { - url = "https://jitpack.io" + url = "https://dl.bintray.com/oroarmor/oroarmor" } } ``` Then in your dependencies section add my library to the classpath and jar-in-jar it so that users dont have to download an extra file: + +The current version is: ![](https://img.shields.io/github/v/tag/oroarmor/oro-config.svg) + ``` dependencies { - modImplementation 'com.github.OroArmor:oro-config:-SNAPSHOT' - include 'com.github.OroArmor:oro-config:-SNAPSHOT' + modImplementation 'com.github.OroArmor:oro-config:${version}' + include 'com.github.OroArmor:oro-config:${version}' } ``` diff --git a/build.gradle b/build.gradle index d6df9b2..978e4e9 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,7 @@ plugins { id 'fabric-loom' version '0.5-SNAPSHOT' id 'maven-publish' + id 'com.jfrog.bintray' version "1.8.4" } repositories { @@ -28,31 +29,20 @@ task runTestmodClient(type: RunClientTask) { dependencies { - //to change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - // Fabric API. This is technically optional, but you probably want it anyway. - modCompile "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - -// [ -// "fabric-api-base", -// "fabric-command-api-v1", -// "fabric-resource-loader-v0" -// ].forEach { -// modImplementation(fabricApi.module(it, project.fabric_version)) -// } + testmodCompile "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" modCompile("io.github.prospector:modmenu:1.14.6+build.31") { exclude(module: "fabric-api") } - - modApi("me.shedaniel.cloth:config-2:4.8.3"){ + + modCompile("me.shedaniel.cloth:config-2:4.8.3") { exclude(module: "fabric-api") } - + testImplementation 'junit:junit:4.13.1' testmodCompile sourceSets.main.output @@ -101,6 +91,10 @@ publishing { artifact(sourcesJar) { builtBy remapSourcesJar } + + archivesBaseName = rootProject.archives_base_name + version = rootProject.mod_version + group = rootProject.maven_group } } @@ -109,4 +103,21 @@ publishing { // uncomment to publish to the local maven // mavenLocal() } +} + +bintray { + user = System.getenv('BINTRAY_USER') + key = System.getenv('BINTRAY_KEY') + publications = ["mavenJava"] + publish = true + pkg { + repo = 'oroarmor' + name = rootProject.archives_base_name + userOrg = "oroarmor" + licenses = ['CC0-1.0'] + vcsUrl = 'https://github.com/OroArmor/Oro-Config.git' + version { + name = rootProject.mod_version + } + } } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index a1392fb..89b6c52 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,10 +8,10 @@ org.gradle.jvmargs=-Xmx2G loader_version=0.10.0+build.208 # Mod Properties - mod_version = 1.0.0 + mod_version = 1.1.0 maven_group = com.oroarmor archives_base_name = oro-config # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api - fabric_version= 0.22.1+build.409-1.16 \ No newline at end of file + fabric_version= 0.29.4+1.16 \ No newline at end of file diff --git a/src/main/java/com/oroarmor/config/command/ConfigCommand.java b/src/main/java/com/oroarmor/config/command/ConfigCommand.java index 3b0ab40..8ff14a2 100644 --- a/src/main/java/com/oroarmor/config/command/ConfigCommand.java +++ b/src/main/java/com/oroarmor/config/command/ConfigCommand.java @@ -16,7 +16,6 @@ import com.oroarmor.config.ConfigItemGroup; import com.oroarmor.config.ConfigItem.Type; -import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback; import net.minecraft.client.resource.language.I18n; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.text.ClickEvent; @@ -36,7 +35,7 @@ * @author Eli Orona * */ -public class ConfigCommand implements CommandRegistrationCallback { +public class ConfigCommand { /** * The config @@ -127,9 +126,8 @@ protected int listItem(CommandContext c, ConfigItem item return 1; } - @Override public void register(CommandDispatcher dispatcher, boolean dedicated) { - LiteralArgumentBuilder literalArgumentBuilder = literal(config.getID()).requires(p -> p.hasPermissionLevel(2)).executes(c -> listConfigGroups(c)); + LiteralArgumentBuilder literalArgumentBuilder = literal(config.getID()).requires(p -> p.hasPermissionLevel(2)).executes(this::listConfigGroups); for (ConfigItemGroup group : config.getConfigs()) { parseConfigItemGroupCommand(literalArgumentBuilder, group); diff --git a/src/main/resources/oro-config_icon.jpg b/src/main/resources/oro-config_icon.jpg index 64d0971d705b17ac6dd39b08996ecf637dbbe92a..7c48999503068c6f97a451301a11a1857c515427 100644 GIT binary patch literal 13567 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 E00{c5N&o-= literal 61820 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 uMm;wNoSI>(^=7k