[Free] Arrow - Open Source KitPvP Plugin (1.7-1.8)

Status
This thread has been locked.

sores

MineBOI
Premium
Feedback score
5
Posts
305
Reactions
210
Resources
0
Intro:
Arrow is a custom KitPvP plugin that I've been working on for fun. I created Arrow as a fun side project to work on it, and I've decided to open source it. Arrow uses MongoDB for storage like most of all my plugins. A compiled Jar can be found on the github for those who wish to use it. I've included a short walkthrough video below to guide users through the process of setting up certain things in the plugin. Feel free to use Arrow as a compiled plugin or a base for your own project.
Enjoy.
How to use (JAR):
1. Download Impulse, and put it in your server.
2. Download Arrow, and drop it in.
3. Start your server and let the configuration file for Arrow generate.
4. Stop your server and open the config file, and fill in your database credentials
5. Restart the server.

Depends:
Like most of my plugins Arrow relies on my lib Impulse, which can be found below.
Arrow will not start while Impulse is missing.

Images:
arrow_sb.png

arrow_kits.png

arrow_streaks.png

arrow_themes.png

Proof of Ownership:
proof.png




Links:

Source Code: https://github.com/soresdev/Arrow
Compiled JAR Download: https://github.com/soresdev/Arrow/releases
Impulse Download: https://github.com/soresdev/Impulse/releases
 

Attachments

  • proof.png
    proof.png
    138.4 KB · Views: 466
  • arrow_sb.png
    arrow_sb.png
    6 KB · Views: 419
  • arrow_kits.png
    arrow_kits.png
    18.4 KB · Views: 419
  • arrow_streaks.png
    arrow_streaks.png
    11.4 KB · Views: 418
  • arrow_themes.png
    arrow_themes.png
    22.6 KB · Views: 421
PebbleHost
High performance, consistent uptime and fast support. Minecraft hosting that just works.

Scifi

Supreme
Feedback score
4
Posts
577
Reactions
208
Resources
4
A few suggestions:

1. Follow proper naming conventions, for example avoid Command_name instead do something such as NameCommand or NameSubCommand

2. Avoid abusing static, in your config class you have a static getter for File which is not really oop, instead have a regular getter / setter and get it from the config files instance.

3. Consider removing the unneeded dependency, you should consider putting the stuff you need into the core apposed to creating an unneeded external dependency.

4. Remove the useless Init dependence, just use spigots JavaPlugin implementation to handle startup / shutdown.

5. Consider adding support for flat file or remove the database dependence entirely, a database in this case is unneeded as the data's only really needed on 1 server.
 
Last edited:

sores

MineBOI
Premium
Feedback score
5
Posts
305
Reactions
210
Resources
0
A few suggestions:

1. Follow proper naming conventions, for example avoid Command_name instead do something such as NameCommand or NameSubCommand

2. Avoid abusing static, in your config class you have a static getter for File which is not really oop, instead have a regular getter / setter and get it from the config files instance.

3. Consider removing the unneeded dependency, you should consider putting the stuff you need into the core apposed to creating an unneeded external dependency.

4. Remove the useless Init dependence, just use spigots JavaPlugin implementation to handle startup / shutdown.

5. Consider adding support for flat file or remove the database dependence entirely, a database in this case is unneeded as the data's only really needed on 1 server.
The underscore is indeed a Java Letter, it might not be practical for you but that's sorta my way of categorizing certain things when I work on large projects. It's easier for me to identify and read from the underscore. It has no impact on the plugin.

I use countless utilities stored in Impulse, adding every single one to this project would be a headache and create a clustered project. It's a lib, it's there to make my life easier when creating plugins, that's all.

Init isn't useless, it's used to register commands with the command framework stored in Impulse, and to also register Handlers, you can see the class below.
https://github.com/soresdev/Impulse...me/sores/impulse/util/abstr/AbstractInit.java

I chose to use Mongo because it's just simply what I wanted to use. I made the project for fun and it also serves as practice for me using Mongo.

Thank you for the feedback, always appreciated.
 

NV6

the opensource person(?)
Premium
Feedback score
8
Posts
383
Reactions
223
Resources
1
4. Remove the useless Init dependence, just use spigots JavaPlugin implementation to handle startup / shutdown.
As you can see in his code, his "AbstractInit" class (which Init extends) has a method to register the handlers.

The underscore is indeed a Java Letter, it might not be practical for you but that's sorta my way of categorizing certain things when I work on large projects. It's easier for me to identify and read from the underscore. It has no impact on the plugin.
I think this is very bad practice, especially since it's a public project. I'd really recommend following the proper naming conventions, especially when working on a public project and/or with other contributors.

Not sure what you meant by "The underscore is indeed a Java Letter", but if you meant it's following the proper naming conventions, it's not. Class names should be CamelCase.

I use countless utilities stored in Impulse, adding every single one to this project would be a headache and create a clustered project. It's a lib, it's there to make my life easier when creating plugins, that's all.
Although this is fair I guess, I'm not a big fan of making a plugin dependent on a different plugin/library for a public project, primarily because:
  • Let's say, you want to make a new library plugin, you'd have to recode the entire (in this case, KitPvP plugin) into using the new library.
  • You're forcing people to use an external plugin.
Instead of that, I generally use separate projects per library - as you can see in my opensource KitPvP plugin, my tab API, scoreboard API, menu API, command API, and (usually) everything else is in it's own, dedicated project.

Of course these things could be seen as personal preference, but I just wanted to point it out.

Other than that, it's nice of you to make yet another opensource kitpvp plugin (ffs guys, Scifi and sores, let me get some recognition!), take care and I wish you much luck with your development career. :tup:
 

sores

MineBOI
Premium
Feedback score
5
Posts
305
Reactions
210
Resources
0
As you can see in his code, his "AbstractInit" class (which Init extends) has a method to register the handlers.


I think this is very bad practice, especially since it's a public project. I'd really recommend following the proper naming conventions, especially when working on a public project and/or with other contributors.

Not sure what you meant by "The underscore is indeed a Java Letter", but if you meant it's following the proper naming conventions, it's not. Class names should be CamelCase.


Although this is fair I guess, I'm not a big fan of making a plugin dependent on a different plugin/library for a public project, primarily because:
  • Let's say, you want to make a new library plugin, you'd have to recode the entire (in this case, KitPvP plugin) into using the new library.
  • You're forcing people to use an external plugin.
Instead of that, I generally use separate projects per library - as you can see in my opensource KitPvP plugin, my tab API, scoreboard API, menu API, command API, and (usually) everything else is in it's own, dedicated project.

Of course these things could be seen as personal preference, but I just wanted to point it out.

Other than that, it's nice of you to make yet another opensource kitpvp plugin (ffs guys, Scifi and sores, let me get some recognition!), take care and I wish you much luck with your development career. :tup:
Thanks for the feedback, always good to hear from you. Wishing you the best as well brethren!
 
Status
This thread has been locked.
Top