#ShopAPI 질문

1 messages · Page 1 of 1 (latest)

livid sedge
#

혹시 currency_key에 해당하는 Currency 객체를 받아올 수 있는 API 메서드가 존재할까요?

delicate escarp
#

커렌시 셋 불러올 수 있을 걸요

livid sedge
delicate escarp
#

api.getShopService().all()

livid sedge
delicate escarp
#

아 저거 아님

livid sedge
#

Currency 객체는 따로 없는거 같고 Wallet(CurrencyKey)로 불러오는 방식인거 같네요

#

WalletService 추적해보니깐 그런거 같아요..

delicate escarp
#

키가 무조건 있어야 하는데

#

이건 꽁플님한테 만들어 달라고

#

하는 게

delicate escarp
#

CustomWalletAdapter::getCurrencies에는 어댑트한 것만 나오나요?

#

Hqshop에서 만든 커렌시 안 나오나?

#

한 번 해보셔요

livid sedge
#

delicate escarp
#

커스텀

livid sedge
#

winged flare
#

네 ?

livid sedge
delicate escarp
#

보니까 CurrencyVO가 어댑트하는 건데

#

Hqshop의 Currency 나올 듯

#

Api버전 몇이에요

livid sedge
#

1.0.3 입니다

delicate escarp
#

1.0.7-SNAPSHOT

delicate escarp
#

제가 볼 땐 이거 맞을 듯여

livid sedge
#

아 맞는거 같아요 감사합니다

winged flare
#

어댑트한거만 나올걸여

#

아닌가 ?!

delicate escarp
#

?

livid sedge
delicate escarp
#

Set<CurrencyVO> 리턴이 아니라 Set<Currency> 리턴인데

#

아 바꾸나

winged flare
#

엄엄

#

currency 는 근데

#

database 에 있어서

#

크흠~

#

suspend ㄱ괜츈 ?

livid sedge
#

HQUpgrade Vault 연결 때문에...

winged flare
#

엇 runBlocking ?

winged flare
#

coroutine

#

아니면

#

제가 코루틴으로 던져드리고

#

consumer 로

#

자바도 쓰게끔

delicate escarp
#

오 자바유저는 좋습니다 ㅋㅋㅋ

winged flare
#

근데 Vault 는

#

그냥 Vault API 쓰셔야되긴함여

#

제 currency 에도 안잡힐거라

delicate escarp
#

그냥 명칭만 vault라 표현한 거 아닌가?

winged flare
#

맞아여 ㅇㅁㅇ ㅋㅋ 그래도 키는 잡아야해서 vault 키 잡으면 Vault쪽으로 훅

winged flare
#

제쪽 currency 에는 커스텀으로 추가된것만 있을듯 ?

delicate escarp
#

근데 상점 바이너리 파일 db에 보관하는 건 어떻게 생각하나요? ㅋㅋㅋㅋ
프록시 서버면 쓸만할텐데 많이 느리려나

winged flare
#

약간 db 로 상점을 올릴까~ 하다가

#

상점이 A,B 서버에 동시에 있는 경우가 없을 것 같아서 놨었는데

delicate escarp
#

캬 빠르다

winged flare
#

아무래도 다른 쓰래드로 넘어가기때문에

#

혹~시나 메인 쓰래드에서 이후 작업을 한다면

#

consumer 안에서나 뭐 가져와서 다시 메인쓰래드에서 작업하도록 하는 작업이 필요하긴 할듯용

#

runTask ?

winged flare
#

아 제가 메인으로 다시 보내주면 되겠네요

livid sedge
#

@winged flare 혹시 HQFramework에서는 Vault를 사용 할 수 없는건가여

winged flare
#

엄 ? 그

#

Vault 는 자동으로 연결되긴해여

#

근데 이제 저게

#

HQShop 로드 전에

#

ServicesManager 에 register 해주셔야될듯여

#

지금 보면 HQShop 로드 이후에 Economy 구현체를 등록하는 것 같은데

#

HQShop 로드 전에 등록되도록 구조를 바꾸셔야되긴해영

winged flare
#

근데 약간 비추하는게

#

HQShop 안에서 만들어진 재화는 database 에서 가져오는거라 Vault 로 연결하면

#

서버 그 뚝뚝 끊기실수도

