Skungee / ServerInstances

Dynamically deploy servers to your bungeecord proxy.
Apache License 2.0
1 stars 1 forks source link

ServerInstances

Dynamically deploy servers to your bungeecord proxy.

Gradle

Latest version can be found at https://github.com/Skungee/ServerInstances/packages

In your build.gradle add:

repositories {
    maven {
        url 'https://maven.pkg.github.com/Skungee/ServerInstances/'
        credentials {
            username = "<INSERT USERNAME>"
            password = project.findProperty("gpr.key") ?: System.getenv("GITHUB_PACKAGES_KEY")
        }
    }
}

dependencies {
    compile (group: 'com.skungee', name: 'serverinstances', version: 'INSERT VERSION')
}

Getting a Github token:

1.) Go into your account settings on Github and create a personal token with the read:packages scope checked.

2.) Generate that key, and now go add a System Environment Variable named GITHUB_PACKAGES_KEY or set the gradle property "gpr.key" to your key.

3.) Restart system or if using Chocolatey type refreshenv

Note: you can just directly put your token as the password, but we highly discourage that.

Compiling from source

git clone https://github.com/Skungee/ServerInstances
cd ServerInstances
gradlew clean shadow

The output jars will be found in the build/libs directory of each respective folder

Usage

public class ExamplePlugin extends JavaPlugin {

    private static ExamplePlugin instance;
    private ServerInstances serverInstances;

    @Override
    public void onEnable() {
        instance = this;
        try {
            serverInstances = new ServerInstances(this);
        } catch (ClassNotFoundException | SQLException | IOException e) {
            e.printStackTrace();
            return;
        }
    }

    public static ExamplePlugin getInstance() {
        return instance;
    }

    public ServerInstances getServerInstances() {
        return serverInstances;
    }

}
ExamplePlugin instance = ExamplePlugin.getInstance();
ServerInstances serverInstances = instance.getServerInstances();

String templateName = "Hub";

Optional<Template> optional = serverInstances.getTemplates().stream()
        .filter(template -> template.getName().equals(templateName))
        .findFirst();
if (!optional.isPresent())
    return;
try {
    serverInstances.createInstance(optional.get());
} catch (IOException | IllegalAccessException e) {
    e.printStackTrace();
}

Configurations and templates

Every Bungeecord Plugin that uses ServerInstances must have a serverinstances-configuration.yml shaded into it's resource. https://github.com/Skungee/ServerInstances/blob/master/src/main/resources/serverinstances-configuration.yml

This allows ServerInstances to read how you want to configure the library. This configuration will then be loaded into the plugins folder under "ServerInstances" which from there you can edit.

Every template must have the following configuration in it's main directory (where the server jar is located) https://github.com/Skungee/ServerInstances/blob/master/src/main/resources/template-configuration.yml

And lastly the template needs to have the ServerInstancesBootloader jar in the plugins folder to allow for ServerInstances on the Bungeecord to control the Spigot server. https://github.com/Skungee/ServerInstancesBootloader

We will extend the API for server management from the Bungeecord side with this bootloader over time.