paper plugin that introduces the "Soulbound" enchantment

Project setup

Changed files
+12 -22
api
src
main
java
de
kokirigla
soulbinding
api
build-logic
gradle
plugin
src
main
java
de
kokirigla
api/src/main/java/com/example/template/api/.gitkeep api/src/main/java/de/kokirigla/soulbinding/api/.gitkeep
-1
build-logic/build.gradle.kts
···
dependencies {
implementation(libs.shadow)
-
implementation(libs.gremlin.gradle)
implementation(libs.indra.common)
implementation(libs.indra.licenseHeader)
implementation(libs.indra.git)
+4 -5
build-logic/src/main/kotlin/extensions.kt
···
+
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import org.gradle.accessors.dm.LibrariesForLibs
import org.gradle.api.Project
-
import org.gradle.api.Task
import org.gradle.kotlin.dsl.the
-
import xyz.jpenilla.gremlin.gradle.ShadowGremlin
// https://github.com/gradle/gradle/issues/15383#issuecomment-779893192
val Project.libs: LibrariesForLibs
get() = the()
/**
-
* Relocate a package into the `com.example.template.libs` namespace.
+
* Relocate a package into the `de.kokirigla.soulbinding.libs` namespace.
*/
-
fun Task.relocateDependency(pkg: String) {
-
ShadowGremlin.relocate(this, pkg, "com.example.template.libs.$pkg")
+
fun ShadowJar.relocateDependency(pkg: String) {
+
relocate(pkg, "de.kokirigla.soulbinding.libs.$pkg")
}
-5
build-logic/src/main/kotlin/shadow-platform.gradle.kts
···
plugins {
id("platform-conventions")
id("com.gradleup.shadow")
-
id("xyz.jpenilla.gremlin-gradle")
}
tasks {
···
shadowJar {
archiveClassifier.set(null as String?)
-
relocateDependency("xyz.jpenilla.gremlin")
-
}
-
-
writeDependencies {
}
}
+1 -1
build.gradle.kts
···
-
group = "com.example"
+
group = "de.kokirigla"
version = "1.0.0"
-2
gradle/libs.versions.toml
···
indra = "3.1.3"
stylecheck = "0.2.1"
shadow = "8.3.0"
-
gremlin = "0.0.6"
paper = "1.21.4-R0.1-SNAPSHOT"
···
indra-common = { group = "net.kyori", name = "indra-common", version.ref = "indra" }
indra-licenseHeader = { group = "net.kyori", name = "indra-licenser-spotless", version.ref = "indra" }
indra-git = { group = "net.kyori", name = "indra-git", version.ref = "indra" }
-
gremlin-gradle = { group = "xyz.jpenilla", name = "gremlin-gradle", version.ref = "gremlin" }
shadow = { group = "com.gradleup.shadow", name = "shadow-gradle-plugin", version.ref = "shadow" }
# development tools (code quality, annotations)
+4 -5
plugin/build.gradle.kts
···
plugins {
id("shadow-platform")
-
id("xyz.jpenilla.resource-factory-bukkit-convention") version "1.2.0"
-
// id("xyz.jpenilla.resource-factory-paper-convention") version "1.2.0" // paper plugin
+
id("xyz.jpenilla.resource-factory-paper-convention") version "1.2.0" // paper plugin
id("xyz.jpenilla.run-paper") version "2.3.1"
}
···
}
}
-
bukkitPluginYaml {
+
paperPluginYaml {
main = "${rootProject.group}.${rootProject.name}.TemplatePlugin"
name = rootProject.name
-
authors.add("somebody")
-
apiVersion = libs.versions.paper.get().split("-R0.1-SNAPSHOT")[0]
+
authors.add("kokiriglade")
+
apiVersion = libs.versions.paper.get()
}
+2 -2
plugin/src/main/java/com/example/template/TemplatePlugin.java plugin/src/main/java/de/kokirigla/soulbinding/SoulbindingPlugin.java
···
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-
package com.example.template;
+
package de.kokirigla.soulbinding;
import org.bukkit.plugin.java.JavaPlugin;
import org.jspecify.annotations.NullMarked;
@NullMarked
-
public final class TemplatePlugin extends JavaPlugin {
+
public final class SoulbindingPlugin extends JavaPlugin {
@Override
public void onEnable() {
+1 -1
settings.gradle.kts
···
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
-
rootProject.name = "template"
+
rootProject.name = "soulbinding"
sequenceOf("plugin", "api").forEach {
include("${rootProject.name}-$it")