added effects and combo
This commit is contained in:
parent
441ded118b
commit
2efb1cb69e
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
Binary file not shown.
6
out/production/BungeeQueue/config.example.yml
Normal file
6
out/production/BungeeQueue/config.example.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
queueServer: "queue"
|
||||||
|
targetServer: "server"
|
||||||
|
maxPlayers: 50
|
||||||
|
|
||||||
|
enforceDefaultTimeout: 30
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,3 +1,4 @@
|
|||||||
name: BungeeQueue
|
name: BungeeQueue
|
||||||
main: eu.mhsl.minecraft.bungeequeue.BungeeQueue
|
main: eu.mhsl.minecraft.bungeequeue.BungeeQueue
|
||||||
version: 0.1
|
version: 0.1
|
||||||
|
author: MineTec
|
6
src/config.example.yml
Normal file
6
src/config.example.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
queueServer: "queue"
|
||||||
|
targetServer: "server"
|
||||||
|
maxPlayers: 50
|
||||||
|
|
||||||
|
enforceDefaultTimeout: 30
|
||||||
|
|
@ -9,7 +9,14 @@ import net.md_5.bungee.api.ProxyServer;
|
|||||||
import net.md_5.bungee.api.config.ServerInfo;
|
import net.md_5.bungee.api.config.ServerInfo;
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
import net.md_5.bungee.api.plugin.Plugin;
|
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;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.nio.file.Files;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@ -19,29 +26,63 @@ public class BungeeQueue extends Plugin {
|
|||||||
public static ServerInfo queueServer;
|
public static ServerInfo queueServer;
|
||||||
public static ServerInfo targetServer;
|
public static ServerInfo targetServer;
|
||||||
|
|
||||||
public static int maxPlayers = 1; //mutable per command
|
public static int maxPlayers = 1; //mutable per command and config
|
||||||
|
|
||||||
|
public static Configuration conf;
|
||||||
|
public static File dataFolder;
|
||||||
|
|
||||||
public static List<ProxiedPlayer> list = new ArrayList<>();
|
public static List<ProxiedPlayer> list = new ArrayList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
plugin = this;
|
plugin = this;
|
||||||
|
dataFolder = getDataFolder();
|
||||||
|
|
||||||
|
try {
|
||||||
|
if(!dataFolder.exists()) dataFolder.mkdir();
|
||||||
|
File configFile = new File(dataFolder, "config.yml");
|
||||||
|
if(!configFile.exists()) {
|
||||||
|
try(InputStream in = getResourceAsStream("config.example.yml")) {
|
||||||
|
Files.copy(in, configFile.toPath());
|
||||||
|
} catch(IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
conf = ConfigurationProvider.getProvider(YamlConfiguration.class).load(new File(dataFolder, "config.yml"));
|
||||||
|
maxPlayers = conf.getInt("maxPlayers");
|
||||||
|
} catch(IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
ProxyServer instance = ProxyServer.getInstance();
|
ProxyServer instance = ProxyServer.getInstance();
|
||||||
|
|
||||||
queueServer = instance.getServerInfo("queue");
|
queueServer = instance.getServerInfo(conf.getString("queueServer"));
|
||||||
targetServer = instance.getServerInfo("server");
|
targetServer = instance.getServerInfo(conf.getString("targetServer"));
|
||||||
|
|
||||||
instance.getPluginManager().registerListener(this, new PlayerJoin());
|
instance.getPluginManager().registerListener(this, new PlayerJoin());
|
||||||
instance.getPluginManager().registerCommand(this, new MaxPlayers());
|
instance.getPluginManager().registerCommand(this, new MaxPlayers());
|
||||||
|
|
||||||
instance.getScheduler().schedule(this, new MoveToTarget(), 5, 1, TimeUnit.SECONDS);
|
instance.getScheduler().schedule(this, new MoveToTarget(), 5, 1, TimeUnit.SECONDS);
|
||||||
instance.getScheduler().schedule(this, new QueueInfoMessager(), 5, 2, TimeUnit.SECONDS);
|
instance.getScheduler().schedule(this, new QueueInfoMessager(), 1, 2, TimeUnit.SECONDS);
|
||||||
instance.getScheduler().schedule(this, new PlayersWaitingCheck(), 10, 10, TimeUnit.SECONDS);
|
instance.getScheduler().schedule(this, new PlayersWaitingCheck(), 10, 10, TimeUnit.SECONDS);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
|
ProxyServer.getInstance().getPluginManager().unregisterListeners(this);
|
||||||
|
ProxyServer.getInstance().getPluginManager().unregisterCommands(this);
|
||||||
|
saveConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean saveConfig() {
|
||||||
|
try {
|
||||||
|
ConfigurationProvider.getProvider(YamlConfiguration.class).save(conf, new File(dataFolder, "config.yml"));
|
||||||
|
return true;
|
||||||
|
} catch(IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -27,21 +27,23 @@ public class MaxPlayers extends Command {
|
|||||||
case "set":
|
case "set":
|
||||||
if(strings.length == 2) {
|
if(strings.length == 2) {
|
||||||
BungeeQueue.maxPlayers = Integer.parseInt(strings[1]);
|
BungeeQueue.maxPlayers = Integer.parseInt(strings[1]);
|
||||||
|
BungeeQueue.conf.set("maxPlayers", BungeeQueue.maxPlayers);
|
||||||
|
BungeeQueue.saveConfig();
|
||||||
p.sendMessage(new ComponentBuilder("Die Maximale Spieleranzahl wurde auf " + strings[1] + " gesetzt.").color(ChatColor.GREEN).create());
|
p.sendMessage(new ComponentBuilder("Die Maximale Spieleranzahl wurde auf " + strings[1] + " gesetzt.").color(ChatColor.GREEN).create());
|
||||||
} else p.sendMessage(new ComponentBuilder("Bitte definiere die maximale Spieleranzahl: /maxplayers set <amount> ").color(ChatColor.RED).create());
|
} else p.sendMessage(new ComponentBuilder("Bitte definiere die maximale Spieleranzahl: /maxplayers set <amount> ").color(ChatColor.RED).create());
|
||||||
break;
|
break;
|
||||||
case "query":
|
case "query":
|
||||||
p.sendMessage(new ComponentBuilder("Die aktuelle Spielerzahl ist " + BungeeQueue.maxPlayers).color(ChatColor.GREEN)
|
p.sendMessage(new ComponentBuilder("Die aktuelle Spieleranzahl ist " + BungeeQueue.maxPlayers).color(ChatColor.GREEN)
|
||||||
.append("\n... davon belegt " + BungeeQueue.targetServer.getPlayers().size()).color(ChatColor.GREEN)
|
.append("\n... davon belegt " + BungeeQueue.targetServer.getPlayers().size()).color(ChatColor.GREEN)
|
||||||
.append("\ndu kannst 'enforce' nutzen, um eine Überbelegung zu verhindern.").color(ChatColor.RED)
|
.append("\nDu kannst 'enforce' nutzen, um eine Überbelegung zu verhindern.").color(ChatColor.RED)
|
||||||
.create()
|
.create()
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case "enforce":
|
case "enforce":
|
||||||
if(enforceMaxPlayer(strings.length == 2 ? Integer.parseInt(strings[1]) : 30))
|
if(enforceMaxPlayer(strings.length == 2 ? Integer.parseInt(strings[1]) : BungeeQueue.conf.getInt("enforceDefaultTimeout")))
|
||||||
p.sendMessage(new ComponentBuilder("Die maximale Spielerzahl wird durchgesetzt...").color(ChatColor.GREEN).create());
|
p.sendMessage(new ComponentBuilder("Die maximale Spieleranzahl wird durchgesetzt...").color(ChatColor.GREEN).create());
|
||||||
else
|
else
|
||||||
p.sendMessage(new ComponentBuilder("Die maximale Spielerzahl ist nicht erreicht und kann somit auch nicht durchgesetzt werden!").color(ChatColor.RED).create());
|
p.sendMessage(new ComponentBuilder("Die maximale Spieleranzahl ist nicht erreicht und kann somit auch nicht durchgesetzt werden!").color(ChatColor.RED).create());
|
||||||
break;
|
break;
|
||||||
case "bypass":
|
case "bypass":
|
||||||
if(strings.length > 2) {
|
if(strings.length > 2) {
|
||||||
@ -74,8 +76,8 @@ public class MaxPlayers extends Command {
|
|||||||
evaluatedPlayers.add(players.get(i));
|
evaluatedPlayers.add(players.get(i));
|
||||||
|
|
||||||
players.get(i).sendMessage(new ComponentBuilder("\n\n>> Achtung >> \n").bold(true).color(ChatColor.RED)
|
players.get(i).sendMessage(new ComponentBuilder("\n\n>> Achtung >> \n").bold(true).color(ChatColor.RED)
|
||||||
.append("Aufgrund eines zu hohen Spieleraufkommens werden zufällige Spieler vom Server gekickt.\n Begebe dich an einen sicheren Ort.\n").color(ChatColor.GOLD)
|
.append("Aufgrund eines zu hohen Spieleraufkommens, das Lags erzeugt, werden zufällige Spieler vom Server gekickt.\n Begebe dich an einen sicheren Ort.\n").color(ChatColor.GOLD)
|
||||||
.append("Du wirst in " + timeout + " sekunden in die Queue verschoben!\n\n").color(ChatColor.RED)
|
.append("Du wirst in " + timeout + " Sekunden in die Warteschlange verschoben!\n\n").color(ChatColor.RED)
|
||||||
.create()
|
.create()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -85,7 +87,7 @@ public class MaxPlayers extends Command {
|
|||||||
public void run() {
|
public void run() {
|
||||||
for(ProxiedPlayer p : evaluatedPlayers) {
|
for(ProxiedPlayer p : evaluatedPlayers) {
|
||||||
p.connect(BungeeQueue.queueServer);
|
p.connect(BungeeQueue.queueServer);
|
||||||
p.sendMessage(new ComponentBuilder("Du wurdest wie angekündigt aufgrund einer zu hohen Spielerzahl zurück in die Queue versetzt. Die Auswahl dich zu verschieben war Zufällig. Sorry - gönn dir eine Pause!").color(ChatColor.GOLD).create());
|
p.sendMessage(new ComponentBuilder("Du wurdest wie angekündigt aufgrund eines zu hohen Spieleraufkommens zurück in die Warteschlange versetzt. Die Auswahl Dich zu verschieben war zufällig. Sorry!").color(ChatColor.GOLD).create());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, timeout, TimeUnit.SECONDS);
|
}, timeout, TimeUnit.SECONDS);
|
||||||
|
@ -10,7 +10,11 @@ import net.md_5.bungee.event.EventHandler;
|
|||||||
public class PlayerJoin implements Listener {
|
public class PlayerJoin implements Listener {
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerJoin(PostLoginEvent e) {
|
public void onPlayerJoin(PostLoginEvent e) {
|
||||||
e.getPlayer().sendMessage(new ComponentBuilder("Du wurdest zur Queue hinzugefügt!").color(ChatColor.DARK_AQUA).create());
|
e.getPlayer().sendMessage(new ComponentBuilder("Hey,\nDu befindest dich gerade in der Warteschlange des ").color(ChatColor.GOLD)
|
||||||
|
.append(" CraftAttack 4 ").color(ChatColor.AQUA)
|
||||||
|
.append("Servers.\nÜber deiner Hotbar siehst Du deinen aktuellen Platz in der Warteschlange. Wir entschuldigen, dass Du hier warten musst, aber um den Server lagfrei zu betreiben ist dies unerlässlich.").color(ChatColor.GOLD)
|
||||||
|
.create()
|
||||||
|
);
|
||||||
BungeeQueue.list.add(e.getPlayer());
|
BungeeQueue.list.add(e.getPlayer());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ public class QueueInfoMessager implements Runnable {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
for(ProxiedPlayer p : BungeeQueue.list) {
|
for(ProxiedPlayer p : BungeeQueue.list) {
|
||||||
|
int percent = (int) Math.abs(((((float) (BungeeQueue.list.indexOf(p)+1) / (BungeeQueue.list.size()+1)) * 100))-100);
|
||||||
p.sendMessage(
|
p.sendMessage(
|
||||||
ChatMessageType.ACTION_BAR,
|
ChatMessageType.ACTION_BAR,
|
||||||
new ComponentBuilder("Warteschlange platz ").color(ChatColor.DARK_GREEN)
|
new ComponentBuilder("Warteschlange platz ").color(ChatColor.DARK_GREEN)
|
||||||
@ -17,7 +18,7 @@ public class QueueInfoMessager implements Runnable {
|
|||||||
.append(" / ").bold(false).color(ChatColor.DARK_GREEN)
|
.append(" / ").bold(false).color(ChatColor.DARK_GREEN)
|
||||||
.append(BungeeQueue.list.size()+"").bold(true).color(ChatColor.GREEN)
|
.append(BungeeQueue.list.size()+"").bold(true).color(ChatColor.GREEN)
|
||||||
.append(" - (").color(ChatColor.GRAY)
|
.append(" - (").color(ChatColor.GRAY)
|
||||||
.append("" + ((BungeeQueue.list.indexOf(p) / BungeeQueue.list.size()) * 100))
|
.append("" + percent)
|
||||||
.append("%)")
|
.append("%)")
|
||||||
.create()
|
.create()
|
||||||
);
|
);
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
name: BungeeQueue
|
name: BungeeQueue
|
||||||
main: eu.mhsl.minecraft.bungeequeue.BungeeQueue
|
main: eu.mhsl.minecraft.bungeequeue.BungeeQueue
|
||||||
version: 0.1
|
version: 0.1
|
||||||
|
author: MineTec
|
Loading…
x
Reference in New Issue
Block a user