repo for my hex addons :3
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

demote hexic

+700 -711
+1 -1
.gitignore
··· 110 110 build/ 111 111 build*/ 112 112 !buildSrc/ 113 - /src/main/generated 113 + **/src/main/generated 114 114 115 115 # Ignore Gradle GUI config 116 116 gradle-app.setting
+174 -463
build.gradle.kts
··· 9 9 import `java.nio`.file.Files; 10 10 import kotlin.io.path.deleteIfExists 11 11 import util.P 12 + import net.fabricmc.loom.api.* 12 13 13 14 buildscript { 14 15 repositories { ··· 21 22 } 22 23 23 24 plugins { 24 - id("fabric-loom") version "1.13-SNAPSHOT" 25 25 id("scala") 26 26 kotlin("jvm") version "2.2.0" 27 27 id("maven-publish") 28 + id("idea") 28 29 id("de.undercouch.download") version "5.6.0" 29 30 id("org.eu.net.pool.mc-plugin") version "0.1.1" 30 31 } 31 32 32 - evaluationDependsOn(":config") 33 - val p: P by ext 34 - val release: Boolean by ext 35 - val py_version: String by project.properties 36 - val wheelPath = file("dist/hexdoc_hexic-$version.$py_version-py3-none-any.whl") 33 + allprojects { 34 + try { 35 + tasks.named("downloadRenderDoc") { 36 + setProperty("output", file("$buildDir/renderdoc_1.37.tar.gz")) 37 + } 37 38 38 - fabricApi { 39 - configureDataGeneration { 40 - modId = "hexic" 41 - client = true 42 - } 43 - } 39 + tasks.named("extractRenderDoc") { 40 + enabled = false 41 + } 44 42 45 - //tasks.register<Download>("fetchHexxy4") { 46 - // src("https://github.com/chloetax/hexxy4/archive/@.tar.gz") 47 - // dest("$buildDir/hexxy4.tgz") 48 - // overwrite(true) 49 - //} 50 - // 51 - //tasks.register<Sync>("hexxy4") { 52 - // from(tarTree("$buildDir/hexxy4.tgz")) 53 - // into("$buildDir/hexxy4") 54 - //} 43 + val erd by tasks.register<Sync>("myExtractRenderDoc") { 44 + dependsOn("downloadRenderDoc") 45 + from(tarTree(resources.gzip("$buildDir/renderdoc_1.37.tar.gz"))) 46 + into("$buildDir/renderdoc") 47 + } 55 48 56 - fun download(url: String, name: String = file(url).name): Download { 57 - val outPath = file("$buildDir/$name") 58 - return tasks.register<Download>("download_${file(name).nameWithoutExtension}") { 59 - src(url) 60 - dest(outPath) 61 - overwrite(false) 62 - }.get() 49 + tasks.named("runClientRenderDoc") { 50 + dependsOn(erd) 51 + } 52 + } catch (ignored: UnknownTaskException) {} 63 53 } 64 54 65 - val cloth = download("https://raw.githubusercontent.com/malcolmriley/unused-textures/master/items/part_textile_cloth.png") 66 - 67 - run { 68 - val buildKubo by tasks.register("kubo") 69 - val outRoot = file("$buildDir/kubo") 70 - fun kuboTask(os: String, arch: String, external: Boolean = false, parent: Task = buildKubo) { 71 - val task = tasks.register<Exec>("kubo${os.uppercaseFirstChar()}${arch.uppercaseFirstChar()}") { 72 - inputs.dir("vendor/kubo") 73 - workingDir = file("vendor/kubo") 74 - doFirst { 75 - if (!outRoot.exists()) { 76 - check(outRoot.mkdirs()) 77 - } 78 - } 79 - if (!external) environment("CGO_ENABLED", "0") 80 - environment("GOOS", os) 81 - environment("GOARCH", arch) 82 - val out = outRoot.resolve("ipfs.$os.$arch.exe") 83 - commandLine("go", "build", "-o", out.absoluteFile, "github.com/ipfs/kubo/cmd/ipfs") 84 - outputs.file(out) 85 - } 86 - parent.dependsOn(task) 87 - } 88 - fun kuboTasks(os: String, vararg arches: String, external: Boolean = false) { 89 - val archTask by tasks.register("kubo${os.uppercaseFirstChar()}") 90 - for (arch in arches) { 91 - kuboTask(os, arch, external=external, parent=archTask) 92 - } 93 - buildKubo.dependsOn(archTask) 94 - } 95 - kuboTasks("linux", "386", "amd64", "arm", "arm64", "mips", "mips64", "mips64le", "mipsle", "ppc64", "ppc64le", "riscv64", "s390x") 96 - kuboTasks("windows", "386", "amd64", "arm", "arm64") 97 - kuboTasks("darwin", "amd64") 55 + val release: Boolean = !System.getenv("release").isNullOrEmpty() 56 + allprojects { 57 + val p = P(project) 58 + val modid: String by project.properties 59 + ext["p"] = p 60 + ext["release"] = release 61 + version = project.property("mod_version") as String 62 + if (!release) version = "${version}+${p.commit_id.take(7)}" 63 + group = rootProject.property("maven_group") as String 64 + println("configuring $modid ($project) v$version @ $group") 65 + plugins.withId("java") { 66 + base { 67 + archivesName.set(modid) 68 + } 69 + java { 70 + toolchain.languageVersion = JavaLanguageVersion.of(17) 71 + withSourcesJar() 72 + } 98 73 99 - tasks.register("cleanKubo") { 100 - onlyIf { outRoot.exists() } 101 - doLast { 102 - if (outRoot.exists()) { 103 - check(outRoot.deleteRecursively()) 74 + tasks.named<Jar>("jar").configure { 75 + from("LICENSE") { 76 + rename { "LICENSE_$modid" } 104 77 } 78 + duplicatesStrategy = DuplicatesStrategy.WARN 105 79 } 106 80 } 107 81 108 - tasks.processResources { 109 - // dependsOn(buildKubo) 110 - // inputs.dir("$buildDir/kubo") 111 - // from(outRoot) { 112 - // into("vendor/hexic/") 113 - // } 114 - } 115 - } 116 - 117 - sourceSets { 118 - main { 119 - java { 120 - srcDirs.clear(); 121 - } 82 + plugins.withId("scala") { 122 83 scala { 123 - srcDirs += file("src/main/java"); 84 + scalaVersion = "3.7.1" 124 85 } 125 86 } 126 - } 127 87 128 - val modDepends: Configuration by configurations.creating { 129 - isTransitive = false 130 - isCanBeResolved = true 131 - } 132 - val modSuggests: Configuration by configurations.creating { 133 - isTransitive = false 134 - isCanBeResolved = true 135 - } 136 - val modCompatibility: Configuration by configurations.creating 137 - 138 - dependencies { 139 - // To change the versions see the gradle.properties file 140 - minecraft("com.mojang:minecraft:${project.property("minecraft_version")}") 141 - mappings("net.fabricmc:yarn:${project.property("yarn_mappings")}:v2") 142 - modImplementation("net.fabricmc:fabric-loader:${project.property("loader_version")}") 143 - modImplementation("net.fabricmc:fabric-language-kotlin:1.13.4+kotlin.2.2.0") 144 - 145 - fun compat(with: String) { 146 - modSuggests(with) 147 - modCompileOnly(with) 148 - modLocalRuntime(with) 149 - } 88 + plugins.withId("fabric-loom") { 89 + extensions.getByType<LoomGradleExtensionAPI>().apply { 90 + splitEnvironmentSourceSets() 91 + runs["client"].programArgs += listOf("--username", "Player", "--uuid", "9e1b34e3-8031-4623-8918-eb7914ab564b") 150 92 151 - val minecraft_version = "1.20.1" 152 - modDepends(implementation(annotationProcessor("io.github.llamalad7:mixinextras-fabric:0.5.0")!!)!!) 153 - implementation(project(":util", "namedElements")) 154 - modImplementation("io.github.tropheusj:serialization-hooks:0.4.99999") 155 - modImplementation("poollovernathan.fabric:mod-tools:1.1.5+1.20.1") 156 - modImplementation("at.petra-k.hexcasting:hexcasting-fabric-$minecraft_version:0.11.3") 157 - modImplementation("com.samsthenerd.inline:inline-fabric:$minecraft_version-1.0.1") 158 - modDepends(include(implementation("com.github.Chocohead:Fabric-ASM:v2.3")!!)!!) 159 - modCompileOnly("dev.kineticcat.hexportation:hexportation-fabric-1.20.1-fabric-fabric:0.0.3") 160 - modCompileOnly("carpet:fabric-carpet:1.20-1.+") 161 - modLocalRuntime("maven.modrinth:lithium:mc1.20.1-0.11.4-fabric") 162 - // modRuntimeOnly("carpet:fabric-carpet:1.20-1.+") 163 - compat("gay.object.ioticblocks:ioticblocks-fabric:1.0.2+1.20.1") 164 - modImplementation(files("./libs/oneironaut-fabric-1.20.1-0.5.0-476cee2.jar")) 165 - compat("maven.modrinth:hexcassettes:1.1.4") 166 - modLocalRuntime("maven.modrinth:trinkets:3.7.2") 167 - modDepends(modImplementation("maven.modrinth:spasm:0.2.2")!!) 168 - // modImplementation("maven.modrinth:slate-works:1.0.5") 169 - compat("miyucomics.hexical:hexical:2.0.0+a3c47ad9") 170 - compat("miyucomics.overevaluate:overevaluate:main-SNAPSHOT") 171 - modDepends(modImplementation("ram.talia.moreiotas:moreiotas-fabric-$minecraft_version:0.1.1") { exclude(module = "serialization-hooks") }) 172 - modDepends(modImplementation("ram.talia.hexal:hexal-fabric-1.20.1:0.3.0") { exclude(module = "serialization-hooks") }) 173 - modDepends(modImplementation("miyucomics.hexcellular:hexcellular:1.1.0")!!) 174 - modDepends(modImplementation("maven.modrinth:jsonpatcher:1.0.0-beta.4+mc.1.20.1")!!) 175 - implementation("com.github.mattidragon:JsonPatcherLang:v1.0.0-beta.3") // trans maven.modrinth:jsonpatcher 176 - modImplementation("com.github.mattidragon:ConfigToolkit:v1.0.0") // trans maven.modrinth:jsonpatcher 177 - modDepends(modImplementation("miyucomics.hexpose:hexpose:1.0.0")!!) 178 - include(modApi("xyz.nucleoid:fantasy:0.4.11+1.20-rc1")!!) 179 - // modImplementation("miyucomics:hexpose:1.0.0") 180 - // modImplementation(files("hexical-2.0.0.jar")) 181 - include(implementation("net.bytebuddy:byte-buddy:1.17.7")!!) 182 - include(implementation("net.bytebuddy:byte-buddy-agent:1.17.7")!!) 183 - 184 - modRuntimeOnly("gay.object.hexdebug:hexdebug-fabric:0.5.0+1.20.1-SNAPSHOT") 185 - } 186 - 187 - val colors = mapOf( 188 - "white" to 16383998, 189 - "orange" to 16351261, 190 - "magenta" to 13061821, 191 - "light_blue" to 3847130, 192 - "yellow" to 16701501, 193 - "lime" to 8439583, 194 - "pink" to 15961002, 195 - "gray" to 4673362, 196 - "light_gray" to 10329495, 197 - "cyan" to 1481884, 198 - "purple" to 8991416, 199 - "blue" to 3949738, 200 - "brown" to 8606770, 201 - "green" to 6192150, 202 - "red" to 11546150, 203 - "black" to 1908001, 204 - ) 205 - 206 - val downloadedBags = colors.mapValues { download("https://raw.githubusercontent.com/malcolmriley/unused-textures/master/items/tool_pouch_${it.key}.png") } 207 - 208 - tasks.processResources { 209 - inputs.property("version", project.version) 210 - inputs.property("minecraft_version", project.property("minecraft_version")) 211 - inputs.property("loader_version", project.property("loader_version")) 212 - filteringCharset = "UTF-8" 213 - 214 - preprocessor { 215 - fabricMod("hexic", version as String) { 216 - name = "Hexic" 217 - description = "Miscellaneous neat features and QoL patterns for Hex Casting." 218 - license = "LGPL-3.0" 219 - icon = "assets/hexic/icon.png" 220 - 221 - author("PoolloverNathan") { 222 - put("discord", "https://discord.com/users/402104961812660226") 223 - } 224 - 225 - for (p in modDepends.resolve()) { 226 - val root = 227 - if (p.isDirectory) p.toPath() 228 - else if (p.name.endsWith(".jar")) `java.nio.file`.FileSystems.newFileSystem(p.toPath()).rootDirectories.single() 229 - else continue 230 - val fmj = root.resolve("fabric.mod.json") 231 - if (fmj.exists()) { 232 - val json = JsonSlurper().parse(fmj) as Map<String, Any> 233 - depends(json["id"].toString(), ">=${json["version"]}") 234 - } else { 235 - println("Attempt to add dependency '$p' to modDepends, which is not a Fabric mod.") 93 + mods { 94 + register(modid) { 95 + sourceSet("main") 96 + sourceSet("client") 236 97 } 237 98 } 238 99 239 - conflicts("valkyrienskies", "*") // need to figure out how to create dimensions without causing a crash 240 - 241 - entrypoint("org.eu.net.pool.hexic.main\$package::init") 242 - entrypoint("org.eu.net.pool.hexic.client.main\$package::init", Environment.Client) 243 - entrypoint("fabric-datagen", "org.eu.net.pool.hexic.client.main\$package::datagen") 244 - entrypoint("mm:early_risers", "org.eu.net.pool.hexic.early_riser\$package::warCrimes") 245 - entrypoint("cardinal-components", "org.eu.net.pool.hexic.ComponentInit") 246 - mixins("hexic.mixins.json") 247 - mixins("hexic.client.mixins.json", Environment.Client) 248 - custom { 249 - array("cardinal-components") { 250 - put("hexic:player_wisp") 251 - put("hexic:server_info") 252 - } 253 - } 100 + mixin.useLegacyMixinAp = false 254 101 } 255 - } 256 102 257 - dependsOn(cloth) 258 - dependsOn(*downloadedBags.values.toTypedArray()) 259 - val itemsRoot = destinationDir.resolve("assets/hexic/textures/item") 260 - doLast { 261 - for ((name, color) in colors) { 262 - exec { 263 - commandLine("env", "magick", cloth.dest, "-channel", "red,green,blue", "-fx", "u*#${color.toString(16)}", itemsRoot.resolve("${name}_mediaweave.png")) 264 - } 265 - val bag = downloadedBags[name]!!.dest 266 - exec { 267 - commandLine("env", "magick", bag, "-write", itemsRoot.resolve("large_${name}_bundle.png"), "-sample", "14x14", "-background", "transparent", "-extent", "16x16-1-2", itemsRoot.resolve("small_${name}_bundle.png")) 103 + extensions.getByType<net.fabricmc.loom.api.fabricapi.FabricApiExtension>().apply { 104 + configureTests { 105 + modId = modid 106 + eula = true 268 107 } 269 108 } 270 - exec { 271 - commandLine("env", "magick", "wizard:", itemsRoot.resolve("wizard.png")) 272 - } 273 - exec { 274 - commandLine("env", "magick", "null:", itemsRoot.resolve("no.png")) 275 - } 276 - exec { 277 - commandLine("env", "magick", 278 - "https://raw.githubusercontent.com/malcolmriley/unused-textures/master/blocks/overlay_rune_0.png", 279 - "(", 280 - "-clone", "0", 281 - "-alpha", "extract", 282 - "-type", "bilevel", 283 - "-define", "connected-components:mean-color=true", 284 - "-define", "connected-components:area-threshold=26", 285 - "-connected-components", "4", 286 - ")", 287 - "-alpha", "off", 288 - "-compose", "copy_opacity", 289 - "-composite", 290 - "-fx", "u*2", 291 - itemsRoot.resolve("stringworm.miff") 292 - ) 293 - } 294 - for ((name, expr) in mapOf( 295 - "media" to "u*#74b3f2", 296 - "hex" to "u*#b38ef3", 297 - "action" to "u*#fc77be", 298 - "thing" to "u*#8d6acc", 299 - "pure" to "u", 300 - )) { 301 - exec { 302 - commandLine("env", "magick", itemsRoot.resolve("stringworm.miff"), "-channel", "rgb", "-fx", expr, "$itemsRoot/stringworm_$name.png") 303 - } 304 - } 305 - // people will hate this 306 - for (i in 0..31) { 307 - itemsRoot.resolve("stringworm_tinted_$i.png").outputStream().use { 308 - exec { 309 - commandLine("env", "magick", itemsRoot.resolve("stringworm.miff"), "-fx", "i+j == $i ? u : Transparent", "png:-") 310 - standardOutput = it 311 - } 312 - } 109 + 110 + dependencies { 111 + "modLocalRuntime"("maven.modrinth:ears:1.4.7+fabric-1.20") 313 112 } 314 - file("$itemsRoot/../block").mkdir() 315 - exec { 316 - commandLine("env", "magick", "xc:#ffffff[16x16]", itemsRoot.resolveSibling("block/border.png")) 317 - } 318 - //file("$itemsRoot/stringworm.miff").delete() 319 - exec { 320 - commandLine("env", "magick", "https://www.masterbuilt.com/cdn/shop/articles/162_20-_20Voodoo_20Baked_20Beans.jpg", "-sample", "256x256", itemsRoot.resolve("beans.png")) 321 - } 322 - } 323 113 324 - eachFile { 325 - if (name.endsWith(".ase")) { 326 - exec { 327 - if (name.endsWith("_*.ase")) { 328 - commandLine("env", "aseprite", "-b", "--split-layers", file, "--save-as", "$destinationDir/${path.replace("_*.ase", "")}_{layer}.png") 329 - } else { 330 - commandLine("env", "aseprite", "-b", file, "--save-as", "$destinationDir/${path.replace(".ase", "")}.png") 114 + if (project != rootProject) { 115 + tasks.named("runClient") { 116 + doFirst { 117 + val rootOptions = rootProject.file("run/options.txt").toPath() 118 + val options = file("run/options.txt").toPath() 119 + options.deleteIfExists() 120 + Files.createSymbolicLink(options, rootOptions) 331 121 } 332 122 } 333 - exclude() 334 123 } 335 - if (name.endsWith(".ase.split-layers")) exclude() 336 - } 337 - } 338 124 339 - allprojects { 340 - tasks.withType<AbstractArchiveTask> { 341 - isPreserveFileTimestamps = false 342 - isReproducibleFileOrder = true 343 - } 125 + tasks.processResources { 126 + val bookRoot = destinationDir.resolve("assets/hexcasting/patchouli_books/thehexbook") 127 + val langRoot = destinationDir.resolve("assets/$modid/lang") 344 128 345 - tasks.withType<JavaCompile>().configureEach { 346 - // ensure that the encoding is set to UTF-8, no matter what the system default is 347 - // this fixes some edge cases with special characters not displaying correctly 348 - // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html 349 - // If Javadoc is generated, this must be specified in that task too. 350 - options.encoding = "UTF-8" 351 - options.release.set(17) 352 - } 353 - 354 - tasks.withType<ScalaCompile>().configureEach { 355 - scalaCompileOptions.additionalParameters.addAll(listOf("-explain-cyclic", "-Ydebug-cyclic", "-experimental", "-feature", "-Ycc-debug")) 356 - } 357 - } 358 - 359 - val wheelFiles by lazy { 360 - fileTree("_site/dst/docs/v") { include("**/*.whl") }.files 361 - } 362 - 363 - val contentRoot = P.contentRoot 364 - 365 - val wheelFileHashes by lazy { 366 - wheelFiles.map { it.name to p.getStdout { commandLine("git", "hash-object", "-w", it) } } 367 - } 368 - val wheelTree by lazy { 369 - p.getStdout { 370 - commandLine("git", "mktree") 371 - standardInput = `java.io`.ByteArrayInputStream(wheelFileHashes.joinToString("") { (k, v) -> "100644 blob $v\t$k\n" }.toByteArray()) 372 - } 373 - } 374 - val wheelCommit by lazy { 375 - p.getStdout { 376 - commandLine("git", "commit-tree", wheelTree) 377 - standardInput = `java.io`.ByteArrayInputStream(byteArrayOf()) 378 - } 379 - } 380 - tasks.register<Exec>("pushWheels") { 381 - commandLine("git", "push", "origin", "+$wheelCommit:refs/heads/wheels") 382 - } 383 - 384 - tasks.named("clean") { 385 - doLast { 386 - file("src/main/generated").deleteRecursively() 387 - file("dist").deleteRecursively() 388 - } 389 - } 390 - 391 - open class Hexdoc: Exec() { 392 - init { 393 - environment["GITHUB_PAGES_URL"] = "https://hexic.pool.net.eu.org/" 394 - environment["GITHUB_REPOSITORY"] = "https://codeberg.org/poollovernathan/hexic" 395 - environment["DEBUG_GITHUBUSERCONTENT"] = P.contentRoot 396 - environment["GITHUB_SHA"] = (project.ext["p"] as P).commit_id 397 - } 398 - @Input 399 - var hexdocArgs = listOf<String>() 400 - set(value) { 401 - field = value 402 - commandLine = listOf("env", "hexdoc") + hexdocArgs 403 - } 404 - 405 - @Internal 406 - var docsPrefix = project.file(".") 407 - } 408 - 409 - tasks.register<GradleBuild>("processWithDatagen") { 410 - dependsOn("runDatagen") 411 - tasks = listOf("processResources") 412 - } 413 - 414 - tasks.named("runDatagen") { 415 - doLast { 416 - 417 - } 418 - } 419 - 420 - val Hexdoc.docsRoot get() = file("$docsPrefix/v/${if (release) "$version/$py_version" else "latest/${p.change_id}"}") 421 - fun Hexdoc.cleanPrefix() { 422 - doFirst { 423 - docsPrefix.deleteRecursively() 424 - } 425 - } 426 - fun Hexdoc.processOutput() { 427 - doLast { 428 - for (f in docsRoot.walk()) { 429 - if (f.isFile && !f.name.endsWith(".png")) { 430 - f.writeText(includeContent(f.readText())) 129 + doLast { 130 + bookRoot.list()?.forEach { lang -> 131 + val langFile = langRoot.resolve("$lang.json") 132 + if (langFile.exists()) { 133 + val entries = JsonSlurper().parseText(langFile.readText()) as MutableMap<String, String> 134 + var n = 0 135 + for (bookFile in bookRoot.resolve(lang).walkTopDown()) { 136 + if (bookFile.isFile) { 137 + val json = JsonSlurper().parseText(bookFile.readText()) 138 + if (json !is Map<*, *>) continue 139 + json as MutableMap<Any, Any> 140 + val name = json["name"] 141 + if (name is String) { 142 + entries["text.$modid.book.${n}"] = name 143 + json["name"] = "text.$modid.book.${n}" 144 + n++ 145 + } 146 + val pages = json["pages"] 147 + if (pages !is MutableList<*>) continue 148 + pages as MutableList<Any> 149 + for (i in pages.indices) { 150 + val page = pages[i] 151 + if (page is String) { 152 + entries["text.$modid.book.${n}"] = page 153 + pages[i] = "text.$modid.book.${n}" 154 + n++ 155 + } else if (page is MutableMap<*, *>) { 156 + page as MutableMap<Any, Any> 157 + for (key in listOf("text", "title", "header")) { 158 + val text = page[key] 159 + if (text != null && text is String) { 160 + entries["text.$modid.book.${n}"] = text 161 + page[key] = "text.$modid.book.${n}" 162 + n++ 163 + } 164 + } 165 + } 166 + } 167 + bookFile.writeText(JsonOutput.toJson(json)) 168 + } 169 + } 170 + langFile.writeText(JsonOutput.toJson(entries)) 171 + } 172 + } 431 173 } 432 174 } 433 175 } 434 - } 435 - fun includeContent(text: String) = 436 - text.replace(Regex("$contentRoot/*([\\w/.-]+?\\.png)")) { 437 - val path = it.groups[1]!!.value.replace(contentRoot, "").trimStart('/') 438 - val b64 = `java.util`.Base64.getEncoder().encodeToString(file(path).readBytes()) 439 - println("\t$it\t$path") 440 - "data:image/png;base64,$b64" 441 - } 442 176 443 - val syncPip by tasks.register<Exec>("syncPip") { 444 - doFirst { 445 - file("doc/src/hexdoc_hexic/__version__.py").writeText(""" 446 - PY_VERSION = "$py_version" 447 - """.trimIndent()) 448 - } 449 - commandLine("env", "pip", "install", "-e", ".") 450 - } 451 - val hexdoc by tasks.register<Hexdoc>("hexdoc") { 452 - dependsOn(syncPip, "processWithDatagen") 453 - docsPrefix = file("_site/src/docs") 454 - cleanPrefix() 455 - hexdocArgs = listOf("build", "--branch", p.change_id) 456 - if (release) hexdocArgs += "--release" 457 - processOutput() 458 - } 459 - val mergeHexdoc by tasks.register<Hexdoc>("mergeHexdoc") { 460 - dependsOn(hexdoc) 461 - docsPrefix = file("_site/dst/docs") 462 - hexdocArgs = listOf("merge") 463 - if (release) hexdocArgs += "--release" 464 - processOutput() 465 - } 466 - val wheel by tasks.register<Exec>("wheel") { 467 - dependsOn(hexdoc) 468 - doFirst { file("dist").deleteRecursively() } 469 - commandLine("env", "uv", "build") 470 - outputs.file(wheelPath) 471 - } 472 - 473 - tasks.register<Exec>("publishToPypi") { 474 - dependsOn("wheel") 475 - commandLine("env", "uv", "publish") 476 - } 477 - tasks.named("publish") { 478 - dependsOn("publishToPypi") 479 - } 480 - val processWheel by tasks.register<Zip>("processWheel") { 481 - dependsOn(wheel) 482 - from(zipTree(wheelPath)) 483 - eachFile { 484 - if (!name.endsWith(".png")) { 485 - filter(::includeContent) 486 - filter { it.replace(contentRoot, "https://codeberg.org/PoolloverNathan/hexic/raw/commit/${p.commit_id}") } 487 - } 488 - } 489 - destinationDirectory = mergeHexdoc.docsRoot 490 - if (release) { 491 - archiveFileName = wheelPath.name 492 - } else { 493 - archiveFileName = "hexdoc_hexic-${(version as String).split('+')[0]}.$py_version-${p.commit_id}-py3-none-any.whl" 494 - } 495 - doLast { 496 - println(archivePath) 497 - } 498 - } 499 - 500 - tasks.withType<Jar> { 501 - dependsOn("runDatagen") 502 - } 503 - 504 - tasks.register("docs") { 505 - dependsOn(mergeHexdoc, processWheel) 506 - doLast { 507 - println("https://hexic.pool.net.eu.org/${mergeHexdoc.docsRoot.relativeTo(mergeHexdoc.docsPrefix)}/en_us") 508 - } 509 - } 510 - 511 - // configure the maven publication 512 - allprojects { 513 - plugins.withType<MavenPublishPlugin> { 514 - publishing { 515 - publications { 516 - create<MavenPublication>("mavenJava") { 517 - artifactId = project.property("modid") as String 518 - from(components["java"]) 177 + repositories { 178 + fun exactRepo(url: String, vararg groups: String, recursive: Boolean = true) { 179 + exclusiveContent { 180 + forRepository { 181 + maven(url) 519 182 } 520 - } 521 - 522 - // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. 523 - repositories { 524 - maven("https://pool.net.eu.org/") { 525 - name = "poolMaven" 526 - credentials(PasswordCredentials::class.java) 183 + filter { 184 + for (group in groups) { 185 + if (recursive) { 186 + includeGroupAndSubgroups(group) 187 + } else { 188 + includeGroup(group) 189 + } 190 + } 527 191 } 528 192 } 529 193 } 194 + 195 + mavenCentral() 196 + exactRepo("https://api.modrinth.com/maven", 197 + "maven.modrinth") 198 + exactRepo("https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/", 199 + "com.eliotlash.mclib", 200 + "software.bernie.geckolib") 201 + exactRepo("https://jitpack.io/", 202 + "com.github.Chocohead", 203 + "com.github.LlamaLad7", 204 + "com.github.Virtuoel", 205 + "com.github.mattidragon") 206 + exactRepo("https://maven.blamejared.com/", 207 + "at.petra-k", 208 + "com.samsthenerd.inline", 209 + "gay.object", 210 + "miyucomics.hexpose", 211 + "net.darkhax.openloader", 212 + "vazkii.patchouli") 213 + exactRepo("https://maven.hexxy.media/", 214 + "io.github.tropheusj", 215 + "ram.talia") 216 + exactRepo("https://maven.jamieswhiteshirt.com/libs-release/", 217 + "com.jamieswhiteshirt") 218 + exactRepo("https://maven.kosmx.dev/", 219 + "dev.kosmx") 220 + exactRepo("https://maven.ladysnake.org/releases/", 221 + "dev.onyxstudios") 222 + exactRepo("https://pool.net.eu.org/", 223 + "dev.kineticcat.hexportation", 224 + "miyucomics.hexcellular", 225 + "miyucomics.hexical", 226 + "miyucomics.overevaluate", 227 + "org.eu.net.pool", 228 + "poollovernathan") 229 + exactRepo("https://maven.shedaniel.me/", 230 + "dev.architectury", 231 + "me.shedaniel") 232 + exactRepo("https://maven.terraformersmc.com/", 233 + "com.terraformersmc", 234 + "dev.emi") 235 + exactRepo("https://repo.sleeping.town/", 236 + "com.unascribed") 237 + exactRepo("https://masa.dy.fi/maven/", 238 + "carpet") 239 + exactRepo("https://maven.nucleoid.xyz/", 240 + "xyz.nucleoid") 530 241 } 531 - } 242 + }
-242
config/build.gradle.kts
··· 1 - import de.undercouch.gradle.tasks.download.Download 2 - import groovy.json.JsonSlurper 3 - import org.eu.net.pool.mc_plugin.Environment 4 - import org.gradle.api.publish.maven.internal.publication.MavenPomInternal 5 - import org.gradle.kotlin.dsl.support.uppercaseFirstChar 6 - import kotlin.io.path.exists 7 - import kotlin.io.path.readText 8 - import groovy.json.JsonOutput 9 - import `java.nio`.file.Files; 10 - import kotlin.io.path.deleteIfExists 11 - import util.P 12 - import net.fabricmc.loom.api.* 13 - 14 - buildscript { 15 - repositories { 16 - mavenCentral() 17 - maven { url = uri("https://maven.fabricmc.net") } 18 - } 19 - dependencies { 20 - classpath("net.fabricmc:fabric-loom:1.13-SNAPSHOT") 21 - } 22 - } 23 - 24 - plugins { 25 - id("scala") 26 - kotlin("jvm") version "2.2.0" 27 - id("maven-publish") 28 - id("idea") 29 - id("de.undercouch.download") version "5.6.0" 30 - id("org.eu.net.pool.mc-plugin") version "0.1.1" 31 - } 32 - 33 - allprojects { 34 - try { 35 - tasks.named("downloadRenderDoc") { 36 - setProperty("output", file("$buildDir/renderdoc_1.37.tar.gz")) 37 - } 38 - 39 - tasks.named("extractRenderDoc") { 40 - enabled = false 41 - } 42 - 43 - val erd by tasks.register<Sync>("myExtractRenderDoc") { 44 - dependsOn("downloadRenderDoc") 45 - from(tarTree(resources.gzip("$buildDir/renderdoc_1.37.tar.gz"))) 46 - into("$buildDir/renderdoc") 47 - } 48 - 49 - tasks.named("runClientRenderDoc") { 50 - dependsOn(erd) 51 - } 52 - } catch (ignored: UnknownTaskException) {} 53 - } 54 - 55 - val release: Boolean = !System.getenv("release").isNullOrEmpty() 56 - ext["release"] = release 57 - allprojects { 58 - val p = P(project) 59 - val modid: String by project.properties 60 - ext.set("p", p) 61 - version = project.property("mod_version") as String 62 - if (!release) version = "${version}+${p.commit_id.take(7)}" 63 - group = rootProject.property("maven_group") as String 64 - println("configuring $modid ($project) v$version @ $group") 65 - plugins.withId("java") { 66 - base { 67 - archivesName.set(modid) 68 - } 69 - java { 70 - toolchain.languageVersion = JavaLanguageVersion.of(17) 71 - withSourcesJar() 72 - } 73 - 74 - tasks.named<Jar>("jar").configure { 75 - from("LICENSE") { 76 - rename { "LICENSE_$modid" } 77 - } 78 - duplicatesStrategy = DuplicatesStrategy.WARN 79 - } 80 - } 81 - 82 - plugins.withId("scala") { 83 - scala { 84 - scalaVersion = "3.7.1" 85 - } 86 - } 87 - 88 - plugins.withId("fabric-loom") { 89 - extensions.getByType<LoomGradleExtensionAPI>().apply { 90 - splitEnvironmentSourceSets() 91 - runs["client"].programArgs += listOf("--username", "Player", "--uuid", "9e1b34e3-8031-4623-8918-eb7914ab564b") 92 - 93 - mods { 94 - register(modid) { 95 - sourceSet("main") 96 - sourceSet("client") 97 - } 98 - } 99 - 100 - mixin.useLegacyMixinAp = false 101 - } 102 - 103 - extensions.getByType<net.fabricmc.loom.api.fabricapi.FabricApiExtension>().apply { 104 - configureTests { 105 - modId = modid 106 - eula = true 107 - } 108 - } 109 - 110 - dependencies { 111 - "modLocalRuntime"("maven.modrinth:ears:1.4.7+fabric-1.20") 112 - } 113 - 114 - if (project != rootProject) { 115 - tasks.named("runClient") { 116 - doFirst { 117 - val rootOptions = rootProject.file("run/options.txt").toPath() 118 - val options = file("run/options.txt").toPath() 119 - options.deleteIfExists() 120 - Files.createSymbolicLink(options, rootOptions) 121 - } 122 - } 123 - } 124 - 125 - tasks.processResources { 126 - val bookRoot = destinationDir.resolve("assets/hexcasting/patchouli_books/thehexbook") 127 - val langRoot = destinationDir.resolve("assets/$modid/lang") 128 - 129 - doLast { 130 - bookRoot.list()?.forEach { lang -> 131 - val langFile = langRoot.resolve("$lang.json") 132 - if (langFile.exists()) { 133 - val entries = JsonSlurper().parseText(langFile.readText()) as MutableMap<String, String> 134 - var n = 0 135 - for (bookFile in bookRoot.resolve(lang).walkTopDown()) { 136 - if (bookFile.isFile) { 137 - val json = JsonSlurper().parseText(bookFile.readText()) 138 - if (json !is Map<*, *>) continue 139 - json as MutableMap<Any, Any> 140 - val name = json["name"] 141 - if (name is String) { 142 - entries["text.$modid.book.${n}"] = name 143 - json["name"] = "text.$modid.book.${n}" 144 - n++ 145 - } 146 - val pages = json["pages"] 147 - if (pages !is MutableList<*>) continue 148 - pages as MutableList<Any> 149 - for (i in pages.indices) { 150 - val page = pages[i] 151 - if (page is String) { 152 - entries["text.$modid.book.${n}"] = page 153 - pages[i] = "text.$modid.book.${n}" 154 - n++ 155 - } else if (page is MutableMap<*, *>) { 156 - page as MutableMap<Any, Any> 157 - for (key in listOf("text", "title", "header")) { 158 - val text = page[key] 159 - if (text != null && text is String) { 160 - entries["text.$modid.book.${n}"] = text 161 - page[key] = "text.$modid.book.${n}" 162 - n++ 163 - } 164 - } 165 - } 166 - } 167 - bookFile.writeText(JsonOutput.toJson(json)) 168 - } 169 - } 170 - langFile.writeText(JsonOutput.toJson(entries)) 171 - } 172 - } 173 - } 174 - } 175 - } 176 - 177 - repositories { 178 - fun exactRepo(url: String, vararg groups: String, recursive: Boolean = true) { 179 - exclusiveContent { 180 - forRepository { 181 - maven(url) 182 - } 183 - filter { 184 - for (group in groups) { 185 - if (recursive) { 186 - includeGroupAndSubgroups(group) 187 - } else { 188 - includeGroup(group) 189 - } 190 - } 191 - } 192 - } 193 - } 194 - 195 - mavenCentral() 196 - exactRepo("https://api.modrinth.com/maven", 197 - "maven.modrinth") 198 - exactRepo("https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/", 199 - "com.eliotlash.mclib", 200 - "software.bernie.geckolib") 201 - exactRepo("https://jitpack.io/", 202 - "com.github.Chocohead", 203 - "com.github.LlamaLad7", 204 - "com.github.Virtuoel", 205 - "com.github.mattidragon") 206 - exactRepo("https://maven.blamejared.com/", 207 - "at.petra-k", 208 - "com.samsthenerd.inline", 209 - "gay.object", 210 - "miyucomics.hexpose", 211 - "net.darkhax.openloader", 212 - "vazkii.patchouli") 213 - exactRepo("https://maven.hexxy.media/", 214 - "io.github.tropheusj", 215 - "ram.talia") 216 - exactRepo("https://maven.jamieswhiteshirt.com/libs-release/", 217 - "com.jamieswhiteshirt") 218 - exactRepo("https://maven.kosmx.dev/", 219 - "dev.kosmx") 220 - exactRepo("https://maven.ladysnake.org/releases/", 221 - "dev.onyxstudios") 222 - exactRepo("https://pool.net.eu.org/", 223 - "dev.kineticcat.hexportation", 224 - "miyucomics.hexcellular", 225 - "miyucomics.hexical", 226 - "miyucomics.overevaluate", 227 - "org.eu.net.pool", 228 - "poollovernathan") 229 - exactRepo("https://maven.shedaniel.me/", 230 - "dev.architectury", 231 - "me.shedaniel") 232 - exactRepo("https://maven.terraformersmc.com/", 233 - "com.terraformersmc", 234 - "dev.emi") 235 - exactRepo("https://repo.sleeping.town/", 236 - "com.unascribed") 237 - exactRepo("https://masa.dy.fi/maven/", 238 - "carpet") 239 - exactRepo("https://maven.nucleoid.xyz/", 240 - "xyz.nucleoid") 241 - } 242 - }
libs/oneironaut-fabric-1.20.1-0.5.0-476cee2.jar

This is a binary file and will not be displayed.

macros.m4 project/hexic/macros.m4
+520
project/hexic/build.gradle.kts
··· 1 + import de.undercouch.gradle.tasks.download.Download 2 + import groovy.json.JsonSlurper 3 + import org.eu.net.pool.mc_plugin.Environment 4 + import org.gradle.api.publish.maven.internal.publication.MavenPomInternal 5 + import org.gradle.kotlin.dsl.support.uppercaseFirstChar 6 + import kotlin.io.path.exists 7 + import kotlin.io.path.readText 8 + import groovy.json.JsonOutput 9 + import `java.nio`.file.Files; 10 + import kotlin.io.path.deleteIfExists 11 + import util.P 12 + 13 + plugins { 14 + id("fabric-loom") 15 + id("scala") 16 + kotlin("jvm") version "2.2.0" 17 + id("maven-publish") 18 + id("de.undercouch.download") version "5.6.0" 19 + id("org.eu.net.pool.mc-plugin") version "0.1.1" 20 + } 21 + 22 + val p: P by ext 23 + val release: Boolean by ext 24 + val py_version: String by project.properties 25 + val wheelPath = file("dist/hexdoc_hexic-$version.$py_version-py3-none-any.whl") 26 + 27 + fabricApi { 28 + configureDataGeneration { 29 + modId = "hexic" 30 + client = true 31 + } 32 + } 33 + 34 + //tasks.register<Download>("fetchHexxy4") { 35 + // src("https://github.com/chloetax/hexxy4/archive/@.tar.gz") 36 + // dest("$buildDir/hexxy4.tgz") 37 + // overwrite(true) 38 + //} 39 + // 40 + //tasks.register<Sync>("hexxy4") { 41 + // from(tarTree("$buildDir/hexxy4.tgz")) 42 + // into("$buildDir/hexxy4") 43 + //} 44 + 45 + fun download(url: String, name: String = file(url).name): Download { 46 + val outPath = file("$buildDir/$name") 47 + return tasks.register<Download>("download_${file(name).nameWithoutExtension}") { 48 + src(url) 49 + dest(outPath) 50 + overwrite(false) 51 + }.get() 52 + } 53 + 54 + val cloth = download("https://raw.githubusercontent.com/malcolmriley/unused-textures/master/items/part_textile_cloth.png") 55 + 56 + run { 57 + val buildKubo by tasks.register("kubo") 58 + val outRoot = file("$buildDir/kubo") 59 + fun kuboTask(os: String, arch: String, external: Boolean = false, parent: Task = buildKubo) { 60 + val task = tasks.register<Exec>("kubo${os.uppercaseFirstChar()}${arch.uppercaseFirstChar()}") { 61 + inputs.dir("vendor/kubo") 62 + workingDir = file("vendor/kubo") 63 + doFirst { 64 + if (!outRoot.exists()) { 65 + check(outRoot.mkdirs()) 66 + } 67 + } 68 + if (!external) environment("CGO_ENABLED", "0") 69 + environment("GOOS", os) 70 + environment("GOARCH", arch) 71 + val out = outRoot.resolve("ipfs.$os.$arch.exe") 72 + commandLine("go", "build", "-o", out.absoluteFile, "github.com/ipfs/kubo/cmd/ipfs") 73 + outputs.file(out) 74 + } 75 + parent.dependsOn(task) 76 + } 77 + fun kuboTasks(os: String, vararg arches: String, external: Boolean = false) { 78 + val archTask by tasks.register("kubo${os.uppercaseFirstChar()}") 79 + for (arch in arches) { 80 + kuboTask(os, arch, external=external, parent=archTask) 81 + } 82 + buildKubo.dependsOn(archTask) 83 + } 84 + kuboTasks("linux", "386", "amd64", "arm", "arm64", "mips", "mips64", "mips64le", "mipsle", "ppc64", "ppc64le", "riscv64", "s390x") 85 + kuboTasks("windows", "386", "amd64", "arm", "arm64") 86 + kuboTasks("darwin", "amd64") 87 + 88 + tasks.register("cleanKubo") { 89 + onlyIf { outRoot.exists() } 90 + doLast { 91 + if (outRoot.exists()) { 92 + check(outRoot.deleteRecursively()) 93 + } 94 + } 95 + } 96 + 97 + tasks.processResources { 98 + // dependsOn(buildKubo) 99 + // inputs.dir("$buildDir/kubo") 100 + // from(outRoot) { 101 + // into("vendor/hexic/") 102 + // } 103 + } 104 + } 105 + 106 + sourceSets { 107 + main { 108 + java { 109 + srcDirs.clear(); 110 + } 111 + scala { 112 + srcDirs += file("src/main/java"); 113 + } 114 + } 115 + } 116 + 117 + val modDepends: Configuration by configurations.creating { 118 + isTransitive = false 119 + isCanBeResolved = true 120 + } 121 + val modSuggests: Configuration by configurations.creating { 122 + isTransitive = false 123 + isCanBeResolved = true 124 + } 125 + val modCompatibility: Configuration by configurations.creating 126 + 127 + dependencies { 128 + // To change the versions see the gradle.properties file 129 + minecraft("com.mojang:minecraft:${project.property("minecraft_version")}") 130 + mappings("net.fabricmc:yarn:${project.property("yarn_mappings")}:v2") 131 + modImplementation("net.fabricmc:fabric-loader:${project.property("loader_version")}") 132 + modImplementation("net.fabricmc:fabric-language-kotlin:1.13.4+kotlin.2.2.0") 133 + 134 + fun compat(with: String) { 135 + modSuggests(with) 136 + modCompileOnly(with) 137 + modLocalRuntime(with) 138 + } 139 + 140 + val minecraft_version = "1.20.1" 141 + modDepends(implementation(annotationProcessor("io.github.llamalad7:mixinextras-fabric:0.5.0")!!)!!) 142 + implementation(project(":util", "namedElements")) 143 + modImplementation("io.github.tropheusj:serialization-hooks:0.4.99999") 144 + modImplementation("poollovernathan.fabric:mod-tools:1.1.5+1.20.1") 145 + modImplementation("at.petra-k.hexcasting:hexcasting-fabric-$minecraft_version:0.11.3") 146 + modImplementation("com.samsthenerd.inline:inline-fabric:$minecraft_version-1.0.1") 147 + modDepends(include(implementation("com.github.Chocohead:Fabric-ASM:v2.3")!!)!!) 148 + modCompileOnly("dev.kineticcat.hexportation:hexportation-fabric-1.20.1-fabric-fabric:0.0.3") 149 + modCompileOnly("carpet:fabric-carpet:1.20-1.+") 150 + modLocalRuntime("maven.modrinth:lithium:mc1.20.1-0.11.4-fabric") 151 + // modRuntimeOnly("carpet:fabric-carpet:1.20-1.+") 152 + compat("gay.object.ioticblocks:ioticblocks-fabric:1.0.2+1.20.1") 153 + modImplementation(files("./libs/oneironaut-fabric-1.20.1-0.5.0-476cee2.jar")) 154 + compat("maven.modrinth:hexcassettes:1.1.4") 155 + modLocalRuntime("maven.modrinth:trinkets:3.7.2") 156 + modDepends(modImplementation("maven.modrinth:spasm:0.2.2")!!) 157 + // modImplementation("maven.modrinth:slate-works:1.0.5") 158 + compat("miyucomics.hexical:hexical:2.0.0+a3c47ad9") 159 + compat("miyucomics.overevaluate:overevaluate:main-SNAPSHOT") 160 + modDepends(modImplementation("ram.talia.moreiotas:moreiotas-fabric-$minecraft_version:0.1.1") { exclude(module = "serialization-hooks") }) 161 + modDepends(modImplementation("ram.talia.hexal:hexal-fabric-1.20.1:0.3.0") { exclude(module = "serialization-hooks") }) 162 + modDepends(modImplementation("miyucomics.hexcellular:hexcellular:1.1.0")!!) 163 + modDepends(modImplementation("maven.modrinth:jsonpatcher:1.0.0-beta.4+mc.1.20.1")!!) 164 + implementation("com.github.mattidragon:JsonPatcherLang:v1.0.0-beta.3") // trans maven.modrinth:jsonpatcher 165 + modImplementation("com.github.mattidragon:ConfigToolkit:v1.0.0") // trans maven.modrinth:jsonpatcher 166 + modDepends(modImplementation("miyucomics.hexpose:hexpose:1.0.0")!!) 167 + include(modApi("xyz.nucleoid:fantasy:0.4.11+1.20-rc1")!!) 168 + // modImplementation("miyucomics:hexpose:1.0.0") 169 + // modImplementation(files("hexical-2.0.0.jar")) 170 + include(implementation("net.bytebuddy:byte-buddy:1.17.7")!!) 171 + include(implementation("net.bytebuddy:byte-buddy-agent:1.17.7")!!) 172 + 173 + modRuntimeOnly("gay.object.hexdebug:hexdebug-fabric:0.5.0+1.20.1-SNAPSHOT") 174 + } 175 + 176 + val colors = mapOf( 177 + "white" to 16383998, 178 + "orange" to 16351261, 179 + "magenta" to 13061821, 180 + "light_blue" to 3847130, 181 + "yellow" to 16701501, 182 + "lime" to 8439583, 183 + "pink" to 15961002, 184 + "gray" to 4673362, 185 + "light_gray" to 10329495, 186 + "cyan" to 1481884, 187 + "purple" to 8991416, 188 + "blue" to 3949738, 189 + "brown" to 8606770, 190 + "green" to 6192150, 191 + "red" to 11546150, 192 + "black" to 1908001, 193 + ) 194 + 195 + val downloadedBags = colors.mapValues { download("https://raw.githubusercontent.com/malcolmriley/unused-textures/master/items/tool_pouch_${it.key}.png") } 196 + 197 + tasks.processResources { 198 + inputs.property("version", project.version) 199 + inputs.property("minecraft_version", project.property("minecraft_version")) 200 + inputs.property("loader_version", project.property("loader_version")) 201 + filteringCharset = "UTF-8" 202 + 203 + preprocessor { 204 + fabricMod("hexic", version as String) { 205 + name = "Hexic" 206 + description = "Miscellaneous neat features and QoL patterns for Hex Casting." 207 + license = "LGPL-3.0" 208 + icon = "assets/hexic/icon.png" 209 + 210 + author("PoolloverNathan") { 211 + put("discord", "https://discord.com/users/402104961812660226") 212 + } 213 + 214 + for (p in modDepends.resolve()) { 215 + val root = 216 + if (p.isDirectory) p.toPath() 217 + else if (p.name.endsWith(".jar")) `java.nio.file`.FileSystems.newFileSystem(p.toPath()).rootDirectories.single() 218 + else continue 219 + val fmj = root.resolve("fabric.mod.json") 220 + if (fmj.exists()) { 221 + val json = JsonSlurper().parse(fmj) as Map<String, Any> 222 + depends(json["id"].toString(), ">=${json["version"]}") 223 + } else { 224 + println("Attempt to add dependency '$p' to modDepends, which is not a Fabric mod.") 225 + } 226 + } 227 + 228 + conflicts("valkyrienskies", "*") // need to figure out how to create dimensions without causing a crash 229 + 230 + entrypoint("org.eu.net.pool.hexic.main\$package::init") 231 + entrypoint("org.eu.net.pool.hexic.client.main\$package::init", Environment.Client) 232 + entrypoint("fabric-datagen", "org.eu.net.pool.hexic.client.main\$package::datagen") 233 + entrypoint("mm:early_risers", "org.eu.net.pool.hexic.early_riser\$package::warCrimes") 234 + entrypoint("cardinal-components", "org.eu.net.pool.hexic.ComponentInit") 235 + mixins("hexic.mixins.json") 236 + mixins("hexic.client.mixins.json", Environment.Client) 237 + custom { 238 + array("cardinal-components") { 239 + put("hexic:player_wisp") 240 + put("hexic:server_info") 241 + } 242 + } 243 + } 244 + } 245 + 246 + dependsOn(cloth) 247 + dependsOn(*downloadedBags.values.toTypedArray()) 248 + val itemsRoot = destinationDir.resolve("assets/hexic/textures/item") 249 + doLast { 250 + for ((name, color) in colors) { 251 + exec { 252 + commandLine("env", "magick", cloth.dest, "-channel", "red,green,blue", "-fx", "u*#${color.toString(16)}", itemsRoot.resolve("${name}_mediaweave.png")) 253 + } 254 + val bag = downloadedBags[name]!!.dest 255 + exec { 256 + commandLine("env", "magick", bag, "-write", itemsRoot.resolve("large_${name}_bundle.png"), "-sample", "14x14", "-background", "transparent", "-extent", "16x16-1-2", itemsRoot.resolve("small_${name}_bundle.png")) 257 + } 258 + } 259 + exec { 260 + commandLine("env", "magick", "wizard:", itemsRoot.resolve("wizard.png")) 261 + } 262 + exec { 263 + commandLine("env", "magick", "null:", itemsRoot.resolve("no.png")) 264 + } 265 + exec { 266 + commandLine("env", "magick", 267 + "https://raw.githubusercontent.com/malcolmriley/unused-textures/master/blocks/overlay_rune_0.png", 268 + "(", 269 + "-clone", "0", 270 + "-alpha", "extract", 271 + "-type", "bilevel", 272 + "-define", "connected-components:mean-color=true", 273 + "-define", "connected-components:area-threshold=26", 274 + "-connected-components", "4", 275 + ")", 276 + "-alpha", "off", 277 + "-compose", "copy_opacity", 278 + "-composite", 279 + "-fx", "u*2", 280 + itemsRoot.resolve("stringworm.miff") 281 + ) 282 + } 283 + for ((name, expr) in mapOf( 284 + "media" to "u*#74b3f2", 285 + "hex" to "u*#b38ef3", 286 + "action" to "u*#fc77be", 287 + "thing" to "u*#8d6acc", 288 + "pure" to "u", 289 + )) { 290 + exec { 291 + commandLine("env", "magick", itemsRoot.resolve("stringworm.miff"), "-channel", "rgb", "-fx", expr, "$itemsRoot/stringworm_$name.png") 292 + } 293 + } 294 + // people will hate this 295 + for (i in 0..31) { 296 + itemsRoot.resolve("stringworm_tinted_$i.png").outputStream().use { 297 + exec { 298 + commandLine("env", "magick", itemsRoot.resolve("stringworm.miff"), "-fx", "i+j == $i ? u : Transparent", "png:-") 299 + standardOutput = it 300 + } 301 + } 302 + } 303 + file("$itemsRoot/../block").mkdir() 304 + exec { 305 + commandLine("env", "magick", "xc:#ffffff[16x16]", itemsRoot.resolveSibling("block/border.png")) 306 + } 307 + //file("$itemsRoot/stringworm.miff").delete() 308 + exec { 309 + commandLine("env", "magick", "https://www.masterbuilt.com/cdn/shop/articles/162_20-_20Voodoo_20Baked_20Beans.jpg", "-sample", "256x256", itemsRoot.resolve("beans.png")) 310 + } 311 + } 312 + 313 + eachFile { 314 + if (name.endsWith(".ase")) { 315 + exec { 316 + if (name.endsWith("_*.ase")) { 317 + commandLine("env", "aseprite", "-b", "--split-layers", file, "--save-as", "$destinationDir/${path.replace("_*.ase", "")}_{layer}.png") 318 + } else { 319 + commandLine("env", "aseprite", "-b", file, "--save-as", "$destinationDir/${path.replace(".ase", "")}.png") 320 + } 321 + } 322 + exclude() 323 + } 324 + if (name.endsWith(".ase.split-layers")) exclude() 325 + } 326 + } 327 + 328 + allprojects { 329 + tasks.withType<AbstractArchiveTask> { 330 + isPreserveFileTimestamps = false 331 + isReproducibleFileOrder = true 332 + } 333 + 334 + tasks.withType<JavaCompile>().configureEach { 335 + // ensure that the encoding is set to UTF-8, no matter what the system default is 336 + // this fixes some edge cases with special characters not displaying correctly 337 + // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html 338 + // If Javadoc is generated, this must be specified in that task too. 339 + options.encoding = "UTF-8" 340 + options.release.set(17) 341 + } 342 + 343 + tasks.withType<ScalaCompile>().configureEach { 344 + scalaCompileOptions.additionalParameters.addAll(listOf("-explain-cyclic", "-Ydebug-cyclic", "-experimental", "-feature", "-Ycc-debug")) 345 + } 346 + } 347 + 348 + val wheelFiles by lazy { 349 + fileTree("_site/dst/docs/v") { include("**/*.whl") }.files 350 + } 351 + 352 + val contentRoot = P.contentRoot 353 + 354 + val wheelFileHashes by lazy { 355 + wheelFiles.map { it.name to p.getStdout { commandLine("git", "hash-object", "-w", it) } } 356 + } 357 + val wheelTree by lazy { 358 + p.getStdout { 359 + commandLine("git", "mktree") 360 + standardInput = `java.io`.ByteArrayInputStream(wheelFileHashes.joinToString("") { (k, v) -> "100644 blob $v\t$k\n" }.toByteArray()) 361 + } 362 + } 363 + val wheelCommit by lazy { 364 + p.getStdout { 365 + commandLine("git", "commit-tree", wheelTree) 366 + standardInput = `java.io`.ByteArrayInputStream(byteArrayOf()) 367 + } 368 + } 369 + tasks.register<Exec>("pushWheels") { 370 + commandLine("git", "push", "origin", "+$wheelCommit:refs/heads/wheels") 371 + } 372 + 373 + tasks.named("clean") { 374 + doLast { 375 + file("src/main/generated").deleteRecursively() 376 + file("dist").deleteRecursively() 377 + } 378 + } 379 + 380 + open class Hexdoc: Exec() { 381 + init { 382 + environment["GITHUB_PAGES_URL"] = "https://hexic.pool.net.eu.org/" 383 + environment["GITHUB_REPOSITORY"] = "https://codeberg.org/poollovernathan/hexic" 384 + environment["DEBUG_GITHUBUSERCONTENT"] = P.contentRoot 385 + environment["GITHUB_SHA"] = (project.ext["p"] as P).commit_id 386 + } 387 + @Input 388 + var hexdocArgs = listOf<String>() 389 + set(value) { 390 + field = value 391 + commandLine = listOf("env", "hexdoc") + hexdocArgs 392 + } 393 + 394 + @Internal 395 + var docsPrefix = project.file(".") 396 + } 397 + 398 + tasks.register<GradleBuild>("processWithDatagen") { 399 + dependsOn("runDatagen") 400 + tasks = listOf("processResources") 401 + } 402 + 403 + tasks.named("runDatagen") { 404 + doLast { 405 + 406 + } 407 + } 408 + 409 + val Hexdoc.docsRoot get() = file("$docsPrefix/v/${if (release) "$version/$py_version" else "latest/${p.change_id}"}") 410 + fun Hexdoc.cleanPrefix() { 411 + doFirst { 412 + docsPrefix.deleteRecursively() 413 + } 414 + } 415 + fun Hexdoc.processOutput() { 416 + doLast { 417 + for (f in docsRoot.walk()) { 418 + if (f.isFile && !f.name.endsWith(".png")) { 419 + f.writeText(includeContent(f.readText())) 420 + } 421 + } 422 + } 423 + } 424 + fun includeContent(text: String) = 425 + text.replace(Regex("$contentRoot/*([\\w/.-]+?\\.png)")) { 426 + val path = it.groups[1]!!.value.replace(contentRoot, "").trimStart('/') 427 + val b64 = `java.util`.Base64.getEncoder().encodeToString(file(path).readBytes()) 428 + println("\t$it\t$path") 429 + "data:image/png;base64,$b64" 430 + } 431 + 432 + val syncPip by tasks.register<Exec>("syncPip") { 433 + doFirst { 434 + file("doc/src/hexdoc_hexic/__version__.py").writeText(""" 435 + PY_VERSION = "$py_version" 436 + """.trimIndent()) 437 + } 438 + commandLine("env", "pip", "install", "-e", ".") 439 + } 440 + val hexdoc by tasks.register<Hexdoc>("hexdoc") { 441 + dependsOn(syncPip, "processWithDatagen") 442 + docsPrefix = file("_site/src/docs") 443 + cleanPrefix() 444 + hexdocArgs = listOf("build", "--branch", p.change_id) 445 + if (release) hexdocArgs += "--release" 446 + processOutput() 447 + } 448 + val mergeHexdoc by tasks.register<Hexdoc>("mergeHexdoc") { 449 + dependsOn(hexdoc) 450 + docsPrefix = file("_site/dst/docs") 451 + hexdocArgs = listOf("merge") 452 + if (release) hexdocArgs += "--release" 453 + processOutput() 454 + } 455 + val wheel by tasks.register<Exec>("wheel") { 456 + dependsOn(hexdoc) 457 + doFirst { file("dist").deleteRecursively() } 458 + commandLine("env", "uv", "build") 459 + outputs.file(wheelPath) 460 + } 461 + 462 + tasks.register<Exec>("publishToPypi") { 463 + dependsOn("wheel") 464 + commandLine("env", "uv", "publish") 465 + } 466 + tasks.named("publish") { 467 + dependsOn("publishToPypi") 468 + } 469 + val processWheel by tasks.register<Zip>("processWheel") { 470 + dependsOn(wheel) 471 + from(zipTree(wheelPath)) 472 + eachFile { 473 + if (!name.endsWith(".png")) { 474 + filter(::includeContent) 475 + filter { it.replace(contentRoot, "https://codeberg.org/PoolloverNathan/hexic/raw/commit/${p.commit_id}") } 476 + } 477 + } 478 + destinationDirectory = mergeHexdoc.docsRoot 479 + if (release) { 480 + archiveFileName = wheelPath.name 481 + } else { 482 + archiveFileName = "hexdoc_hexic-${(version as String).split('+')[0]}.$py_version-${p.commit_id}-py3-none-any.whl" 483 + } 484 + doLast { 485 + println(archivePath) 486 + } 487 + } 488 + 489 + tasks.withType<Jar> { 490 + dependsOn("runDatagen") 491 + } 492 + 493 + tasks.register("docs") { 494 + dependsOn(mergeHexdoc, processWheel) 495 + doLast { 496 + println("https://hexic.pool.net.eu.org/${mergeHexdoc.docsRoot.relativeTo(mergeHexdoc.docsPrefix)}/en_us") 497 + } 498 + } 499 + 500 + // configure the maven publication 501 + allprojects { 502 + plugins.withType<MavenPublishPlugin> { 503 + publishing { 504 + publications { 505 + create<MavenPublication>("mavenJava") { 506 + artifactId = project.property("modid") as String 507 + from(components["java"]) 508 + } 509 + } 510 + 511 + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. 512 + repositories { 513 + maven("https://pool.net.eu.org/") { 514 + name = "poolMaven" 515 + credentials(PasswordCredentials::class.java) 516 + } 517 + } 518 + } 519 + } 520 + }
+5 -5
settings.gradle.kts
··· 18 18 } 19 19 } 20 20 21 - include("util", "iotaworks", "hexxytounge", "hexxychests") 22 - project(":iotaworks").projectDir = file("project/iotaworks") 23 - project(":hexxytounge").projectDir = file("project/hexxytounge") 24 - project(":hexxychests").projectDir = file("project/hexxychests") 25 - project(":").projectDir = file("config") // 2026-01-02 pool: do not ever do this 21 + include("util") 22 + for (mod in listOf("hexic", "iotaworks", "hexxytounge", "hexxychests")) { 23 + include(mod) 24 + project(":$mod").projectDir = file("project/$mod") 25 + }
src/client/resources/hexic.client.mixins.json project/hexic/src/client/resources/hexic.client.mixins.json
src/client/scala/org/eu/net/pool/hexic/client/main.scala project/hexic/src/client/scala/org/eu/net/pool/hexic/client/main.scala
src/client/scala/org/eu/net/pool/hexic/mixin/client/ChatInputSuggestorMixin.java project/hexic/src/client/scala/org/eu/net/pool/hexic/mixin/client/ChatInputSuggestorMixin.java
src/client/scala/org/eu/net/pool/hexic/mixin/client/ChatScreenMixin.java project/hexic/src/client/scala/org/eu/net/pool/hexic/mixin/client/ChatScreenMixin.java
src/client/scala/org/eu/net/pool/hexic/mixin/client/InventoryScreenMixin.java project/hexic/src/client/scala/org/eu/net/pool/hexic/mixin/client/InventoryScreenMixin.java
src/client/scala/org/eu/net/pool/hexic/mixin/client/SimpleDefaultedRegistryMixin.java project/hexic/src/client/scala/org/eu/net/pool/hexic/mixin/client/SimpleDefaultedRegistryMixin.java
src/main/java/com/github/KdotJPG/Simplex.java project/hexic/src/main/java/com/github/KdotJPG/Simplex.java
src/main/java/org/eu/net/pool/hexic/IotaDuck.java project/hexic/src/main/java/org/eu/net/pool/hexic/IotaDuck.java
src/main/java/org/eu/net/pool/hexic/IotaTypeHint.java project/hexic/src/main/java/org/eu/net/pool/hexic/IotaTypeHint.java
src/main/java/org/eu/net/pool/hexic/ducks/SimpleRegistryDuck.java project/hexic/src/main/java/org/eu/net/pool/hexic/ducks/SimpleRegistryDuck.java
src/main/kotlin/org/eu/net/pool/hexic/Hexic.kt project/hexic/src/main/kotlin/org/eu/net/pool/hexic/Hexic.kt
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/lists2.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/media_bundle.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/media_bundle.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/mediaweave.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/mediaweave.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/nbt.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/nbt.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/no.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/no.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/pen.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/pen.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/shard.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/shard.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/staffcast.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/staffcast.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/stringworms.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/en_us/entries/addon/hexic/stringworms.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/lists2.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/media_bundle.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/media_bundle.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/mediaweave.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/mediaweave.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/nbt.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/nbt.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/no.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/no.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/pen.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/pen.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/shard.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/shard.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/staffcast.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/staffcast.json
src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/stringworms.json project/hexic/src/main/resources/assets/hexcasting/patchouli_books/thehexbook/zh_cn/entries/addon/hexic/stringworms.json
src/main/resources/assets/hexic/eyes.png project/hexic/src/main/resources/assets/hexic/eyes.png
src/main/resources/assets/hexic/icon.png project/hexic/src/main/resources/assets/hexic/icon.png
src/main/resources/assets/hexic/jsonpatch/basics.jsonpatch project/hexic/src/main/resources/assets/hexic/jsonpatch/basics.jsonpatch
src/main/resources/assets/hexic/jsonpatch/math.jsonpatch project/hexic/src/main/resources/assets/hexic/jsonpatch/math.jsonpatch
src/main/resources/assets/hexic/jsonpatch/pigments.jsonpatch project/hexic/src/main/resources/assets/hexic/jsonpatch/pigments.jsonpatch
src/main/resources/assets/hexic/jsonpatch/readwrite_blocks.jsonpatch project/hexic/src/main/resources/assets/hexic/jsonpatch/readwrite_blocks.jsonpatch
src/main/resources/assets/hexic/kubo-config.json project/hexic/src/main/resources/assets/hexic/kubo-config.json
src/main/resources/assets/hexic/lang/zh_cn.json project/hexic/src/main/resources/assets/hexic/lang/zh_cn.json
src/main/resources/assets/hexic/textures/item/coconut.jpg project/hexic/src/main/resources/assets/hexic/textures/item/coconut.jpg
src/main/resources/assets/hexic/textures/item/echo.png project/hexic/src/main/resources/assets/hexic/textures/item/echo.png
src/main/resources/assets/hexic/textures/item/pen_*.ase project/hexic/src/main/resources/assets/hexic/textures/item/pen_*.ase
src/main/resources/data/hexcasting/tags/action/per_world_pattern.json project/hexic/src/main/resources/data/hexcasting/tags/action/per_world_pattern.json
src/main/resources/data/hexcasting/tags/action/requires_enlightenment.json project/hexic/src/main/resources/data/hexcasting/tags/action/requires_enlightenment.json
src/main/resources/data/hexic/dimension/thought.json project/hexic/src/main/resources/data/hexic/dimension/thought.json
src/main/resources/data/hexic/dimension_type/cell.json project/hexic/src/main/resources/data/hexic/dimension_type/cell.json
src/main/resources/data/hexic/dimension_type/thought.json project/hexic/src/main/resources/data/hexic/dimension_type/thought.json
src/main/resources/hexic.mixins.json project/hexic/src/main/resources/hexic.mixins.json
src/main/scala/org/eu/net/pool/hexic/Interop.java project/hexic/src/main/scala/org/eu/net/pool/hexic/Interop.java
src/main/scala/org/eu/net/pool/hexic/ServerIDHaver.java project/hexic/src/main/scala/org/eu/net/pool/hexic/ServerIDHaver.java
src/main/scala/org/eu/net/pool/hexic/duck/OpEdifySapling$SpellAccess.java project/hexic/src/main/scala/org/eu/net/pool/hexic/duck/OpEdifySapling$SpellAccess.java
src/main/scala/org/eu/net/pool/hexic/early_riser.scala project/hexic/src/main/scala/org/eu/net/pool/hexic/early_riser.scala
src/main/scala/org/eu/net/pool/hexic/early_riser_macros.scala project/hexic/src/main/scala/org/eu/net/pool/hexic/early_riser_macros.scala
src/main/scala/org/eu/net/pool/hexic/ideas.md project/hexic/src/main/scala/org/eu/net/pool/hexic/ideas.md
src/main/scala/org/eu/net/pool/hexic/main.scala project/hexic/src/main/scala/org/eu/net/pool/hexic/main.scala
src/main/scala/org/eu/net/pool/hexic/mixin/ActionRegistryEntryMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/ActionRegistryEntryMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/AirBlockMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/AirBlockMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/BiomeMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/BiomeMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/CastingEnvironmentMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/CastingEnvironmentMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/CastingVMMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/CastingVMMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/DimIotaMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/DimIotaMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/EntityMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/EntityMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/HopperEndpointRegistryMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/HopperEndpointRegistryMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/IotaMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/IotaMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/ItemMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/ItemMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/ItemPackagedHexMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/ItemPackagedHexMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/ItemStackAccess.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/ItemStackAccess.java
src/main/scala/org/eu/net/pool/hexic/mixin/ItemStackMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/ItemStackMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/LivingEntityAccess.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/LivingEntityAccess.java
src/main/scala/org/eu/net/pool/hexic/mixin/MediafiedItemManagerIndexMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/MediafiedItemManagerIndexMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/OpDimTeleport$SpellMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/OpDimTeleport$SpellMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/OpEdifySaplingMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/OpEdifySaplingMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/OpObservePropertyMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/OpObservePropertyMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/OpSetPropertyMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/OpSetPropertyMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/OpSplatMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/OpSplatMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/OpTickMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/OpTickMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/PacketByteBufMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/PacketByteBufMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/PlayerInventoryMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/PlayerInventoryMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/SimpleRegistryMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/SimpleRegistryMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/StaffCastEnvMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/StaffCastEnvMixin.java
src/main/scala/org/eu/net/pool/hexic/mixin/WorldMixin.java project/hexic/src/main/scala/org/eu/net/pool/hexic/mixin/WorldMixin.java