geforkt von SteamWar/BungeeCore
WIP
Dieser Commit ist enthalten in:
Ursprung
5fb8a617a7
Commit
fec517f5a1
@ -55,7 +55,6 @@ public class BungeeCore extends Plugin {
|
|||||||
|
|
||||||
public static final String SERVER_TEAMCHAT_PREFIX = "§8STC §e";
|
public static final String SERVER_TEAMCHAT_PREFIX = "§8STC §e";
|
||||||
public static final String TEAMCHAT_PREFIX = "§8TC §e";
|
public static final String TEAMCHAT_PREFIX = "§8TC §e";
|
||||||
public static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");
|
|
||||||
|
|
||||||
public static String CHAT_PREFIX;
|
public static String CHAT_PREFIX;
|
||||||
public static String WORLD_FOLDER;
|
public static String WORLD_FOLDER;
|
||||||
|
@ -31,6 +31,7 @@ import net.md_5.bungee.api.connection.ProxiedPlayer;
|
|||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
public class Message {
|
public class Message {
|
||||||
private Message(){}
|
private Message(){}
|
||||||
@ -119,14 +120,19 @@ public class Message {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void team(String message, Object... params){
|
public static void team(String message, Function<ProxiedPlayer, Object>... params){
|
||||||
team(message, ChatMessageType.SYSTEM, params);
|
team(message, ChatMessageType.SYSTEM, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void team(String message, ChatMessageType type, Object... params){
|
public static void team(String message, ChatMessageType type, Function<ProxiedPlayer, Object>... params){
|
||||||
for(ProxiedPlayer player : ProxyServer.getInstance().getPlayers()){
|
for(ProxiedPlayer player : ProxyServer.getInstance().getPlayers()){
|
||||||
if(player.getGroups().contains(ConnectionListener.TEAM_GROUP))
|
if(player.getGroups().contains(ConnectionListener.TEAM_GROUP)) {
|
||||||
sendPrefixless(message, player, type, params);
|
Object[] objects = new Object[params.length];
|
||||||
|
for (int i = 0; i < params.length; i++) {
|
||||||
|
objects[i] = params[i].apply(player);
|
||||||
|
}
|
||||||
|
sendPrefixless(message, player, type, objects);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
package de.steamwar.bungeecore.commands;
|
package de.steamwar.bungeecore.commands;
|
||||||
|
|
||||||
import de.steamwar.bungeecore.BungeeCore;
|
|
||||||
import de.steamwar.bungeecore.Message;
|
import de.steamwar.bungeecore.Message;
|
||||||
import de.steamwar.bungeecore.sql.SteamwarUser;
|
import de.steamwar.bungeecore.sql.SteamwarUser;
|
||||||
import net.md_5.bungee.api.CommandSender;
|
import net.md_5.bungee.api.CommandSender;
|
||||||
@ -28,6 +27,7 @@ import java.sql.Timestamp;
|
|||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
public class BanCommand extends BasicCommand {
|
public class BanCommand extends BasicCommand {
|
||||||
@ -58,7 +58,7 @@ public class BanCommand extends BasicCommand {
|
|||||||
String msg = banReason.toString();
|
String msg = banReason.toString();
|
||||||
target.ban(banTime, msg, SteamwarUser.get(sender.getName()).getId(), args[1].equalsIgnoreCase("perma"));
|
target.ban(banTime, msg, SteamwarUser.get(sender.getName()).getId(), args[1].equalsIgnoreCase("perma"));
|
||||||
Message.team("BAN_TEAM_BANNED", target.getUserName(), sender.getName(),
|
Message.team("BAN_TEAM_BANNED", target.getUserName(), sender.getName(),
|
||||||
(args[1].equalsIgnoreCase("perma")?Message.parse("BAN_PERMA", sender):Message.parse("BAN_UNTIL", sender) + banTime.toLocalDateTime().format(BungeeCore.DATE_FORMAT)), msg);
|
(args[1].equalsIgnoreCase("perma")?Message.parse("BAN_PERMA", sender):Message.parse("BAN_UNTIL", sender) + banTime.toLocalDateTime().format(DateTimeFormatter.ofPattern(Message.parse("TIMEFORMAT", sender)))), msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Timestamp parseTime(CommandSender sender, String arg){
|
public static Timestamp parseTime(CommandSender sender, String arg){
|
||||||
|
@ -48,7 +48,7 @@ public class MsgCommand extends BasicCommand {
|
|||||||
|
|
||||||
SteamwarUser user = SteamwarUser.get(player);
|
SteamwarUser user = SteamwarUser.get(player);
|
||||||
if(user.isMuted()){
|
if(user.isMuted()){
|
||||||
sender.sendMessage(user.muteMessage());
|
sender.sendMessage(user.muteMessage(player));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,12 +19,12 @@
|
|||||||
|
|
||||||
package de.steamwar.bungeecore.commands;
|
package de.steamwar.bungeecore.commands;
|
||||||
|
|
||||||
import de.steamwar.bungeecore.BungeeCore;
|
|
||||||
import de.steamwar.bungeecore.Message;
|
import de.steamwar.bungeecore.Message;
|
||||||
import de.steamwar.bungeecore.sql.SteamwarUser;
|
import de.steamwar.bungeecore.sql.SteamwarUser;
|
||||||
import net.md_5.bungee.api.CommandSender;
|
import net.md_5.bungee.api.CommandSender;
|
||||||
|
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
|
||||||
public class MuteCommand extends BasicCommand {
|
public class MuteCommand extends BasicCommand {
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ public class MuteCommand extends BasicCommand {
|
|||||||
}
|
}
|
||||||
String msg = muteReason.toString();
|
String msg = muteReason.toString();
|
||||||
target.mute(muteTime, msg, SteamwarUser.get(sender.getName()).getId(), args[1].equalsIgnoreCase("perma"));
|
target.mute(muteTime, msg, SteamwarUser.get(sender.getName()).getId(), args[1].equalsIgnoreCase("perma"));
|
||||||
Message.team("MUTE_TEAM_MUTED", target.getUserName(), sender.getName(),
|
Message.team("MUTE_TEAM_MUTED", player -> target.getUserName(), player -> sender.getName(),
|
||||||
(args[1].equalsIgnoreCase("perma")?Message.parse("BAN_PERMA", sender):Message.parse("BAN_UNTIL", sender) + muteTime.toLocalDateTime().format(BungeeCore.DATE_FORMAT)), msg);
|
player -> (args[1].equalsIgnoreCase("perma")?Message.parse("BAN_PERMA", player):Message.parse("BAN_UNTIL", player) + muteTime.toLocalDateTime().format(DateTimeFormatter.ofPattern(Message.parse("TIMEFORMAT", player)))), player -> msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ public class RCommand extends BasicCommand {
|
|||||||
|
|
||||||
SteamwarUser user = SteamwarUser.get(player);
|
SteamwarUser user = SteamwarUser.get(player);
|
||||||
if(user.isMuted()){
|
if(user.isMuted()){
|
||||||
sender.sendMessage(user.muteMessage());
|
sender.sendMessage(user.muteMessage(player));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ public class BanListener extends BasicListener {
|
|||||||
if(user.isBanned()) {
|
if(user.isBanned()) {
|
||||||
user.updateBanIP(event.getConnection().getAddress().getAddress().getHostAddress());
|
user.updateBanIP(event.getConnection().getAddress().getAddress().getHostAddress());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
event.setCancelReason(user.banMessage());
|
event.setCancelReason(user.banMessage((ProxiedPlayer) event.getConnection()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ public class ChatListener extends BasicListener {
|
|||||||
|
|
||||||
SteamwarUser user = SteamwarUser.get(sender);
|
SteamwarUser user = SteamwarUser.get(sender);
|
||||||
if(user.isMuted()){
|
if(user.isMuted()){
|
||||||
sender.sendMessage(user.muteMessage());
|
sender.sendMessage(user.muteMessage(sender));
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -200,7 +200,7 @@ public class ChatListener extends BasicListener {
|
|||||||
|
|
||||||
SteamwarUser user = SteamwarUser.get(sender);
|
SteamwarUser user = SteamwarUser.get(sender);
|
||||||
if(user.isMuted()){
|
if(user.isMuted()){
|
||||||
sender.sendMessage(user.muteMessage());
|
sender.sendMessage(user.muteMessage(sender));
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -21,10 +21,12 @@ package de.steamwar.bungeecore.sql;
|
|||||||
|
|
||||||
import de.steamwar.bungeecore.BungeeCore;
|
import de.steamwar.bungeecore.BungeeCore;
|
||||||
import de.steamwar.bungeecore.Message;
|
import de.steamwar.bungeecore.Message;
|
||||||
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class Punishment {
|
public class Punishment {
|
||||||
@ -119,22 +121,24 @@ public class Punishment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void updateEndTime(int from, String newreason, Timestamp newUpdate, boolean perma) {
|
public void updateEndTime(int from, String newreason, Timestamp newUpdate, boolean perma) {
|
||||||
String newReason = Message.parse("BAN_CHANGED", SteamwarUser.get(from).getPlayer(), SteamwarUser.get(from).getUserName(),
|
ProxiedPlayer player = BungeeCore.get().getProxy().getPlayer(SteamwarUser.get(from).getUuid());
|
||||||
|
String newReason = Message.parse("BAN_CHANGED", player, SteamwarUser.get(from).getUserName(),
|
||||||
getBantime(endTime, this.perma),
|
getBantime(endTime, this.perma),
|
||||||
getBantime(newUpdate, perma),
|
getBantime(newUpdate, perma),
|
||||||
newreason);
|
newreason);
|
||||||
|
//TODO Add User
|
||||||
|
|
||||||
SQL.update("UPDATE Punishments SET EndTime = ?, Reason = ?, Perma = ? WHERE PunishmentId = ?", newUpdate, newReason.toString(), perma, id);
|
SQL.update("UPDATE Punishments SET EndTime = ?, Reason = ?, Perma = ? WHERE PunishmentId = ?", newUpdate, newReason, perma, id);
|
||||||
this.reason = newReason.toString();
|
this.reason = newReason;
|
||||||
this.perma = perma;
|
this.perma = perma;
|
||||||
this.endTime = newUpdate;
|
this.endTime = newUpdate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getBantime(Timestamp endTime, boolean perma) {
|
public String getBantime(Timestamp endTime, boolean perma, ProxiedPlayer player) {
|
||||||
if(perma)
|
if(perma)
|
||||||
return Message.parse("BAN_PERMA", SteamwarUser.get(user).getPlayer());
|
return Message.parse("BAN_PERMA", player);
|
||||||
else
|
else
|
||||||
return endTime.toLocalDateTime().format(BungeeCore.DATE_FORMAT);
|
return endTime.toLocalDateTime().format(DateTimeFormatter.ofPattern(Message.parse("TIMEFORMAT", player)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum PunishmentType {
|
public enum PunishmentType {
|
||||||
|
@ -33,6 +33,7 @@ import java.net.UnknownHostException;
|
|||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -149,10 +150,6 @@ public class SteamwarUser {
|
|||||||
return team;
|
return team;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ProxiedPlayer getPlayer() {
|
|
||||||
return BungeeCore.get().getProxy().getPlayer(uuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isBanned() {
|
public boolean isBanned() {
|
||||||
if(!punishments.containsKey(Punishment.PunishmentType.Ban))
|
if(!punishments.containsKey(Punishment.PunishmentType.Ban))
|
||||||
return false;
|
return false;
|
||||||
@ -174,22 +171,22 @@ public class SteamwarUser {
|
|||||||
return punishment.isPerma() || punishment.getEndTime().after(new Date());
|
return punishment.isPerma() || punishment.getEndTime().after(new Date());
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextComponent banMessage(){
|
public TextComponent banMessage(ProxiedPlayer player){
|
||||||
Punishment punishment = punishments.get(Punishment.PunishmentType.Ban);
|
Punishment punishment = punishments.get(Punishment.PunishmentType.Ban);
|
||||||
if (punishment.isPerma()) {
|
if (punishment.isPerma()) {
|
||||||
return BungeeCore.stringToText(Message.parsePrefixed("BANNED_MESSAGE_PERMA", getPlayer(), punishment.getReason()));
|
return BungeeCore.stringToText(Message.parsePrefixed("BANNED_MESSAGE_PERMA", player, punishment.getReason()));
|
||||||
} else {
|
} else {
|
||||||
return BungeeCore.stringToText(Message.parsePrefixed("BANNED_MESSAGE_UNTIL", getPlayer(), punishment.getEndTime().toLocalDateTime().format(BungeeCore.DATE_FORMAT),
|
return BungeeCore.stringToText(Message.parsePrefixed("BANNED_MESSAGE_UNTIL", player, punishment.getEndTime().toLocalDateTime().format(DateTimeFormatter.ofPattern(Message.parse("TIMEFORMAT", player))),
|
||||||
punishment.getReason()));
|
punishment.getReason()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextComponent muteMessage(){
|
public TextComponent muteMessage(ProxiedPlayer player){
|
||||||
Punishment punishment = punishments.get(Punishment.PunishmentType.Mute);
|
Punishment punishment = punishments.get(Punishment.PunishmentType.Mute);
|
||||||
if (punishment.isPerma()) {
|
if (punishment.isPerma()) {
|
||||||
return BungeeCore.stringToText(Message.parsePrefixed("MUTED_MESSAGE_PERMA", getPlayer(), punishment.getReason()));
|
return BungeeCore.stringToText(Message.parsePrefixed("MUTED_MESSAGE_PERMA", player, punishment.getReason()));
|
||||||
} else {
|
} else {
|
||||||
return BungeeCore.stringToText(Message.parsePrefixed("MUTED_MESSAGE_UNTIL",getPlayer(), punishment.getEndTime().toLocalDateTime().format(BungeeCore.DATE_FORMAT), punishment.getReason()));
|
return BungeeCore.stringToText(Message.parsePrefixed("MUTED_MESSAGE_UNTIL", player, punishment.getEndTime().toLocalDateTime().format(DateTimeFormatter.ofPattern(Message.parse("TIMEFORMAT", player))), punishment.getReason()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,12 +205,12 @@ public class SteamwarUser {
|
|||||||
ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid);
|
ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid);
|
||||||
if(player != null){
|
if(player != null){
|
||||||
updateBanIP(player.getAddress().getAddress().getHostAddress());
|
updateBanIP(player.getAddress().getAddress().getHostAddress());
|
||||||
player.disconnect(banMessage());
|
player.disconnect(banMessage(player));
|
||||||
for (BannedUserIPs banned:
|
for (BannedUserIPs banned:
|
||||||
BannedUserIPs.get(player.getAddress().getAddress().getHostAddress())) {
|
BannedUserIPs.get(player.getAddress().getAddress().getHostAddress())) {
|
||||||
SteamwarUser bannedUser = SteamwarUser.get(banned.getUserID());
|
SteamwarUser bannedUser = SteamwarUser.get(banned.getUserID());
|
||||||
if(bannedUser.isBanned() && banned.getTimestamp().before(time))
|
if(bannedUser.isBanned() && banned.getTimestamp().before(time))
|
||||||
bannedUser.ban(time, bannedUser.banReason);
|
bannedUser.ban(time, banReason, from, perma);
|
||||||
}
|
}
|
||||||
}else
|
}else
|
||||||
updateBanIP("");
|
updateBanIP("");
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
PREFIX=§eSteam§8War»
|
PREFIX=§eSteam§8War»
|
||||||
SPACER=
|
SPACER=
|
||||||
|
TIMEFORMAT=dd.MM.yyyy HH:mm
|
||||||
|
|
||||||
UNKNOWN_COMMAND=§cUnbekannter Befehl.
|
UNKNOWN_COMMAND=§cUnbekannter Befehl.
|
||||||
UNKNOWN_PLAYER=§cDiesen Spieler gibt es nicht.
|
UNKNOWN_PLAYER=§cDiesen Spieler gibt es nicht.
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren