Skip to content

Commit

Permalink
Use name instead of UUID for shadowbanning
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexProgrammerDE committed Jun 30, 2023
1 parent 9a9ed37 commit 70f24fd
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -85,17 +85,6 @@ default void onCommand(CommandSourceWrapper sender, String[] args, PistonQueuePl
return;
}

Optional<PlayerWrapper> optionalBanPlayer = plugin.getPlayer(args[1]);
if (!optionalBanPlayer.isPresent()) {
sendLine(sender);
sender.sendMessage(getWrapperFactory().text("PistonQueue").color(TextColorWrapper.GOLD));
sender.sendMessage(getWrapperFactory().text("The player " + args[1] + " was not found!").color(TextColorWrapper.GOLD));
sendLine(sender);
return;
}

PlayerWrapper banPlayer = optionalBanPlayer.get();

if (args.length == 2) {
sendBanHelp(sender);
return;
Expand Down Expand Up @@ -125,15 +114,16 @@ default void onCommand(CommandSourceWrapper sender, String[] args, PistonQueuePl
return;
}

if (StorageTool.shadowBanPlayer(banPlayer.getUniqueId(), calendar.getTime())) {
String banPlayerName = args[1];
if (StorageTool.shadowBanPlayer(banPlayerName, calendar.getTime())) {
sendLine(sender);
sender.sendMessage(getWrapperFactory().text("PistonQueue").color(TextColorWrapper.GOLD));
sender.sendMessage(getWrapperFactory().text("Successfully shadowbanned " + banPlayer.getName() + "!").color(TextColorWrapper.GREEN));
sender.sendMessage(getWrapperFactory().text("Successfully shadowbanned " + banPlayerName + "!").color(TextColorWrapper.GREEN));
sendLine(sender);
} else {
sendLine(sender);
sender.sendMessage(getWrapperFactory().text("PistonQueue").color(TextColorWrapper.GOLD));
sender.sendMessage(getWrapperFactory().text(banPlayer.getName() + " is already shadowbanned!").color(TextColorWrapper.RED));
sender.sendMessage(getWrapperFactory().text(banPlayerName + " is already shadowbanned!").color(TextColorWrapper.RED));
sendLine(sender);
}

Expand All @@ -149,33 +139,22 @@ default void onCommand(CommandSourceWrapper sender, String[] args, PistonQueuePl
return;
}

Optional<PlayerWrapper> optionalUnBanPlayer = plugin.getPlayer(args[1]);
if (!optionalUnBanPlayer.isPresent()) {
String unBanPlayerName = args[1];
if (StorageTool.unShadowBanPlayer(unBanPlayerName)) {
sendLine(sender);
sender.sendMessage(getWrapperFactory().text("PistonQueue").color(TextColorWrapper.GOLD));
sender.sendMessage(getWrapperFactory().text("The player " + args[1] + " was not found!").color(TextColorWrapper.GOLD));
sendLine(sender);
return;
}

PlayerWrapper unBanPlayer = optionalUnBanPlayer.get();

if (StorageTool.unShadowBanPlayer(unBanPlayer.getUniqueId())) {
sendLine(sender);
sender.sendMessage(getWrapperFactory().text("PistonQueue").color(TextColorWrapper.GOLD));
sender.sendMessage(getWrapperFactory().text("Successfully unshadowbanned " + unBanPlayer.getName() + "!").color(TextColorWrapper.GREEN));
sender.sendMessage(getWrapperFactory().text("Successfully unshadowbanned " + unBanPlayerName + "!").color(TextColorWrapper.GREEN));
sendLine(sender);
} else {
sendLine(sender);
sender.sendMessage(getWrapperFactory().text("PistonQueue").color(TextColorWrapper.GOLD));
sender.sendMessage(getWrapperFactory().text(unBanPlayer.getName() + " is already shadowbanned!").color(TextColorWrapper.RED));
sender.sendMessage(getWrapperFactory().text(unBanPlayerName + " is not shadowbanned!").color(TextColorWrapper.RED));
sendLine(sender);
}

return;
default: {
help(sender);
return;
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ protected void onPreLogin(PQPreLoginEvent event) {
}

protected void onPostLogin(PlayerWrapper player) {
if (StorageTool.isShadowBanned(player.getUniqueId()) && Config.SHADOW_BAN_TYPE == BanType.KICK) {
if (StorageTool.isShadowBanned(player.getName()) && Config.SHADOW_BAN_TYPE == BanType.KICK) {
player.disconnect(Config.SERVER_DOWN_KICK_MESSAGE);
}
}
Expand Down Expand Up @@ -209,7 +209,7 @@ private void connectPlayer(QueueType type) {
player.sendMessage(Config.JOINING_TARGET_SERVER);
player.resetPlayerList();

if (StorageTool.isShadowBanned(player.getUniqueId())
if (StorageTool.isShadowBanned(player.getName())
&& (Config.SHADOW_BAN_TYPE == BanType.LOOP
|| (Config.SHADOW_BAN_TYPE == BanType.PERCENT && ThreadLocalRandom.current().nextInt(100) >= Config.PERCENT))) {
player.sendMessage(Config.SHADOW_BAN_MESSAGE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.UUID;

public final class StorageTool {
private static Path dataDirectory;
Expand All @@ -43,16 +42,17 @@ private StorageTool() {
/**
* Shadow-ban a player!
*
* @param player The player to shadow-ban.
* @param date The date when he will be unbanned.
* @param playerName The player to shadow-ban.
* @param date The date when he will be unbanned.
* @return true if player got shadow-banned and if already shadow-banned false.
*/
public static boolean shadowBanPlayer(UUID player, Date date) {
manageBan(player);
public static boolean shadowBanPlayer(String playerName, Date date) {
playerName = playerName.toLowerCase(Locale.ENGLISH);
manageBan(playerName);

if (dataConfig.node(player.toString()).virtual()) {
if (dataConfig.node(playerName).virtual()) {
try {
dataConfig.node(player.toString()).set(date.toString());
dataConfig.node(playerName).set(date.toString());
} catch (SerializationException e) {
e.printStackTrace();
}
Expand All @@ -68,13 +68,14 @@ public static boolean shadowBanPlayer(UUID player, Date date) {
/**
* Un-shadow-ban a player!
*
* @param player The player to un-shadow-ban.
* @param playerName The player to un-shadow-ban.
* @return true if a player got un-shadow-banned and false if he wasn't shadow-banned.
*/
public static boolean unShadowBanPlayer(UUID player) {
if (!dataConfig.node(player.toString()).virtual()) {
public static boolean unShadowBanPlayer(String playerName) {
playerName = playerName.toLowerCase(Locale.ENGLISH);
if (!dataConfig.node(playerName).virtual()) {
try {
dataConfig.node(player.toString()).set(null);
dataConfig.node(playerName).set(null);
} catch (SerializationException e) {
e.printStackTrace();
}
Expand All @@ -87,23 +88,25 @@ public static boolean unShadowBanPlayer(UUID player) {
}
}

public static boolean isShadowBanned(UUID player) {
manageBan(player);
public static boolean isShadowBanned(String playerName) {
playerName = playerName.toLowerCase(Locale.ENGLISH);
manageBan(playerName);

return !dataConfig.node(player.toString()).virtual();
return !dataConfig.node(playerName).virtual();
}

private static void manageBan(UUID player) {
private static void manageBan(String playerName) {
playerName = playerName.toLowerCase(Locale.ENGLISH);
Date now = new Date();

if (!dataConfig.node(player.toString()).virtual()) {
if (!dataConfig.node(playerName).virtual()) {
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", new Locale("us"));

try {
Date date = sdf.parse(dataConfig.node(player.toString()).getString());
Date date = sdf.parse(dataConfig.node(playerName).getString());

if (now.after(date) || (now.equals(date))) {
unShadowBanPlayer(player);
unShadowBanPlayer(playerName);
}
} catch (ParseException e) {
e.printStackTrace();
Expand Down

0 comments on commit 70f24fd

Please sign in to comment.