Skip to content

Commit ec674e7

Browse files
finreinhardclaude
andcommitted
integrate lobby flight system
Complete integration of ElytraManager with existing lobby and protection systems: - Register ElytraManager in plugin initialization and cleanup - Integrate flight gear with lobby inventory setup - Add flight gear removal on world change - Remove inventory restrictions for full player customization - Add German and English translations for flight items 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent bde3d24 commit ec674e7

File tree

6 files changed

+32
-8
lines changed

6 files changed

+32
-8
lines changed

src/main/kotlin/li/angu/challengeplugin/ChallengePluginPlugin.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import li.angu.challengeplugin.managers.SettingsInventoryManager
99
import li.angu.challengeplugin.managers.ChallengeMenuManager
1010
import li.angu.challengeplugin.managers.LobbyManager
1111
import li.angu.challengeplugin.managers.WorldPreparationManager
12+
import li.angu.challengeplugin.managers.ElytraManager
1213
import li.angu.challengeplugin.listeners.DragonDefeatListener
1314
import li.angu.challengeplugin.listeners.PlayerConnectionListener
1415
import li.angu.challengeplugin.listeners.PlayerHealthListener
@@ -28,6 +29,7 @@ open class ChallengePluginPlugin : JavaPlugin() {
2829
open lateinit var settingsInventoryManager: SettingsInventoryManager
2930
open lateinit var challengeMenuManager: ChallengeMenuManager
3031
open lateinit var lobbyManager: LobbyManager
32+
open lateinit var elytraManager: ElytraManager
3133
open lateinit var blockDropListener: BlockDropListener
3234
open lateinit var worldPreparationManager: WorldPreparationManager
3335
open lateinit var experienceBorderListener: ExperienceBorderListener
@@ -66,9 +68,10 @@ open class ChallengePluginPlugin : JavaPlugin() {
6668
challengeMenuManager = ChallengeMenuManager(this)
6769
worldPreparationManager = WorldPreparationManager(this)
6870

69-
// Initialize lobby manager
71+
// Initialize lobby manager and elytra manager
7072
lobbyManager = LobbyManager(this)
7173
lobbyManager.initialize()
74+
elytraManager = ElytraManager(this)
7275

7376
// Register commands
7477
// Main challenge commands
@@ -99,6 +102,7 @@ open class ChallengePluginPlugin : JavaPlugin() {
99102
server.pluginManager.registerEvents(PlayerHealthListener(this), this)
100103
server.pluginManager.registerEvents(PortalListener(this), this)
101104
server.pluginManager.registerEvents(LobbyProtectionListener(this), this)
105+
server.pluginManager.registerEvents(elytraManager, this)
102106
blockDropListener = BlockDropListener(this)
103107
server.pluginManager.registerEvents(blockDropListener, this)
104108

@@ -131,6 +135,11 @@ open class ChallengePluginPlugin : JavaPlugin() {
131135
challengeMenuManager.cleanup()
132136
experienceBorderListener.cleanup()
133137

138+
// Unregister event listeners
139+
if (::elytraManager.isInitialized) {
140+
org.bukkit.event.HandlerList.unregisterAll(elytraManager)
141+
}
142+
134143
// Close database connection
135144
if (::databaseDriver.isInitialized) {
136145
databaseDriver.close()

src/main/kotlin/li/angu/challengeplugin/listeners/LobbyProtectionListener.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,10 @@ class LobbyProtectionListener(private val plugin: ChallengePluginPlugin) : Liste
114114
fun onInventoryClick(event: InventoryClickEvent) {
115115
val player = event.whoClicked as? Player ?: return
116116
if (isInLobby(player)) {
117-
// Only allow clicking on the menu item
118-
val item = event.currentItem
119-
if (item != null && !plugin.lobbyManager.isMenuItem(item)) {
120-
// Allow moving the menu item around but prevent other interactions
121-
if (event.slot != 0) {
122-
event.isCancelled = true
123-
}
117+
// Allow all inventory interactions in lobby - players should be able to organize their items
118+
// Only prevent interactions with external inventories (chests, etc.)
119+
if (event.clickedInventory != player.inventory) {
120+
event.isCancelled = true
124121
}
125122
}
126123
}

src/main/kotlin/li/angu/challengeplugin/listeners/PlayerConnectionListener.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ class PlayerConnectionListener(private val plugin: ChallengePluginPlugin) : List
7373
player.gameMode = org.bukkit.GameMode.SURVIVAL
7474
plugin.lobbyManager.setupLobbyInventory(player)
7575
}
76+
} else {
77+
// Player left the lobby world, remove flight gear
78+
plugin.elytraManager.removeLobbyFlightGear(player)
7679
}
7780
}
7881

src/main/kotlin/li/angu/challengeplugin/managers/LobbyManager.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@ class LobbyManager(private val plugin: ChallengePluginPlugin) {
125125

126126
// Set to slot 1 (index 0)
127127
player.inventory.setItem(0, menuItem)
128+
129+
// Equip flight gear (Elytra and rockets) for lobby
130+
plugin.elytraManager.equipLobbyFlightGear(player)
128131
}
129132

130133
/**

src/main/resources/lang/de.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ lobby:
1717
welcome: "§a§lWillkommen beim Herausforderungs-Server!"
1818
teleported: "§aZur Lobby teleportiert."
1919
spawn_set: "§aLobby-Spawn auf deine aktuelle Position gesetzt."
20+
elytra:
21+
name: "§6§lLobby-Flügel"
22+
lore: "§7Flieg mit diesen besonderen Flügeln durch die Lobby!"
23+
rocket:
24+
name: "§b§lUnendliche Rakete"
25+
lore: "§7Stufe 3 Rakete die niemals ausgeht!"
2026

2127
challenge:
2228
created: "§aHerausforderung '%name%' erfolgreich erstellt!"

src/main/resources/lang/en.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ lobby:
1717
welcome: "§a§lWelcome to the Challenge Server!"
1818
teleported: "§aTeleported to lobby."
1919
spawn_set: "§aLobby spawn set to your current location."
20+
elytra:
21+
name: "§6§lLobby Wings"
22+
lore: "§7Fly around the lobby with these special wings!"
23+
rocket:
24+
name: "§b§lInfinite Rocket"
25+
lore: "§7Level 3 rocket that never runs out!"
2026

2127
challenge:
2228
created: "§aChallenge '%name%' created successfully!"

0 commit comments

Comments
 (0)