diff --git a/build.gradle.kts b/build.gradle.kts index 1a41b93..ae4c4bc 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.1") +} + 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/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 diff --git a/src/main/kotlin/dev/slne/surf/essentials/PaperMain.kt b/src/main/kotlin/dev/slne/surf/essentials/PaperMain.kt index 99d6c55..84a7d3c 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,18 @@ class PaperMain : SuspendingJavaPlugin() { super.onLoad() } - override fun onEnable() { + override suspend fun onEnableAsync() { PaperCommandManager.registerAll() PaperListenerManager.registerAll() + + if (hasSettingsApi()) { + 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..408aadf 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,19 @@ object SpecialItemListener : Listener { success(" erhalten!") } - it.playSound(sound { - type(Sound.ENTITY_ENDER_DRAGON_GROWL) - }, net.kyori.adventure.sound.Sound.Emitter.self()) + plugin.launch { + if (plugin.hasSettingsApi()) { + if (settingsService.hasSoundsEnabled(it.uniqueId)) { + it.playSound(sound { + 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()) + } + } } } } \ 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..e8050ef --- /dev/null +++ b/src/main/kotlin/dev/slne/surf/essentials/service/SettingsService.kt @@ -0,0 +1,39 @@ +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 + displayName = "Special Item Geräusche" + description = + "Aktiviert oder deaktiviert Geräusche, wenn ein Spieler einen besonderen Gegenstand erhält." + category = CATEGORY_ID + defaultValue = "true" + } + } + logger().atInfo().log("Successfully hooked into surf-settings.") + } + + suspend fun hasSoundsEnabled(uuid: UUID): Boolean { + val setting = surfSettingApi.getSetting(SPECIAL_ITEM_SOUNDS) ?: return false + val value = surfSettingApi.getEntry(uuid, setting) + + return value?.value?.toBooleanStrictOrNull() ?: false + } + + + companion object { + val INSTANCE = SettingsService() + const val CATEGORY_ID = "essentials" + const val SPECIAL_ITEM_SOUNDS = "essentials-special_item_sounds" + } +} + +val settingsService get() = SettingsService.INSTANCE \ No newline at end of file