livid sedge
winged flare
#

아 Shop 에서 만든 재화여 ?

livid sedge
#

네네

delicate escarp
#

그거 월렛 가져아서

#

빼기 하면 돼요

delicate escarp
#

플레이어 월렛 가져오고

winged flare
#

#1326514503520882760 message

delicate escarp
#

거기서 특정 커렌시.가져오고

#

빼면

winged flare
#

그리고 그

#

wallet 가져가는거

#

uniqueId 로 하시면

#

database 에 있는거 긁어서

#

Player 로 가져가시는걸 추천드려여

#

그건 메모리에있는걸로 가져가서

livid sedge
livid sedge
#

제가 여쭈어보는건 Vault 자동 연결된 HQShop-Currency 입니다

winged flare
#

자동 연결 된다는건 그

#

Vault 에 Economy 를 등록한 경우인데

#

지금 보니까

#

Vault 에 HQShop 재화를 등록하는 경우로 보이네여

livid sedge
#

네네 맞아요

winged flare
#

저런 경우는 위 처럼 하시되

#

Wallet 가져갈때 Player 로 가져가게 하심 될듯용

#

패치 올렸어여

winged flare
#

근데

#

@Module

#

어케 아셨지

#

따로 안적었는데

#

개고수 ;;

livid sedge
#

코사인님 오픈소스 확인했어요

winged flare
#

eee

