geforkt von SteamWar/BungeeCore
Commenting Fight out + various small changes
Dieser Commit ist enthalten in:
Ursprung
78e6cd5696
Commit
510114e53c
@ -2,6 +2,7 @@ package de.warking.bungeecore;
|
||||
|
||||
import de.warking.bungeecore.arenasystem.ArenaSystem;
|
||||
import de.warking.bungeecore.commands.*;
|
||||
import de.warking.bungeecore.sql.sql;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.api.plugin.Command;
|
||||
import net.md_5.bungee.api.plugin.Plugin;
|
||||
@ -22,7 +23,7 @@ public class BungeeCore extends Plugin {
|
||||
public static BungeeCore instance;
|
||||
public static String ChatPrefix;
|
||||
public static final String TeamchatPrefix = "§4T§7c§r §e";
|
||||
public static final DateTimeFormatter DateFormat = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");
|
||||
public static final DateTimeFormatter DateFormat = DateTimeFormatter.ofPattern("dd.MM.yyyy");
|
||||
public static String LobbyServer;
|
||||
public static final HashMap<String, String> serverPermissions = new HashMap<>();
|
||||
public static final HashMap<String, String> commands = new HashMap<>();
|
||||
@ -91,8 +92,9 @@ public class BungeeCore extends Plugin {
|
||||
addCmd(new AlertCommand());
|
||||
addCmd(new KickCommand());
|
||||
addCmd(new JoinmeCommand());
|
||||
addCmd(new FightCommand());
|
||||
//addCmd(new FightCommand());
|
||||
addCmd(new HelpCommand());
|
||||
addCmd(new BanCommand());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,9 +1,15 @@
|
||||
package de.warking.bungeecore;
|
||||
|
||||
import de.warking.bungeecore.arenasystem.Arena;
|
||||
import de.warking.bungeecore.arenasystem.ArenaSystem;
|
||||
import de.warking.bungeecore.sql.BannedUserIPs;
|
||||
import de.warking.bungeecore.sql.WarkingUser;
|
||||
import net.md_5.bungee.api.AbstractReconnectHandler;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
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.config.ServerInfo;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
@ -12,6 +18,7 @@ import net.md_5.bungee.api.plugin.Listener;
|
||||
import net.md_5.bungee.event.EventHandler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class PlayerListener implements Listener {
|
||||
|
||||
@ -19,6 +26,7 @@ public class PlayerListener implements Listener {
|
||||
public void onLogin(LoginEvent event) {
|
||||
WarkingUser user = new WarkingUser(event.getConnection());
|
||||
if(user.isBanned()) {
|
||||
user.updateBanIP(event.getConnection().getAddress().getAddress().getHostAddress());
|
||||
event.setCancelled(true);
|
||||
if (user.BanTime.before(WarkingUser.PermaBan)) {
|
||||
event.setCancelReason(new TextComponent(BungeeCore.ChatPrefix + "§cDu bist permanent gebannt. §r§lGrund§r: §c" + user.BanReason));
|
||||
@ -27,6 +35,34 @@ public class PlayerListener implements Listener {
|
||||
user.BanTime.toLocalDateTime().format(BungeeCore.DateFormat) + " gebannt. §r§lGrund§r: §c" + user.BanReason));
|
||||
}
|
||||
}
|
||||
|
||||
List<BannedUserIPs> ips = BannedUserIPs.get(event.getConnection().getAddress().getAddress().getHostAddress());
|
||||
if(ips.size() > 0){
|
||||
StringBuilder potentialBan = new StringBuilder();
|
||||
potentialBan.append(BungeeCore.ChatPrefix);
|
||||
potentialBan.append("§cMögliche Bannumgehung durch §r");
|
||||
potentialBan.append(user.UserName);
|
||||
potentialBan.append("§c:");
|
||||
|
||||
for(BannedUserIPs banned : ips){
|
||||
WarkingUser bannedUser = new WarkingUser(banned.getUserID());
|
||||
potentialBan.append(" §6");
|
||||
potentialBan.append(banned.getTimestamp().toLocalDateTime().format(BungeeCore.DateFormat));
|
||||
potentialBan.append(" §c");
|
||||
potentialBan.append(bannedUser.UserName);
|
||||
}
|
||||
|
||||
TextComponent msg = new TextComponent(potentialBan.toString());
|
||||
msg.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§cBanne Spieler wegen Bannumgehung").create()));
|
||||
msg.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/ban " + user.UserName + " perma Bannumgehung"));
|
||||
for (ProxiedPlayer target : ProxyServer.getInstance().getPlayers()){
|
||||
if ((target.hasPermission("bungeecore.teamchat"))
|
||||
&& (target.getChatMode() == ProxiedPlayer.ChatMode.COMMANDS_ONLY
|
||||
|| target.getChatMode() == ProxiedPlayer.ChatMode.SHOWN)){
|
||||
target.sendMessage(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@ -74,7 +110,12 @@ public class PlayerListener implements Listener {
|
||||
break;
|
||||
}
|
||||
|
||||
//player.getModList(); For the Future!
|
||||
Map<String, String> modlist = player.getModList();
|
||||
for(String key : modlist.keySet()){
|
||||
System.out.println(key + " > " + modlist.get(key));
|
||||
}
|
||||
if(player.isForgeUser())
|
||||
System.out.println("Forge user!");
|
||||
}
|
||||
|
||||
/** To redirect players to the lobby in case of server closure. */
|
||||
@ -104,6 +145,15 @@ public class PlayerListener implements Listener {
|
||||
ev.setCancelServer(kickTo);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onServerSwitchEvent(ServerSwitchEvent e){
|
||||
ProxiedPlayer p = e.getPlayer();
|
||||
Arena a = ArenaSystem.getArena(p);
|
||||
if(a != null && !p.getServer().getInfo().equals(a.server)){
|
||||
a.removePlayer(p);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onChatEvent(ChatEvent e){
|
||||
if(e.isCommand()){
|
||||
@ -129,9 +179,8 @@ public class PlayerListener implements Listener {
|
||||
e.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if(ArenaSystem.getPlayer(sender) != null){
|
||||
if(ArenaSystem.inArena(sender))
|
||||
return;
|
||||
}
|
||||
|
||||
String name = sender.getDisplayName();
|
||||
String message = e.getMessage();
|
||||
|
@ -11,31 +11,32 @@ import java.io.InputStreamReader;
|
||||
import java.io.PrintWriter;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
public class Arena implements Runnable{
|
||||
|
||||
public final String serverName;
|
||||
public final int arenenNummer;
|
||||
public final String spielModus;
|
||||
public final ArenaMode spielModus;
|
||||
|
||||
private Process p;
|
||||
private PrintWriter writer;
|
||||
private ServerInfo server;
|
||||
public ServerInfo server;
|
||||
private boolean started = false;
|
||||
|
||||
private final List<ArenaPlayer> cachedPlayers = new ArrayList<>();
|
||||
private final List<ArenaPlayer> players = new ArrayList<>();
|
||||
private final List<ProxiedPlayer> cachedPlayers = new ArrayList<>();
|
||||
private final List<ProxiedPlayer> players = new ArrayList<>();
|
||||
|
||||
|
||||
public Arena(String modus, int id){
|
||||
public Arena(ArenaMode modus, int id){
|
||||
spielModus = modus;
|
||||
arenenNummer = id;
|
||||
serverName = modus + id;
|
||||
serverName = modus.name() + id;
|
||||
int port = 2500 + arenenNummer;
|
||||
ProcessBuilder pb = new ProcessBuilder(
|
||||
"/home/netuser/mc",
|
||||
"-a", modus, serverName, Integer.toString(port));
|
||||
"-a", modus.name(), serverName, Integer.toString(port));
|
||||
try{
|
||||
p = pb.start();
|
||||
ProxyServer.getInstance().getScheduler().runAsync(BungeeCore.instance, this);
|
||||
@ -50,54 +51,30 @@ public class Arena implements Runnable{
|
||||
}
|
||||
}
|
||||
|
||||
private void sendPlayer(ArenaPlayer p){
|
||||
public void sendPlayer(ProxiedPlayer p){
|
||||
if(!started){
|
||||
p.player.sendMessage(BungeeCore.ChatPrefix + "Die Arena wird gestartet, einen Moment bitte...");
|
||||
p.sendMessage(BungeeCore.ChatPrefix + "Die Arena wird gestartet, einen Moment bitte...");
|
||||
cachedPlayers.add(p);
|
||||
}else{
|
||||
if(players.contains(p)){
|
||||
p.player.connect(server);
|
||||
players.add(p);
|
||||
p.connect(server);
|
||||
players.add(p);
|
||||
}
|
||||
}
|
||||
|
||||
public void removePlayer(ProxiedPlayer p){
|
||||
Iterator<ProxiedPlayer> it = cachedPlayers.iterator();
|
||||
while(it.hasNext()){
|
||||
if(it.next().equals(p)){
|
||||
it.remove();
|
||||
return;
|
||||
}
|
||||
p.player.getServer().sendData("FightSystem:NewPlayer", p.role.name().getBytes());
|
||||
}
|
||||
}
|
||||
|
||||
public void sendPlayer(ProxiedPlayer p){
|
||||
ArenaRole role;
|
||||
switch(cachedPlayers.size() + players.size()){
|
||||
case 0:
|
||||
role = ArenaRole.RED_LEADER;
|
||||
break;
|
||||
case 1:
|
||||
role = ArenaRole.BLUE_LEADER;
|
||||
break;
|
||||
default:
|
||||
role = ArenaRole.SPECTATOR;
|
||||
}
|
||||
|
||||
ArenaPlayer aP = new ArenaPlayer(p, role);
|
||||
sendPlayer(aP);
|
||||
}
|
||||
|
||||
public void sendPlayer(ProxiedPlayer p, ProxiedPlayer initiator){
|
||||
ArenaPlayer parent = getPlayer(initiator);
|
||||
if(parent == null)
|
||||
return;
|
||||
|
||||
switch(parent.role){
|
||||
case RED_LEADER:
|
||||
case RED_MEMBER:
|
||||
sendPlayer(new ArenaPlayer(p, ArenaRole.RED_MEMBER));
|
||||
break;
|
||||
case BLUE_MEMBER:
|
||||
case BLUE_LEADER:
|
||||
sendPlayer(new ArenaPlayer(p, ArenaRole.BLUE_MEMBER));
|
||||
break;
|
||||
case SPECTATOR:
|
||||
default:
|
||||
sendPlayer(new ArenaPlayer(p, ArenaRole.SPECTATOR));
|
||||
break;
|
||||
it = players.iterator();
|
||||
while(it.hasNext()){
|
||||
if(it.next().equals(p)){
|
||||
it.remove();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -118,42 +95,35 @@ public class Arena implements Runnable{
|
||||
ArenaSystem.arenen.remove(this);
|
||||
}
|
||||
|
||||
public ArenaPlayer getPlayer(ProxiedPlayer p){
|
||||
for(int i = 0; i < cachedPlayers.size(); i++)
|
||||
if(cachedPlayers.get(i).player.equals(p)){
|
||||
if(server.equals(p.getServer().getInfo())) {
|
||||
return cachedPlayers.get(i);
|
||||
}else{
|
||||
cachedPlayers.remove(i);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
for(int i = 0; i < players.size(); i++)
|
||||
if(players.get(i).player.equals(p)){
|
||||
if(server.equals(p.getServer().getInfo())) {
|
||||
return players.get(i);
|
||||
}else{
|
||||
players.remove(i);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
public boolean inArena(ProxiedPlayer p){
|
||||
for(ProxiedPlayer ap : cachedPlayers)
|
||||
if(ap.equals(p))
|
||||
return true;
|
||||
for(ProxiedPlayer ap : players)
|
||||
if(ap.equals(p))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
|
||||
String line;
|
||||
String line = "";
|
||||
|
||||
while (!started && (line = reader.readLine()) != null) {
|
||||
//started = line.contains(" INFO]: Done ("); Problematisch
|
||||
started = line.contains("INFO]: [AAC] AAC has been enabled.");
|
||||
}
|
||||
|
||||
//Thread.sleep(1000);
|
||||
if(line == null){
|
||||
System.out.println("Fatal error starting arena!");
|
||||
return;
|
||||
}
|
||||
|
||||
for(ArenaPlayer aP : cachedPlayers){
|
||||
Thread.sleep(200);
|
||||
|
||||
for(ProxiedPlayer aP : cachedPlayers){
|
||||
sendPlayer(aP);
|
||||
}
|
||||
cachedPlayers.clear();
|
||||
|
8
src/de/warking/bungeecore/arenasystem/ArenaMode.java
Normale Datei
8
src/de/warking/bungeecore/arenasystem/ArenaMode.java
Normale Datei
@ -0,0 +1,8 @@
|
||||
package de.warking.bungeecore.arenasystem;
|
||||
|
||||
public enum ArenaMode {
|
||||
AirShip,
|
||||
WarShip,
|
||||
WarGear,
|
||||
MiniWarGear
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
package de.warking.bungeecore.arenasystem;
|
||||
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
|
||||
public class ArenaPlayer {
|
||||
public ProxiedPlayer player;
|
||||
public ArenaRole role;
|
||||
|
||||
public ArenaPlayer(ProxiedPlayer p, ArenaRole r){
|
||||
player = p;
|
||||
role = r;
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
package de.warking.bungeecore.arenasystem;
|
||||
|
||||
public enum ArenaRole {
|
||||
RED_LEADER,
|
||||
RED_MEMBER,
|
||||
BLUE_LEADER,
|
||||
BLUE_MEMBER,
|
||||
SPECTATOR
|
||||
}
|
@ -25,7 +25,7 @@ public class ArenaSystem {
|
||||
return id;
|
||||
}
|
||||
|
||||
public static Arena startServer(String modus){
|
||||
public static Arena startServer(ArenaMode modus){
|
||||
Arena arena = new Arena(modus, freeId());
|
||||
arenen.add(arena);
|
||||
return arena;
|
||||
@ -36,19 +36,17 @@ public class ArenaSystem {
|
||||
arenen.firstElement().stop();
|
||||
}
|
||||
|
||||
public static ArenaPlayer getPlayer(ProxiedPlayer p){
|
||||
public static boolean inArena(ProxiedPlayer p){
|
||||
for(Arena a : arenen){
|
||||
ArenaPlayer aP = a.getPlayer(p);
|
||||
if(aP != null)
|
||||
return aP;
|
||||
if(a.inArena(p))
|
||||
return true;
|
||||
}
|
||||
return null;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static Arena getArena(ProxiedPlayer p){
|
||||
for(Arena a : arenen){
|
||||
ArenaPlayer aP = a.getPlayer(p);
|
||||
if(aP != null)
|
||||
if(a.inArena(p))
|
||||
return a;
|
||||
}
|
||||
return null;
|
||||
|
63
src/de/warking/bungeecore/commands/BanCommand.java
Normale Datei
63
src/de/warking/bungeecore/commands/BanCommand.java
Normale Datei
@ -0,0 +1,63 @@
|
||||
package de.warking.bungeecore.commands;
|
||||
|
||||
import de.warking.bungeecore.BungeeCore;
|
||||
import de.warking.bungeecore.sql.WarkingUser;
|
||||
import net.md_5.bungee.api.*;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import java.sql.Timestamp;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.Instant;
|
||||
import java.util.*;
|
||||
|
||||
public class BanCommand extends Command {
|
||||
|
||||
public BanCommand() {
|
||||
super("ban", "bungeecore.ban");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
if(args.length < 3){
|
||||
sender.sendMessage(BungeeCore.ChatPrefix + "/ban [Spieler] [dd.mm.yyyy oder perma] [Grund]");
|
||||
return;
|
||||
}
|
||||
|
||||
WarkingUser target = new WarkingUser(args[0]);
|
||||
if(target.UserName == null){
|
||||
sender.sendMessage(BungeeCore.ChatPrefix + "§cDer Spieler existiert nicht.");
|
||||
return;
|
||||
}
|
||||
|
||||
StringBuilder msgBuilder = new StringBuilder();
|
||||
msgBuilder.append(BungeeCore.ChatPrefix);
|
||||
Timestamp banTime;
|
||||
if(args[1].equalsIgnoreCase("perma")) {
|
||||
msgBuilder.append("§cDu bist permanent gebannt. §r§lGrund§r: §c");
|
||||
banTime = Timestamp.from(Instant.ofEpochSecond(946674800));
|
||||
}else{
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
|
||||
try{
|
||||
Date parsedDate = dateFormat.parse(args[1]);
|
||||
banTime = new java.sql.Timestamp(parsedDate.getTime());
|
||||
msgBuilder.append(" Du bist bis zum ");
|
||||
msgBuilder.append(banTime.toLocalDateTime().format(BungeeCore.DateFormat));
|
||||
msgBuilder.append(" gebannt. §r§lGrund§r: §c");
|
||||
}catch(ParseException e){
|
||||
sender.sendMessage(BungeeCore.ChatPrefix + "§cUngültige Zeitangabe.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
StringBuilder banReason = new StringBuilder();
|
||||
for (int i = 2; i < args.length; i++){
|
||||
banReason.append(args[i]).append(" ");
|
||||
}
|
||||
String msg = banReason.toString();
|
||||
msgBuilder.append(msg);
|
||||
sender.sendMessage(BungeeCore.ChatPrefix + "Du hast " + target.UserName + " gebannt. Grund: §c" + msg);
|
||||
ProxiedPlayer targetPlayer = ProxyServer.getInstance().getPlayer(target.UUID);
|
||||
target.banPlayer(targetPlayer.getAddress().getAddress().getHostAddress(), banTime, msg);
|
||||
targetPlayer.disconnect(msgBuilder.toString());
|
||||
}
|
||||
}
|
@ -27,6 +27,6 @@ public abstract class Command extends net.md_5.bungee.api.plugin.Command impleme
|
||||
}
|
||||
|
||||
public Iterable<String> onTabComplete(CommandSender commandSender, String[] args) {
|
||||
return null;
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package de.warking.bungeecore.commands;
|
||||
|
||||
import de.warking.bungeecore.BungeeCore;
|
||||
import de.warking.bungeecore.arenasystem.Arena;
|
||||
import de.warking.bungeecore.arenasystem.ArenaMode;
|
||||
import de.warking.bungeecore.arenasystem.ArenaSystem;
|
||||
import net.md_5.bungee.api.CommandSender;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
@ -23,7 +24,11 @@ public class FightCommand extends Command {
|
||||
@Override
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
if(args.length != 1){
|
||||
sender.sendMessage(BungeeCore.ChatPrefix + "/fight airship");
|
||||
sender.sendMessage(BungeeCore.ChatPrefix + "§7Mit §6/fight §7kannst du einen neuen Kampf starten!");
|
||||
sender.sendMessage(BungeeCore.ChatPrefix + "/fight AirShip §8- §7Starte einen §6AirShip§8-§7Kampf§8!");
|
||||
sender.sendMessage(BungeeCore.ChatPrefix + "/fight WarShip §8- §7Starte einen §6WarShip§8-§7Kampf§8!");
|
||||
sender.sendMessage(BungeeCore.ChatPrefix + "/fight WarGear §8- §7Starte einen §6WarGear§8-§7Kampf§8!");
|
||||
sender.sendMessage(BungeeCore.ChatPrefix + "/fight MiniWarGear §8- §7Starte einen §6Mini§8-§6WarGear§8-§7Kampf§8!");
|
||||
return;
|
||||
}
|
||||
if(sender instanceof ProxiedPlayer){
|
||||
@ -32,7 +37,19 @@ public class FightCommand extends Command {
|
||||
switch(args[0].toLowerCase()){
|
||||
case "as":
|
||||
case "airship":
|
||||
arena = ArenaSystem.startServer("Airship");
|
||||
arena = ArenaSystem.startServer(ArenaMode.AirShip);
|
||||
break;
|
||||
case "ws":
|
||||
case "warship":
|
||||
arena = ArenaSystem.startServer(ArenaMode.WarShip);
|
||||
break;
|
||||
case "wg":
|
||||
case "wargear":
|
||||
arena = ArenaSystem.startServer(ArenaMode.WarGear);
|
||||
break;
|
||||
case "mwg":
|
||||
case "miniwargear":
|
||||
arena = ArenaSystem.startServer(ArenaMode.MiniWarGear);
|
||||
break;
|
||||
default:
|
||||
sender.sendMessage(BungeeCore.ChatPrefix + "§cUnbekannter Spielmodus: " + args[0]);
|
||||
@ -40,8 +57,8 @@ public class FightCommand extends Command {
|
||||
}
|
||||
|
||||
arena.sendPlayer(player);
|
||||
TextComponent tc = new TextComponent(BungeeCore.ChatPrefix + "Kämpfe jetzt " + arena.spielModus + " gegen " + player.getName() + "[Hier Klicken]!");
|
||||
tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§aGegen Spieler kämpfen").create()));
|
||||
TextComponent tc = new TextComponent(BungeeCore.ChatPrefix + "§7Klicke §6hier§7, um jetzt §6" + arena.spielModus + " §7gegen §6" + player.getName() + " §7zu kämpfen!");
|
||||
tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§aGegen §7" + player.getName() + " §ckämpfen").create()));
|
||||
tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/join " + player.getName()));
|
||||
ProxyServer.getInstance().broadcast(tc);
|
||||
}
|
||||
@ -51,8 +68,14 @@ public class FightCommand extends Command {
|
||||
public Iterable<String> onTabComplete(CommandSender commandSender, String[] args) {
|
||||
List<String> gamemodes = new ArrayList<>();
|
||||
if(args.length == 1){
|
||||
gamemodes.add("airship");
|
||||
gamemodes.add("as");
|
||||
gamemodes.add("AirShip");
|
||||
gamemodes.add("AS");
|
||||
gamemodes.add("WarShip");
|
||||
gamemodes.add("WS");
|
||||
gamemodes.add("WarGear");
|
||||
gamemodes.add("WG");
|
||||
gamemodes.add("MiniWarGear");
|
||||
gamemodes.add("MWG");
|
||||
}
|
||||
System.out.println(args);
|
||||
return gamemodes;
|
||||
|
@ -16,12 +16,30 @@ public class HelpCommand extends Command {
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
|
||||
if(args.length != 1){
|
||||
sender.sendMessage(new TextComponent(BungeeCore.ChatPrefix + "§l§7Hilfe"));
|
||||
TextComponent tc = new TextComponent(BungeeCore.ChatPrefix + "§7Kehre von überall mit §6/l §7zur Lobby zurück!");
|
||||
tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§cZurück zur Lobby").create()));
|
||||
tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/l"));
|
||||
sender.sendMessage(tc);
|
||||
|
||||
TextComponent tc = new TextComponent(BungeeCore.ChatPrefix + "Klicke hier, um dem Server beizutreten!");
|
||||
tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§cServer beitreten").create()));
|
||||
tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/help "));
|
||||
tc = new TextComponent(BungeeCore.ChatPrefix + "§7Komme mit §6/bau §7auf den Bauserver!");
|
||||
tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§cZum Bauserver").create()));
|
||||
tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/bauserver"));
|
||||
sender.sendMessage(tc);
|
||||
|
||||
tc = new TextComponent(BungeeCore.ChatPrefix + "§7Erhalte mit §6/bau §7Hilfe auf dem Bauserver!");
|
||||
tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§cHilfe zum Bausystem").create()));
|
||||
tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/bau"));
|
||||
sender.sendMessage(tc);
|
||||
|
||||
/*tc = new TextComponent(BungeeCore.ChatPrefix + "§7Starte mit §6/fight §7einen neuen Kampf!");
|
||||
tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§cZum Kampfsystem").create()));
|
||||
tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/fight"));
|
||||
sender.sendMessage(tc);
|
||||
|
||||
tc = new TextComponent(BungeeCore.ChatPrefix + "§7Trete mit §6/join [Spieler] §7einem Kampf bei!");
|
||||
tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§cSpieler nachjoinen").create()));
|
||||
tc.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/join"));
|
||||
sender.sendMessage(tc);*/
|
||||
}else{
|
||||
switch(args[0]){
|
||||
|
||||
|
@ -2,7 +2,6 @@ package de.warking.bungeecore.commands;
|
||||
|
||||
import de.warking.bungeecore.BungeeCore;
|
||||
import de.warking.bungeecore.arenasystem.Arena;
|
||||
import de.warking.bungeecore.arenasystem.ArenaPlayer;
|
||||
import de.warking.bungeecore.arenasystem.ArenaSystem;
|
||||
import net.md_5.bungee.api.CommandSender;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
@ -25,38 +24,32 @@ public class JoinmeCommand extends Command {
|
||||
ProxiedPlayer player = (ProxiedPlayer) sender;
|
||||
|
||||
if (args.length == 0 && player.hasPermission("bungeecore.joinme")) {
|
||||
TextComponent tc = new TextComponent(BungeeCore.ChatPrefix + "Klicke hier, um dem Spieler " + player.getName() + " auf " + player.getServer().getInfo().getName() + " zu folgen!");
|
||||
TextComponent tc = new TextComponent(BungeeCore.ChatPrefix + "§7Klicke §6hier§8, §7um zu §6" + player.getName() + " §7auf §6" + player.getServer().getInfo().getName() + " §7zu kommen§8!");
|
||||
tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§aSpieler folgen").create()));
|
||||
tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/join " + player.getName()));
|
||||
ProxyServer.getInstance().broadcast(tc);
|
||||
} else if (args.length == 1) {
|
||||
ProxiedPlayer target = ProxyServer.getInstance().getPlayer(args[0]);
|
||||
if(target == null || !target.isConnected()){
|
||||
player.sendMessage(BungeeCore.ChatPrefix + "§cDieser Spieler ist derzeit offline.");
|
||||
player.sendMessage(BungeeCore.ChatPrefix + "§cDieser Spieler ist offline.");
|
||||
return;
|
||||
}else if(target.equals(player)){
|
||||
player.sendMessage(BungeeCore.ChatPrefix + "§cDu bist bereits in deiner Sphäre.");
|
||||
player.sendMessage(BungeeCore.ChatPrefix + "§cSei eins mit dir selbst!");
|
||||
return;
|
||||
}
|
||||
ServerInfo server = ProxyServer.getInstance().getPlayer(args[0]).getServer().getInfo();
|
||||
ServerInfo server = target.getServer().getInfo();
|
||||
String ServerPerm = BungeeCore.serverPermissions.get(server.getName());
|
||||
Arena arena = ArenaSystem.getArena(target);
|
||||
|
||||
if(ServerPerm == null){
|
||||
Arena arena = ArenaSystem.getArena(player);
|
||||
|
||||
if(arena == null){
|
||||
player.sendMessage(BungeeCore.ChatPrefix + "§cDu kannst diesem Spieler derzeit nicht folgen.");
|
||||
return;
|
||||
}
|
||||
|
||||
arena.sendPlayer(player, target);
|
||||
}else if(!player.hasPermission(ServerPerm)){
|
||||
if(arena != null){
|
||||
arena.sendPlayer(player);
|
||||
}else if(ServerPerm != null && !player.hasPermission(ServerPerm)){
|
||||
player.sendMessage(BungeeCore.ChatPrefix + "§cDu kannst diesem Spieler derzeit nicht folgen.");
|
||||
}else{
|
||||
player.connect(server);
|
||||
}
|
||||
} else {
|
||||
player.sendMessage(BungeeCore.ChatPrefix + "/join [Spieler]");
|
||||
player.sendMessage(BungeeCore.ChatPrefix + "§7Mit §r/join §8[§rSpieler§8] §7kannst du einem Spieler folgen §8(z.B. in eine Arena)§7.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ public class TeamchatCommand extends Command {
|
||||
msg = ChatColor.translateAlternateColorCodes('&', msg);
|
||||
|
||||
for (ProxiedPlayer target : ProxyServer.getInstance().getPlayers()){
|
||||
if ((target.hasPermission("bungeecore.teamchat") || target.hasPermission("bungeecore.*"))
|
||||
if ((target.hasPermission("bungeecore.teamchat"))
|
||||
&& target.getChatMode() == ProxiedPlayer.ChatMode.SHOWN){
|
||||
target.sendMessage(msg);
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
package de.warking.bungeecore.commands;
|
||||
|
||||
import de.warking.bungeecore.BungeeCore;
|
||||
import de.warking.bungeecore.WarkingUser;
|
||||
import de.warking.bungeecore.sql;
|
||||
import de.warking.bungeecore.sql.WarkingUser;
|
||||
import de.warking.bungeecore.sql.sql;
|
||||
import net.md_5.bungee.api.CommandSender;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
|
||||
|
64
src/de/warking/bungeecore/sql/BannedUserIPs.java
Normale Datei
64
src/de/warking/bungeecore/sql/BannedUserIPs.java
Normale Datei
@ -0,0 +1,64 @@
|
||||
package de.warking.bungeecore.sql;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class BannedUserIPs {
|
||||
|
||||
private int UserID;
|
||||
private Timestamp Timestamp;
|
||||
private String IP;
|
||||
|
||||
private BannedUserIPs(int userID, Timestamp timestamp, String ip){
|
||||
UserID = userID;
|
||||
Timestamp = timestamp;
|
||||
IP = ip;
|
||||
}
|
||||
|
||||
public static List<BannedUserIPs> get(int userID){
|
||||
List<BannedUserIPs> userIPs = new ArrayList<>();
|
||||
ResultSet dbentry = sql.select("SELECT * FROM BannedUserIPs WHERE UserID = '" + userID + "' ORDER BY Timestamp ASC");
|
||||
try {
|
||||
while(dbentry.next()){
|
||||
userIPs.add(new BannedUserIPs(
|
||||
userID,
|
||||
dbentry.getTimestamp("Timestamp"),
|
||||
dbentry.getString("IP")));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return userIPs;
|
||||
}
|
||||
|
||||
public static List<BannedUserIPs> get(String ip){
|
||||
List<BannedUserIPs> userIDs = new ArrayList<>();
|
||||
ResultSet dbentry = sql.select("SELECT * FROM BannedUserIPs WHERE IP = '" + ip + "' ORDER BY Timestamp DESC");
|
||||
try {
|
||||
while(dbentry.next()){
|
||||
userIDs.add(new BannedUserIPs(
|
||||
dbentry.getInt("UserID"),
|
||||
dbentry.getTimestamp("Timestamp"),
|
||||
ip));
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return userIDs;
|
||||
}
|
||||
|
||||
public int getUserID() {
|
||||
return UserID;
|
||||
}
|
||||
|
||||
public java.sql.Timestamp getTimestamp() {
|
||||
return Timestamp;
|
||||
}
|
||||
|
||||
public String getIP() {
|
||||
return IP;
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package de.warking.bungeecore;
|
||||
package de.warking.bungeecore.sql;
|
||||
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
import net.md_5.bungee.api.connection.PendingConnection;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
|
||||
@ -20,12 +21,16 @@ public class WarkingUser {
|
||||
|
||||
public static Timestamp PermaBan = Timestamp.from(Instant.ofEpochSecond(946684800));
|
||||
|
||||
public WarkingUser(int id){
|
||||
init(sql.select("SELECT * FROM UserData WHERE id = '" + id + "'"));
|
||||
}
|
||||
|
||||
public WarkingUser(UUID UUID){
|
||||
init(sql.select("SELECT * FROM UserData WHERE UUID = '" + UUID.toString() + "'"));
|
||||
}
|
||||
|
||||
public WarkingUser(String UserName){
|
||||
init(sql.select("SELECT * FROM UserData WHERE UserName = '" + UserName + "'"));
|
||||
init(sql.select("SELECT * FROM UserData WHERE lower(UserName) = '" + UserName.toLowerCase() + "'"));
|
||||
}
|
||||
|
||||
public WarkingUser(PendingConnection connection){
|
||||
@ -91,9 +96,24 @@ public class WarkingUser {
|
||||
return true;
|
||||
}else{
|
||||
sql.update("UPDATE UserData SET BanTime = NULL, BanReason = '' WHERE UUID = '" + UUID.toString() + "'");
|
||||
sql.update("DELETE FROM BannedUserIPs WHERE UserID = '" + id + "'");
|
||||
BanTime = null;
|
||||
BanReason = "";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void updateBanIP(String ip){
|
||||
sql.update("INSERT INTO BannedUserIPs\n" +
|
||||
" (UserID, Timestamp, IP)\n" +
|
||||
"VALUES\n" +
|
||||
" (" + id + ", NOW(), '" + ip + "')\n" +
|
||||
"ON DUPLICATE KEY UPDATE\n" +
|
||||
" Timestamp=NOW()");
|
||||
}
|
||||
|
||||
public void banPlayer(String ip, Timestamp time, String banReason){
|
||||
sql.update("UPDATE UserData SET BanTime = '" + time.toString() + "', BanReason = '" + banReason + "' WHERE UUID = '" + UUID.toString() + "'");
|
||||
updateBanIP(ip);
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package de.warking.bungeecore;
|
||||
package de.warking.bungeecore.sql;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
In neuem Issue referenzieren
Einen Benutzer sperren