Hi there, I am new to the project and have a proposal for a new feature (not a request, Ill go off and make this). I was going to build this into the project for myself, but I figured I would propose it here before I got started just to get feedback and see if this is something that would be accepted as a pull request. If it might be than I will do a much better job of coding this up as a full quality feature rather than just hacking it together for my own uses.
I would love to build in a way to allow spigot BuildTools to be downloaded and used from the WebUI.
Currently to create/update a spigot server a user needs to ssh into the server, run BuildTools and copy the spigot jar into the new server directory. This is something I believe should be accessible from the web. I’m going to give some of my friends accounts to log into the WebUI and I would like for them to be able to update spigot without needing ssh access.
I have two thoughts on how to implement this. (Keep in mind I am completely unfamiliar with the codebase and my thoughts may change once I get in there and take a look around).
My first thought is to create a Spigot section in the Profiles page drop down. Instead of a “Download” button, there can be a “Build” button. Since spigot BuildTools allows you to target a specific version of minecraft, each version can be built off of the same BuildTools download. If no BuildTools jar exists it will first be downloaded, then the targeted verison of minecraft will be built.
Me second thought is to create a spigot page that can be linked to from the username’s drop down in the top right. The page will have the appropriate buttons and options to download BuildTools and build a specific version of spigot. A spigot profile will become available to use on a server if a build of spigot has been performed on the server.
I personally like the my first thought better, but im not sure if the current codebase will really allow for a such different action to be taken without a ton of work. Ideally I wouldn’t want to change too much of the existing code just to support this, small feature.