mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-04-25 20:23:22 +00:00

I've no motivation for modding right now, but always got time for build system busywork! CC:T (and CC before that) has always published its API docs. However, they're not always the most helpful — they're useful if you know what you're looking for, but aren't a good getting-started guide. Part of the issue here is there's no examples, and everything is described pretty abstractly. I have occasionally tried to improve this (e.g. the peripheral docs in bdffabc08e2eb9895f966c949acc8334a2bf4475), but it's a long road. This commit adds a new example mod, which registers peripherals, an API and a turtle upgrade. While the mod itself isn't exported as part of the docs, we reference blocks of it using Java's new {@snippet} tag. - Switch the Forge project to use NeoForge's new Legacy MDG plugin. We don't *need* to do this, but it means the build logic for Forge and NeoForge is more closely aligned. - Add a new SnippetTaglet, which is a partial backport of Java 18+'s {@snippet}. - Add an example mod. This is a working multi-loader mod, complete with datagen (albeit with no good multi-loader abstractions). - Move our existing <pre>{@code ...}</pre> blocks into the example mod, replacing them with {@snippet}s. - Add a new overview page to the docs, providing some getting-started information. We had this already in the dan200.computercraft.api package docs, but it's not especially visible there.
79 lines
2.5 KiB
Plaintext
79 lines
2.5 KiB
Plaintext
// SPDX-FileCopyrightText: 2022 The CC: Tweaked Developers
|
|
//
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
plugins {
|
|
id("cc-tweaked.java-convention")
|
|
id("cc-tweaked.publishing")
|
|
id("cc-tweaked.vanilla")
|
|
}
|
|
|
|
val mcVersion: String by extra
|
|
|
|
java {
|
|
withJavadocJar()
|
|
}
|
|
|
|
dependencies {
|
|
api(project(":core-api"))
|
|
}
|
|
|
|
val javadocOverview by tasks.registering(Copy::class) {
|
|
from("src/overview.html")
|
|
into(layout.buildDirectory.dir(name))
|
|
|
|
expand(
|
|
mapOf(
|
|
"mcVersion" to mcVersion,
|
|
"modVersion" to version,
|
|
),
|
|
)
|
|
}
|
|
|
|
tasks.javadoc {
|
|
title = "CC: Tweaked $version for Minecraft $mcVersion"
|
|
include("dan200/computercraft/api/**/*.java")
|
|
|
|
options {
|
|
(this as StandardJavadocDocletOptions)
|
|
|
|
inputs.files(javadocOverview)
|
|
overview(javadocOverview.get().destinationDir.resolve("overview.html").absolutePath)
|
|
|
|
groups = mapOf(
|
|
"Common" to listOf(
|
|
"dan200.computercraft.api",
|
|
"dan200.computercraft.api.lua",
|
|
"dan200.computercraft.api.peripheral",
|
|
),
|
|
"Upgrades" to listOf(
|
|
"dan200.computercraft.api.client.turtle",
|
|
"dan200.computercraft.api.pocket",
|
|
"dan200.computercraft.api.turtle",
|
|
"dan200.computercraft.api.upgrades",
|
|
),
|
|
)
|
|
|
|
addBooleanOption("-allow-script-in-comments", true)
|
|
bottom(
|
|
"""
|
|
<script src="https://cdn.jsdelivr.net/npm/prismjs@v1.29.0/components/prism-core.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/prismjs@v1.29.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
|
<link href=" https://cdn.jsdelivr.net/npm/prismjs@1.29.0/themes/prism.min.css " rel="stylesheet">
|
|
""".trimIndent(),
|
|
)
|
|
|
|
taglets("cc.tweaked.javadoc.SnippetTaglet")
|
|
tagletPath(configurations.detachedConfiguration(dependencies.project(":lints")).toList())
|
|
|
|
val snippetSources = listOf(":common", ":fabric", ":forge").flatMap {
|
|
project(it).sourceSets["examples"].allSource.sourceDirectories
|
|
}
|
|
inputs.files(snippetSources)
|
|
jFlags("-Dcc.snippet-path=" + snippetSources.joinToString(File.pathSeparator) { it.absolutePath })
|
|
}
|
|
|
|
// Include the core-api in our javadoc export. This is wrong, but it means we can export a single javadoc dump.
|
|
source(project(":core-api").sourceSets.main.map { it.allJava })
|
|
}
|