livid sedge
#
@PluginDepend(["Vault", "HQShop"])
@Module
class VaultHookModule(
    private val serviceManager: ServicesManager,
    private val plugin: HQBukkitPlugin,
    private val server: Server,
    private val settingRegistry: SettingRegistry
) {

    @Setup
    fun setup() {
        serviceManager.register(Economy::class.java, object : AbstractEconomy() {

            private val shopAPI: ShopAPI by lazy {
                serviceManager.getRegistration(ShopAPI::class.java)?.provider!!
            }

            override fun isEnabled(): Boolean = settingRegistry.isEnabled()

            override fun getName(): String = "HQCurrencyVault"

            override fun hasBankSupport(): Boolean = false

            override fun fractionalDigits(): Int = 0

            override fun format(amount: Double): String = ""

            override fun currencyNamePlural(): String = ""

            override fun currencyNameSingular(): String =  ""

            override fun hasAccount(playerName: String?): Boolean = true

            override fun hasAccount(playerName: String?, worldName: String?): Boolean = true

            override fun getBalance(playerName: String): Double {
                return runBlocking {
                    shopAPI.getWalletService().getWallet(
                        server.getOfflinePlayer(playerName).uniqueId
                    )?.getBalance(settingRegistry.getCurrencyKey()!!)?.toDouble() ?: 0.0
                }
            }
...
winged flare
#

softDepend 에 HQShop 거시고

#

service manager 에서 받아가지마시공 저기 settingRegistry 아래에 ShopAPI 도 주입받으셔용

livid sedge
#
name: HQCurrencyVault
main: dev.skh6075.hqcurrencyvault.Bootstrap
version: 1.0.0
api-version: 1.19
depend:
  - HQFramework
  - Vault
softdepend:
  - HQShop
@PluginDepend(["Vault", "HQShop"])
@Module
class VaultHookModule(
    private val serviceManager: ServicesManager,
    private val plugin: HQBukkitPlugin,
    private val server: Server,
    private val settingRegistry: SettingRegistry,
    private val shopAPI: ShopAPI
) {

    @Setup
    fun setup() {
        serviceManager.register(Economy::class.java, object : AbstractEconomy() {

            override fun isEnabled(): Boolean = settingRegistry.isEnabled()

            override fun getName(): String = "HQCurrencyVault"

            override fun hasBankSupport(): Boolean = false

            override fun fractionalDigits(): Int = 0

            override fun format(amount: Double): String = ""

            override fun currencyNamePlural(): String = ""

            override fun currencyNameSingular(): String =  ""

            override fun hasAccount(playerName: String?): Boolean = true

            override fun hasAccount(playerName: String?, worldName: String?): Boolean = true

            override fun getBalance(playerName: String): Double {
                return runBlocking {
                    shopAPI.getWalletService().getWallet(
                        server.getOfflinePlayer(playerName).uniqueId
                    )?.getBalance(settingRegistry.getCurrencyKey()!!)?.toDouble() ?: 0.0
                }
            }
...
livid sedge
#

@winged flare 우선 HQFramework가 아니라 레거시로 제작해서 성공했습니다
그런데, 사진과 같이 %player.formatted-vault% placeholder가 동작하지 않습니다
Vault연결은 확인했습니다

winged flare
#

서버에 Vault 에 연결 된 다른 플러그인이 있는거 아닌가용 ?

#

아~

#

formatted-vault ?

#

그건 아마 안먹을거에여

#

그건 외부에서 Economy 를 구현했을때 사용되는 placeholder 긴 해요

#

근데 지금 구조가 이해가 안되는게 음 ..

#

HQShop에서 만든 재화를

#

외부에서 사용하기 위해 Economy 를 구현한게 아닌가요 ?

livid sedge
#

네네 맞아요

winged flare
#

그럼 그 재화를 표시하면 되는거 아닌가용 ?

#

%player.formatted-재화키%

#

vault 는 외부 연결용이고 HQShop내에는 그 재화가 있을테니깐용

livid sedge
winged flare
#

네네 그걸 그 shop 테마에다가용

#

소지금 : 0 이라고 뜨는 부분에

#

0 에 vault 가 걸려있다는거 아닌가융 ?

#

소지금 : %player.formatted-vault% 를

#

소지금 : %player.formatted-gold% 로

livid sedge
#

아 잘되네요 감사합니다

winged flare
#

아하 !

#

다행이네요!_!

livid sedge
#
[13:12:56] [Server thread/INFO]: [HQUpgrade] Enabling HQUpgrade v1.0.6
[13:12:56] [DefaultDispatcher-worker-1/INFO]: [HQUpgrade] Enabling.
[13:12:56] [customcrops-worker-3/INFO]: [CustomCrops] You are using the latest version.
[13:12:56] [Server thread/WARN]: org.koin.core.error.InstanceCreationException: Could not create instance for '[Singleton:'kr.hqservice.upgrade.core.hook.vault.EconomyManager',binds:java.lang.Object]'
[13:12:56] [Server thread/WARN]:     at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:57)
[13:12:56] [Server thread/WARN]:     at org.koin.core.instance.SingleInstanceFactory.create(SingleInstanceFactory.kt:46)
[13:12:56] [Server thread/WARN]:     at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:55)
[13:12:56] [Server thread/WARN]:     at org.koin.core.instance.SingleInstanceFactory$get$1.invoke(SingleInstanceFactory.kt:53)
[13:12:56] [Server thread/WARN]:     at org.koin.mp.KoinPlatformTools.synchronized(KoinPlatformTools.kt:36)
[13:12:56] [Server thread/WARN]:     at org.koin.core.instance.SingleInstanceFactory.get(SingleInstanceFactory.kt:53)
[13:12:56] [Server thread/WARN]:     at hqframework-bukkit-dist.jar//kr.hqservice.framework.global.core.component.registry.AbstractComponentRegistry.injectParameters(AbstractComponentRegistry.kt:412)
[13:12:56] [Server thread/WARN]:     at hqframework-bukkit-dist.jar//kr.hqservice.framework.global.core.component.registry.AbstractComponentRegistry.callByInjectedParameters(AbstractComponentRegistry.kt:356)
[13:12:56] [Server thread/WARN]:     at hqframework-bukkit-dist.jar//kr.hqservice.framework.global.core.component.registry.AbstractComponentRegistry.callByInjectedParameters$default(AbstractComponentRegistry.kt:352)

HQUpgrade 플러그인 활성화가 안되는데 혹시 Vault와 관련이 있을까요

minor bough
#

😭

winged flare
#

엄 그 hqupgrade 가

#

지금 그 새로만드신 플러그인을 의존하게 하셔야해유

livid sedge
livid sedge
winged flare
#

HQUpgrade의 plugin.yml 을 수정해보시겠어영

#

softdepend 에 직접 만드신 그 economy 플러그인을 걸어주세유

livid sedge
winged flare
#

그거 그 알집 열어서 수정할 수 있긴해여

#

jar 파일

livid sedge
#

6시10분쯤 집 도착해서 그때 수정 한 번 해보겠습니다 감사합니다

livid sedge