2022-05-04 12:18:07 +00:00
|
|
|
package dev.plex;
|
|
|
|
|
|
|
|
import com.google.inject.Inject;
|
|
|
|
import com.velocitypowered.api.event.Subscribe;
|
|
|
|
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
|
|
|
|
import com.velocitypowered.api.plugin.Plugin;
|
|
|
|
import com.velocitypowered.api.plugin.annotation.DataDirectory;
|
|
|
|
import com.velocitypowered.api.proxy.ProxyServer;
|
|
|
|
import dev.plex.config.TomlConfig;
|
|
|
|
import dev.plex.handlers.ListenerHandler;
|
|
|
|
import dev.plex.settings.ServerSettings;
|
|
|
|
import dev.plex.util.PlexLog;
|
|
|
|
import java.io.File;
|
|
|
|
import java.nio.file.Path;
|
|
|
|
import java.util.logging.Logger;
|
2022-05-07 06:25:23 +00:00
|
|
|
import lombok.Getter;
|
2022-05-04 12:18:07 +00:00
|
|
|
|
2022-05-05 07:49:03 +00:00
|
|
|
/**
|
|
|
|
* Credits for TOML library go to https://github.com/mwanji/toml4j
|
|
|
|
* I was unable to add it back to the package without it glitching, so
|
|
|
|
* I kept it in a separate package.
|
2022-05-07 06:25:23 +00:00
|
|
|
* <p>
|
2022-05-05 07:49:03 +00:00
|
|
|
* Modifications: Properly indent arrays in TOML as well as only append
|
|
|
|
* missing object fields into the file
|
|
|
|
*/
|
|
|
|
|
2022-05-04 12:18:07 +00:00
|
|
|
@Plugin(
|
|
|
|
name = "Plex",
|
|
|
|
id = "plex",
|
|
|
|
version = "@version@",
|
|
|
|
url = "https://plex.us.org",
|
|
|
|
description = "Plex provides a new experience for freedom servers.",
|
2022-05-17 03:52:52 +00:00
|
|
|
authors = {"Telesphoreo", "Taah"}
|
2022-05-04 12:18:07 +00:00
|
|
|
)
|
|
|
|
@Getter
|
|
|
|
public class Plex
|
|
|
|
{
|
|
|
|
private static Plex plugin;
|
|
|
|
|
2022-05-07 06:25:23 +00:00
|
|
|
public final ProxyServer server;
|
2022-05-04 12:18:07 +00:00
|
|
|
private final Logger logger;
|
|
|
|
private final File dataFolder;
|
|
|
|
|
|
|
|
private TomlConfig config;
|
|
|
|
|
|
|
|
@Inject
|
|
|
|
public Plex(ProxyServer server, Logger logger, @DataDirectory Path folder)
|
|
|
|
{
|
|
|
|
plugin = this;
|
|
|
|
this.server = server;
|
|
|
|
this.logger = logger;
|
|
|
|
this.dataFolder = folder.toFile();
|
|
|
|
if (!dataFolder.exists())
|
|
|
|
{
|
|
|
|
dataFolder.mkdir();
|
|
|
|
}
|
2022-05-17 03:52:52 +00:00
|
|
|
PlexLog.log("Enabling Plex-Velocity");
|
2022-05-04 12:18:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Subscribe
|
|
|
|
public void onStart(ProxyInitializeEvent event)
|
|
|
|
{
|
|
|
|
this.config = new TomlConfig("config.toml");
|
|
|
|
this.config.setOnCreate(toml ->
|
|
|
|
{
|
|
|
|
PlexLog.log("Created configuration 'config.toml'");
|
|
|
|
});
|
|
|
|
this.config.setOnLoad(toml ->
|
|
|
|
{
|
|
|
|
PlexLog.log("Loaded configuration 'config.toml'");
|
|
|
|
});
|
2022-05-05 07:49:03 +00:00
|
|
|
this.config.create(true);
|
2022-05-04 12:18:07 +00:00
|
|
|
this.config.write(new ServerSettings());
|
|
|
|
new ListenerHandler();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static Plex get()
|
|
|
|
{
|
|
|
|
return plugin;
|
|
|
|
}
|
|
|
|
}
|