diff --git a/src/de/steamwar/bungeecore/Message.java b/src/de/steamwar/bungeecore/Message.java
new file mode 100644
index 0000000..8c64a6f
--- /dev/null
+++ b/src/de/steamwar/bungeecore/Message.java
@@ -0,0 +1,131 @@
+/*
+ This file is a part of the SteamWar software.
+
+ Copyright (C) 2020 SteamWar.de-Serverteam
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+*/
+
+package de.steamwar.bungeecore;
+
+import de.steamwar.bungeecore.listeners.ConnectionListener;
+import net.md_5.bungee.api.ChatMessageType;
+import net.md_5.bungee.api.CommandSender;
+import net.md_5.bungee.api.ProxyServer;
+import net.md_5.bungee.api.chat.ClickEvent;
+import net.md_5.bungee.api.chat.HoverEvent;
+import net.md_5.bungee.api.chat.TextComponent;
+import net.md_5.bungee.api.connection.ProxiedPlayer;
+
+import java.nio.charset.StandardCharsets;
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+public class Message {
+ private Message(){}
+
+ public static TextComponent parseToComponent(String message, boolean prefixed, CommandSender sender, Object... params){
+ return new TextComponent(TextComponent.fromLegacyText(parse(message, prefixed, sender, params)));
+ }
+
+ public static String parsePrefixed(String message, CommandSender sender, Object... params){
+ return parse(message, true, sender, params);
+ }
+
+ public static String parse(String message, CommandSender sender, Object... params){
+ return parse(message, false, sender, params);
+ }
+
+ private static String parse(String message, boolean prefixed, CommandSender sender,Object... params){
+ Locale locale;
+ if(sender instanceof ProxiedPlayer)
+ locale = ((ProxiedPlayer)sender).getLocale();
+ else
+ locale = Locale.getDefault();
+
+ ResourceBundle resourceBundle = ResourceBundle.getBundle("de.steamwar.messages.BungeeCore", locale);
+ String pattern = "";
+ if(prefixed)
+ pattern = new String(((String)resourceBundle.getObject("PREFIX")).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8) + " ";
+ pattern += new String(((String)resourceBundle.getObject(message)).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
+
+ return new MessageFormat(pattern, locale).format(params);
+ }
+
+ public static void send(String message, CommandSender sender, Object... params){
+ send(message, true, sender, ChatMessageType.SYSTEM, null, null, params);
+ }
+
+ public static void sendPrefixless(String message, CommandSender sender, Object... params){
+ send(message, false, sender, ChatMessageType.SYSTEM, null, null, params);
+ }
+
+ public static void send(String message, CommandSender sender, ChatMessageType type, Object... params){
+ send(message, true, sender, type, null, null, params);
+ }
+
+ public static void sendPrefixless(String message, CommandSender sender, ChatMessageType type, Object... params){
+ send(message, false, sender, type, null, null, params);
+ }
+
+ public static void send(String message, CommandSender sender, String onHover, ClickEvent onClick, Object... params){
+ send(message, true, sender, ChatMessageType.SYSTEM, onHover, onClick, params);
+ }
+
+ public static void sendPrefixless(String message, CommandSender sender, String onHover, ClickEvent onClick, Object... params){
+ send(message, false, sender, ChatMessageType.SYSTEM, onHover, onClick, params);
+ }
+
+ public static void send(String message, boolean prefixed, CommandSender sender, ChatMessageType type, String onHover, ClickEvent onClick, Object... params){
+ TextComponent msg = parseToComponent(message, prefixed, sender, params);
+ if(onHover != null)
+ msg.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText(onHover)));
+ if(onClick != null)
+ msg.setClickEvent(onClick);
+ if(sender instanceof ProxiedPlayer)
+ ((ProxiedPlayer)sender).sendMessage(type, msg);
+ else
+ sender.sendMessage(msg);
+ }
+
+ public static void broadcast(String message, String onHover, ClickEvent onClick, Object... params){
+ for(ProxiedPlayer player : ProxyServer.getInstance().getPlayers())
+ send(message, player, parse(onHover, false, player), onClick, params);
+ }
+
+ public static void broadcast(String message, Object... params){
+ for(ProxiedPlayer player : ProxyServer.getInstance().getPlayers())
+ send(message, player, ChatMessageType.SYSTEM, params);
+ }
+
+ public static void chat(String message, Object... params){
+ for(ProxiedPlayer player : ProxyServer.getInstance().getPlayers()){
+ Subserver server = Subserver.getSubserver(player);
+ if(server == null || server.getType() != Servertype.ARENA)
+ sendPrefixless(message, player, ChatMessageType.CHAT, params);
+ }
+ }
+
+ public static void team(String message, Object... params){
+ team(message, ChatMessageType.SYSTEM, params);
+ }
+
+ public static void team(String message, ChatMessageType type, Object... params){
+ for(ProxiedPlayer player : ProxyServer.getInstance().getPlayers()){
+ if(player.getGroups().contains(ConnectionListener.TEAM_GROUP))
+ sendPrefixless(message, player, type, params);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/de/steamwar/bungeecore/SubserverSystem.java b/src/de/steamwar/bungeecore/SubserverSystem.java
index 04fbc81..f698afb 100644
--- a/src/de/steamwar/bungeecore/SubserverSystem.java
+++ b/src/de/steamwar/bungeecore/SubserverSystem.java
@@ -32,23 +32,13 @@ import java.util.*;
public class SubserverSystem {
private SubserverSystem(){}
+
private static final String BACKBONE = "/home/minecraft/backbone/";
- private static final List JVM_ARGS = Arrays.asList("-Dlog4j.configurationFile=log4j2.xml", "-server", "-Xms128M", "-XX:ThreadPriorityPolicy=42", "-XX:+TieredCompilation", "-XX:TargetSurvivorRatio=90", "-XX:SurvivorRatio=8", "-XX:MaxTenuringThreshold=15", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseBiasedLocking", "-XX:UseSSE=3", "-XX:+UseCodeCacheFlushing", "-XX:+UseThreadPriorities", "-XX:+UseFastAccessorMethods", "-XX:+AggressiveOpts", "-XX:+ReduceSignalUsage", "-XX:+UseInterpreter", "-XX:+UseFastEmptyMethods", "-XX:+UseSharedSpaces", "-XX:AllocatePrefetchStyle=1", "-XX:+AlwaysCompileLoopMethods", "-XX:SharedReadOnlySize=30m", "-XX:+UseConcMarkSweepGC", "-XX:+RewriteFrequentPairs", "-XX:+OptimizeStringConcat", "-XX:+CMSCleanOnEnter", "-XX:+UseInlineCaches");
+ private static final List JVM_ARGS = Arrays.asList("-Dlog4j.configurationFile=log4j2.xml", "-server", "-Xms128M", "-XX:+UseCompressedOops", "-XX:+TieredCompilation", "-XX:TargetSurvivorRatio=90", "-XX:SurvivorRatio=8", "-XX:MaxTenuringThreshold=15", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseBiasedLocking", "-XX:UseSSE=3", "-XX:+UseCodeCacheFlushing", "-XX:+UseThreadPriorities", "-XX:+AggressiveOpts", "-XX:+ReduceSignalUsage", "-XX:+UseInterpreter", "-XX:+UseSharedSpaces", "-XX:AllocatePrefetchStyle=1", "-XX:+AlwaysCompileLoopMethods", "-XX:+UseConcMarkSweepGC", "-XX:+RewriteFrequentPairs", "-XX:+OptimizeStringConcat", "-XX:+CMSCleanOnEnter", "-XX:+UseInlineCaches");
+ private static final List JVM8_ARGS = Arrays.asList("-XX:ThreadPriorityPolicy=42", "-XX:SharedReadOnlySize=30m", "-XX:+UseFastEmptyMethods", "-XX:+UseFastAccessorMethods");
private static final String ARENA_PATH = BACKBONE + "arenaserver/";
private static final String SERVER_PATH = BACKBONE + "server/";
private static final String EVENT_PATH = BACKBONE + "event/";
- private static final String BINARY_PATH = "/binarys/";
-
- public static void sendDeniedMessage(ProxiedPlayer p, UUID owner){
- ProxiedPlayer o = ProxyServer.getInstance().getPlayer(owner);
- if(o == null)
- return;
-
- BungeeCore.send(o, BungeeCore.CHAT_PREFIX + "§e" + p.getName() + " §7möchte auf deine Bauwelt.");
- BungeeCore.send(o, "§7Klicke §ehier§7, wenn du das erlauben möchtest.",
- "§e/bau addmember " + p.getName(),
- new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/bau addmember " + p.getName()));
- }
/**
* This function starts every arena (even test- and eventarenas).
@@ -109,30 +99,18 @@ public class SubserverSystem {
throw new SecurityException("Could not copy folder", e);
}
- //Generate launch command
- List cmd = new LinkedList<>();
- cmd.add("java");
- cmd.add("-DlogPath=" + mapName);
- cmd.add("-DfightID=" + eventFightID);
- if(player1 != null && eventFightID != -1)
- cmd.add("-DblueLeader=" + player1.toString());
- if(player2 != null)
- cmd.add("-DredLeader=" + player2.toString());
- if(checkSchemID != 0)
- cmd.add("-DcheckSchemID=" + checkSchemID);
- if(ranked)
- cmd.add("-Dranked=true");
- cmd.add("-Xmx2G");
- cmd.addAll(JVM_ARGS);
- cmd.add("-jar");
- cmd.add(BINARY_PATH + modus.serverJar());
- cmd.add("--log-strip-color");
- cmd.add("--world-dir");
- cmd.add(worldDir);
- cmd.add("--level-name");
- cmd.add(mapName);
- cmd.add("--port");
- cmd.add(String.valueOf(port));
+ List cmd = serverStartCommand(
+ modus.serverJar(),
+ worldDir,
+ mapName,
+ port,
+ "2G",
+ "logPath=" + mapName,
+ "fightID=" + eventFightID,
+ "ranked=" + ranked,
+ "checkSchemID=" + checkSchemID,
+ player1 != null && eventFightID != -1 ? "blueLeader=" + player1.toString() : null,
+ player2 != null ? "redLeader=" + player2.toString() : null);
//Start server
ProcessBuilder process = new ProcessBuilder(cmd);
@@ -164,10 +142,6 @@ public class SubserverSystem {
return startArena(modus, map, eventFightID, checkSchemID, serverName, mapName, player1, player2, false);
}
- public static Subserver startArena(ArenaMode modus, String map){
- return startArena(modus, map, 0, 0, null, null, null, null);
- }
-
public static Subserver startEventArena(EventFight eventFight, String serverName){
return startArena(
eventFight.getSpielmodus(),
@@ -180,7 +154,7 @@ public class SubserverSystem {
null);
}
- public static void sendToTestServer(ProxiedPlayer p, ArenaMode m, String map, int checkSchemId){
+ public static void startTestServer(ProxiedPlayer p, ArenaMode m, String map, int checkSchemId){
startArena(m, map, -1, checkSchemId, p.getName() + "s Bau", p.getName(), p.getUniqueId(), null).sendPlayer(p);
}
@@ -189,24 +163,16 @@ public class SubserverSystem {
return;
SteamwarUser user = SteamwarUser.get(owner);
- copyBauwelt(p, BungeeCore.BAUWELT_PROTOTYP, BungeeCore.WORLD_FOLDER + owner.toString());
+ copyBauweltIfRequired(p, BungeeCore.BAUWELT_PROTOTYP, BungeeCore.WORLD_FOLDER + owner.toString());
int port = freePort(4000);
- //Generate launch command
- List cmd = new LinkedList<>();
- cmd.add("java");
- cmd.add("-DlogPath=" + owner.toString());
- cmd.add("-Xmx256M");
- cmd.addAll(JVM_ARGS);
- cmd.add("-jar");
- cmd.add(BINARY_PATH + "spigot-1.12.2.jar");
- cmd.add("--log-strip-color");
- cmd.add("--world-dir");
- cmd.add("/home/minecraft/userworlds");
- cmd.add("--level-name");
- cmd.add(owner.toString());
- cmd.add("--port");
- cmd.add(String.valueOf(port));
+ List cmd = serverStartCommand(
+ "spigot-1.12.2.jar",
+ "/home/minecraft/userworlds",
+ owner.toString(),
+ port,
+ "256M",
+ "logPath=" + owner.toString());
//Start server
ProcessBuilder process = new ProcessBuilder(cmd);
@@ -220,24 +186,16 @@ public class SubserverSystem {
return;
SteamwarUser user = SteamwarUser.get(owner);
- copyBauwelt(p, BungeeCore.BAUWELT15, BungeeCore.USERWORLDS15 + user.getId());
+ copyBauweltIfRequired(p, BungeeCore.BAUWELT15, BungeeCore.USERWORLDS15 + user.getId());
int port = freePort(4000);
- //Generate launch command
- List cmd = new LinkedList<>();
- cmd.add("java");
- cmd.add("-DlogPath=" + user.getId());
- cmd.add("-Xmx512M");
- cmd.addAll(JVM_ARGS);
- cmd.add("-jar");
- cmd.add(BINARY_PATH + "spigot-1.15.2.jar");
- cmd.add("--log-strip-color");
- cmd.add("--world-dir");
- cmd.add("/home/minecraft/userworlds15");
- cmd.add("--level-name");
- cmd.add(String.valueOf(user.getId()));
- cmd.add("--port");
- cmd.add(String.valueOf(port));
+ List cmd = serverStartCommand(
+ "spigot-1.15.2.jar",
+ "/home/minecraft/userworlds15",
+ String.valueOf(user.getId()),
+ port,
+ "512M",
+ "logPath=" + user.getId());
//Start server
ProcessBuilder process = new ProcessBuilder(cmd);
@@ -246,6 +204,45 @@ public class SubserverSystem {
new Bauserver(user.getUserName() + "s Bau", owner, port, process, () -> {}).sendPlayer(p);
}
+ public static void sendDeniedMessage(ProxiedPlayer p, UUID owner){
+ ProxiedPlayer o = ProxyServer.getInstance().getPlayer(owner);
+ if(o == null)
+ return;
+
+ BungeeCore.send(o, BungeeCore.CHAT_PREFIX + "§e" + p.getName() + " §7möchte auf deine Bauwelt.");
+ BungeeCore.send(o, "§7Klicke §ehier§7, wenn du das erlauben möchtest.",
+ "§e/bau addmember " + p.getName(),
+ new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/bau addmember " + p.getName()));
+ }
+
+ private static List serverStartCommand(String serverJar, String worldDir, String levelName, int port, String xmx, String... dParams){
+ List cmd = new ArrayList<>();
+ boolean jdk11 = serverJar.contains("1.15.2");
+ if(jdk11)
+ cmd.add("/usr/lib/jvm/java-11-openjdk-amd64/bin/java");
+ else
+ cmd.add("java");
+
+ for(String param : dParams){
+ cmd.add("-D" + param);
+ }
+ cmd.add("-Xmx" + xmx);
+ cmd.addAll(JVM_ARGS);
+ if(!jdk11)
+ cmd.addAll(JVM8_ARGS);
+ cmd.add("-jar");
+ cmd.add("/binarys/" + serverJar);
+ cmd.add("--log-strip-color");
+ cmd.add("--world-dir");
+ cmd.add(worldDir);
+ cmd.add("--level-name");
+ cmd.add(levelName);
+ cmd.add("--port");
+ cmd.add(String.valueOf(port));
+
+ return cmd;
+ }
+
private static boolean bauRunning(ProxiedPlayer p, UUID owner){
for(Subserver subserver : Subserver.getServerList()){
if(subserver.getType() == Servertype.BAUSERVER && ((Bauserver)subserver).getOwner().equals(owner)){
@@ -256,7 +253,7 @@ public class SubserverSystem {
return false;
}
- private static void copyBauwelt(ProxiedPlayer p, String sourcePath, String targetPath){
+ private static void copyBauweltIfRequired(ProxiedPlayer p, String sourcePath, String targetPath){
File w = new File(targetPath);
if (!w.exists() || !w.isDirectory()){
try {
diff --git a/src/de/steamwar/bungeecore/commands/BauCommand.java b/src/de/steamwar/bungeecore/commands/BauCommand.java
index 1a323b3..98aad17 100644
--- a/src/de/steamwar/bungeecore/commands/BauCommand.java
+++ b/src/de/steamwar/bungeecore/commands/BauCommand.java
@@ -280,7 +280,7 @@ public class BauCommand {
break;
}
}
- SubserverSystem.sendToTestServer(p, mode, map, 0);
+ SubserverSystem.startTestServer(p, mode, map, 0);
}));
}
diff --git a/src/de/steamwar/bungeecore/commands/CheckCommand.java b/src/de/steamwar/bungeecore/commands/CheckCommand.java
index 24a1156..d7eaf1a 100644
--- a/src/de/steamwar/bungeecore/commands/CheckCommand.java
+++ b/src/de/steamwar/bungeecore/commands/CheckCommand.java
@@ -232,7 +232,7 @@ public class CheckCommand extends BasicCommand {
}
ArenaMode mode = ArenaMode.getByCheckSchemType(schematic.getSchemType().toDB());
- SubserverSystem.sendToTestServer(checker, mode, FightCommand.getMap(checker, mode, "Random"), schematic.getSchemID());
+ SubserverSystem.startTestServer(checker, mode, FightCommand.getMap(checker, mode, "Random"), schematic.getSchemID());
currentCheckers.put(checker.getUniqueId(), this);
currentSchems.put(schematic.getSchemID(), this);
next(0);
diff --git a/src/de/steamwar/bungeecore/commands/FightCommand.java b/src/de/steamwar/bungeecore/commands/FightCommand.java
index 002c6d1..ea00e0b 100644
--- a/src/de/steamwar/bungeecore/commands/FightCommand.java
+++ b/src/de/steamwar/bungeecore/commands/FightCommand.java
@@ -58,7 +58,7 @@ public class FightCommand extends BasicCommand {
String realMap = mode.hasMap(arg.toLowerCase());
if(realMap != null)
return realMap;
- if(arg.equals("Random"))
+ if(arg.equalsIgnoreCase("Random"))
return mode.getRandomMap();
BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "§cDie gewünschte Arena gibt es nicht.");
diff --git a/src/de/steamwar/bungeecore/commands/HelpCommand.java b/src/de/steamwar/bungeecore/commands/HelpCommand.java
index d8a92d9..afb08f5 100644
--- a/src/de/steamwar/bungeecore/commands/HelpCommand.java
+++ b/src/de/steamwar/bungeecore/commands/HelpCommand.java
@@ -19,12 +19,10 @@
package de.steamwar.bungeecore.commands;
-import de.steamwar.bungeecore.BungeeCore;
+import de.steamwar.bungeecore.Message;
+import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.chat.ClickEvent;
-import net.md_5.bungee.api.chat.ComponentBuilder;
-import net.md_5.bungee.api.chat.HoverEvent;
-import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.connection.ProxiedPlayer;
public class HelpCommand extends BasicCommand {
@@ -35,115 +33,45 @@ public class HelpCommand extends BasicCommand {
@Override
public void execute(CommandSender sender, String[] args) {
if(args.length != 1){
- TextComponent tc = new TextComponent(BungeeCore.CHAT_PREFIX + "§7Kehre von überall mit §8/§el §7zur Lobby zurück!");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eZurück zur Lobby").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/l"));
- sender.sendMessage(tc);
-
- tc = new TextComponent(BungeeCore.CHAT_PREFIX + "§7Komme mit §8/§ebau §7auf den Bauserver!");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eZum Bauserver").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/bauserver"));
- sender.sendMessage(tc);
-
- tc = new TextComponent(BungeeCore.CHAT_PREFIX + "§7Erhalte mit §8/§ehelp bauserver §7Hilfe zum Bauserver!");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eHilfe zum Bauserver").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/help bauserver"));
- sender.sendMessage(tc);
-
- tc = new TextComponent(BungeeCore.CHAT_PREFIX + "§7Starte mit §8/§efight §7einen neuen Kampf!");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eZum Kampfsystem").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/fight"));
- sender.sendMessage(tc);
-
- tc = new TextComponent(BungeeCore.CHAT_PREFIX + "§7Tippe §8/§echallenge§7, um jemanden herauszufordern!");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eHerausfordern").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/challenge"));
- sender.sendMessage(tc);
-
- tc = new TextComponent(BungeeCore.CHAT_PREFIX + "§7Starte mit §8/§ehistoric §7einen historischen Kampf!");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eHistorische Kämpfe").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/historic"));
- sender.sendMessage(tc);
-
- tc = new TextComponent(BungeeCore.CHAT_PREFIX + "§8/§eteam§7 für das Teamsystem!");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eTeamverwaltung").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/team"));
- sender.sendMessage(tc);
-
- tc = new TextComponent(BungeeCore.CHAT_PREFIX + "§7Trete mit §8/§ejoin §8[§eSpieler§8] §7einem Kampf bei!");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eSpieler beitreten").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/join"));
- sender.sendMessage(tc);
-
- tc = new TextComponent(BungeeCore.CHAT_PREFIX + "§7Schreibe mit §8/§elocal §7nur auf dem lokalen Server!");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eLokaler Chat").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/local"));
- sender.sendMessage(tc);
+ Message.send("HELP_LOBBY", true, sender, ChatMessageType.SYSTEM, Message.parse("HELP_LOBBY_HOVER", sender), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/l"));
+ Message.send("HELP_BAU", true, sender, ChatMessageType.SYSTEM, Message.parse("HELP_BAU_HOVER", sender), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/bau"));
+ Message.send("HELP_BAUSERVER", true, sender, ChatMessageType.SYSTEM, Message.parse("HELP_BAUSERVER_HOVER", sender), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/help bauserver"));
+ Message.send("HELP_FIGHT", true, sender, ChatMessageType.SYSTEM, Message.parse("HELP_FIGHT_HOVER", sender), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/fight"));
+ Message.send("HELP_CHALLENGE", true, sender, ChatMessageType.SYSTEM, Message.parse("HELP_CHALLENGE_HOVER", sender), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/challenge"));
+ Message.send("HELP_HISTORIC", true, sender, ChatMessageType.SYSTEM, Message.parse("HELP_HISTORIC_HOVER", sender), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/historic"));
+ Message.send("HELP_TEAM", true, sender, ChatMessageType.SYSTEM, Message.parse("HELP_TEAM_HOVER", sender), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/team"));
+ Message.send("HELP_JOIN", true, sender, ChatMessageType.SYSTEM, Message.parse("HELP_JOIN_HOVER", sender), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/join"));
+ Message.send("HELP_LOCAL", true, sender, ChatMessageType.SYSTEM, Message.parse("HELP_LOCAL_HOVER", sender), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/local"));
}else if(args[0].equalsIgnoreCase("bauserver")){
sendBauHelp((ProxiedPlayer) sender);
}else if(args[0].equalsIgnoreCase("bau")){
- sender.sendMessage("§8/§etnt §8- §7(de)aktiviert Explosionsschaden");
- sender.sendMessage("§8/§efire §8- §7(de)aktiviert Feuerschaden");
- sender.sendMessage("§8/§etestblock §8- §7Erneuert den nächsten Testblock");
- sender.sendMessage("§8/§ereset §8- §7Setzt die derzeitige Region zurück");
- sender.sendMessage("§8/§espeed §8- §7Ändert deine Fluggeschwindigkeit");
- sender.sendMessage("§8/§env §8- §7(de)aktiviert Nachtsicht");
- sender.sendMessage("§8/§ewv §8- §7(de)aktiviert Unterwassersicht");
- sender.sendMessage("§8/§etrace §8- §7Gibt einen Überblick über den TNT-Tracer");
- sender.sendMessage("§8/§eloader §8- §7Nutze den automatischen Kanonenlader");
- sender.sendMessage("§8/§eprotect §8- §7Schützt den Boden der (M)WG-Region");
- sender.sendMessage("§8/§efreeze §8- §7Unterbindet Blockupdates");
- sender.sendMessage("§8/§eskull §8- §7Gibt dir den Kopf eines Spielers");
- sender.sendMessage("§8/§edebugstick §8- §7Gibt dir einen Debugstick (nur 1.15)");
- sender.sendMessage("§8/§ebauinfo §8- §7Gibt dir Informationen über den Bauserver");
- sender.sendMessage("§8/§ehelp bauserver §8- §7Hilfe zum Bauserver");
+ Message.sendPrefixless("HELP_TNT", sender);
+ Message.sendPrefixless("HELP_FIRE", sender);
+ Message.sendPrefixless("HELP_TESTBLOCK", sender);
+ Message.sendPrefixless("HELP_RESET", sender);
+ Message.sendPrefixless("HELP_SPEED", sender);
+ Message.sendPrefixless("HELP_NV", sender);
+ Message.sendPrefixless("HELP_WV", sender);
+ Message.sendPrefixless("HELP_TRACE", sender);
+ Message.sendPrefixless("HELP_LOADER", sender);
+ Message.sendPrefixless("HELP_PROTECT", sender);
+ Message.sendPrefixless("HELP_FREEZE", sender);
+ Message.sendPrefixless("HELP_SKULL", sender);
+ Message.sendPrefixless("HELP_DEBUGSTICK", sender);
+ Message.sendPrefixless("HELP_BAUINFO", sender);
+ Message.sendPrefixless("HELP_BAUSERVER_SHORT", sender);
}
}
static void sendBauHelp(ProxiedPlayer p){
- TextComponent tc = new TextComponent("§8/§ebau tp §8- §7Gehe auf Bauserver von Freunden!");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eZu einem anderen Bauserver").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau tp "));
- p.sendMessage(tc);
-
- tc = new TextComponent("§8/§ebau addmember §8- §7Fügt einen Freund hinzu");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eFüge einen Freund hinzu").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau addmember "));
- p.sendMessage(tc);
-
- tc = new TextComponent("§8/§ebau delmember §8- §7Entfernt einen Spieler");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eEntfernt einen Spieler").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau delmember "));
- p.sendMessage(tc);
-
- tc = new TextComponent("§8/§ebau togglebuild §8- §7Berechtigung zum Bauen, /tp, /gm");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eStellt Spielerberechtigungen ein").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau togglebuild "));
- p.sendMessage(tc);
-
- tc = new TextComponent("§8/§ebau togglewe §8- §7Berechtigung für WorldEdit, /testblock");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eStellt Spielerberechtigungen ein").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau togglewe "));
- p.sendMessage(tc);
-
- tc = new TextComponent("§8/§ebau toggleworld §8- §7/reset, /trace, /fire, /tnt");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eStellt Spielerberechtigungen ein").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau toggleworld "));
- p.sendMessage(tc);
-
- tc = new TextComponent("§8/§ebau delete §8- §7Setzt deine Bauwelt zurück");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eBauwelt zurücksetzen").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau delete"));
- p.sendMessage(tc);
-
- tc = new TextComponent("§8/§ebau testarena §8- §7Starte eine Testarena");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eTestarena starten").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau testarena"));
- p.sendMessage(tc);
-
- tc = new TextComponent("§8/§ehelp bau §8- §7Hilfe zu nützlichen Werkzeugen");
- tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§eNützliche Zusatzfunktionen").create()));
- tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/help bau"));
- p.sendMessage(tc);
+ Message.send("HELP_BAU_TP", true, p, ChatMessageType.SYSTEM, Message.parse("HELP_BAU_TP_HOVER", p), new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau tp "));
+ Message.send("HELP_BAU_ADDMEMBER", true, p, ChatMessageType.SYSTEM, Message.parse("HELP_BAU_ADDMEMBER_HOVER", p), new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau addmember "));
+ Message.send("HELP_BAU_DELMEMBER", true, p, ChatMessageType.SYSTEM, Message.parse("HELP_BAU_DELMEMBER_HOVER", p), new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau delmember "));
+ Message.send("HELP_BAU_TOGGLEBUILD", true, p, ChatMessageType.SYSTEM, Message.parse("HELP_BAU_TOGGLEBUILD_HOVER", p), new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau togglebuild "));
+ Message.send("HELP_BAU_TOGGLEWE", true, p, ChatMessageType.SYSTEM, Message.parse("HELP_BAU_TOGGLEWE_HOVER", p), new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau togglewe "));
+ Message.send("HELP_BAU_TOGGLEWORLD", true, p, ChatMessageType.SYSTEM, Message.parse("HELP_BAU_TOGGLEWORLD_HOVER", p), new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau toggleworld "));
+ Message.send("HELP_BAU_DELETE", true, p, ChatMessageType.SYSTEM, Message.parse("HELP_BAU_DELETE_HOVER", p), new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau delete "));
+ Message.send("HELP_BAU_TESTARENA", true, p, ChatMessageType.SYSTEM, Message.parse("HELP_BAU_TESTARENA_HOVER", p), new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/bau testarena "));
+ Message.send("HELP_BAU_BAU", true, p, ChatMessageType.SYSTEM, Message.parse("HELP_BAU_BAU_HOVER", p), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/help bau"));
}
}
diff --git a/src/de/steamwar/bungeecore/listeners/mods/Badlion.java b/src/de/steamwar/bungeecore/listeners/mods/Badlion.java
new file mode 100644
index 0000000..1215624
--- /dev/null
+++ b/src/de/steamwar/bungeecore/listeners/mods/Badlion.java
@@ -0,0 +1,38 @@
+package de.steamwar.bungeecore.listeners.mods;
+
+import de.steamwar.bungeecore.listeners.BasicListener;
+import net.md_5.bungee.api.event.PostLoginEvent;
+import net.md_5.bungee.event.EventHandler;
+
+public class Badlion extends BasicListener {
+
+ @EventHandler
+ public void onPostLogin(PostLoginEvent event) {
+ /*
+ {
+ "Clear Glass":{"disabled":true},
+ "ClearWater":{"disabled":true},
+ "FOV Changer":{"disabled":true},
+ "Hitboxes":{"disabled":true},
+ "MiniMap":{"disabled":true},
+ "MLG Cobweb":{"disabled":true},
+ "Replay":{"disabled":true},
+ "Schematica":{"disabled":true},
+ "ToggleSneak":{"disabled":true},
+ "ToggleSprint":{"disabled":true}
+ }
+ */
+ event.getPlayer().sendData("badlion:mods", ("{" +
+ "\"Clear Glass\":{\"disabled\":true}," +
+ "\"ClearWater\":{\"disabled\":true}," +
+ "\"FOV Changer\":{\"disabled\":true}," +
+ "\"Hitboxes\":{\"disabled\":true}," +
+ "\"MiniMap\":{\"disabled\":true}," +
+ "\"MLG Cobweb\":{\"disabled\":true}," +
+ "\"Replay\":{\"disabled\":true}," +
+ "\"Schematica\":{\"disabled\":true}," +
+ "\"ToggleSneak\":{\"disabled\":true}," +
+ "\"ToggleSprint\":{\"disabled\":true}" +
+ "}").getBytes());
+ }
+}
diff --git a/src/de/steamwar/bungeecore/listeners/mods/Utils.java b/src/de/steamwar/bungeecore/listeners/mods/Utils.java
index cf6bba5..7f6d16f 100644
--- a/src/de/steamwar/bungeecore/listeners/mods/Utils.java
+++ b/src/de/steamwar/bungeecore/listeners/mods/Utils.java
@@ -30,6 +30,7 @@ import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.Iterator;
import java.util.List;
+import java.util.logging.Level;
class Utils {
private Utils(){}
@@ -72,16 +73,20 @@ class Utils {
if(mods.size() == 1){
if(max == ModType.YELLOW)
player.disconnect(BungeeCore.stringToText("§7Deaktiviere den Mod §e" + mods.get(0).getModName() + "§7, um weiter auf §eSteam§8War §7spielen zu können."));
- else
- user.ban(Timestamp.from(Instant.now().plus(1, ChronoUnit.DAYS)), "Versuchte Benutzung des Mods " + mods.get(0).getModName());
+ else{
+ user.ban(Timestamp.from(Instant.now().plus(7, ChronoUnit.DAYS)), "Versuchte Benutzung des Mods " + mods.get(0).getModName());
+ BungeeCore.log(Level.SEVERE, user.getUserName() + " " + user.getId() + " wurde automatisch wegen des Mods " + mods.get(0).getModName() + " gebannt.");
+ }
}else{
StringBuilder sb = new StringBuilder();
mods.forEach(mod -> sb.append(mod.getModName()).append('\n'));
if(max == ModType.YELLOW)
player.disconnect(BungeeCore.stringToText("§7Deaktiviere die Mods\n§e" + sb.toString() + "§7um weiter auf §eSteam§8War §7spielen zu können."));
- else
- user.ban(Timestamp.from(Instant.now().plus(1, ChronoUnit.DAYS)), "Versuchte Benutzung der Mods\n" + sb.toString());
+ else{
+ user.ban(Timestamp.from(Instant.now().plus(7, ChronoUnit.DAYS)), "Versuchte Benutzung der Mods\n" + sb.toString());
+ BungeeCore.log(Level.SEVERE, user.getUserName() + " " + user.getId() + " wurde automatisch wegen der Mods " + sb.toString() + " gebannt.");
+ }
}
return false;
diff --git a/src/de/steamwar/messages/BungeeCore.properties b/src/de/steamwar/messages/BungeeCore.properties
new file mode 100644
index 0000000..6855cb7
--- /dev/null
+++ b/src/de/steamwar/messages/BungeeCore.properties
@@ -0,0 +1,55 @@
+PREFIX=§eSteam§8War»
+
+HELP_LOBBY=§7Kehre von überall mit §8/§el §7zur Lobby zurück!
+HELP_LOBBY_HOVER=§eZurück zur Lobby
+HELP_BAU=§7Komme mit §8/§ebau §7auf den Bauserver!
+HELP_BAU_HOVER=§eZum Bauserver
+HELP_BAUSERVER=§7Erhalte mit §8/§ehelp bauserver §7Hilfe zum Bauserver!
+HELP_BAUSERVER_HOVER=§eHilfe zum Bauserver
+HELP_FIGHT=§7Starte mit §8/§efight §7einen neuen Kampf!
+HELP_FIGHT_HOVER=§eZum Kampfsystem
+HELP_CHALLENGE=§7Tippe §8/§echallenge§7, um jemanden herauszufordern!
+HELP_CHALLENGE_HOVER=§eHerausfordern
+HELP_HISTORIC=§7Starte mit §8/§ehistoric §7einen historischen Kampf!
+HELP_HISTORIC_HOVER=§eHistorische Kämpfe
+HELP_TEAM=§8/§eteam§7 für das Teamsystem!
+HELP_TEAM_HOVER=§eTeamverwaltung
+HELP_JOIN=§7Trete mit §8/§ejoin §8[§eSpieler§8] §7einem Kampf bei!
+HELP_JOIN_HOVER=§eSpieler beitreten
+HELP_LOCAL=§7Schreibe mit §8/§elocal §7nur auf dem lokalen Server!
+HELP_LOCAL_HOVER=§eLokaler Chat
+
+HELP_TNT=§8/§etnt §8- §7(de)aktiviert Explosionsschaden
+HELP_FIRE=§8/§efire §8- §7(de)aktiviert Feuerschaden
+HELP_TESTBLOCK=§8/§etestblock §8- §7Erneuert den nächsten Testblock
+HELP_RESET=§8/§ereset §8- §7Setzt die derzeitige Region zurück
+HELP_SPEED=§8/§espeed §8- §7Ändert deine Fluggeschwindigkeit
+HELP_NV=§8/§env §8- §7(de)aktiviert Nachtsicht
+HELP_WV=§8/§ewv §8- §7(de)aktiviert Unterwassersicht
+HELP_TRACE=§8/§etrace §8- §7Gibt einen Überblick über den TNT-Tracer
+HELP_LOADER=§8/§eloader §8- §7Nutze den automatischen Kanonenlader
+HELP_PROTECT=§8/§eprotect §8- §7Schützt den Boden der (M)WG-Region
+HELP_FREEZE=§8/§efreeze §8- §7Unterbindet Blockupdates
+HELP_SKULL=§8/§eskull §8- §7Gibt dir den Kopf eines Spielers
+HELP_DEBUGSTICK=§8/§edebugstick §8- §7Gibt dir einen Debugstick (nur 1.15)
+HELP_BAUINFO=§8/§ebauinfo §8- §7Gibt dir Informationen über den Bauserver
+HELP_BAUSERVER_SHORT=§8/§ehelp bauserver §8- §7Hilfe zum Bauserver
+
+HELP_BAU_TP=§8/§ebau tp §8- §7Gehe auf Bauserver von Freunden!
+HELP_BAU_TP_HOVER=§eZu einem anderen Bauserver
+HELP_BAU_ADDMEMBER=§8/§ebau addmember §8- §7Fügt einen Freund hinzu
+HELP_BAU_ADDMEMBER_HOVER=§eFüge einen Freund hinzu
+HELP_BAU_DELMEMBER=§8/§ebau delmember §8- §7Entfernt einen Spieler
+HELP_BAU_DELMEMBER_HOVER=§eEntfernt einen Spieler
+HELP_BAU_TOGGLEBUILD=§8/§ebau togglebuild §8- §7Berechtigung zum Bauen, /tp, /gm
+HELP_BAU_TOGGLEBUILD_HOVER=§eStellt Spielerberechtigungen ein
+HELP_BAU_TOGGLEWE=§8/§ebau togglewe §8- §7Berechtigung für WorldEdit, /testblock
+HELP_BAU_TOGGLEWE_HOVER=§eStellt Spielerberechtigungen ein
+HELP_BAU_TOGGLEWORLD=§8/§ebau toggleworld §8- §7/reset, /trace, /fire, /tnt
+HELP_BAU_TOGGLEWORLD_HOVER=§eStellt Spielerberechtigungen ein
+HELP_BAU_DELETE=§8/§ebau delete §8- §7Setzt deine Bauwelt zurück
+HELP_BAU_DELETE_HOVER=§eBauwelt zurücksetzen
+HELP_BAU_TESTARENA=§8/§ebau testarena §8- §7Starte eine Testarena
+HELP_BAU_TESTARENA_HOVER=§eTestarena starten
+HELP_BAU_BAU=§8/§ehelp bau §8- §7Hilfe zu nützlichen Werkzeugen
+HELP_BAU_BAU_HOVER=§eNützliche Zusatzfunktionen
diff --git a/src/de/steamwar/messages/BungeeCore_en.properties b/src/de/steamwar/messages/BungeeCore_en.properties
new file mode 100644
index 0000000..1f76389
--- /dev/null
+++ b/src/de/steamwar/messages/BungeeCore_en.properties
@@ -0,0 +1,11 @@
+
+#HELP_LOBBY=§7Return with §8/§el §7to the lobby!
+#HELP_LOBBY_HOVER=§eReturn to lobby
+#HELP_BAU=§7Go with §8/§ebau §7on your building server!
+#HELP_BAU_HOVER=§eTo the building server
+#HELP_BAUSERVER=§7Get with §8/§ehelp bauserver §7help for your building server!
+#HELP_BAUSERVER_HOVER=§eHelp for the building server
+#HELP_FIGHT=§7Start with §8/§efight §7a new fight!
+#HELP_FIGHT_HOVER=§eFight
+#HELP_CHALLENGE=§7Type §8/§echallenge§7 to challenge somebody!
+#HELP_CHALLENGE_HOVER=§eChallenge
\ No newline at end of file