From bba46f68f96350f5ee3444d153704ff435a6b881 Mon Sep 17 00:00:00 2001 From: TheBjoRedCraft Date: Mon, 27 Oct 2025 18:37:43 +0100 Subject: [PATCH 1/7] feat: implement settings management with SettingsService and sound toggle functionality --- build.gradle.kts | 14 +++++++ .../dev/slne/surf/essentials/PaperMain.kt | 8 +++- .../listener/SpecialItemListener.kt | 13 ++++-- .../essentials/service/SettingsService.kt | 41 +++++++++++++++++++ 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt diff --git a/build.gradle.kts b/build.gradle.kts index 1a41b93..9d4754d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,6 @@ +import dev.slne.surf.surfapi.gradle.util.registerSoft +import net.minecrell.pluginyml.paper.PaperPluginDescription + plugins { id("dev.slne.surf.surfapi.gradle.paper-plugin") } @@ -5,10 +8,21 @@ plugins { group = "dev.slne.surf.essentials" version = findProperty("version") as String +dependencies { + compileOnly("dev.slne.surf.settings:surf-settings-api-common:1.21.10-1.0.0") +} + surfPaperPluginApi { mainClass("dev.slne.surf.essentials.PaperMain") generateLibraryLoader(false) foliaSupported(true) + serverDependencies { + registerSoft( + "surf-settings-paper", + loadOrder = PaperPluginDescription.RelativeLoadOrder.BEFORE + ) + } + authors.addAll("twisti", "red") } \ No newline at end of file diff --git a/src/main/kotlin/dev/slne/surf/essentials/PaperMain.kt b/src/main/kotlin/dev/slne/surf/essentials/PaperMain.kt index 99d6c55..29dfa80 100644 --- a/src/main/kotlin/dev/slne/surf/essentials/PaperMain.kt +++ b/src/main/kotlin/dev/slne/surf/essentials/PaperMain.kt @@ -1,6 +1,8 @@ package dev.slne.surf.essentials import com.github.shynixn.mccoroutine.folia.SuspendingJavaPlugin +import dev.slne.surf.essentials.service.settingsService +import dev.slne.surf.surfapi.bukkit.api.extensions.pluginManager import org.bukkit.plugin.java.JavaPlugin val plugin get() = JavaPlugin.getPlugin(PaperMain::class.java) @@ -10,12 +12,16 @@ class PaperMain : SuspendingJavaPlugin() { super.onLoad() } - override fun onEnable() { + override suspend fun onEnableAsync() { PaperCommandManager.registerAll() PaperListenerManager.registerAll() + + settingsService.register() } override fun onDisable() { super.onDisable() } + + fun hasSettingsApi() = pluginManager.isPluginEnabled("surf-settings-paper") } \ No newline at end of file diff --git a/src/main/kotlin/dev/slne/surf/essentials/listener/SpecialItemListener.kt b/src/main/kotlin/dev/slne/surf/essentials/listener/SpecialItemListener.kt index 6fa8178..8f8bc6a 100644 --- a/src/main/kotlin/dev/slne/surf/essentials/listener/SpecialItemListener.kt +++ b/src/main/kotlin/dev/slne/surf/essentials/listener/SpecialItemListener.kt @@ -1,5 +1,8 @@ package dev.slne.surf.essentials.listener +import com.github.shynixn.mccoroutine.folia.launch +import dev.slne.surf.essentials.plugin +import dev.slne.surf.essentials.service.settingsService import dev.slne.surf.essentials.service.specialItemService import dev.slne.surf.essentials.util.util.appendNewLineArrow import dev.slne.surf.essentials.util.util.translatable @@ -70,9 +73,13 @@ object SpecialItemListener : Listener { success(" erhalten!") } - it.playSound(sound { - type(Sound.ENTITY_ENDER_DRAGON_GROWL) - }, net.kyori.adventure.sound.Sound.Emitter.self()) + plugin.launch { + if (settingsService.hasSoundsEnabled(it.uniqueId)) { + it.playSound(sound { + type(Sound.ENTITY_ENDER_DRAGON_GROWL) + }, net.kyori.adventure.sound.Sound.Emitter.self()) + } + } } } } \ No newline at end of file diff --git a/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt b/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt new file mode 100644 index 0000000..4228482 --- /dev/null +++ b/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt @@ -0,0 +1,41 @@ +package dev.slne.surf.essentials.service + +import dev.slne.surf.settings.api.common.dsl.settings +import dev.slne.surf.settings.api.common.surfSettingApi +import java.util.* + +class SettingsService { + suspend fun register() { + settings { + category { + identifier = CATEGORY_ID + displayName = "Essentials" + description = "Essentials Settings" + } + + setting { + identifier = ID_SOUNDS + withCategory(CATEGORY_ID) + displayName = "Geräusche" + description = "Aktiviert oder deaktiviert Geräusche für verschiedene Aktionen." + defaultValue = "true" + } + } + } + + suspend fun hasSoundsEnabled(uuid: UUID): Boolean { + val setting = surfSettingApi.getSetting(ID_SOUNDS) ?: return false + val value = surfSettingApi.getEntry(uuid, setting) + + return value?.value?.toBooleanStrictOrNull() ?: false + } + + + companion object { + val INSTANCE = SettingsService() + const val CATEGORY_ID = "surf_essentials" + const val ID_SOUNDS = "sounds" + } +} + +val settingsService get() = SettingsService.INSTANCE \ No newline at end of file From 84b5ffb4d5127a0ac16a75824fac94a15c36f362 Mon Sep 17 00:00:00 2001 From: TheBjoRedCraft Date: Sun, 2 Nov 2025 01:44:28 +0100 Subject: [PATCH 2/7] feat: update surf-settings-api-common version and refactor sound settings --- build.gradle.kts | 2 +- .../essentials/service/SettingsService.kt | 21 +++++++------------ 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 9d4754d..ae4c4bc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,7 @@ group = "dev.slne.surf.essentials" version = findProperty("version") as String dependencies { - compileOnly("dev.slne.surf.settings:surf-settings-api-common:1.21.10-1.0.0") + compileOnly("dev.slne.surf.settings:surf-settings-api-common:1.21.10-1.0.1") } surfPaperPluginApi { diff --git a/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt b/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt index 4228482..8c6bd0e 100644 --- a/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt +++ b/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt @@ -7,24 +7,19 @@ import java.util.* class SettingsService { suspend fun register() { settings { - category { - identifier = CATEGORY_ID - displayName = "Essentials" - description = "Essentials Settings" - } - setting { - identifier = ID_SOUNDS - withCategory(CATEGORY_ID) - displayName = "Geräusche" - description = "Aktiviert oder deaktiviert Geräusche für verschiedene Aktionen." + identifier = SPECIAL_ITEM_SOUNDS + displayName = "Special Item Geräusche" + description = + "Aktiviert oder deaktiviert Geräusche, wenn ein Spieler ein besonderen Gegenstand erhält." + category = CATEGORY_ID defaultValue = "true" } } } suspend fun hasSoundsEnabled(uuid: UUID): Boolean { - val setting = surfSettingApi.getSetting(ID_SOUNDS) ?: return false + val setting = surfSettingApi.getSetting(SPECIAL_ITEM_SOUNDS) ?: return false val value = surfSettingApi.getEntry(uuid, setting) return value?.value?.toBooleanStrictOrNull() ?: false @@ -33,8 +28,8 @@ class SettingsService { companion object { val INSTANCE = SettingsService() - const val CATEGORY_ID = "surf_essentials" - const val ID_SOUNDS = "sounds" + const val CATEGORY_ID = "essentials" + const val SPECIAL_ITEM_SOUNDS = "essentials-special_item_sounds" } } From 63d2214f07677c83286cb0119d71de96686d4e3f Mon Sep 17 00:00:00 2001 From: TheBjoRedCraft Date: Sun, 2 Nov 2025 01:52:47 +0100 Subject: [PATCH 3/7] chore: update version to 1.21.10-2.0.4-SNAPSHOT in gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 41a2757..4984c26 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ kotlin.code.style=official kotlin.stdlib.default.dependency=false org.gradle.parallel=true -version=1.21.10-2.0.3-SNAPSHOT \ No newline at end of file +version=1.21.10-2.0.4-SNAPSHOT \ No newline at end of file From 205be400e384eed7d286915edd610e69c0e26ba3 Mon Sep 17 00:00:00 2001 From: TheBjoRedCraft Date: Sun, 2 Nov 2025 01:53:55 +0100 Subject: [PATCH 4/7] feat: conditionally register settings service if settings API is available --- src/main/kotlin/dev/slne/surf/essentials/PaperMain.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/dev/slne/surf/essentials/PaperMain.kt b/src/main/kotlin/dev/slne/surf/essentials/PaperMain.kt index 29dfa80..84a7d3c 100644 --- a/src/main/kotlin/dev/slne/surf/essentials/PaperMain.kt +++ b/src/main/kotlin/dev/slne/surf/essentials/PaperMain.kt @@ -16,7 +16,9 @@ class PaperMain : SuspendingJavaPlugin() { PaperCommandManager.registerAll() PaperListenerManager.registerAll() - settingsService.register() + if (hasSettingsApi()) { + settingsService.register() + } } override fun onDisable() { From 37c61c6fcb6070618a42ba82ff965eb59b8fe91f Mon Sep 17 00:00:00 2001 From: TheBjoRedCraft Date: Sun, 2 Nov 2025 01:56:06 +0100 Subject: [PATCH 5/7] feat: add logging for surf-settings registration and check settings API availability --- .../surf/essentials/listener/SpecialItemListener.kt | 10 ++++++---- .../slne/surf/essentials/service/SettingsService.kt | 3 +++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/dev/slne/surf/essentials/listener/SpecialItemListener.kt b/src/main/kotlin/dev/slne/surf/essentials/listener/SpecialItemListener.kt index 8f8bc6a..26ce235 100644 --- a/src/main/kotlin/dev/slne/surf/essentials/listener/SpecialItemListener.kt +++ b/src/main/kotlin/dev/slne/surf/essentials/listener/SpecialItemListener.kt @@ -74,10 +74,12 @@ object SpecialItemListener : Listener { } plugin.launch { - if (settingsService.hasSoundsEnabled(it.uniqueId)) { - it.playSound(sound { - type(Sound.ENTITY_ENDER_DRAGON_GROWL) - }, net.kyori.adventure.sound.Sound.Emitter.self()) + if (plugin.hasSettingsApi()) { + if (settingsService.hasSoundsEnabled(it.uniqueId)) { + it.playSound(sound { + type(Sound.ENTITY_ENDER_DRAGON_GROWL) + }, net.kyori.adventure.sound.Sound.Emitter.self()) + } } } } diff --git a/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt b/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt index 8c6bd0e..482bd24 100644 --- a/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt +++ b/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt @@ -2,10 +2,12 @@ package dev.slne.surf.essentials.service import dev.slne.surf.settings.api.common.dsl.settings import dev.slne.surf.settings.api.common.surfSettingApi +import dev.slne.surf.surfapi.core.api.util.logger import java.util.* class SettingsService { suspend fun register() { + logger().atInfo().log("Hooking into surf-settings...") settings { setting { identifier = SPECIAL_ITEM_SOUNDS @@ -16,6 +18,7 @@ class SettingsService { defaultValue = "true" } } + logger().atInfo().log("Successfully hooked into surf-settings.") } suspend fun hasSoundsEnabled(uuid: UUID): Boolean { From 8f294164ac50834ec49499b504b7e44fb7d8c1dd Mon Sep 17 00:00:00 2001 From: TheBjoRedCraft Date: Sun, 2 Nov 2025 01:57:35 +0100 Subject: [PATCH 6/7] feat: ensure sound plays for ender dragon growl in all conditions --- .../dev/slne/surf/essentials/listener/SpecialItemListener.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/kotlin/dev/slne/surf/essentials/listener/SpecialItemListener.kt b/src/main/kotlin/dev/slne/surf/essentials/listener/SpecialItemListener.kt index 26ce235..408aadf 100644 --- a/src/main/kotlin/dev/slne/surf/essentials/listener/SpecialItemListener.kt +++ b/src/main/kotlin/dev/slne/surf/essentials/listener/SpecialItemListener.kt @@ -80,6 +80,10 @@ object SpecialItemListener : Listener { type(Sound.ENTITY_ENDER_DRAGON_GROWL) }, net.kyori.adventure.sound.Sound.Emitter.self()) } + } else { + it.playSound(sound { + type(Sound.ENTITY_ENDER_DRAGON_GROWL) + }, net.kyori.adventure.sound.Sound.Emitter.self()) } } } From 57fc3601141d053e938015d541aaf7c3f3a4cd8f Mon Sep 17 00:00:00 2001 From: TheBjoRedCraft <143264463+TheBjoRedCraft@users.noreply.github.com> Date: Sun, 2 Nov 2025 02:27:38 +0100 Subject: [PATCH 7/7] Update src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../kotlin/dev/slne/surf/essentials/service/SettingsService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt b/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt index 482bd24..e8050ef 100644 --- a/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt +++ b/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt @@ -13,7 +13,7 @@ class SettingsService { identifier = SPECIAL_ITEM_SOUNDS displayName = "Special Item Geräusche" description = - "Aktiviert oder deaktiviert Geräusche, wenn ein Spieler ein besonderen Gegenstand erhält." + "Aktiviert oder deaktiviert Geräusche, wenn ein Spieler einen besonderen Gegenstand erhält." category = CATEGORY_ID defaultValue = "true" }