Skip to content

Commit 1e90095

Browse files
authored
feat: added player punishment count prefixes (#1048)
%bm_banrecord_count% Total historical ban records for the player %bm_muterecord_count% Total historical mute records for the player %bm_warning_count% Total warnings for the player %bm_kick_count% Total kicks for the player
1 parent fdc0ab8 commit 1e90095

2 files changed

Lines changed: 27 additions & 1 deletion

File tree

bukkit/src/main/java/me/confuser/banmanager/bukkit/placeholders/PAPIPlaceholders.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55
import me.confuser.banmanager.common.data.IpBanData;
66
import me.confuser.banmanager.common.data.IpMuteData;
77
import me.confuser.banmanager.common.data.PlayerBanData;
8+
import me.confuser.banmanager.common.data.PlayerData;
89
import me.confuser.banmanager.common.data.PlayerMuteData;
10+
import me.confuser.banmanager.common.util.UUIDUtils;
911
import org.bukkit.entity.Player;
1012

13+
import java.sql.SQLException;
1114
import java.util.HashMap;
1215
import java.util.function.BiFunction;
1316
import java.util.function.Function;
@@ -25,6 +28,11 @@ public PAPIPlaceholders(BanManagerPlugin plugin) {
2528
registerPlaceholder("ip_mutes", (player) -> String.valueOf(plugin.getIpMuteStorage().getMutes().size()));
2629
registerPlaceholder("iprange_bans", (player) -> String.valueOf(plugin.getIpRangeBanStorage().getBans().size()));
2730

31+
registerPlaceholder("banrecord_count", player -> getPlayerCount(player, p -> plugin.getPlayerBanRecordStorage().getCount(p)));
32+
registerPlaceholder("muterecord_count", player -> getPlayerCount(player, p -> plugin.getPlayerMuteRecordStorage().getCount(p)));
33+
registerPlaceholder("warning_count", player -> getPlayerCount(player, p -> plugin.getPlayerWarnStorage().getCount(p)));
34+
registerPlaceholder("kick_count", player -> getPlayerCount(player, p -> plugin.getPlayerKickStorage().getCount(p)));
35+
2836
registerBanPlaceholder("currentban_id", (player, data) -> String.valueOf(data.getId()));
2937
registerBanPlaceholder("currentban_created", (player, data) -> String.valueOf(data.getCreated()));
3038
registerBanPlaceholder("currentban_expires", (player, data) -> String.valueOf(data.getExpires()));
@@ -56,6 +64,24 @@ public PAPIPlaceholders(BanManagerPlugin plugin) {
5664
registerIpMutePlaceholder("currentipmute_ip", (player, data) -> data.getIp().toString());
5765
}
5866

67+
@FunctionalInterface
68+
private interface PlayerDataCount {
69+
long count(PlayerData playerData) throws SQLException;
70+
}
71+
72+
private String getPlayerCount(Player player, PlayerDataCount counter) {
73+
try {
74+
PlayerData playerData = plugin.getPlayerStorage().queryForId(UUIDUtils.toBytes(player.getUniqueId()));
75+
76+
if (playerData == null) return "0";
77+
78+
return String.valueOf(counter.count(playerData));
79+
} catch (SQLException e) {
80+
plugin.getLogger().warning("Failed to retrieve placeholder count: " + e.getMessage());
81+
return "";
82+
}
83+
}
84+
5985
public void registerPlaceholder(String identifier, final Function<Player, String> fn) {
6086
placeholders.put(identifier, new Placeholder(plugin, identifier) {
6187
@Override

common/src/test/java/me/confuser/banmanager/common/commands/TempWarnCommandTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,4 +131,4 @@ public void shouldAllowPartialWhenNoExactCollision() throws SQLException {
131131
server.setUseStorageForOnlineLookups(true);
132132
}
133133
}
134-
}
134+
}

0 commit comments

Comments
 (0)