[Help wanted] Introducing the Visual Plugin Creator!

Discussion in 'Resources' started by jtjj222, Apr 1, 2013.

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

    jtjj222

    The visual plugin creator is a tool which allows people who are new to programming create bukkit plugins, and people who know Java to speed up development by taking care of the monotonous aspects of plugin development. It is still very early in development, and it isn't much use yet. If you wish to help out (even if you can't code), see below.

    Architecture:
    There are two parts of the plugin creator: A gui that provides a visual way to build and represent plugins, and a backend that turns an xml representation of the plugin into java code.

    Gui:
    Keep in mind that this is still extremely early in development, and this isn't what the tool will look like:

    buttons and tree.png cmd.png

    Backend:
    The backend turns xml:
    Code:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <plugin xmlVersion="0.0.1" >
    <version>1.0.1</version>
    <name>ThatExampleThorPlugin</name>
    <namespace>me.jtjj222.exampleThorPlugin</namespace>
    <authors>
      <author>jtjj222</author>
      <author>KodFod</author>
    </authors>
     
    <commands>
      <command>
        <name>hello</name>
        <actions>
          <broadcast><literal type='String' >Hello world!</literal></broadcast>
        </actions>
      </command>
    </commands>
     
    </plugin>
    
    into:
    Code:java
    1.  
    2. import org.bukkit.command.Command;
    3. import org.bukkit.command.CommandSender;
    4. import org.bukkit.plugin.java.JavaPlugin;
    5.  
    6.  
    7. /**
    8.  * Auto-generated java file. Created by VisualBukkit. More information can be found at [link]
    9.  *
    10.  */
    11. public class ThatExampleThorPlugin
    12. extends JavaPlugin
    13. {
    14.  
    15.  
    16. public void onEnable() {
    17. return ;
    18. }
    19.  
    20. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    21. String commandName = cmd.getName();
    22. if (commandName == "hello") {
    23. onHelloCommand(sender, cmd, label, args);
    24. }
    25. }
    26.  
    27. private boolean onHelloCommand(CommandSender sender, Command cmd, String label, String[] args) {
    28. getServer().broadcastMessage("Hello world!");
    29. }
    30.  
    31. }
    32.  


    Authors:
    Jtjj222 - Backend
    Kodfod - Gui

    How to help:

    I am a coder:
    - Contact me on skype (jtjj222), or by pm
    - Contribute code: BitBucket

    I can write high quality tutorials when the project is more mature:
    - Contact me on skype or by pm
    - I love you

    I can help with the gui:
    - Contact kodfod via pm or on skype (kodfod)

    I can help give feedback, or I have a cool feature idea:
    - We need you. Leave a post here, or contact kodfod or I on skype or via pm

    Please leave feedback. We want to know how (and if) you would use a tool like this, and we would always love help!

    Reserved.

    What needs to be done in the code (in order of importance):
    - Major super duper refactoring
    - Use commandExecuter instead of string if for commands
    - Add support for different types of values, and for command parameters
    - Add support for events
    - Add some way to extend the built in types and actions
    - Add dependency resolution

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

    Kodfod

    As stated above, the GUI is still just a baby. Just getting something that works before working on the looks.

    Shown above there is the tree visualizer. This will give you a good idea of how the code will flow. Right now it is just an XML parser, which is what we are using for a data storage system, and will become more polished once the project makes more progress.

    The add command window is far from finished. for instance the Arguments will be changed to drop down box to select argument types and ability to add more. For example: your command needs 2 arguments a player and an item(id). You would select Player then click Add and then another box will show up and you will choose number (for the ID) or String for the Name of the block.

    Wish I had more to show you guys. If you have any suggestions, add me on skype (kodfod) or pm me here.

    Cheers!
     
  3. Offline

    ferrybig

    commandName == "hello"

    you know that you need to compare strings using equals?
     
    lol768 and JazzaG like this.
  4. Offline

    jtjj222

    Yes, but JExpr.eq was easier than JExpr.staticinvoke() for testing purposes. (that's from codemodel, the library used to generate the java code)
     
  5. Offline

    drtshock Retired Staff

    No you don't.
     
  6. Offline

    Kodfod

    But it's not good practice. When comparing strings you should use .equals() or .equalsIgnoreCase().
     
  7. Offline

    drtshock Retired Staff

    I know. I brought it up with him in irc right away ;)
     
  8. Offline

    jtjj222

    Besides, the commands will be using CommandExecuter's anyway :p
     
  9. Offline

    evilmidget38 Retired Staff

    I must admit, I am against this idea. People who want to make plugins should learn how to program.

    The main things I see that would come out of this:
    1. Experienced plugin developers wouldn't use this. There's no reason that they'd need to use a GUI to generate simple code for them, especially since they'll likely be using a more complicated command system doing more complicated things that broadcasting a message.
    2. Extreme novice developers would use it, thinking they can suddenly create a plugin. They'll start working on things, and get a bit of a head start over people who are starting out purely programming. But suddenly they want to do something that the gui can't. They hit a brick wall. They have no idea how to continue because they didn't write the code, and know hardly anything about programming. The target market of something like this is the people who can't code.
    3. The code, although it would be written well as an individual command, would lack maintainability as it isn't meant to be scaled.
    4. Unless you create a system for handling subcommands, that's going to be a mess for anyone wanting to use this.
    5. There's plenty of other tools for creating a plugin.yml, which honestly is pretty simple to create without a tool.
    Despite me not liking this, it sounds like a really fun project to work on. I'm almost tempted to ask to help.
     
    ELCHILEN0 and WiredWingzzz like this.
  10. Offline

    Kodfod

    1. The tools goals are to get to a point where you can create any kind of plugin. But that will take time. So for a long while this tool will just create the source files that the person can then import and export and/or add to it. We are currently still working on getting to where you can do more than broadcast a message. The post above was to show what we have and to inform what we want it to become.

    2. I do think you have met one thing that will always happen when a tool such as this is made. As of now, and the near future, the tool will only create source files, and let you get a jump start on a project. This tool will take some of the annoying set up coding out and get a good framework setup for you. The market we are targeting is the ones that don't know java, or know very little.

    3. Please expand on this. I'm not sure what you mean.

    4. As stated above, this project is still a baby. This is planned.

    5. Indeed there are many tools that create the plugin.yml, but this will create all the source files so you can import and get right to coding whatever the GUI can not offer.

    I can see where you are coming from with all of these points, and respect your input. This will better our development and aid us in finding our target audience.

    As for asking to help, we would be more than happy for you to input anything that you can to further the development.

    Cheers!
     
    TheGreenGamerHD likes this.
  11. Offline

    jtjj222

    I will elaborate on what Kodfod said.

    2. The point of this is that it will be expandable. If there is something the tool cannot do, you will be able to tell it how to do it (and specify the appropriate java code). It will also (eventually) feature dependency management, so that plugin developers can share their additions to the framework.
     
  12. Offline

    LucasEmanuel

    This is a great idea and will hopefully get more people interested in development. Of course it will have its limitations, any "GUI do it for you" tool have their limitations but they give people who are new to it all a better understanding of what does what. When people are starting to hit the wall of what this tool will be able to offer they will hopefully start looking into how it all works in the code. Most people wont but some will.

    With more people getting interested in development there will be more brains with more ideas and more contributions to the community.

    I'm sorry I don't have much to contribute to the project with, but hopefully you'll manage ;)
     
    Kodfod and jtjj222 like this.
  13. Offline

    MCForger

    Good job guys and really like what your doing! Something I agree on with evilmidget38 is this will let people with no programming knowledge to make plugins and my fear is they will rely on this more than trying to learn java and bukkit themselves and might come to some kind of block. Other than that, great job again!
     
  14. Offline

    Kodfod

    LucasEmanuel Thank you for sharing that thought. Hopefully we will be able to keep the limitations to a minimum.

    MCForger Thank you for your support. I plan on making it clear that this tool will not be a "Do it all" tool. But a tool that allows you to skip the boring setup part of coding, as well as a tool that allows you to create simple plugins and a framework for a bigger project.

    As a side note, I do plan to (during my free time) create some more tutorials on coding just in case people run into a "block" mid-way.
     
    MCForger likes this.
  15. Offline

    ohtwo

    I do like that it makes the plugin.yml for you. But that's all I'd use as it seems very useful.
     
  16. Offline

    Hoolean Retired Staff

    I was aware of this but could anyone tell me why? :)
     
  17. Offline

    SoThatsIt

    i would be happy to help with this, i am an alright developer and am willing to put some time into a project like this.
     
  18. Offline

    rmh4209

    I believe it is due to the == checking if it's the same instance, while .equals() and .equalsIgnoreCase() only check if the content is the same.
     
  19. Offline

    Hoolean Retired Staff

    OK, thanks :)
     
  20. Offline

    rmh4209

    An easy way to check is to do something like this:

    Code:
    String foo = "foo";
    String bar = "bar";
    if ((foo+bar)=="foobar"){
    System.out.println("true");
    } else {
    System.out.println("false");
    }
    if ((foo+bar).equals("foobar")){
    System.out.println("true");
    } else {
    System.out.println("false");
    }
    As you can see, the first one prints out "false" while the second prints out "true". I hope that helps.
     
    MrBluebear3 likes this.
  21. Offline

    CD3

    I'd be happy To Help With This!

    also, Could someone team up up with me to ensure that this can be installed on a Mac?
     
  22. Offline

    RROD

  23. Offline

    Junrall

  24. Offline

    jtjj222

    This will allow you to create your plugin entirely, with business logic and all, not just a template.
     
  25. Offline

    RROD

    So it's more like a Gamemaker for Bukkit plugins?
     
  26. Offline

    Kodfod

    RROD

    Yes, That is what it is supposed to be like.
     
  27. Offline

    creatorfromhell

    I like the idea, but I'm going to have to agree with @evilmidget38 on this one. I remember when the Visual Minecraft Mod Creator(I forget what it was actually called) came out and the only people who used it were the ones who couldn't code. Long story short, the Minecraft Forums got flooded with mods that didn't really have any purpose just other than people who couldn't code found it cool that they could actually make a mod without learning any programming to do so. However, if there was a bug with their mod they made a topic on the Minecraft forums asking for help, because they didn't know what they were doing and I think the same thing would happen with this tool. That's just my two cents anyways. :p
     
  28. Offline

    SoThatsIt

    i created a storyboard api a while back and figure it could be used here to add some extra usability to this project as well as making it look a little nicer. You can:
    • Create custom elements for the storyboard
    • Nice create element menu that shows a preview of the element
    • Each element has its own edit window which you can add anything you want to, could be used to select what event you want to listen to in a listener element?
    • Easily connect two elements together by simply alt-dragging from 1 to another
    • Simply add the storyboard to a jframe to get started
    • Easily add options to the menus that open when you right click on the background or on an element
    • looks nice
    heres some pictures
    The new element window
    [​IMG]
    The main storyboard window
    [​IMG]
    Hope you consider using this :D
     
    jtjj222 likes this.
  29. Offline

    ab9876

    Does anybody have a functional or semi-functional jar build of this? I need to see if this is what I am looking for. Thanks.
     
  30. Offline

    jtjj222

    You can blame schooling for lack of a usable build :\
     
Thread Status:
Not open for further replies.

Share This Page