mirror of
https://github.com/GayPizzaSpecifications/concrete.git
synced 2025-08-03 13:11:33 +00:00
Add a concept of a concrete-library which has access to Bukkit but is not a plugin.
This commit is contained in:
@ -33,7 +33,12 @@ gradlePlugin {
|
||||
|
||||
create("concrete-plugin") {
|
||||
id = "lgbt.mystic.foundation.concrete-plugin"
|
||||
implementationClass = "lgbt.mystic.foundation.concrete.ConcreteProjectPlugin"
|
||||
implementationClass = "lgbt.mystic.foundation.concrete.ConcretePluginPlugin"
|
||||
}
|
||||
|
||||
create("concrete-library") {
|
||||
id = "lgbt.mystic.foundation.concrete-library"
|
||||
implementationClass = "lgbt.mystic.foundation.concrete.ConcreteLibraryPlugin"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,3 @@
|
||||
plugins {
|
||||
id("lgbt.mystic.foundation.concrete-library")
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
package lgbt.mystic.foundation.conrete.sample.common
|
||||
|
||||
import org.bukkit.plugin.java.JavaPlugin
|
||||
|
||||
fun JavaPlugin.logOnEnable(name: String) = slF4JLogger.info("Enabled $name")
|
||||
fun JavaPlugin.logOnDisable(name: String) = slF4JLogger.info("Disabled $name")
|
@ -1,3 +1,7 @@
|
||||
plugins {
|
||||
id("lgbt.mystic.foundation.concrete-plugin")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":bukkit-plugins:common-library"))
|
||||
}
|
||||
|
@ -1,13 +1,15 @@
|
||||
package lgbt.mystic.foundation.concrete.sample.goodbyeworld
|
||||
|
||||
import lgbt.mystic.foundation.conrete.sample.common.logOnDisable
|
||||
import lgbt.mystic.foundation.conrete.sample.common.logOnEnable
|
||||
import org.bukkit.plugin.java.JavaPlugin
|
||||
|
||||
class GoodbyeWorldPlugin : JavaPlugin() {
|
||||
override fun onEnable() {
|
||||
slF4JLogger.info("Enabled Goodbye World")
|
||||
logOnEnable("Goodbye World")
|
||||
}
|
||||
|
||||
override fun onDisable() {
|
||||
slF4JLogger.info("Disabled Goodbye World")
|
||||
logOnDisable("Goodbye World")
|
||||
}
|
||||
}
|
||||
|
@ -4,4 +4,5 @@ plugins {
|
||||
|
||||
dependencies {
|
||||
implementation(project(":other-library"))
|
||||
implementation(project(":bukkit-plugins:common-library"))
|
||||
}
|
||||
|
@ -1,14 +1,16 @@
|
||||
package lgbt.mystic.foundation.concrete.sample.helloworld
|
||||
|
||||
import lgbt.mystic.foundation.concrete.other.OtherLibrary
|
||||
import lgbt.mystic.foundation.conrete.sample.common.logOnDisable
|
||||
import lgbt.mystic.foundation.conrete.sample.common.logOnEnable
|
||||
import org.bukkit.plugin.java.JavaPlugin
|
||||
|
||||
class HelloWorldPlugin : JavaPlugin() {
|
||||
override fun onEnable() {
|
||||
slF4JLogger.info("Enabled Hello World (Constant is ${OtherLibrary.SOME_CONSTANT})")
|
||||
logOnEnable(OtherLibrary.HELLO_WORLD)
|
||||
}
|
||||
|
||||
override fun onDisable() {
|
||||
slF4JLogger.info("Disabled Hello World (Constant is ${OtherLibrary.SOME_CONSTANT})")
|
||||
logOnDisable(OtherLibrary.HELLO_WORLD)
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
package lgbt.mystic.foundation.concrete.other;
|
||||
|
||||
public class OtherLibrary {
|
||||
public static final String SOME_CONSTANT = "HelloWorld";
|
||||
public static final String HELLO_WORLD = "Hello World";
|
||||
}
|
||||
|
@ -2,4 +2,5 @@ includeBuild("../..")
|
||||
include(":bukkit-plugins")
|
||||
include(":bukkit-plugins:hello-world")
|
||||
include(":bukkit-plugins:goodbye-world")
|
||||
include(":bukkit-plugins:common-library")
|
||||
include(":other-library")
|
||||
|
@ -0,0 +1,3 @@
|
||||
package lgbt.mystic.foundation.concrete
|
||||
|
||||
class ConcreteLibraryPlugin : ConcreteProjectPlugin()
|
@ -0,0 +1,31 @@
|
||||
package lgbt.mystic.foundation.concrete
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.kotlin.dsl.get
|
||||
import org.gradle.language.jvm.tasks.ProcessResources
|
||||
|
||||
@Suppress("UnstableApiUsage")
|
||||
class ConcretePluginPlugin : ConcreteProjectPlugin() {
|
||||
override fun apply(project: Project) {
|
||||
super.apply(project)
|
||||
|
||||
project.plugins.apply("com.github.johnrengelman.shadow")
|
||||
|
||||
(project.tasks.getByName("processResources") as ProcessResources).apply {
|
||||
val props = mapOf("version" to project.version.toString())
|
||||
inputs.properties(props)
|
||||
filteringCharset = "UTF-8"
|
||||
filesMatching("plugin.yml") {
|
||||
expand(props)
|
||||
}
|
||||
}
|
||||
|
||||
project.shadowJarTask!!.apply {
|
||||
archiveClassifier.set("plugin")
|
||||
}
|
||||
|
||||
project.tasks["assemble"].dependsOn(project.tasks["shadowJar"])
|
||||
|
||||
project.concreteRootProject.tasks["setupPaperServer"].dependsOn(project.tasks["shadowJar"])
|
||||
}
|
||||
}
|
@ -4,16 +4,13 @@ import org.gradle.api.JavaVersion
|
||||
import org.gradle.api.Plugin
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.plugins.JavaPluginExtension
|
||||
import org.gradle.kotlin.dsl.get
|
||||
import org.gradle.kotlin.dsl.getByType
|
||||
import org.gradle.kotlin.dsl.repositories
|
||||
import org.gradle.kotlin.dsl.withType
|
||||
import org.gradle.language.jvm.tasks.ProcessResources
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
import java.net.URI
|
||||
|
||||
@Suppress("UnstableApiUsage")
|
||||
class ConcreteProjectPlugin : Plugin<Project> {
|
||||
open class ConcreteProjectPlugin : Plugin<Project> {
|
||||
override fun apply(project: Project) {
|
||||
val versionWithBuild = if (System.getenv("CI_PIPELINE_IID") != null) {
|
||||
project.rootProject.version.toString() + ".${System.getenv("CI_PIPELINE_IID")}"
|
||||
@ -21,11 +18,10 @@ class ConcreteProjectPlugin : Plugin<Project> {
|
||||
"DEV"
|
||||
}
|
||||
|
||||
project.version = versionWithBuild
|
||||
|
||||
project.plugins.apply("org.jetbrains.kotlin.jvm")
|
||||
project.plugins.apply("org.jetbrains.kotlin.plugin.serialization")
|
||||
project.plugins.apply("com.github.johnrengelman.shadow")
|
||||
|
||||
project.version = versionWithBuild
|
||||
|
||||
project.repositories {
|
||||
maven {
|
||||
@ -35,7 +31,6 @@ class ConcreteProjectPlugin : Plugin<Project> {
|
||||
}
|
||||
|
||||
val paperApiVersion = project.concreteRootExtension.paperApiVersion.get()
|
||||
|
||||
project.dependencies.add("compileOnly", "io.papermc.paper:paper-api:${paperApiVersion}")
|
||||
|
||||
project.extensions.getByType<JavaPluginExtension>().apply {
|
||||
@ -44,21 +39,6 @@ class ConcreteProjectPlugin : Plugin<Project> {
|
||||
targetCompatibility = javaVersion
|
||||
}
|
||||
|
||||
(project.tasks.getByName("processResources") as ProcessResources).apply {
|
||||
val props = mapOf("version" to project.version.toString())
|
||||
inputs.properties(props)
|
||||
filteringCharset = "UTF-8"
|
||||
filesMatching("plugin.yml") {
|
||||
expand(props)
|
||||
}
|
||||
}
|
||||
|
||||
project.shadowJarTask!!.apply {
|
||||
archiveClassifier.set("plugin")
|
||||
}
|
||||
|
||||
project.tasks["assemble"].dependsOn(project.tasks["shadowJar"])
|
||||
|
||||
project.tasks.withType<KotlinCompile>().forEach {
|
||||
it.apply {
|
||||
kotlinOptions.apply {
|
||||
@ -66,7 +46,5 @@ class ConcreteProjectPlugin : Plugin<Project> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
project.concreteRootProject.tasks["setupPaperServer"].dependsOn(project.tasks["shadowJar"])
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ import org.gradle.api.tasks.TaskOutputs
|
||||
import java.nio.file.FileSystems
|
||||
import java.nio.file.Path
|
||||
|
||||
internal fun Project.isPluginProject() = plugins.hasPlugin(ConcreteProjectPlugin::class.java)
|
||||
internal fun Project.isPluginProject() = plugins.hasPlugin(ConcretePluginPlugin::class.java)
|
||||
internal fun Project.findPluginProjects() = allprojects.filter { project -> project.isPluginProject() }
|
||||
|
||||
internal val Project.shadowJarTask: ShadowJar?
|
||||
|
Reference in New Issue
Block a user