Skip to content

Commit

Permalink
feat: money for discord link
Browse files Browse the repository at this point in the history
  • Loading branch information
makeevrserg committed Aug 29, 2023
1 parent c1ffcfd commit 830e442
Show file tree
Hide file tree
Showing 11 changed files with 47 additions and 2 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ makeevrserg.java.ktarget=17
# Project
makeevrserg.project.name=AspeKt
makeevrserg.project.group=ru.astrainteractive.aspekt
makeevrserg.project.version.string=2.5.3
makeevrserg.project.version.string=2.6.0
makeevrserg.project.description=Essentials plugin for EmpireProjekt
makeevrserg.project.developers=makeevrserg|Makeev Roman|[email protected]
makeevrserg.project.url=https://empireprojekt.ru
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ class AspeKt : JavaPlugin() {
rootModule.translation.reload()
rootModule.menuModels.reload()
rootModule.controllersModule.adminPrivateController.updateChunks()
rootModule.tempFileManager.reload()
rootModule.autoBroadcastJob.value.apply {
this.onDisable()
this.onEnable()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,5 @@ interface RootModule : Module {
val commandsModule: CommandsModule
val adminPrivateModule: AdminPrivateControllerModule
val economyProvider: Single<EconomyProvider?>
val tempFileManager: Reloadable<SpigotFileManager>
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ package ru.astrainteractive.aspekt.di.impl
import ru.astrainteractive.aspekt.di.RootModule
import ru.astrainteractive.aspekt.event.discord.controllers.di.RoleControllerModule
import ru.astrainteractive.aspekt.plugin.PluginConfiguration
import ru.astrainteractive.aspekt.plugin.PluginTranslation
import ru.astrainteractive.astralibs.economy.EconomyProvider
import ru.astrainteractive.astralibs.filemanager.SpigotFileManager
import ru.astrainteractive.astralibs.logging.Logger
import ru.astrainteractive.klibs.kdi.getValue

Expand All @@ -11,4 +14,7 @@ class RoleControllerModuleImpl(
) : RoleControllerModule {
override val pluginConfiguration: PluginConfiguration by rootModule.pluginConfig
override val logger: Logger by rootModule.logger
override val economyProvider: EconomyProvider? by rootModule.economyProvider
override val tempFileManager: SpigotFileManager by rootModule.tempFileManager
override val translation: PluginTranslation by rootModule.translation
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import ru.astrainteractive.astralibs.economy.EconomyProvider
import ru.astrainteractive.astralibs.events.EventListener
import ru.astrainteractive.astralibs.filemanager.DefaultSpigotFileManager
import ru.astrainteractive.astralibs.filemanager.FileManager
import ru.astrainteractive.astralibs.filemanager.SpigotFileManager
import ru.astrainteractive.astralibs.filemanager.impl.JVMFileManager
import ru.astrainteractive.astralibs.logging.JUtilLogger
import ru.astrainteractive.astralibs.logging.Logger
Expand Down Expand Up @@ -97,6 +98,9 @@ object RootModuleImpl : RootModule {
EconomyProviderFactory().create()
}.onFailure { it.printStackTrace() }.getOrNull()
}
override val tempFileManager: Reloadable<SpigotFileManager> = Reloadable {
DefaultSpigotFileManager(plugin.value, "temp.yml")
}

// etc
override val discordEvent = Single {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@ import github.scarsz.discordsrv.api.events.AccountUnlinkedEvent
import github.scarsz.discordsrv.dependencies.jda.api.JDA
import github.scarsz.discordsrv.dependencies.jda.api.entities.Role
import github.scarsz.discordsrv.util.DiscordUtil
import org.bukkit.Bukkit
import ru.astrainteractive.aspekt.event.discord.controllers.di.RoleControllerModule
import ru.astrainteractive.aspekt.plugin.PluginConfiguration
import ru.astrainteractive.astralibs.utils.uuid
import java.util.UUID

@Suppress("DuplicatedCode")
class DiscordController(module: RoleControllerModule) : RoleController, RoleControllerModule by module {
Expand All @@ -17,7 +20,26 @@ class DiscordController(module: RoleControllerModule) : RoleController, RoleCont
private suspend fun mapRoles(jda: JDA, list: List<String>): List<Role> =
list.mapNotNull { jda.getRoleById(it) }

private fun tryAddMoney(uuid: UUID) {
val player = Bukkit.getPlayer(uuid) ?: return
val key = "discord.linked.was_before.${player.uuid}"
val wasLinkedBefore = tempFileManager.fileConfiguration.getBoolean(key, false)
if (wasLinkedBefore) {
logger.info("DiscordEvent", "Игрок ${player.name} уже линковал аккаунт, пропускаем выдачу денег")
return
}
logger.info(
"DiscordEvent",
"Игроку ${player.name} выдано ${configuration.moneyForLink} за линковку с дискордом"
)
tempFileManager.fileConfiguration.set(key, true)
tempFileManager.save()
economyProvider?.addMoney(uuid, configuration.moneyForLink.toDouble())
player.sendMessage(translation.discordLinkReward(configuration.moneyForLink))
}

override suspend fun onLinked(e: AccountLinkedEvent) {
tryAddMoney(e.player.uniqueId)
logger.info("DiscordEvent", "Игрок ${e.player.name} линкует аккаунт")
val member = e.user?.id?.let(DiscordUtil::getMemberById) ?: run {
logger.info("DiscordEvent", "Игрок ${e.player.name} не на нашем сервере")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
package ru.astrainteractive.aspekt.event.discord.controllers.di

import ru.astrainteractive.aspekt.plugin.PluginConfiguration
import ru.astrainteractive.aspekt.plugin.PluginTranslation
import ru.astrainteractive.astralibs.economy.EconomyProvider
import ru.astrainteractive.astralibs.filemanager.SpigotFileManager
import ru.astrainteractive.astralibs.logging.Logger

interface RoleControllerModule {
val pluginConfiguration: PluginConfiguration
val logger: Logger
val economyProvider: EconomyProvider?
val tempFileManager: SpigotFileManager
val translation: PluginTranslation
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ class SortController {
val contents = clickedInventory.storageContents
val sortType = sortTypes[player.uniqueId]?.next(Sort.values()) ?: Sort.values().first()
sortTypes[player.uniqueId] = sortType
println(sortType)
clickedInventory.storageContents = when (sortType) {
Sort.TYPE_ASC -> sortByType(contents, sortType.desc)
Sort.TYPE_DESC -> sortByType(contents, sortType.desc)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ class PluginConfiguration(private val fc: FileConfiguration) {
}

inner class DiscordSRVLink {
val moneyForLink by fc.cInt("discordsrv.on_linked.add_money", 0)
val discordOnLinked = Roles("on_linked.discord")
val luckPermsOnLinked = Roles("on_linked.luckperms")
val discordOnUnLinked = Roles("on_unlinked.discord")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ class PluginTranslation(plugin: Plugin) : BaseTranslation() {
val wrongUsage = translationValue("general.wrong_usage", "#db2c18Неверное использование!")
val onlyPlayerCommand = translationValue("general.only_player_command", "#db2c18Эта команда только для игроков!")
val menuNotFound = translationValue("general.menu_not_found", "#db2c18Меню с заданным ID не найдено")
private val discordLinkReward = translationValue(
"general.discord_link_reward",
"#42f596Вы получили {AMOUNT}$ за привязку дискорда!"
)
fun discordLinkReward(amount: Number) = discordLinkReward.replace("{AMOUNT}", "${amount.toInt()}")

// Admin claim
val chunkFlagChanged = translationValue("general.adminprivate.flag_changed", "#db2c18Флаг чанка изменен!")
Expand Down
Empty file.

0 comments on commit 830e442

Please sign in to comment.