Skip to content

Commit 128051d

Browse files
committed
better notification management
1 parent d4b866d commit 128051d

4 files changed

Lines changed: 109 additions & 26 deletions

File tree

COMMANDS.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,12 @@ The following table outlines each top-level permission and the sub-permissions i
5555
| `kit.admin` | `perplayerkit.admin` |
5656
| `kit.staff` | `perplayerkit.staff` |
5757
| `kit.use` | `perplayerkit.use` |
58-
| `perplayerkit.use` | `perplayerkit.menu`, `perplayerkit.copykit`, `perplayerkit.sharekit`, `perplayerkit.shareenderchest`, `perplayerkit.swapkit`, `perplayerkit.deletekit`, `perplayerkit.publickit`, `perplayerkit.kit`, `perplayerkit.enderchest`, `perplayerkit.viewenderchest`, `perplayerkit.regear`, `perplayerkit.heal`, `perplayerkit.repair`, `perplayerkit.rekitonrespawn`, `perplayerkit.rekitonkill` |
58+
| `perplayerkit.use` | `perplayerkit.menu`, `perplayerkit.copykit`, `perplayerkit.sharekit`, `perplayerkit.shareenderchest`, `perplayerkit.swapkit`, `perplayerkit.deletekit`, `perplayerkit.publickit`, `perplayerkit.kit`, `perplayerkit.enderchest`, `perplayerkit.viewenderchest`, `perplayerkit.regear`, `perplayerkit.heal`, `perplayerkit.repair`, `perplayerkit.rekitonrespawn`, `perplayerkit.rekitonkill` |
59+
60+
## Message Notifications
61+
62+
The following permission controls which kit-related action messages players see:
63+
64+
| Permission | Purpose |
65+
|-------------------------|--------------------------------------------------------------------------------------------------|
66+
| `perplayerkit.kitnotify` | Allows players to see notifications about kit-related actions (e.g., when other players load kits, repair gear, etc.). **Defaults to `true`** - all players can see these messages by default. Set to `false` to hide all kit action messages from a player. |

CONFIG.md

Lines changed: 46 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -114,24 +114,58 @@ publickits:
114114

115115
### **Messages**
116116

117-
This section controls the messages broadcast to players when they perform various kit-related actions. Messages use mini message format for styling.
117+
This section controls the messages broadcast to players when they perform various kit-related actions. Messages use mini message format for styling. Each message type can be individually enabled/disabled and customized with a custom permission node.
118118

119119
```yaml
120120
messages:
121121
disable-kit-messages: false # Set to true to disable all kit action messages (e.g. player loaded a kit, player repaired gear, etc.)
122-
player-repaired: "<gray>%player% repaired their gear</gray>"
123-
player-healed: "<gray>%player% healed themselves</gray>"
124-
player-opened-kit-room: "<gray>%player% opened the Kit Room</gray>"
125-
player-loaded-private-kit: "<gray>%player% loaded a kit</gray>"
126-
player-loaded-public-kit: "<gray>%player% loaded a public kit</gray>"
127-
player-loaded-enderchest: "<gray>%player% loaded an ender chest.</gray>"
128-
player-copied-kit: "<gray>%player% copied a kit</gray>"
129-
player-copied-ec: "<gray>%player% copied an ender chest</gray>"
130-
player-regeared: "<gray>%player% regeared</gray>"
122+
player-repaired:
123+
enabled: true # Enable or disable this specific message type
124+
message: "<gray>%player% repaired their gear</gray>" # Message content in mini message format
125+
permission: "perplayerkit.kitnotify" # Permission required to see this message (default permission defaults to true)
126+
player-healed:
127+
enabled: true
128+
message: "<gray>%player% healed themselves</gray>"
129+
permission: "perplayerkit.kitnotify"
130+
player-opened-kit-room:
131+
enabled: true
132+
message: "<gray>%player% opened the Kit Room</gray>"
133+
permission: "perplayerkit.kitnotify"
134+
player-loaded-private-kit:
135+
enabled: true
136+
message: "<gray>%player% loaded a kit</gray>"
137+
permission: "perplayerkit.kitnotify"
138+
player-loaded-public-kit:
139+
enabled: true
140+
message: "<gray>%player% loaded a public kit</gray>"
141+
permission: "perplayerkit.kitnotify"
142+
player-loaded-enderchest:
143+
enabled: true
144+
message: "<gray>%player% loaded an ender chest.</gray>"
145+
permission: "perplayerkit.kitnotify"
146+
player-copied-kit:
147+
enabled: true
148+
message: "<gray>%player% copied a kit</gray>"
149+
permission: "perplayerkit.kitnotify"
150+
player-copied-ec:
151+
enabled: true
152+
message: "<gray>%player% copied an ender chest</gray>"
153+
permission: "perplayerkit.kitnotify"
154+
player-regeared:
155+
enabled: true
156+
message: "<gray>%player% regeared</gray>"
157+
permission: "perplayerkit.kitnotify"
131158
```
132159
133-
- **disable-kit-messages**: Set to `true` to completely suppress all kit action messages. When enabled, players will not see any broadcasts for kit-related actions, regardless of the broadcast-on-player-action feature flag.
134-
- The action messages support the `%player%` placeholder which is replaced with the player's name (or display name if `use-display-name` is enabled).
160+
#### Message Configuration Fields:
161+
162+
- **enabled**: Set to `false` to disable a specific message type. When disabled, the message will not be broadcast to any players.
163+
- **message**: The content of the message in mini message format. Supports the `%player%` placeholder which is replaced with the player's name (or display name if `use-display-name` is enabled).
164+
- **permission**: The permission node required for players to see this message. Players without this permission will not see the broadcast. Defaults to `perplayerkit.kitnotify` which defaults to `true`.
165+
166+
#### Global Settings:
167+
168+
- **disable-kit-messages**: Set to `true` to completely suppress all kit action messages. When enabled, players will not see any broadcasts for kit-related actions, regardless of the broadcast-on-player-action feature flag or individual message permissions. This acts as a global on/off switch.
135169

