Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

External Jar Loading of Skills #16

Open
5 tasks
Zidane opened this issue Sep 19, 2018 · 0 comments
Open
5 tasks

External Jar Loading of Skills #16

Zidane opened this issue Sep 19, 2018 · 0 comments

Comments

@Zidane
Copy link
Member

Zidane commented Sep 19, 2018

Skills core loads Skill types from xml files but does not load the logic (basically the listener code). Original idea was to do this all in xml but that became a pipe dream and too inflexible/incomprehensible for admins. Right now to make this work for the Almura server Skills has a BuiltinModule on top of the core that loads core logic:

https://github.com/AlmuraDev/Skills/blob/api-7/src/main/java/org/inspirenxe/skills/impl/content/type/skill/builtin/BuiltinEventListener.java

Here is a brain dump of things that will come up with implementing this:

  • What is an external skill to us?
    • Is it just another plugin?
    • If not a plugin, what do we allow them to do with access to the API?
      • We could inject the SkillAPI impl's PluginContainer and have the dev to register everything underneath it.
  • Need a standard setup to work on an external skill.
    • These would have a dependency on the SpongeAPI as well as the SkillAPI.
  • What metadata do we require in the external skill jar?
    • Having the Skill xml in the jar file would do I think.
  • Need a way to determine the id of the external Skill.
    • Could just have these all with the "skills" domain that way two skills named "mining" wouldn't be loaded.
      • Granted one could argue that should be allowed if they are different.
  • How much should the SkillAPI attempt to add to make writing listener code easier?
    • Right now the repo contains a "chain system" for constructing a quick way to add entries for us to cancel events, award xp/money, and send messages/effects. This could be useful to others but is quite in-flexible for advanced usecases.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant