diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d22b9b..f6f61e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +**1.1.9** +* Add ```modupdater``` Entry-Point + **1.1.8** * Strict Minecraft Version Checking by Default * Print Message To Log Showing All Scanned Mods diff --git a/Jenkinsfile b/Jenkinsfile index 1673e44..1b7f5b2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,7 +7,7 @@ pipeline { stages { stage('Build') { steps { - sh './gradlew build' + sh './gradlew build publish' } post { success { diff --git a/MOD_DEVELOPER.md b/MOD_DEVELOPER.md index a82c4d5..b5f276a 100644 --- a/MOD_DEVELOPER.md +++ b/MOD_DEVELOPER.md @@ -124,4 +124,16 @@ In strict mode it only marks a file as compatibleif the Minecraft version is ide } } ``` -In loose mode, it will also mark a file as compatible if it has the same release target. \ No newline at end of file +In loose mode, it will also mark a file as compatible if it has the same release target. + +## Custom Version Compatibility Checking +You can also specify the ```modupdater``` entry-point as a ```ModUpdaterEntryPoint``` to check if a version is compatible with the current MC version. +```gradle +repositories { + maven { url 'https://maven.thebrokenrail.com' } +} +dependencies { + modCompileOnly 'com.thebrokenrail:modupdater:VERSION' + // VERSION = "+", for example "1.2.4+20w12a" +} +``` \ No newline at end of file diff --git a/build.gradle b/build.gradle index d50a34f..29c39bc 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,7 @@ plugins { id 'fabric-loom' version '0.4-SNAPSHOT' id 'com.matthewprenger.cursegradle' version '1.4.0' + id 'maven-publish' } compileJava { @@ -99,4 +100,19 @@ if (project.hasProperty('curseforge.api_key')) { forgeGradleIntegration = false } } +} + +publishing { + publications { + mavenJava(MavenPublication) { + artifact(remapJar) { + builtBy remapJar + } + } + } + repositories { + maven { + url '/data/maven' + } + } } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 8193cec..063df16 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ org.gradle.jvmargs = -Xmx1G fabric_loader_version = 0.8.8+build.202 # Mod Properties - mod_version = 1.1.8 + mod_version = 1.1.9 maven_group = com.thebrokenrail # Dependencies diff --git a/src/main/java/com/thebrokenrail/modupdater/api/UpdateStrategy.java b/src/main/java/com/thebrokenrail/modupdater/api/UpdateStrategy.java index 45770cc..c5c9440 100644 --- a/src/main/java/com/thebrokenrail/modupdater/api/UpdateStrategy.java +++ b/src/main/java/com/thebrokenrail/modupdater/api/UpdateStrategy.java @@ -6,7 +6,7 @@ import javax.annotation.Nullable; public interface UpdateStrategy { @Nullable - ModUpdate run(ConfigObject obj, String oldVersion, String name); + ModUpdate run(ConfigObject obj, String oldVersion, String name, String id); default boolean isStrict(ConfigObject obj) { try { diff --git a/src/main/java/com/thebrokenrail/modupdater/api/entrypoint/ModUpdaterEntryPoint.java b/src/main/java/com/thebrokenrail/modupdater/api/entrypoint/ModUpdaterEntryPoint.java new file mode 100644 index 0000000..e64b2bf --- /dev/null +++ b/src/main/java/com/thebrokenrail/modupdater/api/entrypoint/ModUpdaterEntryPoint.java @@ -0,0 +1,5 @@ +package com.thebrokenrail.modupdater.api.entrypoint; + +public interface ModUpdaterEntryPoint { + boolean isVersionCompatible(String version); +} diff --git a/src/main/java/com/thebrokenrail/modupdater/strategy/CurseForgeStrategy.java b/src/main/java/com/thebrokenrail/modupdater/strategy/CurseForgeStrategy.java index 97502da..e513f25 100644 --- a/src/main/java/com/thebrokenrail/modupdater/strategy/CurseForgeStrategy.java +++ b/src/main/java/com/thebrokenrail/modupdater/strategy/CurseForgeStrategy.java @@ -33,7 +33,7 @@ public class CurseForgeStrategy implements UpdateStrategy { @Override @Nullable - public ModUpdate run(ConfigObject obj, String oldVersion, String name) { + public ModUpdate run(ConfigObject obj, String oldVersion, String name, String id) { int projectID; try { projectID = obj.getInt("projectID"); @@ -76,7 +76,7 @@ public class CurseForgeStrategy implements UpdateStrategy { for (CurseForgeFile file : files) { if (Util.isFileCompatible(file.fileName)) { String fileVersion = Util.getVersionFromFileName(file.fileName); - if ((Arrays.asList(file.gameVersion).contains(versionStr) && strict) || Util.isVersionCompatible(fileVersion, strict)) { + if ((Arrays.asList(file.gameVersion).contains(versionStr) && !strict) || Util.isVersionCompatible(id, fileVersion, strict)) { if (newestFile != null) { String newestFileVersion = Util.getVersionFromFileName(newestFile.fileName); try { diff --git a/src/main/java/com/thebrokenrail/modupdater/strategy/GitHubReleasesStrategy.java b/src/main/java/com/thebrokenrail/modupdater/strategy/GitHubReleasesStrategy.java index fcc2c62..60a8f76 100644 --- a/src/main/java/com/thebrokenrail/modupdater/strategy/GitHubReleasesStrategy.java +++ b/src/main/java/com/thebrokenrail/modupdater/strategy/GitHubReleasesStrategy.java @@ -35,7 +35,7 @@ public class GitHubReleasesStrategy implements UpdateStrategy { @Override @Nullable - public ModUpdate run(ConfigObject obj, String oldVersion, String name) { + public ModUpdate run(ConfigObject obj, String oldVersion, String name, String id) { String owner; String repo; try { @@ -73,7 +73,7 @@ public class GitHubReleasesStrategy implements UpdateStrategy { for (GitHubReleaseAsset asset : release.assets) { if (Util.isFileCompatible(asset.name)) { String fileVersion = Util.getVersionFromFileName(asset.name); - if (Util.isVersionCompatible(fileVersion, strict)) { + if (Util.isVersionCompatible(id, fileVersion, strict)) { if (newestFile != null) { try { if (SemanticVersion.parse(fileVersion).compareTo(SemanticVersion.parse(fileVersion)) > 0) { diff --git a/src/main/java/com/thebrokenrail/modupdater/strategy/JSONStrategy.java b/src/main/java/com/thebrokenrail/modupdater/strategy/JSONStrategy.java index 2279964..afcbf8a 100644 --- a/src/main/java/com/thebrokenrail/modupdater/strategy/JSONStrategy.java +++ b/src/main/java/com/thebrokenrail/modupdater/strategy/JSONStrategy.java @@ -32,7 +32,7 @@ public class JSONStrategy implements UpdateStrategy { @Override @Nullable - public ModUpdate run(ConfigObject obj, String oldVersion, String name) { + public ModUpdate run(ConfigObject obj, String oldVersion, String name, String id) { String url; try { url = obj.getString("url"); diff --git a/src/main/java/com/thebrokenrail/modupdater/strategy/MavenStrategy.java b/src/main/java/com/thebrokenrail/modupdater/strategy/MavenStrategy.java index 844ac8d..9e96af1 100644 --- a/src/main/java/com/thebrokenrail/modupdater/strategy/MavenStrategy.java +++ b/src/main/java/com/thebrokenrail/modupdater/strategy/MavenStrategy.java @@ -40,7 +40,7 @@ public class MavenStrategy implements UpdateStrategy { @Override @Nullable - public ModUpdate run(ConfigObject obj, String oldVersion, String name) { + public ModUpdate run(ConfigObject obj, String oldVersion, String name, String id) { String repository; String group; String artifact; @@ -87,7 +87,7 @@ public class MavenStrategy implements UpdateStrategy { Node node = versions.item(i); String version = node.getTextContent(); - if (Util.isVersionCompatible(version, strict)) { + if (Util.isVersionCompatible(id, version, strict)) { if (newestVersion != null) { try { if (SemanticVersion.parse(version).compareTo(SemanticVersion.parse(newestVersion)) > 0) { diff --git a/src/main/java/com/thebrokenrail/modupdater/strategy/util/UpdateStrategyRunner.java b/src/main/java/com/thebrokenrail/modupdater/strategy/util/UpdateStrategyRunner.java index 76eeff7..8c588f9 100644 --- a/src/main/java/com/thebrokenrail/modupdater/strategy/util/UpdateStrategyRunner.java +++ b/src/main/java/com/thebrokenrail/modupdater/strategy/util/UpdateStrategyRunner.java @@ -54,7 +54,7 @@ public class UpdateStrategyRunner { scan.accept(name); - return strategyObj.run(obj, oldVersion, name); + return strategyObj.run(obj, oldVersion, name, metadata.getId()); } public static ModUpdate[] checkAllModsForUpdates() { diff --git a/src/main/java/com/thebrokenrail/modupdater/util/Util.java b/src/main/java/com/thebrokenrail/modupdater/util/Util.java index 6414c01..e309d06 100644 --- a/src/main/java/com/thebrokenrail/modupdater/util/Util.java +++ b/src/main/java/com/thebrokenrail/modupdater/util/Util.java @@ -1,10 +1,13 @@ package com.thebrokenrail.modupdater.util; import com.mojang.bridge.game.GameVersion; +import com.thebrokenrail.modupdater.ModUpdater; import com.thebrokenrail.modupdater.api.ConfigObject; +import com.thebrokenrail.modupdater.api.entrypoint.ModUpdaterEntryPoint; import com.thebrokenrail.modupdater.api.impl.ConfigObjectHardcoded; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.ModContainer; +import net.fabricmc.loader.api.entrypoint.EntrypointContainer; import net.minecraft.MinecraftVersion; import java.io.BufferedReader; @@ -12,6 +15,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Optional; @@ -80,7 +84,14 @@ public class Util { return versionStr.endsWith(prefix + minecraftVersionSemantic) || versionStr.endsWith(prefix + minecraftVersion.getName()) || (!strict && (versionStr.endsWith(prefix + minecraftVersion.getReleaseTarget()) || versionStr.endsWith(prefix + getMajorVersion()))); } - public static boolean isVersionCompatible(String versionStr, boolean strict) { + public static boolean isVersionCompatible(String id, String versionStr, boolean strict) { + List> list = FabricLoader.getInstance().getEntrypointContainers(ModUpdater.NAMESPACE, ModUpdaterEntryPoint.class); + for (EntrypointContainer container : list) { + if (container.getProvider().getMetadata().getId().equals(id)) { + return container.getEntrypoint().isVersionCompatible(versionStr); + } + } + return isVersionCompatible(versionStr, '+', strict) || isVersionCompatible(versionStr, '-', strict); }