Wire DataPackManager, add uninstall, update build
Swap Shadow plugin to com.gradleup.shadow v8.3.5 and add kotlin serialization plugin. Add relocations for bundled libraries (fastboard, Hikari) in the shadowJar. Make DataPackManager a plugin-scoped property: initialize and install it during onLoad and call uninstall during onDisable. Add a convenience uninstall() that reads the target world from config and removes the datapack there. Also comment out writeNoiseSettingOverride with a warning that the simplified file crashes Minecraft 1.21.
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
plugins {
|
||||
id("java")
|
||||
id("maven-publish")
|
||||
id("com.github.johnrengelman.shadow") version "8.1.1"
|
||||
id("com.gradleup.shadow") version "8.3.5"
|
||||
kotlin("jvm") version "2.2.0"
|
||||
kotlin("kapt") version "2.2.0"
|
||||
kotlin("plugin.serialization") version "2.2.0"
|
||||
}
|
||||
|
||||
group = "club.mcscrims"
|
||||
@@ -47,6 +48,9 @@ tasks {
|
||||
archiveBaseName.set("GameModes-SpeedHG")
|
||||
archiveClassifier.set("")
|
||||
archiveVersion.set(project.version.toString())
|
||||
|
||||
relocate("fr.mrmicky.fastboard", "club.mcscrims.speedhg.libs.fastboard")
|
||||
relocate("com.zaxxer.hikari", "club.mcscrims.speedhg.libs.hikari")
|
||||
}
|
||||
|
||||
build {
|
||||
|
||||
@@ -92,6 +92,9 @@ class SpeedHG : JavaPlugin() {
|
||||
lateinit var disasterManager: DisasterManager
|
||||
private set
|
||||
|
||||
lateinit var dataPackManager: DataPackManager
|
||||
private set
|
||||
|
||||
override fun onLoad()
|
||||
{
|
||||
instance = this
|
||||
@@ -105,7 +108,7 @@ class SpeedHG : JavaPlugin() {
|
||||
val worldManager = WorldManager( this )
|
||||
worldManager.prepareRandomWorld()
|
||||
|
||||
val dataPackManager = DataPackManager( this )
|
||||
dataPackManager = DataPackManager( this )
|
||||
dataPackManager.install()
|
||||
}
|
||||
|
||||
@@ -167,6 +170,7 @@ class SpeedHG : JavaPlugin() {
|
||||
if ( ::perkManager.isInitialized ) perkManager.shutdown()
|
||||
if ( ::statsManager.isInitialized ) statsManager.shutdown()
|
||||
if ( ::databaseManager.isInitialized ) databaseManager.disconnect()
|
||||
if ( ::dataPackManager.isInitialized ) dataPackManager.uninstall()
|
||||
kitManager.clearAll()
|
||||
super.onDisable()
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ import java.util.logging.Logger
|
||||
* - Mob-Spawntabellen: Welche Mobs in welcher Häufigkeit spawnen
|
||||
* - Biom-Klimawerte: Temperatur, Niederschlag
|
||||
*
|
||||
* ## Was dieser DataPack NICHT kann (mit TerraformGenerator)
|
||||
* ## Was dieses DataPack NICHT kann (mit TerraformGenerator)
|
||||
* - Surface-Blöcke (Gras → Sand → Stein): TG ignoriert noise_settings/overworld.json,
|
||||
* da TG die Block-Platzierung komplett in eigenem Java-Code erledigt.
|
||||
* → Für Surface-Block-Overrides: [SurfaceBlockPopulator] verwenden.
|
||||
@@ -86,10 +86,9 @@ class DataPackManager(private val plugin: SpeedHG) {
|
||||
writeBiomeOverrides(packRoot)
|
||||
|
||||
// ─ Vanilla-Gen only ─────────────────────────────────────────────
|
||||
// Bei TerraformGenerator-Welten ist dieser Block wirkungslos,
|
||||
// da TG noise_settings komplett ignoriert. Für Dokumentations-
|
||||
// zwecke (und zukünftige Vanilla-Gen-Setups) trotzdem erstellt.
|
||||
writeNoiseSettingOverride(packRoot)
|
||||
// LÖSCHEN ODER AUSKOMMENTIEREN!
|
||||
// Diese vereinfachte Datei bringt Minecraft 1.21 zum Abstürzen.
|
||||
// writeNoiseSettingOverride(packRoot)
|
||||
// ────────────────────────────────────────────────────────────────
|
||||
|
||||
log.info("[DataPackManager] '$DATAPACK_NAME' installiert in: ${packRoot.absolutePath}")
|
||||
@@ -100,6 +99,17 @@ class DataPackManager(private val plugin: SpeedHG) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience-Methode: liest den Weltordner aus der config.yml und
|
||||
* deinstalliert den DataPack dort. Für den Normalfall gedacht.
|
||||
*/
|
||||
fun uninstall() {
|
||||
val worldName = plugin.config.getString("map-system.target-world-name", "world")!!
|
||||
val serverRoot = plugin.dataFolder.parentFile.parentFile
|
||||
val worldFolder = File(serverRoot, worldName)
|
||||
uninstall(worldFolder)
|
||||
}
|
||||
|
||||
/**
|
||||
* Entfernt den DataPack aus dem Weltordner.
|
||||
* Kann z.B. in onDisable() aufgerufen werden, wenn der nächste
|
||||
|
||||
Reference in New Issue
Block a user