Skip to content

Commit 8a60890

Browse files
committed
Add message handling config options
1 parent 5090e20 commit 8a60890

3 files changed

Lines changed: 40 additions & 31 deletions

File tree

src/main/java/net/thenextlvl/perworlds/PerWorldsPlugin.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ private void scheduleDelayedInitTask() {
116116
}
117117

118118
private void setupNotice() {
119-
var separator = "-".repeat(86);
119+
final var separator = "-".repeat(86);
120120
getComponentLogger().warn(separator);
121121
if (groupsExist) getComponentLogger().warn("PerWorlds is not properly configured yet!");
122122
else getComponentLogger().warn("This is your first startup using PerWorlds");
@@ -134,15 +134,15 @@ private void setupNotice() {
134134
private void registerListeners() {
135135
getServer().getPluginManager().registerEvents(new ChatListener(provider), this);
136136
getServer().getPluginManager().registerEvents(new ConnectionListener(provider), this);
137-
getServer().getPluginManager().registerEvents(new MessageListener(provider), this);
137+
getServer().getPluginManager().registerEvents(new MessageListener(this), this);
138138
getServer().getPluginManager().registerEvents(new PluginListener(provider), this);
139139
getServer().getPluginManager().registerEvents(new RespawnListener(provider), this);
140140
getServer().getPluginManager().registerEvents(new TeleportListener(provider), this);
141141
getServer().getPluginManager().registerEvents(new WorldListener(provider), this);
142142
}
143143

144144
private void warnWorldManager() {
145-
var plugin = knownWorldManagers.stream()
145+
final var plugin = knownWorldManagers.stream()
146146
.filter(name -> !name.equals("Worlds"))
147147
.map(getServer().getPluginManager()::getPlugin)
148148
.filter(Objects::nonNull)
@@ -157,15 +157,15 @@ private void warnWorldManager() {
157157

158158
private void loadGroups() {
159159
if (!groupsExist) return;
160-
var suffix = ".dat";
161-
try (var files = Files.list(provider.getDataFolder())) {
160+
final var suffix = ".dat";
161+
try (final var files = Files.list(provider.getDataFolder())) {
162162
files.map(path -> path.getFileName().toString())
163163
.filter(name -> name.endsWith(suffix))
164164
.forEach(name -> {
165-
var trimmed = name.substring(0, name.length() - suffix.length());
165+
final var trimmed = name.substring(0, name.length() - suffix.length());
166166
if (!provider.hasGroup(trimmed)) provider.createGroup(trimmed);
167167
});
168-
} catch (IOException e) {
168+
} catch (final IOException e) {
169169
getComponentLogger().error("Failed to load groups", e);
170170
getComponentLogger().error("Please look for similar issues or report this on GitHub: {}", ISSUES);
171171
PerWorldsPlugin.ERROR_TRACKER.trackError(e);
@@ -181,11 +181,11 @@ private void persistGroups() {
181181

182182
private void registerCommands() {
183183
getLifecycleManager().registerEventHandler(LifecycleEvents.COMMANDS, event -> {
184-
var command = WorldCommand.create(this);
185-
var world = event.registrar().getDispatcher().getRoot().getChild("world");
184+
final var command = WorldCommand.create(this);
185+
final var world = event.registrar().getDispatcher().getRoot().getChild("world");
186186
if (world != null) {
187187
world.getChildren().forEach(command::addChild);
188-
var requirement = command.getRequirement();
188+
final var requirement = command.getRequirement();
189189
command.requirement = source -> requirement.test(source) || world.canUse(source);
190190
}
191191
event.registrar().register(command, "The main command to interact with this plugin");
@@ -214,7 +214,7 @@ public ComponentBundle bundle() {
214214
private void addCustomCharts() {
215215
metrics.addCustomChart(new SimplePie("world_management_plugin", () -> {
216216
if (worldManagementPlugin != null) return worldManagementPlugin;
217-
var worldManager = knownWorldManagers.stream()
217+
final var worldManager = knownWorldManagers.stream()
218218
.filter(name -> getServer().getPluginManager().getPlugin(name) != null)
219219
.findAny().orElse("None");
220220
return worldManagementPlugin = worldManager;
@@ -224,7 +224,7 @@ private void addCustomCharts() {
224224
private Chart<String[]> worldManagementPlugins() {
225225
return Chart.stringArray("world_management_plugins", () -> {
226226
if (worldManagementPlugins != null) return worldManagementPlugins;
227-
var worldManagers = knownWorldManagers.stream()
227+
final var worldManagers = knownWorldManagers.stream()
228228
.filter(name -> getServer().getPluginManager().getPlugin(name) != null)
229229
.toArray(String[]::new);
230230
return this.worldManagementPlugins = worldManagers;

src/main/java/net/thenextlvl/perworlds/listener/MessageListener.java

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package net.thenextlvl.perworlds.listener;
22

33
import net.kyori.adventure.text.Component;
4-
import net.thenextlvl.perworlds.GroupProvider;
54
import net.thenextlvl.perworlds.GroupSettings;
5+
import net.thenextlvl.perworlds.PerWorldsPlugin;
66
import net.thenextlvl.perworlds.WorldGroup;
77
import org.bukkit.GameRule;
88
import org.bukkit.World;
@@ -27,44 +27,49 @@
2727

2828
@NullMarked
2929
public final class MessageListener implements Listener {
30-
private final GroupProvider provider;
30+
private final PerWorldsPlugin plugin;
3131

32-
public MessageListener(GroupProvider provider) {
33-
this.provider = provider;
32+
public MessageListener(final PerWorldsPlugin plugin) {
33+
this.plugin = plugin;
3434
}
3535

3636
@EventHandler(priority = EventPriority.HIGHEST)
37-
public void onPlayerAdvancementDone(PlayerAdvancementDoneEvent event) {
37+
public void onPlayerAdvancementDone(final PlayerAdvancementDoneEvent event) {
38+
if (!plugin.config().handleAdvancementMessages) return;
3839
handle(event.getPlayer().getWorld(), SHOW_ADVANCEMENT_MESSAGES, GroupSettings::advancementMessages, event::message, event.message());
3940
}
4041

4142
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
42-
public void onPlayerDeath(PlayerDeathEvent event) {
43+
public void onPlayerDeath(final PlayerDeathEvent event) {
44+
if (!plugin.config().handleDeathMessages) return;
4345
handle(event.getPlayer().getWorld(), SHOW_DEATH_MESSAGES, GroupSettings::deathMessages, event::deathMessage, event.deathMessage());
4446
}
4547

4648
@EventHandler(priority = EventPriority.HIGHEST)
47-
public void onPlayerJoin(PlayerJoinEvent event) {
49+
public void onPlayerJoin(final PlayerJoinEvent event) {
50+
if (!plugin.config().handleJoinMessages) return;
4851
handle(event.getPlayer().getWorld(), null, GroupSettings::joinMessages, event::joinMessage, event.joinMessage());
4952
}
5053

5154
@EventHandler(priority = EventPriority.HIGHEST)
52-
public void onPlayerQuit(PlayerQuitEvent event) {
55+
public void onPlayerQuit(final PlayerQuitEvent event) {
56+
if (!plugin.config().handleQuitMessages) return;
5357
handle(event.getPlayer().getWorld(), null, GroupSettings::quitMessages, event::quitMessage, event.quitMessage());
5458
}
5559

56-
private void handle(World world, @Nullable GameRule<Boolean> gameRule, Predicate<GroupSettings> enabled,
57-
Consumer<@Nullable Component> disable, @Nullable Component message) {
60+
private void handle(final World world, @Nullable final GameRule<Boolean> gameRule, final Predicate<GroupSettings> enabled,
61+
final Consumer<@Nullable Component> disable, @Nullable final Component message) {
5862
if (message == null) return;
59-
var receivers = receivers(world, gameRule, enabled);
63+
final var receivers = receivers(world, gameRule, enabled);
6064
if (receivers == null) return;
6165
receivers.forEach(player -> player.sendMessage(message));
6266
disable.accept(null);
6367
}
6468

65-
private @Nullable List<Player> receivers(World world, @Nullable GameRule<Boolean> gameRule, Predicate<GroupSettings> enabled) {
69+
private @Nullable List<Player> receivers(final World world, @Nullable final GameRule<Boolean> gameRule, final Predicate<GroupSettings> enabled) {
6670
if (!canReceive(gameRule, world)) return null;
67-
var group = provider.getGroup(world).orElse(provider.getUnownedWorldGroup());
71+
final var provider = plugin.groupProvider();
72+
final var group = provider.getGroup(world).orElse(provider.getUnownedWorldGroup());
6873
return group.getSettings().enabled() && enabled.test(group.getSettings())
6974
? group.getPlayers() : provider.getAllGroups().stream()
7075
.filter(target -> !enabled.test(target.getSettings()))
@@ -74,13 +79,13 @@ private void handle(World world, @Nullable GameRule<Boolean> gameRule, Predicate
7479
.toList();
7580
}
7681

77-
private boolean canReceive(@Nullable GameRule<Boolean> gameRule, WorldGroup group) {
82+
private boolean canReceive(@Nullable final GameRule<Boolean> gameRule, final WorldGroup group) {
7883
return gameRule == null || group.getGroupData().getGameRule(gameRule)
7984
.or(() -> group.getWorlds().findAny().map(world -> canReceive(gameRule, world)))
8085
.orElse(true);
8186
}
8287

83-
private boolean canReceive(@Nullable GameRule<Boolean> gameRule, World world) {
88+
private boolean canReceive(@Nullable final GameRule<Boolean> gameRule, final World world) {
8489
return gameRule == null || Boolean.TRUE.equals(world.getGameRuleValue(gameRule));
8590
}
8691
}

src/main/java/net/thenextlvl/perworlds/model/config/PluginConfig.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,26 @@
1111
@NullMarked
1212
public final class PluginConfig {
1313
public @Nullable String migrateToGroup = null;
14+
public boolean handleAdvancementMessages = true;
15+
public boolean handleDeathMessages = true;
16+
public boolean handleJoinMessages = true;
17+
public boolean handleQuitMessages = true;
1418

15-
public boolean migrateToGroup(PerWorldsPlugin plugin, WorldGroup group) {
19+
public boolean migrateToGroup(final PerWorldsPlugin plugin, final WorldGroup group) {
1620
if (group.getName().equals(migrateToGroup)) return false;
1721
migrateToGroup = group.getName();
18-
var provider = plugin.groupProvider();
22+
final var provider = plugin.groupProvider();
1923
plugin.getServer().getOnlinePlayers().forEach(player -> {
2024
if (group.hasPlayerData(player)) return;
21-
var current = provider.getGroup(player.getWorld()).orElse(provider.getUnownedWorldGroup());
25+
final var current = provider.getGroup(player.getWorld()).orElse(provider.getUnownedWorldGroup());
2226
if (current.equals(group) || current.hasPlayerData(player)) return;
2327
current.loadPlayerData(player, false);
2428
});
2529
plugin.configFile().save(plugin);
2630
return true;
2731
}
2832

29-
public Optional<WorldGroup> getMigrateToGroup(GroupProvider provider) {
33+
public Optional<WorldGroup> getMigrateToGroup(final GroupProvider provider) {
3034
return Optional.ofNullable(migrateToGroup).flatMap(provider::getGroup);
3135
}
3236
}

0 commit comments

Comments
 (0)