Add DataPackManager & SurfaceBlockPopulator

Introduce DataPackManager to generate/install a datapack into the target world folder (biome overrides, simplified noise_settings) and call install() during onLoad after the world folder is prepared. Add SurfaceBlockPopulator to apply surface/sub-surface block overrides (for TerraformGenerator worlds) and register it in onEnable via a WorldInitEvent listener for the configured target world. Refactor WorldManager to extract deletion logic into deleteWorld() and delete existing world/_nether/_the_end before unpacking the selected map. Also update imports and wiring to support these changes.
This commit is contained in:
TDSTOS
2026-04-04 18:51:14 +02:00
parent 1382de63fc
commit 1f9a43fb89
4 changed files with 853 additions and 13 deletions

View File

@@ -31,10 +31,15 @@ import club.mcscrims.speedhg.perk.listener.PerkEventDispatcher
import club.mcscrims.speedhg.ranking.RankingManager
import club.mcscrims.speedhg.scoreboard.ScoreboardManager
import club.mcscrims.speedhg.webhook.DiscordWebhookManager
import club.mcscrims.speedhg.world.DataPackManager
import club.mcscrims.speedhg.world.SurfaceBlockPopulator
import club.mcscrims.speedhg.world.WorldManager
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.NamespacedKey
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.world.WorldInitEvent
import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.ShapelessRecipe
import org.bukkit.plugin.java.JavaPlugin
@@ -99,10 +104,26 @@ class SpeedHG : JavaPlugin() {
val worldManager = WorldManager( this )
worldManager.prepareRandomWorld()
val dataPackManager = DataPackManager( this )
dataPackManager.install()
}
override fun onEnable()
{
server.pluginManager.registerEvents(object : Listener {
@EventHandler
fun onWorldInit(
event: WorldInitEvent
) {
val targetWorldName = config.getString( "map-system.target-world-name", "world" )
if ( event.world.name != targetWorldName ) return
event.world.populators.add( SurfaceBlockPopulator() )
logger.info( "[SpeedHG] SurfaceBlockPopulator für '${event.world.name}' registriert." )
}
}, this )
databaseManager = DatabaseManager( this )
try {
databaseManager.connect()