15 Commits

Author SHA1 Message Date
TDSTOS
176bd7e533 Change VolcanoAPI to McScrimsAPI 2026-04-15 21:51:35 +02:00
TDSTOS
26a29e8ba9 Support .tar.gz maps and map-system toggle
Add Apache Commons Compress dependency and relocate its packages for shading. Introduce a config guard (map-system.enabled) in SpeedHG.onWorldInit and DataPackManager.install to skip internal map handling when an external map system is enabled. Add untar() to WorldManager using TarArchiveInputStream + GzipCompressorInputStream and update extraction logic to handle .zip and .gz (.tar.gz) archives, extracting to the world parent folder as needed.
2026-04-12 12:26:53 +02:00
TDSTOS
13f6ce5638 Add tablist manager and Volcano rank provider
Introduce a TablistManager to manage per-player scoreboard teams, tab header/footer and periodic updates; uses a ServerRankProvider abstraction. Add DefaultServerRankProvider and VolcanoServerRankProvider (uses CoreAPI) in ServerRankProvider.kt. Wire TablistManager into SpeedHG: initialize in onLoad, update on join, and shutdown on disable. Add local VolcanoAPI.jar as compileOnly dependency and declare Volcano as a plugin dependency in plugin.yml.
2026-04-11 02:34:42 +02:00
TDSTOS
cd8e3e37a7 Integrate Lunar Client and gameplay tweaks
Add Lunar Client support and make various kit/listener/ui adjustments.

- Add Apollo (Lunar Client) compileOnly dependencies and new LunarClientManager wired into plugin initialization. Update plugin.yml (depend Apollo-Bukkit, add speedhg.admin.staff permission) and config.yml (lunarclient name/variantName) for rich presence and mod settings.
- Rework Tesla kit passive: remove periodic aura task in favor of chance-on-hit effect (AURA_CHANCE) to reduce continuous scheduling and simplify behavior; adjust constants and particle/sound logic accordingly.
- Add Anchor golem death handler to KitEventDispatcher to suppress drops/exp for golems spawned by AnchorKit.
- Update AnvilSearchMenu to clear item-on-cursor before closing and ensure search tracker is unregistered in the right order.
- Remove join/quit attack-speed cooldown handling in GameStateListener and tidy up some permission/command descriptions in plugin.yml.

These changes enable Lunar features, improve performance by removing repeated scheduled tasks, and fix gameplay/drop/UI edge cases.
2026-04-11 00:49:42 +02:00
TDSTOS
2be7272f06 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.
2026-04-04 23:58:35 +02:00
TDSTOS
184443b7c6 Add custom game settings
Each kit now supports custom settings aswell as custom game settings like min_players
2026-03-28 23:51:32 +01:00
TDSTOS
0043a3e82c Update Stats Management 2026-03-26 01:07:12 +01:00
TDSTOS
2d720d962c Add persistent player stats and DB support
Introduce MySQL persistence and an in-memory stats system with async saving.

- Add HikariCP & MySQL connector dependencies and relocate libs in build.gradle.kts.
- Add DatabaseManager (HikariCP) to manage connection pool and lifecycle.
- Add PlayerStats data model and PlayerStatsRepository for table creation, reads, upserts and batch upserts (with prepared statements).
- Add StatsManager: coroutine-based cache, dirty-flags, async batch saves, auto-save (every 5 minutes), load/save APIs and shutdown save.
- Add StatsListener: load on AsyncPlayerPreLoginEvent and save on PlayerQuitEvent.
- Wire DB and stats into main plugin: connect on enable (disable plugin on fail), initialize StatsManager, save/disconnect on disable, register leaderboard command and stats listener.
- Update GameManager to record kills/wins/deaths and adjust scrimScore on events.
- Add LeaderboardCommand and language entries for leaderboard output; expose command in plugin.yml.
- Add database configuration section to config.yml.
- Minor refactor: KitCommand plugin accessor changed to a getter.

These changes provide a robust, pooled DB connection and efficient stats persistence (batched/upserted) to reduce DB load and ensure data safety during shutdown.
2026-03-26 00:10:26 +01:00
TDSTOS
9d6bd6a6b8 Add kit system, KitManager and Goblin kit
Introduce a full kit framework and supporting utilities.

- Add core kit API: Kit, Playstyle, ActiveAbility, PassiveAbility, AbilityResult, charge state and PlayerChargeData.
- Implement KitManager for registration, lobby selections, apply/remove/clear lifecycle and charge tracking.
- Add KitEventDispatcher listener to centralize kit event handling (interact, hits, move) and integrate passive/active hooks.
- Provide example kit implementations: GoblinKit (functional abilities) and TemplateKit (reference).
- Add utilities: ItemBuilder and WorldEditUtils (WorldEdit-based sphere creation).
- Integrate into plugin: SpeedHG now initialises KitManager, registers kits and KitEventDispatcher, applies kits at game start and clears on end.
- LanguageManager: add default message/list/component helpers.
- Build changes: bump Kotlin plugin to 2.2.0 and add WorldEdit compileOnly deps; also expose legacySerializer in Extensions.

These changes implement the kit feature set (items, abilities, charge/recharge flow) and wire it into the game lifecycle.
2026-03-25 02:27:53 +01:00
TDSTOS
e411879b20 Remove legacy modules, add language & scoreboard
Large refactor removing many legacy subsystems (abilities, kit system, database repos, recraft, world manager, extensive config classes, lunar/luckperms integrations and various listeners/commands). Introduces a lightweight LanguageManager, AntiRunningManager, ScoreboardManager, ConnectListener and a SoupListener; simplifies the main SpeedHG plugin to initialize these components and register the connection listener. Build changes: update Gradle wrapper to 8.10, remove paperweight and several external dependencies, add fr.mrmicky:fastboard and simplify shadowJar/build task configuration. Adds default language resource (languages/en_US.yml) and updates plugin/config resources. Purpose: simplify and decouple the plugin, reduce dependency surface and prepare for a leaner, modular rewrite.
2026-03-25 00:55:20 +01:00
TDSTOS
bb47145a73 Fix start errors 2025-12-12 05:12:09 +01:00
TDSTOS
31c1e6e316 Add player repository 2025-12-11 19:47:06 +01:00
Laurin
590318772f Update game states & world management 2025-12-06 05:41:42 +01:00
Laurin
2c10e3e7fd Add new game states 2025-12-04 15:01:10 +01:00
Laurin
0daabe3de2 First commit 2025-12-01 03:45:44 +01:00