Vault

Vault

7M Downloads

Multiple Currencies

Devinish opened this issue ยท 6 comments

commented

We have been getting quite a few requests in SignShop to use multiple currencies for the shops. Because we are using Vault to handle all of the transactions, we'd like for you guys to build it in. We'd like deposit/withdrawlPlayer() to have the currency type associated with the amount, as well as has(). In general it would be nice if Vault just handled multiple currencies better, but modifying those functions would be a good start.

Thanks guys,
The SignShop Team

commented

As a SignShops user, in a bukkit multiverse, with aspirations to create complex economies.... yes. Anything that can make this happen would be much appreciated.

commented

We have no intentions of expanding the API in vault to do MultiCurrencies. It's arbitrarily complex and feel it doesn't add any benefit both in server tech, and even more from a developmental perspective. The obscurity it creates has no functional use. Thus, if you'd like multicurrencies I'd suggest treating them identically to Item-currencies and manually hooking them.

I've done a lot of testing on this issue with servers, and have seen that it simply is not a beneficial outcome for the end-user. I realize some servers would want this anyway, and if that's the case I'm sorry, but you'll need to build plugins specifically around it. Vault is a simplification layer, and MultiCurrency support does absolutely nothing simple, both for the player and for the server hence why it's so difficult to deal with.

commented

I think you are overcomplicating things. The support we are looking for can be written in 20 lines of code. I also think assuming what the end user wants is a mistake. It's very obvious what the end user wants, we've had several requests for this feature.

commented

If you have a simple solution that you can already make a pull request for that would accommodate what you're looking for, I'd be willing to pull it.

commented

"It's arbitrarily complex and feel it doesn't add any benefit both in server tech, and even more from a developmental perspective. The obscurity it creates has no functional use."

!
No functional use? I don't know how difficult this would be to code, and if it's simply not possible, that's fine, but to say that multicurrency support has no functional use is absurd. I had wanted to institute a multicurrency system in my server for months, and the major roadblock was the lack of support for it by shop plugins (as well as the difficulty in establishing dynamic exchange rates, although I THINK I might be able to do this part by using dummy items created by MoreMaterials as proxies for currency that can be used in a dynamic economy plugin like Hyperconomy).

Granted, I've also found that my idea of fun is different from the mainstream concepts, so maybe no one else wants this. But I personally found the multicurrency concept to be essential to creating a realistic economy, and it would add another feature for politics between factions.

commented

@TypicalName - I previously worked on DynamicMarket, and had first-hand experience attempting to work on stuff like this on a server. After going at it from multiple ways the end result to the user was the same: An arbitrarily complex way to inflate the market, or allow them exchange items. In the end it didn't serve to do anything but provide a means to play a stock system so long-term players could try and make extra money.

While this is indeed a goal some might have, the point of doing it in an economy plugin is lost, as you could easily make some form of a stocks game. There ends up being very little difference in the end and the largest difference to the user is simply liquidity.

This is why I say it has no functional use. You can provide a similarly engaging market system without forcing a developer to support multicurrency. Even if Vault was patched to include it, every single plugin that uses economy would need to be bothered to fix it too.

Secondarily, my last comment says that I'm willing to accept a PR that already has the functionality implemented, even though I disagree with it's uses and feel it's not an advancement for developers.