feat(phase-1): scaffold ChainLightning Sceptre plugin

Build infrastructure (Gradle wrapper, shadow, Java 25), manifest, item
JSON + interactions, and ChainLightningPlugin entry with stub handler
that logs sceptre clicks. Cooldown wiring deferred to Phase 3 (real
Hytale API is getCooldown(id).setCooldownMax — not cooldown(Duration)).
This commit is contained in:
2026-04-26 19:22:18 +02:00
parent d06743acbe
commit edca00fa4a
14 changed files with 656 additions and 0 deletions
+95
View File
@@ -0,0 +1,95 @@
plugins {
id("java-library")
id("com.gradleup.shadow") version "9.3.1"
}
group = findProperty("pluginGroup") as String? ?: "com.mythlane"
version = findProperty("pluginVersion") as String? ?: "0.1.0"
description = findProperty("pluginDescription") as String? ?: "Hytale Chain Lightning"
val hytaleServerVersion: String by project
repositories {
mavenLocal()
mavenCentral()
maven {
name = "hytale"
url = uri("https://maven.hytale.com/release")
}
}
dependencies {
compileOnly("com.hypixel.hytale:Server:$hytaleServerVersion")
implementation("com.google.code.gson:gson:2.10.1")
implementation("org.jetbrains:annotations:24.1.0")
testImplementation("com.hypixel.hytale:Server:$hytaleServerVersion")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(25))
}
}
tasks {
compileJava {
options.encoding = Charsets.UTF_8.name()
options.release = 25
}
processResources {
filteringCharset = Charsets.UTF_8.name()
val props = mapOf(
"group" to project.group,
"version" to project.version,
"description" to project.description,
"hytaleServerVersion" to hytaleServerVersion
)
inputs.properties(props)
filesMatching("manifest.json") {
expand(props)
}
}
shadowJar {
archiveBaseName.set("hytale-chain-lightning")
archiveClassifier.set("")
relocate("com.google.gson", "com.mythlane.chainlightning.libs.gson")
}
jar {
enabled = false
}
// Auto-copy le fat JAR vers le dossier mods du serveur dev Hytale après shadowJar.
// Override via -PdevServerMods=... ou la propriété `devServerMods` dans gradle.properties.
// Désactivable via -PdevServerMods=disabled (ou valeur vide).
val devServerModsDefault = "C:/Users/minit/Desktop/HYTALE SERVER/Server/mods"
val copyJarToDevServer by registering(Copy::class) {
val target = (findProperty("devServerMods") as String? ?: devServerModsDefault).trim()
onlyIf {
target.isNotEmpty() && target != "disabled" && file(target).isDirectory
}
from(shadowJar)
into(target)
doLast {
logger.lifecycle("[copyJarToDevServer] Copié vers $target")
}
}
shadowJar {
finalizedBy(copyJarToDevServer)
}
build {
dependsOn(shadowJar)
}
test {
useJUnitPlatform()
}
}