[MECH] 3DCore Library

Discussion in 'WIP and Development Status' started by jtripled, Jul 3, 2011.

Thread Status:
Not open for further replies.
  1. Offline

    jtripled

    3DCore
    A requirement for all of my plugins -- 3DCore is a library that provides much extra functionality beyond that of Bukkit. I write almost exclusively for my own server, and as such, providing plugins for the community is not my primary objective. 3DCore saves much time when it comes to pushing out plugins, and as such, it has become a requirement for any of my future plugins.

    I apologize if this bothers anybody, but as I mentioned above, my server comes first, and anything I release is purely for your enjoyment. I will provide support, however I will not be taking many requests.

    Updates:
    8-1-11: 3DCore is shaping up quite nice. I've just begun the process of refactoring my code as I had a bad case of scope creep -- 3DCore started having way more features than planned and a lot of it wasn't getting done. So I am going through and narrowing down the focus of it so I can have a release sooner. Here are the current planned functions of it (there will be more later, but I need this done first):

    Permissions: I have written my own permissions plugin (built into 3DCore) that behaves almost just like PermissionsBukkit. It utilizes superperms so any plugins you use that support superperms will work with my permissions. Likewise, you can use any sort of superperms permissions plugin and 3DCore should automatically work with it. There is also support for Permissions (Nijikokun). You can use whatever you want from what I have listed, and 3DCore will be able to tell without any additional setup.

    Economy: I am in the process of writing my own economy, however this is near the end of my to-do list. The 3DCore economy plugin should probably only be used if you use only 3DCore plugins (very unlikely). As such, iConomy and BOSEconomy are supported and those would likely be your best choice on economies.

    Multi-World: I offer multi-world support in 3DCore with commands to create/remove/teleport between worlds. Extra functionality can be offered through other plugins.

    Profiles: These are almost essential to all 3DCore plugins and they can completely change the way you play if you use them. A player's profile is almost an entirely different player. They each have unique inventories, locations, names, and just about everything. This functionality can be disabled (technically 3DCore will still use it, but only allow access to the default profile). The benefits of this are endless, for instance, Advancement (a planned plugin providing classes/levels) would benefit by allowing players to have multiple unique profiles with different classes that level up entirely separate from one another.

    Special Plugin Support: All 3DCore plugins can be installed, restarted, updated, enabled, disabled, and removed with in game with commands. Upon logging in with a specific permission, 3DCore will tell you a list of outdated plugins which you can easily update by typing '/plugin update [name]', or you could sweep through all of them with '/plugin update'. Additionally, you can view an in-game list of all 3DCore plugins that will tell you what you have, don't have, need to update, or just haven't enabled. You can also allow automatic updates, and 3DCore will simply do these plugin updates as they come out -- no restart required.

    More Confusion: I have retired the Advancement idea in an attempt to confuse everybody even more! I still will make 'Advancement' however it won't include all I have previously planned. It will be a good mid-point between the old standalone and the planned Advancement, though. Sorry if this disappoints anyone, but it seems like everyone and their dog is making a plugin like the planned Advancement. Another planned plugin is MyCart, which is a very simple minecart overhaul that provides you with stations and systems so you can easily make large tracks throughout the land.


    Planned Plugins:
    • Advancement (Skills and Abilities for all)
    • MyCart (Simple minecart overhaul with stations/systems)
     
  2. Offline

    gameswereus

    Thanks for this plugin, will test ASAP, once it's ready :p
     
    jtripled likes this.
  3. Offline

    jtripled

    It's looking like I'm close to a first public release -- I can't make a guarantee but I'm aiming for Thursday.
     
  4. Offline

    dm_studios

    o0oh nice, can't wait to test it out.

    I've been using LevelCraft on my servers however, there is quite a few bugs which pretty much make some of the classes useless (well, just not fit for public usage), my players love LevelCraft but are constantly spamming me with regards to bugs, I shall bookmark this and come back tomorrow to have a gander to see if you have pushed live the public release.

    will you be releasing any classes with the first public release or just the api?
     
  5. Offline

    jtripled

    @ dm_studios

    This first release will likely only include 2 or 3 test classes, skills, and perks. They won't have much to them, just a way to find the bugs. But once I find that it's all working well and I've decided the API has reached a point where there will be very few major changes, I'll be releasing tons of classes, skills, and perks.
     
  6. Offline

    RugRats

    So when can i test :confused:
     
  7. Offline

    jtripled

    I'll send you a message when it's time. You come first so I don't put out some piece of crap! lol

    I'm holding off on the localization by the way because I just don't have a full document of lines yet and I don't want to start until I have it all in one place.

    As far as recent progress:

    I have done a whole lot of optimization and this bad boy will be runnin' smooth.
    What is ready: Skills, Classes, Attributes, Custom Listeners, Lots of Player Profile Goodies
    What still needs some work: Perks, Abilities, Hunger, Thirst, Fatigue, Mana, Health
    What I haven't started: Effects (I'm putting this off for a while),
     
  8. Offline

    RugRats

    Alright cool and localization shouldn't really be a top priory btw considering it's not that important.. I mean you should finish everything first and then do it because everything else is more important :D so don't stress Lol and dang you got a lot done in the past couple of days :p
     
  9. Offline

    Krispy

    Quick question: In regards to abilities, will we be able to enable permissions to give players abilities from other mods? For example, I make a custom skill named Weather Bending (creative, I know), and then as they level up I enable more permissions to the user from various weather mods that let them control the weather in more variable ways.

    I don't know if this is what you had in mind but it would make designing custom classes really easy for non-modders and allow essentially infinite extensibility without your direct involvement. Plus it would make me very happy. :)
     
  10. Offline

    jtripled

    Haha, yes actually this was made with non-modders creating skills in mind. Abilities come in lots of flavors and you have an option for a LeveledAbility which you would then let it know at what skill level (and at what attribute levels) a player can have a certain level of the ability. For example, you have an ability named Command Weather in your code you would do something similar to this (this is psuedo-code, not what you would actually do, just for this examples purpose).

    CommandWeather.setLevelRequirement(1, 10)
    CommandWeather.setLevelRequirement(2, 30)
    CommandWeather.setLevelRequirement(3, 50)

    What this would do is set it up to where depending on the player's Weather Bending skill level, they can have different access in the ability Command Weather. A player below level 10 is at level 0 Command Weather (you define what they can do with that) while 10 - 30 is level 1 Command Weather and so on. Hope that was clear for you, I'm not the best at explaining things. :p

    No permissions involved, either, permissions are probably only going to be implemented for admin commands since server hosts can already pick and choose their skills/etc.

    I hope this is what you were looking for! If not, please make a suggestion, I'm sure we'll work it out. :)
     
  11. Offline

    Krispy

    My concern is how I define what Command Weather actually does. I'd like to be able to define abilities by permission nodes because permission nodes are universal and give a lot of granularity over the access players have to certain mods.

    Otherwise it sounds like the abilities must be hard coded by yourself, yes?
     
  12. Offline

    jtripled

    @Krispy
    There is very little hard coded content, and there is no hardcoded content at all when considering skills, classes, perks, or abilities. I provide simple methods to do complicated tasks for you, however. Using the provided API is optional if you chose to write level checks and what not for your abilities by yourself. I also provide effects which greatly simplify what you are doing. For instance, the provided SummonStormEffect can be called inside your ability which would cause a storm in the world of the character to which it is applied. You still have to define when this effect is applied by the ability through a listener.

    You would just create a skill class as a project and then make the ability classes and populate them with the provided methods. And although you don't have to use the pre-created stuff, it's pretty beneficial.

    I'm not sure about your familiarity with java and bukkit, but I learn a lot better through looking at code, so if that's your way of learning here is an entire (I know, I'm crazy!) example ability's class:

    public class ControlWeather extends Ability
    {
    public ControlWeather(Skill skill)​
    {​
    super(skill);​
    init();​
    }​

    private Listener listener;​

    private void init()​
    {​
    setName("ControlWeather"); //gives ability a name​
    setDescription("This ability allows players to command the weather. Higher level players​
    will have more control"); //gives ability a description​
    setRequiredLevel(1, 1); //player has level 1 ability access at level 1 of skill​
    setRequiredLevel(2, 10); //player has level 2 access at level 10​
    setRequiredLevel(3, 25); //level 3 access at level 25​

    //setRequiredAttribute is like setReqLevel except player must have x of attribute to access that level​
    setRequiredAttribute(1, Attribute.Type.Intelligence, 5);​
    setRequiredAttribute(2, Attribute.Type.Intelligence, 10);​
    setRequiredAttribute(3, Attribute.Type.Intelligence, 15);​

    listener = new Listener();​
    Advancement.registerEvent(Event.Type.PLAYER_INTERACT, listener, Priority.Monitor);​
    }​

    public class Listener extends PlayerListener​
    {​
    @Override​
    onPlayerInteract(PlayerInteractEvent event)​
    {​
    Profile profile = ProfileManager.getProfile(event.getPlayer());​
    int abilityLevel = getLevel(profile);​
    //this ability will fire every time a player right clicks in air​
    if(event.getAction.equals(Action.RIGHT_CLICK_AIR))​
    {​
    if(abilityLevel == 1)​
    {​
    //at level 1 they can stop storms​
    EffectManager.applyEffect(profile, new SummonSunEffect());​
    }​
    else if(abilityLevel == 2)​
    {​
    //at level 2 they can summon rain​
    EffectManager.applyEffect(profile, new SummonRainEffect());​
    }​
    else if(abilityLevel == 3)​
    {​
    //level 3 can summon lightning storms​
    EffectManager.applyEffect(profile, new SummonStormEffect());​
    /**​
    * Note that if you want to you could write the code to create a​
    * storm by yourself are replace the EffectManager part​
    *​
    * event.getPlayer().getWorld().setStorm(false);​
    *​
    * the advantage to effects is that they have listeners so other​
    * projects implementing Advancement know exactly when​
    * a weather change was caused by Advancement and who​
    * caused it. They can also alter outcomes of these events too.​
    */​
    }​
    }​
    }​
    }​
    }

    UPDATE:

    Alright, so as much as I'd love to give out some sort of build of Advancement, I've decided against it for at least a little while.

    As far as the project itself goes, I am (and have been) making continuous progress, so don't think I've been slacking off! ;)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 17, 2016
  13. Offline

    RugRats

    Sweeet :D
     
  14. Offline

    jtripled

    @RugRats
    I'm hoping that within a week's time I'll have something for you to test. :p

    @RugRats
    Also, I had a new idea, tell me if this sounds cool or not... if I made the Effects robust enough I could actually make this mod read text files for skills and what not... Like you could create your own with notepad.

    If I went down that road I'd have a lot of work to consider but it would certainly make this plugin pretty unique. Perhaps an idea for later though. Not to mention skills would be quite a challenge for me to make work. :p

    Example Class:
    name: Knight
    required-prestige: 0
    primary: Strength
    secondary: Wisdom
    tertiary: Endurance

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 17, 2016
  15. Offline

    RugRats

    wow that sounds like an excellent idea but definitely for later because it sounds like it would take an extreme amount of time to make but yea it definitely sounds cool but then again if you want to add it go ahead because I would like it and I'm sure a lot of others would to :D
     
  16. Offline

    jtripled

    I don't feel like I'm really in any crunch time, and that would be hard to implement now, but it would be much harder if I head down this path of focusing on jars and then try to switch. So I might just reroute this entire project that way. Hopefully I'm not upsetting any of you guys :(, I just want to release something grand! I will settle for no less than 99% awesome! I don't even know why I'm rushing so much, Heroes has been in development since February and it's just being released lol. Don't think I'll take that long though, I work fast.

    The real challenge is providing a lot of options through the text-file...
     
  17. Offline

    gameswereus

  18. Offline

    loganwm

    YML is plain-text with formatting as opposed to a binary format.
     
  19. Offline

    jtripled

    And the ideal format for what I'm looking at... However, I've given Advancement a rest because just thinking about it has become tiresome. I don't want to spoil it and give up, so I'm going to work on some other projects for a little while.
     
  20. Offline

    loganwm

    I'll give you a peek at how ApocalypseCraft handles leveling, perks, and skills once I get the system cleaned up. It's pretty expandable, and I'd likely have no issue with you further generalizing it and releasing it as a formal API if you'd like. In other words, don't think about it for now if you'd like to take a mental break, and I'll let you see my setup with fresh eyes after you see it in action when testing cycle begins.
     
  21. Offline

    jtripled

    Sounds good, getting to see someone's work is always helpful.
     
  22. Offline

    xMindlessMass

    I have been using mcMMO on my server that me and my friends play on and i would definitely rather use this once it is out :D good luck
     
  23. Offline

    skeletonofchaos

    Ok... wow first off advancementstandalone was great hopefully this is better! P.S. loganwm writes some very elegant code...
     
  24. Offline

    embty

    Could you please add a How to use? I dont seem to understand how this works :) sorry for my noobness!
     
  25. Offline

    jtripled

    I'll elaborate a whole lot more when I get more work done on it. For now that is really all the info I have to post. Sorry, but keep a look out for updates! :)
     
  26. Offline

    Jigsaw

    I enjoyed your AdvancementStandalone plugin and I will be giving this one a try when it is released. Good Luck!
     
  27. Offline

    gameswereus

    Are you getting any wheres near done with the plugin?
     
  28. Offline

    RugRats

    He is taking a break and working on something else. Don't worry he is still working on this.
     
  29. Offline

    fugos

    This looks Great!! I cant wait for the release! :D
     
  30. Offline

    Mountainmon

    Any progress? :D
     
Thread Status:
Not open for further replies.

Share This Page