136170
---
137171

src/main/java/dev/noah/perplayerkit/util/BroadcastManager.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public static Component generateBroadcastComponent(String message) {
6868
return MiniMessage.miniMessage().deserialize(formattedMessage);
6969
}
7070

71-
private void broadcastMessage(Player player, String message) {
71+
private void broadcastMessage(Player player, String message, String permission) {
7272
World world = player.getWorld();
7373

7474
if(Bukkit.getPluginManager().getPlugin("PlaceholderAPI")!=null) {
@@ -77,7 +77,10 @@ private void broadcastMessage(Player player, String message) {
7777

7878
for (Player broadcastPlayer : world.getPlayers()) {
7979
if (broadcastPlayer.getLocation().distance(player.getLocation()) < broadcastDistance) {
80-
audience.player(broadcastPlayer).sendMessage(prefix.append(MiniMessage.miniMessage().deserialize(message)));
80+
// Check if the broadcast player has permission to see this message
81+
if (broadcastPlayer.hasPermission(permission)) {
82+
audience.player(broadcastPlayer).sendMessage(prefix.append(MiniMessage.miniMessage().deserialize(message)));
83+
}
8184
}
8285
}
8386
}
@@ -96,8 +99,19 @@ private void broadcastMessage(Player player, BroadcastManager.MessageKey key, Co
9699
return;
97100
}
98101

99-
String message = plugin.getConfig().getString(key.getKey(), "<gray><aqua>%player%</aqua> " +
102+
String messageConfigPath = key.getKey();
103+
String enabledPath = messageConfigPath + ".enabled";
104+
String messagePath = messageConfigPath + ".message";
105+
String permissionPath = messageConfigPath + ".permission";
106+
107+
// Check if message is enabled
108+
if (!plugin.getConfig().getBoolean(enabledPath, true)) {
109+
return;
110+
}
111+
112+
String message = plugin.getConfig().getString(messagePath, "<gray><aqua>%player%</aqua> " +
100113
"performed an action.</gray>");
114+
String permission = plugin.getConfig().getString(permissionPath, "perplayerkit.kitnotify");
101115

102116
String playerName;
103117
if (plugin.getConfig().getBoolean("use-display-name", false)) {
@@ -108,7 +122,7 @@ private void broadcastMessage(Player player, BroadcastManager.MessageKey key, Co
108122

109123
message = message.replace("%player%", playerName);
110124

111-
broadcastMessage(player, message);
125+
broadcastMessage(player, message, permission);
112126

113127
if (cooldownManager != null) {
114128
cooldownManager.setCooldown(player);

src/main/resources/config.yml

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,42 @@ use-display-name: false #For example, set to true if you want to display nicknam
9292

9393
messages:
9494
disable-kit-messages: false # Set to true to disable all kit action messages (e.g. player loaded a kit, player repaired gear, etc.)
95-
player-repaired: "<gray>%player% repaired their gear</gray>"
96-
player-healed: "<gray>%player% healed themselves</gray>"
97-
player-opened-kit-room: "<gray>%player% opened the Kit Room</gray>"
98-
player-loaded-private-kit: "<gray>%player% loaded a kit</gray>"
99-
player-loaded-public-kit: "<gray>%player% loaded a public kit</gray>"
100-
player-loaded-enderchest: "<gray>%player% loaded an ender chest.</gray>"
101-
player-copied-kit: "<gray>%player% copied a kit</gray>"
102-
player-copied-ec: "<gray>%player% copied an ender chest</gray>"
103-
player-regeared: "<gray>%player% regeared</gray>"
95+
player-repaired:
96+
enabled: true
97+
message: "<gray>%player% repaired their gear</gray>"
98+
permission: "perplayerkit.kitnotify"
99+
player-healed:
100+
enabled: true
101+
message: "<gray>%player% healed themselves</gray>"
102+
permission: "perplayerkit.kitnotify"
103+
player-opened-kit-room:
104+
enabled: true
105+
message: "<gray>%player% opened the Kit Room</gray>"
106+
permission: "perplayerkit.kitnotify"
107+
player-loaded-private-kit:
108+
enabled: true
109+
message: "<gray>%player% loaded a kit</gray>"
110+
permission: "perplayerkit.kitnotify"
111+
player-loaded-public-kit:
112+
enabled: true
113+
message: "<gray>%player% loaded a public kit</gray>"
114+
permission: "perplayerkit.kitnotify"
115+
player-loaded-enderchest:
116+
enabled: true
117+
message: "<gray>%player% loaded an ender chest.</gray>"
118+
permission: "perplayerkit.kitnotify"
119+
player-copied-kit:
120+
enabled: true
121+
message: "<gray>%player% copied a kit</gray>"
122+
permission: "perplayerkit.kitnotify"
123+
player-copied-ec:
124+
enabled: true
125+
message: "<gray>%player% copied an ender chest</gray>"
126+
permission: "perplayerkit.kitnotify"
127+
player-regeared:
128+
enabled: true
129+
message: "<gray>%player% regeared</gray>"
130+
permission: "perplayerkit.kitnotify"
104131

105132

106133
anti-exploit:

0 commit comments

Comments
 (0)