KraftRPG Official Thread

Without there being a suitable replacement for DBO, I’m starting an official thread here for KraftRPG until there is an official replacement.

KraftRPG never made it to release on Bukkit, but the API is easily modifiable to port it to most any ServerModAPI (in this case, Sponge), so, as soon as Sponge is in a more developed stage, early builds of KraftRPG will be made available for testing.


CurrentDiscussion

KraftRPG is in the transition to being implemented on SpongeAPI. Several modifications were necessary to support the transition that warranted a cease on development to support the now deprecated Bukkit API.


###KraftRPG will attempt to have the following features either on release or shortly after:

  • Skills
    • Modular skills that can be designed with ease
    • Skill templates provided to further simplify the design for the skill developer
    • Utilizes SkillArguments for argument validation and possible tab completion
    • SkillConfiguration validation where the developer making anything configurable will show up in the default global skill config file
    • Complete abstraction of skills allows for third party implementations to be used.
    • SkillCaster interface allows for any object in the game to use a skill (Imagine, a Dispenser casting skills).
  • Effects - Creating customizable behaviors
    • Effects can be applied to virtually anything to have a specific behavior.
    • Ability to mark an Entity with specific identifiable effects
    • Expandable library of common effect types to further simplify behaviors
  • Entities
    • Expandable interfaces defining an entity
    • Make any entity a SkillCaster
    • Complete customization with EntityManager#addEntity(IEntity) for third party implementations (think NPC’s)
    • Insentient entities represent the normal damageable entities in the game and can be affected by Effects
    • IEntity is a standard entity that KraftRPG knows about and tracks
    • Sentient entities can have Roles and therefore gain experience in said roles and levels can affect their maximum health
    • SkillCasters expand on Sentients by being able to cast Skills
    • Summons expand on Insentient by being linked to a SkillCaster that summoned them
    • Monsters expand on Insentient by having customizable damage and drop experience to their killer
    • Champions represent the player, all champions are SkillCasters by default and have their stats saved
  • Roles
    • Represents a notion that can gain experience of various types
    • Levels can grant various benefits such as increased health, increased health regeneration, increased mana, skill usage
    • Roles can have different configurations for skills to provide a more customized experience
    • Custom definitions of damage for a specific Item type
    • Loose dependency tree can be created at any complexity wanted with the guarantee that there are no circular dependencies
  • Storage
    • Abstracted storage system allows for easy third party implementations to save player data.
  • Commands
    • A unique command system that allows configuring everything about the plugin in game (some configuration changes may only show their effects after a server restart)
  • Expandability
    • By design, KraftRPG intends to make it possible for other plugins and mods to further interact with the behaviors of KraftRPG
    • Dynamic on-load registration of Skills allows for “Skill Bundles” to exist.
    • Abstract API designed to be portable to Sponge

The feature list is quiet large, but rest assured, most of the list is written at an API level, most of the work needing to be done is on writing the base implementation on SpongeAPI when SpongeAPI is in a more usable state.

###KraftRPG is open source and its Bukkit implementations can be viewed here:

KraftRPG-API
KraftRPG (Standalone Bukkit Plugin)
Example Skills Bundle
API Javadocs

####Feel free to join us in our irc channel!
Server: irc.esper.net
Channel: #KraftRPG

6 Likes

Looks interesting. I’m sure many servers will find this useful for rapid development RPG plugins.

Get it on the list here if you haven’t already. It’s the semi-official Plugins to be ported list.

Already have :slight_smile:

Thanks, just always want to make sure, no point having the list if it’s not complete. :wink:

Sounds pretty similar to my own project ANSSRPG

It does seem a bit similar in terms of the core functionality attempted to being achieved, though both projects seem to have different goals and are in different stages of development (at least, in my opinion).

I would say that’s safe to agree on. For example I am trying to stay away from levels (at least for this mod)

Make sure you take the time to do documentation and examples of how to set this up before you ‘throw it against the wall to see what sticks’. Way, way, way too many Bukkit RPG plugins never bothered to do anything beyond very simple examples of things. Not that it’s above my IQ, I just don’t want to have to spend the time figuring out your stuff - I’d rather be playing…

“I’d rather be playing” There will likely be servers with that mod installed. You dont have to make server to play. :slight_smile:
Plugin seems great. Im planning to use some of these RP plugins on my survival server to bring more in-depth experience.

Description looks very solid. Maybe it’s time to see this project again…

Nice seeing you here :wink: I’ve had some thoughts on asking people to bounce ideas for making the skill/effects api a bit better, more diverse, etc. So, there is a nice way of doing that: http://bugs.afterkraft.com/ I’m still working on documenting a realistic roadmap of the various issues and features needing to be added/implemented.

I’m definitely open for discussion in regards to adding to the API to make it possible for different styles of skill usages to be possible (think MagicSpells, McMMO, etc.).

Having some fun with porting the API to Forge for the mean time. I’d like some ideas in terms of extra features for expandability.

So far, I’ve thought that it would be really easy to provide a Skill bundle and role bundle that replicate the feature set of McMMO. Seeing as many servers have liked the simplicity of McMMO’s play style, I don’t see why it wouldn’t be a bad idea to provide a similar play style option.

