From f38382c2a71b0f0be8b12542a1eea127a7e21332 Mon Sep 17 00:00:00 2001 From: Jo_field <150937665+JoField08@users.noreply.github.com> Date: Fri, 27 Feb 2026 17:38:31 +0100 Subject: [PATCH] feat: add setting to toggle parkour sounds in lobby --- .../dev/slne/surf/settings/paper/PaperMain.kt | 1 + .../paper/menu/sub/LobbySettingsMenu.kt | 77 ++++++++++++++++++- 2 files changed, 76 insertions(+), 2 deletions(-) diff --git a/surf-settings-paper/src/main/kotlin/dev/slne/surf/settings/paper/PaperMain.kt b/surf-settings-paper/src/main/kotlin/dev/slne/surf/settings/paper/PaperMain.kt index 5b545e6..2d2f749 100644 --- a/surf-settings-paper/src/main/kotlin/dev/slne/surf/settings/paper/PaperMain.kt +++ b/surf-settings-paper/src/main/kotlin/dev/slne/surf/settings/paper/PaperMain.kt @@ -30,6 +30,7 @@ class PaperMain : SuspendingJavaPlugin() { surfSettingsApi.createSetting("chat_deathmessages", true.toString()) surfSettingsApi.createSetting("direct_messages", true.toString()) surfSettingsApi.createSetting("lobby_scroll_sound", false.toString()) + surfSettingsApi.createSetting("lobby_parkour_sound", true.toString()) surfSettingsApi.createSetting("clan_invites", true.toString()) surfSettingsApi.createSetting("clan_chat_messages", true.toString()) surfSettingsApi.createSetting("friend_requests", true.toString()) diff --git a/surf-settings-paper/src/main/kotlin/dev/slne/surf/settings/paper/menu/sub/LobbySettingsMenu.kt b/surf-settings-paper/src/main/kotlin/dev/slne/surf/settings/paper/menu/sub/LobbySettingsMenu.kt index 956b41b..88a95da 100644 --- a/surf-settings-paper/src/main/kotlin/dev/slne/surf/settings/paper/menu/sub/LobbySettingsMenu.kt +++ b/surf-settings-paper/src/main/kotlin/dev/slne/surf/settings/paper/menu/sub/LobbySettingsMenu.kt @@ -55,9 +55,14 @@ fun openLobbySettingsMenu(player: HumanEntity): SurfChestGui = ?: false val originalHotbarScrollSounds = hotbarScrollSounds + var parkourSounds = + surfSettingsApi.getPlayerSetting(player.uniqueId, "lobby_parkour_sound")?.getBoolean() + ?: false + val originalParkourSounds = parkourSounds + addPane( ToggleButton( - 4, 2, 1, 1, hotbarScrollSounds + 3, 2, 1, 1, hotbarScrollSounds ).apply { setDisabledItem(GuiItem(lobbyScrollSoundsItem(false)) { hotbarScrollSounds = true @@ -82,6 +87,33 @@ fun openLobbySettingsMenu(player: HumanEntity): SurfChestGui = }) }) + addPane( + ToggleButton( + 5, 2, 1, 1, parkourSounds + ).apply { + setDisabledItem(GuiItem(lobbyParkourSoundsItem(false)) { + parkourSounds = true + it.whoClicked.sendText { + appendSuccessPrefix() + success("Du hast Parkour Sounds nun") + variableValue("aktiviert") + success(".") + } + it.whoClicked.playClickSound() + }) + + setEnabledItem(GuiItem(lobbyParkourSoundsItem(true)) { + parkourSounds = false + it.whoClicked.sendText { + appendSuccessPrefix() + success("Du hast Parkour Sounds nun") + variableValue("deaktiviert") + success(".") + } + it.whoClicked.playClickSound() + }) + }) + show(player) setOnClose { @@ -90,7 +122,14 @@ fun openLobbySettingsMenu(player: HumanEntity): SurfChestGui = surfSettingsApi.saveSetting( it.player.uniqueId, "lobby_scroll_sound", - hotbarScrollSounds.toString() + parkourSounds.toString() + ) + } + if (parkourSounds != originalParkourSounds) { + surfSettingsApi.saveSetting( + it.player.uniqueId, + "lobby_parkour_sound", + parkourSounds.toString() ) } } @@ -137,5 +176,39 @@ private fun lobbyScrollSoundsItem(currentState: Boolean) = buildItem(Material.ST } } +private fun lobbyParkourSoundsItem(currentState: Boolean) = buildItem(Material.STONE_BUTTON) { + displayName { + localColored("Parkour Sounds".toSmallCaps(), TextDecoration.BOLD) + } + + buildLore { + emptyLine() + line { + variableValue("Beschreibung:".toSmallCaps()) + } + + line { + localColored("Steuert die Sounds während des Parkours in der Lobby.") + } + + emptyLine() + line { + variableValue("Status:".toSmallCaps()) + } + + line { + spacer("-") + appendSpace() + localColored(if (currentState) "Aktiviert" else "Deaktiviert") + } + + emptyLine() + + line { + spacer("Klicke, um die Einstellung zu ändern") + } + } +} + private fun SurfComponentBuilder.localColored(text: Any, vararg decoration: TextDecoration) = text(text.toString(), TextColor.fromHexString("#42f590"), *decoration) \ No newline at end of file