arrow-kt libraries bundled for Minecraft
1import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
2import earth.terrarium.cloche.api.target.ForgeLikeTarget
3import org.gradle.kotlin.dsl.configure
4import org.gradle.kotlin.dsl.invoke
5import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
6
7plugins {
8 id("maven-publish")
9 alias(libs.plugins.cloche)
10 kotlin("jvm") version libs.versions.kotlin
11 id("com.gradleup.shadow") version libs.versions.shadow
12}
13
14
15
16val modGroup = "xyz.naomieow"
17group = modGroup
18val modVersion = "2.1.2"
19version = modVersion
20
21repositories {
22 cloche {
23 main()
24 mavenForge()
25 mavenFabric()
26 mavenNeoforged()
27 librariesMinecraft()
28 mavenNeoforgedMeta()
29 }
30}
31
32
33val libraries = listOf(
34 libs.arrow.core,
35 libs.arrow.annotations,
36 libs.arrow.fx.coroutines,
37 libs.arrow.autoclose,
38 libs.arrow.resilience,
39 libs.arrow.optics,
40 libs.arrow.fx.stm,
41 libs.arrow.collectors,
42 libs.arrow.eval,
43 libs.arrow.functions,
44 libs.arrow.atomic,
45 libs.arrow.serialization,
46)
47
48val shadowArrow: Configuration by configurations.creating {
49 isTransitive = false
50}
51
52dependencies {
53 libraries.forEach {
54 shadowArrow(it)
55 }
56}
57
58cloche {
59 metadata {
60 modId = "marrow"
61 name = "Marrow"
62 description = "Arrow Kotlin modules for Minecraft"
63 license = "Apache-2.0"
64 icon = "assets/marrow/icon.png"
65 url = "https://tangled.sh/@lesbian.skin/marrow"
66 sources = "https://tangled.sh/@lesbian.skin/marrow"
67 issues = "https://tangled.sh/@lesbian.skin/issues"
68
69 author("Naomi Roberts")
70 }
71
72 common {
73 dependencies {
74 libraries.forEach {
75 api(it)
76 }
77 }
78 }
79
80 fabric {
81 minecraftVersion = "1.20.1"
82 loaderVersion = libs.versions.fabric.loader
83
84 dependencies {
85 libraries.forEach {
86 include(it)
87 }
88 }
89
90 metadata {
91 custom("modmenu", mapOf(
92 "badges" to listOf("library")
93 ))
94 }
95 }
96
97 forge {
98 minecraftVersion = "1.20.1"
99 loaderVersion = libs.versions.forge.loader
100
101 metadata {
102 modLoader = "lowcodefml"
103 }
104 }
105
106 neoforge {
107 minecraftVersion = "1.20.4"
108 loaderVersion = libs.versions.neoforge.loader
109
110 metadata {
111 modLoader = "lowcodefml"
112 }
113 }
114
115 targets.withType<ForgeLikeTarget>().all {
116 tasks.register<ShadowJar>("${name}FatJar") {
117 from(zipTree(finalJar))
118 configurations = listOf(shadowArrow)
119 archiveClassifier = "${this@all.name}-shadowed"
120 }
121 }
122
123 artifacts {
124 targets.withType<ForgeLikeTarget>().all {
125 archives(tasks.named("${name}FatJar"))
126 }
127 }
128}
129
130publishing {
131 publications {
132 create<MavenPublication>("maven") {
133 groupId = modGroup
134 version = modVersion
135
136 from(components["java"])
137 }
138 }
139
140 repositories {
141 mavenLocal()
142
143 val username = "GAY_MAVEN_USERNAME".let { System.getenv(it) ?: findProperty(it) }?.toString()
144 val password = "GAY_MAVEN_PASSWORD".let { System.getenv(it) ?: findProperty(it) }?.toString()
145
146 if (username != null && password != null) {
147 maven("https://maven.is-immensely.gay/nightly") {
148 name = "gayNightly"
149 credentials {
150 this.username = username
151 this.password = password
152 }
153 }
154
155 maven("https://maven.is-immensely.gay/releases") {
156 name = "gayReleases"
157 credentials {
158 this.username = username
159 this.password = password
160 }
161 }
162 } else {
163 println("Gay Maven credentials not found.")
164 }
165 }
166}
167
168configure<KotlinProjectExtension> {
169 jvmToolchain(17)
170}
171
172subprojects {
173 apply(plugin = "earth.terrarium.cloche")
174 apply(plugin = "org.jetbrains.kotlin.jvm")
175
176 repositories {
177 cloche {
178 mavenLocal()
179 mavenCentral()
180 main()
181 mavenForge()
182 mavenFabric()
183 mavenNeoforged()
184 librariesMinecraft()
185 mavenNeoforgedMeta()
186 }
187 maven("https://thedarkcolour.github.io/KotlinForForge/")
188 maven("https://maven.terraformersmc.com/")
189 maven("https://pkgs.dev.azure.com/djtheredstoner/DevAuth/_packaging/public/maven/v1")
190 }
191
192 configure<KotlinProjectExtension> {
193 jvmToolchain(17)
194 }
195}