Zrips / Jobs

Jobs
Apache License 2.0
187 stars 215 forks source link

[CMILib] Move Jobs SHOP to CMILib #1375

Open mrfloris opened 2 years ago

mrfloris commented 2 years ago

Yep, here I am again thinking outside of the box without thinking through the technical consequences. But I want to throw this out there at least.

This is perhaps more a CMILib feature request than anything, as it can impact all plugins. But since it has no repository, and Jobs is the one with the shops yaml configuration file, I thought I'd post it here. Thank you for even reading/considering and/or discussing it.

CMI recently had an Update for the Homes gui feature, which introduced a more modern menu that really took it to the next level. The navigation buttons alone and tinted glass around the outer edges made it more of an interface than just a weird blank gui or text list. Hopefully we will see these tweaks move to cmi kits and cmi warps etc as well. And jobs? And trade? And bottled Exp? or other plugins from zrips with gui where we can user-interact and trade, sell, buy things?

My suggestion is to utilize CMILib perhaps as a central GUI api sorta thing that Jobs and CMI and Trade and other plugins can use to build up any transaction or gui interface with. Jobs for example could use this to have better material support to build a store, as well as more dynamic ways of dealing with currencies besides just points, kinda how trademe has it. And also has a friendlier way of displaying items and buy-confirmation steps, or in-game editing ala cmi kiteditor. So we dont have to spend hours editing files when we can /jobs shopeditor and drag items in, get a gui where we can click on set a title, lore, page, position, permission, if it's enabled or not, and type of currency (item, money or jobs points).

Indirectly this would then also offer the /sell to have a brother called /buy in CMI ;)

I can imagine

~/plugins/CMILib/shops/
 .. cmi-players.yml
 .. cmi-vip.yml
 .. trademe.yml
 .. bottledexp-trade.yml
 .. jobs-shop.yml

And the header of these files could look for example like this:

# must be one of the allowed plugin id like jobs, cmi, trademe, bottledexp, residence, etc
# setting it to jobs will load it in /jobs shops, setting it to cmi will load it in /cmi shops
plugin: cmi

# description
shop-description: '{#black}Server Shop for Players Group'

# players with the permission use this when it's set to true.
shop-enabled: true

# permission (must be unique!)
shop-permission: shop.cmiplayers

...etc

This would allow us for bottledexp to make a gui to give the player an interface with an information book, show their available balance, and a spot to put in the required item, and then click icon to exchange available, max items, or max money ..

This would allow us for trademe to get a fresher gui that shows recognizable trademenu where we can use money, jobs points, or even items, kinda how it is now, but perhaps optional pages and an interface with book with instructions, and other navigation buttons like in cmi homes.

This would help the jobs plugin to have a more dynamic multiple paged shop that we have some control over.

I can imagine that /cmi shops would even get more dynamic, creating admin shops for example where players can buy certain items based on worth.yml value.

And they can all have easier in-game editors to make items, add those items, store it in a file, etc.

And finally, if we have these files, it will be nicer to exchange these files with other jobs or cmi server owners

mrfloris commented 2 years ago

I hope once some annoying bugs from jobs that have been lingering have been addressed and that now that things are also in cmilib .. that we can move some of the modern approaches over to jobs and enhance some of the jobs features that feel not so dynamic now.

An example is the ability to decide what to do with the main /jobs command (when the player types it), to me it makes no sense that we can't point it some txt file to load or run some tellraw command to display a link with info, or it loading the list of commonly used commands instead of full help, or that we can tell it to just open /jobs browse instead of /jobs help.

#effectively running /jobs help (as it does now)

# What happens when they type /jobs with no parameter
# options: (default help) help, browse, stats, command
jobs-cmd: help
jobs-cmd-extra: ''
#effectively running /jobs help 5

# What happens when they type /jobs with no parameter
# options: (default help) help, browse, stats, command
jobs-cmd: help
jobs-cmd-extra: '5'
#effectively running a console command /cmi ctellraw .. to present a custom link that loads a video

# What happens when they type /jobs with no parameter
# options: (default help) help, browse, stats, command
jobs-cmd: command
jobs-cmd-extra: 'cmi ctellraw [playerName] <T>Watch our Jobs video (click me)</T><URL>https://example.com</URL>'

etc.