add config
This commit is contained in:
@@ -19,6 +19,7 @@ import net.md_5.bungee.api.event.ServerSwitchEvent;
|
|||||||
import net.md_5.bungee.api.plugin.Listener;
|
import net.md_5.bungee.api.plugin.Listener;
|
||||||
import net.md_5.bungee.api.plugin.Plugin;
|
import net.md_5.bungee.api.plugin.Plugin;
|
||||||
import net.md_5.bungee.event.EventHandler;
|
import net.md_5.bungee.event.EventHandler;
|
||||||
|
import us.ajg0702.queue.utils.BungeeConfig;
|
||||||
import us.ajg0702.queue.utils.BungeeMessages;
|
import us.ajg0702.queue.utils.BungeeMessages;
|
||||||
|
|
||||||
public class Main extends Plugin implements Listener {
|
public class Main extends Plugin implements Listener {
|
||||||
@@ -30,16 +31,22 @@ public class Main extends Plugin implements Listener {
|
|||||||
|
|
||||||
BungeeMessages msgs;
|
BungeeMessages msgs;
|
||||||
|
|
||||||
|
BungeeConfig config;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
|
|
||||||
msgs = BungeeMessages.getInstance(this);
|
msgs = BungeeMessages.getInstance(this);
|
||||||
|
|
||||||
|
config = new BungeeConfig(this);
|
||||||
|
|
||||||
this.getProxy().getPluginManager().registerCommand(this, new MoveCommand(this));
|
this.getProxy().getPluginManager().registerCommand(this, new MoveCommand(this));
|
||||||
this.getProxy().getPluginManager().registerCommand(this, new ManageCommand(this));
|
this.getProxy().getPluginManager().registerCommand(this, new ManageCommand(this));
|
||||||
|
|
||||||
this.getProxy().getPluginManager().registerListener(this, this);
|
this.getProxy().getPluginManager().registerListener(this, this);
|
||||||
|
|
||||||
|
timeBetweenPlayers = config.getInt("wait-time");
|
||||||
|
|
||||||
updateOnlineServers();
|
updateOnlineServers();
|
||||||
|
|
||||||
getProxy().getScheduler().schedule(this, new Runnable() {
|
getProxy().getScheduler().schedule(this, new Runnable() {
|
||||||
@@ -55,6 +62,10 @@ public class Main extends Plugin implements Listener {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BungeeConfig getConfig() {
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
public static BaseComponent[] formatMessage(String text) {
|
public static BaseComponent[] formatMessage(String text) {
|
||||||
return TextComponent.fromLegacyText(net.md_5.bungee.api.ChatColor.translateAlternateColorCodes('&', text));
|
return TextComponent.fromLegacyText(net.md_5.bungee.api.ChatColor.translateAlternateColorCodes('&', text));
|
||||||
}
|
}
|
||||||
@@ -159,6 +170,17 @@ public class Main extends Plugin implements Listener {
|
|||||||
if(queue != null) {
|
if(queue != null) {
|
||||||
queues.get(queue).remove(p);
|
queues.get(queue).remove(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String servername = e.getPlayer().getServer().getInfo().getName();
|
||||||
|
List<String> svs = config.getStringList("queue-servers");
|
||||||
|
for(String s : svs) {
|
||||||
|
String[] parts = s.split("\\:");
|
||||||
|
String from = parts[0];
|
||||||
|
String to = parts[1];
|
||||||
|
if(from.equalsIgnoreCase(servername)) {
|
||||||
|
addToQueue(p, to);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|||||||
@@ -0,0 +1,205 @@
|
|||||||
|
package us.ajg0702.queue.utils;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.text.DateFormat;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.md_5.bungee.api.plugin.Plugin;
|
||||||
|
import net.md_5.bungee.config.Configuration;
|
||||||
|
import net.md_5.bungee.config.ConfigurationProvider;
|
||||||
|
import net.md_5.bungee.config.YamlConfiguration;
|
||||||
|
|
||||||
|
public class BungeeConfig {
|
||||||
|
|
||||||
|
File f;
|
||||||
|
Configuration config;
|
||||||
|
|
||||||
|
ConfigurationProvider cv = ConfigurationProvider.getProvider(YamlConfiguration.class);
|
||||||
|
|
||||||
|
String nfm = "Could not find KEY in config! Try restarting the server or deleting the config and allowing the plugin to re-create it.";
|
||||||
|
|
||||||
|
public Object get(String key) {
|
||||||
|
Object r = config.get(key);
|
||||||
|
if(r == null) {
|
||||||
|
pl.getLogger().severe(nfm.replace("KEY", key));;
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
public Integer getInt(String key) {
|
||||||
|
int r = config.getInt(key, -38964298);
|
||||||
|
if(r == -38964298) {
|
||||||
|
pl.getLogger().severe(nfm.replace("KEY", key));;
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
public String getString(String key) {
|
||||||
|
String r = config.getString(key);
|
||||||
|
if(r == null) {
|
||||||
|
pl.getLogger().severe(nfm.replace("KEY", key));;
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
public List<String> getStringList(String key) {
|
||||||
|
List<String> r = config.getStringList(key);
|
||||||
|
if(r == null) {
|
||||||
|
pl.getLogger().severe(nfm.replace("KEY", key));;
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDefaultConfig() throws IOException {
|
||||||
|
BufferedReader stream = new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream(File.separator+"config.yml")));
|
||||||
|
StringBuilder configfile = new StringBuilder();
|
||||||
|
String line;
|
||||||
|
while((line = stream.readLine()) != null) {
|
||||||
|
configfile.append(line+"\n");
|
||||||
|
}
|
||||||
|
return configfile.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getConfigString() throws IOException {
|
||||||
|
List<String> lines = Files.readAllLines(Paths.get(pl.getDataFolder().getPath().toString(), "config.yml"));
|
||||||
|
String end = "";
|
||||||
|
for(String line : lines) {
|
||||||
|
end += line+"\n";
|
||||||
|
}
|
||||||
|
return end;
|
||||||
|
}
|
||||||
|
Plugin pl;
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public BungeeConfig(Plugin plugin) {
|
||||||
|
pl = plugin;
|
||||||
|
f = new File(plugin.getDataFolder(), "config.yml");
|
||||||
|
if(!f.exists()) {
|
||||||
|
if(!Files.exists(pl.getDataFolder().toPath())) {
|
||||||
|
try {
|
||||||
|
Files.createDirectory(pl.getDataFolder().toPath());
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
PrintWriter writer = new PrintWriter(pl.getDataFolder()+File.separator+"config.yml", "UTF-8");
|
||||||
|
String[] lines = getDefaultConfig().split("\n");
|
||||||
|
for(String line : lines) {
|
||||||
|
writer.println(line);
|
||||||
|
|
||||||
|
}
|
||||||
|
writer.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
//Bukkit.getLogger().info(configfile.toString());
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
f = new File(pl.getDataFolder(), "config.yml");
|
||||||
|
Configuration oldconfig = cv.load(f);
|
||||||
|
String newConfig = getDefaultConfig();
|
||||||
|
int oldver = oldconfig.getInt("config-version", 0);
|
||||||
|
String strv = newConfig
|
||||||
|
.split("config\\-version: ")[1]
|
||||||
|
.split("\n")[0];
|
||||||
|
//pl.getLogger().info("New config version: "+strv);
|
||||||
|
int newver = Integer.parseInt(strv);
|
||||||
|
if(oldver < newver) {
|
||||||
|
pl.getLogger().info("Starting config converter!");
|
||||||
|
Date date = Calendar.getInstance().getTime();
|
||||||
|
DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd-hh-mm-ss");
|
||||||
|
String strDate = dateFormat.format(date);
|
||||||
|
duplicateFile(f, new File(pl.getDataFolder(), "config.yml.old."+strDate));
|
||||||
|
String oldConfig = getConfigString();
|
||||||
|
f = new File(pl.getDataFolder(), "config.yml");
|
||||||
|
config = cv.load(f);
|
||||||
|
for(String key : oldconfig.getKeys()) {
|
||||||
|
pl.getLogger().info("Key: "+key);
|
||||||
|
String[] keyParts = key.split("\\.");
|
||||||
|
//pl.getLogger().info("Key len: "+keyParts.length);
|
||||||
|
String keySec = keyParts[keyParts.length-1];
|
||||||
|
pl.getLogger().info("keySec: "+keySec);
|
||||||
|
String newVal = newConfig.split(keySec)[1].split("\n")[0];
|
||||||
|
int i = 0;
|
||||||
|
for(String l : newConfig.split(keySec)[1].split("\n")) {
|
||||||
|
if(i == 0) {
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
pl.getLogger().info("Scanning: "+l);
|
||||||
|
if(l.startsWith("-")) {
|
||||||
|
newVal += "\n"+l;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String find = keySec+ newVal;
|
||||||
|
String replace = keySec + ": " + oldconfig.get(key);
|
||||||
|
replace = replace.replaceAll("\\[", "\n- ");
|
||||||
|
replace = replace.replaceAll("\\, ", "\n- ");
|
||||||
|
replace = replace.replaceAll("\\]", "");
|
||||||
|
pl.getLogger().info("Find: "+find +" Replace w: "+replace);
|
||||||
|
if(!keySec.equals("config-version")) {
|
||||||
|
newConfig = newConfig.replaceAll(find, replace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PrintWriter writer = new PrintWriter(f, "UTF-8");
|
||||||
|
String[] lines = newConfig.split("\n");
|
||||||
|
for(String line : lines) {
|
||||||
|
writer.println(line);
|
||||||
|
}
|
||||||
|
writer.close();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
pl.getLogger().severe("Unable to load default config! " + e.getMessage() + "\n" + e.getStackTrace().toString());;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
f = new File(pl.getDataFolder(), "config.yml");
|
||||||
|
try {
|
||||||
|
config = cv.load(f);
|
||||||
|
} catch (IOException e) {
|
||||||
|
pl.getLogger().warning("Unable to reload the config:");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void reload() {
|
||||||
|
try {
|
||||||
|
config = cv.load(f);
|
||||||
|
} catch (IOException e) {
|
||||||
|
pl.getLogger().warning("Unable to reload the config:");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static void duplicateFile(File source, File destination) throws IOException {
|
||||||
|
InputStream is = null;
|
||||||
|
OutputStream os = null;
|
||||||
|
try {
|
||||||
|
is = new FileInputStream(source);
|
||||||
|
os = new FileOutputStream(destination);
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
int length;
|
||||||
|
while ((length = is.read(buffer)) > 0) {
|
||||||
|
os.write(buffer, 0, length);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
is.close();
|
||||||
|
os.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -66,6 +66,7 @@ public class BungeeMessages {
|
|||||||
d.put("errors.already-connected", "&cYou are already connected to this server!");
|
d.put("errors.already-connected", "&cYou are already connected to this server!");
|
||||||
|
|
||||||
d.put("commands.leave-queue", "&aYou left the queue!");
|
d.put("commands.leave-queue", "&aYou left the queue!");
|
||||||
|
d.put("commands.reload", "&aConfig and messages reloaded successfully!");
|
||||||
|
|
||||||
d.put("noperm", "&cYou do not have permission to do this!");
|
d.put("noperm", "&cYou do not have permission to do this!");
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# Dont touch this number please
|
||||||
|
config-version: 1
|
||||||
|
|
||||||
|
# The time the server will wait between sending people in the queue
|
||||||
|
# Default: 5
|
||||||
|
wait-time: 5
|
||||||
|
|
||||||
|
# If a player is in a server, you can have the plugin make them automatically join a queue for another server
|
||||||
|
# Example with the default values: Player joins survivalfallback server, they will auto-join the queue for survival
|
||||||
|
queue-servers:
|
||||||
|
- 'survivalfallback:survival'
|
||||||
Reference in New Issue
Block a user