So far, my current options are to make KraftRPG-API dependent on a platform API (in this case, Sponge) or make KraftRPG-API platform independent.

Here’s the pros and cons:

Platform Dependent:
Pros

  • All skill API is knowledgable of the platform API’s own API for ItemStacks, Entities and more.
  • Configuration management is handled by the platform
  • ItemStacks are easily created for the platform and the API will freely accept the platform specific ItemStacks
  • Likewise, Entities are easily understood by the platform, so, creating EntitySkillArguments to match specific Entities is feasible (as long as the platform has a hierarchical inheritance for entities).
  • Access to event-related API is simple, and creating listeners is easily supported.

Cons

  • Skills written for a platform dependent API means that they will never be compatible with the API ported for a different platform (think Bukkit plugins and Sponge plugins).
  • Suffer from possible API breakages from platform changes that will require skills to be updated.
  • Porting KraftRPG to another platform requires equal amounts of work to port, and bugs in the API may require further testing to port to other platforms.
  • API is purely dependent on the common data structures for Entities, Items, Locations, Vectors, Events, Blocks, Particles, Effects.

Platform Independent:
Pros

  • KraftRPG-API is fleshed out enough to ensure minimal platform dependent operations will be needed.
  • Skills will be easily brought to different platforms without much issue
  • Common Classes in the API will provide easy understanding of various aspects of vanilla Minecraft items. Skills will not have to worry about the intricacies of various platforms behavior.
  • A wrapper-like implementation for each platform is easily written and API behaviors can be strictly maintained across platforms.
  • Skills can depend on a ‘PlatformX-Commons’ library for Platform specific API implementations without relying on the plugin implementation for that platform to still access Platform specific API.

Cons

  • Skills have no access to platform API
  • Skills dependent on a Platform API may become dependent on a secondary ‘Commons-Library’ for translating between the platform API and KraftRPG-API.
  • Skills requiring further integration with platform specific plugins will be platform specific, causing a confusion between platform agnostic skills and platform dependent skills.
  • KraftRPG as a plugin for a specific platform becomes relatively heavy in size (API + Commons + Platform Implementation)
  • Configurations may not be portable across platforms
  • Events become platform dependent, and skills listening for said events become an issue.
  • More work is required to provide various platform updates for KraftRPG overall.

To be honest, I’ve been considering this platform independence for a short while, considering that KraftRPG may eventually become a mod/plugin for various other platforms (such as Forge and Glowstone). The advantages is that the API becomes fully testable, and the commons become fully testable (except for a few cases), and truly, any platform developer may adapt KraftRPG for that specific platform.

I don’t expect much discussion from a Sponge platform perspective, but from some experienced developers, I do wish some insight on the matter.

(Tagging possible people: @TheYeti @mumfrey)

Glad to see you porting this over @gabizou. :smile: I’ve been lurking on the Git, watching progress. :stuck_out_tongue:

Potentially the best plugin for Minecraft in quite a while.

Gonna comment on my last reply? :stuck_out_tongue:

With this period of lollygagging about platforms and API’s, it’s given me a nice reprieve to really make KraftRPG-API as robust as possible.

I can’t really provide any insight from a programming standpoint, having never cared about porting any of my work anywhere except Bukkit (until recently). However…

It seems as though most of the cons for making KraftRPG platform independent revolve more around how much work updating it would take, rather than actual cons about its performance/usability. If putting forth that work would be something you’re comfortable doing (and might even have some fun at), I’d say go for it. Ultimately, it would reach more people.

Right, and the bit about some advanced skills being platform dependent if I got the Platform Agnostic route? I mean, the disadvantage is that most skills will require some sort of obscure interactions with the platform (as I remember having to do with Bukkit), or interact with other plugins such that KraftRPG would still understand those skills, but the common server owner would likely come complaining to me about a specific skill not working on a different platform.

It’s kinda like the issue of a Bukkit plugin using (CraftBukkit provided) NMS or CB code to do some things and then come the next update of CraftBukkit, the skill breaks.

After much consideration, I’ve decided to keep KraftRPG dependent on Sponge API. The reasons for this are as follows:

  • KraftRPG will not have differing implementations across platforms, reducing the maintenance workload for me to update them when one platform updates vs another.
  • KraftRPG API will have full access to Sponge’s API, allowing for KraftRPG API to focus on the RPG aspects, leading to an overall better RPG API.
  • Skills would not have to be written to support various platforms, only one platform is required.
  • As long as Sponge API is implemented on a platform, KraftRPG will work with that platform.

So now, I’m working to refactor the API yet again to depend on SpongeAPI and continue writing an implementation for the late CraftBukkit server for more testing and API development ideas.

1 Like

Love the project so far. Just started browsing the API. I have limited Java knowledge and am looking for an RPG plugin that let’s me design my own classes and abilities as well as having functionality to restrict armor and weapon use between classes. I.E. Archer cannot use diamond armor. Speaking of archers, something that can interact with bows as well. Is this the plugin for me? Either way, consider me a supporter and a fan.