Skip to content

Commit

Permalink
Add ignorelist clear cmd
Browse files Browse the repository at this point in the history
Fixes #142
  • Loading branch information
AlexProgrammerDE committed Nov 4, 2024
1 parent e0c2b57 commit 856c9d1
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;

import java.math.RoundingMode;
import java.util.ArrayList;
Expand Down Expand Up @@ -48,6 +49,12 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
return true;
}

if (args[0].equalsIgnoreCase("clear")) {
plugin.getIgnoreTool().clearIgnoredPlayers(player);
plugin.getCommonTool().sendLanguageMessage(player, "ignorelistcleared");
return true;
}

try {
int page = Integer.parseInt(args[0]);

Expand All @@ -66,7 +73,11 @@ public boolean onCommand(CommandSender sender, Command command, String label, St

@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
return Collections.emptyList();
if (args.length == 1) {
return StringUtil.copyPartialMatches(args[0], List.of("clear"), new ArrayList<>());
} else {
return Collections.emptyList();
}
}

private void showList(int page, Player player) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,16 @@ public List<UUID> getStoredList(Player player) {
}
}

public void clearIgnoredPlayers(Player player) {
try (Connection connection = plugin.getDs().getConnection()) {
PreparedStatement preparedStatement = connection.prepareStatement("DELETE FROM `pistonchat_hard_ignores` WHERE `uuid`=?");
preparedStatement.setString(1, player.getUniqueId().toString());
preparedStatement.execute();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}

public enum HardReturn {
IGNORE, UN_IGNORE
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,11 @@ protected List<OfflinePlayer> convertIgnoredPlayer(List<UUID> listUUID) {
return returnedPlayers;
}

public void clearIgnoredPlayers(Player player) {
plugin.getSoftignoreTool().clearIgnoredPlayers(player);
plugin.getHardIgnoreTool().clearIgnoredPlayers(player);
}

public enum IgnoreType {
SOFT, HARD
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

@RequiredArgsConstructor
public class SoftIgnoreTool {
private static final String METADATA_KEY = "pistonchat_softignore";
private final PistonChat plugin;
private final Gson gson = new Gson();

Expand All @@ -28,7 +29,7 @@ public SoftReturn softIgnorePlayer(Player player, Player ignored) {
list.add(ignored.getUniqueId());
}

player.setMetadata("pistonchat_softignore", new FixedMetadataValue(plugin, gson.toJson(list)));
player.setMetadata(METADATA_KEY, new FixedMetadataValue(plugin, gson.toJson(list)));

return contains ? SoftReturn.UN_IGNORE : SoftReturn.IGNORE;
}
Expand All @@ -39,14 +40,18 @@ protected boolean isSoftIgnored(CommandSender chatter, Player receiver) {
}

protected List<UUID> getStoredList(Player player) {
List<MetadataValue> values = player.getMetadata("pistonchat_softignore");
List<MetadataValue> values = player.getMetadata(METADATA_KEY);
if (values.isEmpty()) {
return new ArrayList<>();
}

return gson.<List<String>>fromJson(values.get(0).asString(), List.class).stream().map(UUID::fromString).toList();
}

public void clearIgnoredPlayers(Player player) {
player.removeMetadata(METADATA_KEY, plugin);
}

public enum SoftReturn {
IGNORE, UN_IGNORE
}
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/language.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ ignore: "<gold>Now ignoring <dark_aqua><player_name>"
unignore: "<gold>No longer ignoring <dark_aqua><player_name>"
ignorehard: "<gold>Permanently ignoring <player_name>. This is saved in <dark_red>/ignorelist</dark_red>."
unignorehard: "<gold>No longer permanently ignoring <dark_aqua><player_name>"
ignorelistcleared: "<gold>Ignore list cleared."

0 comments on commit 856c9d1

Please sign in to comment.