Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dexman545/outlet
A gradle plugin for making MC mods
https://github.com/dexman545/outlet
Last synced: about 1 month ago
JSON representation
A gradle plugin for making MC mods
- Host: GitHub
- URL: https://github.com/dexman545/outlet
- Owner: dexman545
- License: lgpl-3.0
- Created: 2021-03-13T04:22:03.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-03-10T12:33:02.000Z (8 months ago)
- Last Synced: 2024-03-10T13:40:12.064Z (8 months ago)
- Language: Groovy
- Size: 133 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Outlet
_A Gradle plugin for lazy Minecraft mod developement._Provides the following features:
- Getting the latest Minecraft version available,
optionally within a given range
- Getting the latest or earliest Yarn version for a Minecraft version
- Getting the latest available version of Fabric loader
- Getting the latest available version of Fabric API for a Minecraft version
- Getting the latest available version of Neoforge for a Minecraft version
- Getting the latest available version of Parchment for a Minecraft version
- Will try to find the closest matching Minecraft version that has parchment mappings
- Getting the required Java version for a Minecraft version
- Getting the Java compatibility level for a range of Miencraft versions
- Generating the list of acceptable Minecraft versions based on a given range,
useful for instance with publishing on Modrinth via [Minotaur](https://fabricmc.net/wiki/tutorial:minotaur)
- Generating the list of acceptable Minecraft versions based on a given range
for use on Curseforge via [CurseGradle](https://fabricmc.net/wiki/tutorial:cursegradle)
- Optional nondestructive automatic updating of gradle.properties versions with the new values Outlet has produced## Usage
There are three parts to using Outlet: applying the plugin,
feeding it options, then calling the methods. The latter two occur anywhere
after application.### Application
[Add Outlet as you would using any other gradle plugin.](https://plugins.gradle.org/plugin/io.github.dexman545.outlet)### Telling it what you want
**_Dummy values in use!_**Add any of the following (`mcVersionRange` is required):
```groovy
// The Minecraft version range from the fabric.mod.json.
// Use '*' to match any MC version
// Default: null - set it!
outlet.mcVersionRange = '*'
// Whether outlet.mcVersions() should return snapshots
// Default: true
outlet.allowSnapshotsForProject = true
// Whether outlet.yarnVersion() should return the latest yarn version or
// the earliest yarn version for a given Minecraft version
// Default: true
outlet.useLatestYarn = true
// Whether outlet.latestMc() respects the provided range
// Default: true
outlet.latestMcRespectsRange = true// Whether the properties file versions should be updated.
// This also doubles as an environment check, eg. update them in dev
// but not on a build server
// Default: false
outlet.maintainPropertiesFile = true// The map of entries to update in the properties file and their new version
// Any key/value pair in the properties file can be updated in this way, not just those Outlet manages!
// Default: empty
outlet.propertiesData = ['fabric_version': outlet.fapiVersion()]// The amount of time to keep the cache before attempting to update
// Default 12 hrs, set to null to disable
outlet.cacheTime = new TimeDuration(0, 12, 0, 0, 0)
```
_Note: these can also be set using the `outlet` block!_### Getting stuff out of it
You can set the outputs of these methods to settings or use them directly.```groovy
// Get the set of Minecraft version strings
// Can be used for automated Modrinth upload
outlet.mcVersions() // Returns Set// Get the set of Minecraft version strings for automated curseforge upload
outlet.curseforgeMcVersions() // Returns Set// Get the latest Minecraft version
outlet.latestMc() // Returns String// Get the latest Fabric Loader version
outlet.loaderVersion() // Returns String// Get the Yarn version for the latest MC version (output of latestMc())
outlet.yarnVersion() // Returns String// Get the Yarn version for the given MC version
// mcVer - the Minecraft version, such as '21w10a'
outlet.yarnVersion(mcVer) // Returns String// Get the latest Fabric API version for the latest MC version (output of latestMc())
outlet.fapiVersion() // Returns String// Get the latest Fabric API version for the given MC version
// mcVer - the Minecraft version, such as '21w10a'
outlet.fapiVersion(mcVer) // Returns String// Get the Java version for the latest MC version
// For use in setting the compiler level
// Defaults to 8 if it cannot be found
outlet.javaVersion() // Returns int// Get the Java version for the given MC version
// For use in setting the compiler level
// Defaults to 8 if it cannot be found
// mcVer - the Minecraft version, such as '21w10a'
outlet.javaVersion(mcVer) // Returns int// Get the Java language compatibility level that all versions in mcVersions() can support
// For use in setting compatibility level
// Defaults to 8 if it cannot be found
// Examples:
// Range: 1.16 - 1.18; Returns: 8
// Range: 1.17 - 1.18; Returns: 16
// Range: 1.18.x; Returns: 17
outlet.javaLanguageCompatibility() // Returns int```
#### Example
```groovy
// In this project, range is in gradle.properties, could also read it from fabric.mod.json
outlet.mcVersionRange = project.range// Use fabric example mod's variables to keep template mostly unchanged
project.minecraft_version = outlet.latestMc()
project.loader_version = outlet.loaderVersion()
project.yarn_mappings = outlet.yarnVersion()
project.fabric_version = outlet.fapiVersion()
```