Skip to content

Commit 14e2a5c

Browse files
committed
Improve config documentation.
1 parent 1ac962a commit 14e2a5c

File tree

9 files changed

+183
-58
lines changed

9 files changed

+183
-58
lines changed

automessage-core/src/main/java/com/github/imdmk/automessage/AutoMessagePlugin.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
import com.github.imdmk.automessage.scheduled.ScheduledMessagesConfig;
1616
import com.github.imdmk.automessage.scheduled.audience.filter.AudienceFilter;
1717
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcher;
18+
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherConfig;
1819
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherTask;
19-
import com.github.imdmk.automessage.scheduled.dispatcher.MessagesDispatcherConfig;
2020
import com.github.imdmk.automessage.scheduled.selector.MessageSelector;
2121
import com.github.imdmk.automessage.scheduled.selector.MessageSelectorFactory;
2222
import com.github.imdmk.automessage.shared.message.MessageConfig;
@@ -72,11 +72,11 @@ void enable(@NotNull PluginSettings settings) {
7272
messageService = new MessageService(configManager.require(MessageConfig.class), bukkitAudiences);
7373
taskScheduler = new BukkitTaskScheduler(plugin, server.getScheduler());
7474

75-
final MessagesDispatcherConfig messagesDispatcherConfig = configManager.require(MessagesDispatcherConfig.class);
75+
final MessageDispatcherConfig messageDispatcherConfig = configManager.require(MessageDispatcherConfig.class);
7676
final ScheduledMessagesConfig scheduledMessagesConfig = configManager.require(ScheduledMessagesConfig.class);
7777

7878
final AudienceFilter audienceFilter = AudienceFilter.createDefault();
79-
final MessageSelector messageSelector = MessageSelectorFactory.create(messagesDispatcherConfig.selector);
79+
final MessageSelector messageSelector = MessageSelectorFactory.create(messageDispatcherConfig.selector);
8080

8181
final MessageDispatcher messageDispatcher = new MessageDispatcher(
8282
messageService,
@@ -85,7 +85,7 @@ void enable(@NotNull PluginSettings settings) {
8585
() -> scheduledMessagesConfig.messages
8686
);
8787

88-
MessageDispatcherTask messageDispatcherTask = new MessageDispatcherTask(server, messagesDispatcherConfig, messageDispatcher);
88+
MessageDispatcherTask messageDispatcherTask = new MessageDispatcherTask(server, messageDispatcherConfig, messageDispatcher);
8989
taskScheduler.runTimerAsync(messageDispatcherTask);
9090

9191
liteCommands = LiteBukkitFactory.builder(PLUGIN_PREFIX, plugin, server)
@@ -94,8 +94,8 @@ void enable(@NotNull PluginSettings settings) {
9494
.result(Notice.class, new NoticeResultHandlerImpl(messageService))
9595

9696
.commands(
97-
new DisableCommand(messagesDispatcherConfig, messageService),
98-
new EnableCommand(messagesDispatcherConfig, messageService),
97+
new DisableCommand(messageDispatcherConfig, messageService),
98+
new EnableCommand(messageDispatcherConfig, messageService),
9999
new ReloadCommand(logger, configManager, taskScheduler, messageService)
100100
)
101101

automessage-core/src/main/java/com/github/imdmk/automessage/command/dispatcher/DisableCommand.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.github.imdmk.automessage.command.dispatcher;
22

3-
import com.github.imdmk.automessage.scheduled.dispatcher.MessagesDispatcherConfig;
3+
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherConfig;
44
import com.github.imdmk.automessage.shared.message.MessageService;
55
import com.github.imdmk.automessage.shared.validate.Validator;
66
import dev.rollczi.litecommands.annotations.command.Command;
@@ -14,11 +14,11 @@
1414
@Permission("command.automessage.disable")
1515
public final class DisableCommand {
1616

17-
private final MessagesDispatcherConfig dispatcherConfig;
17+
private final MessageDispatcherConfig dispatcherConfig;
1818
private final MessageService messageService;
1919

2020
public DisableCommand(
21-
@NotNull MessagesDispatcherConfig dispatcherConfig,
21+
@NotNull MessageDispatcherConfig dispatcherConfig,
2222
@NotNull MessageService messageService
2323
) {
2424
this.dispatcherConfig = Validator.notNull(dispatcherConfig, "dispatcherConfig");

automessage-core/src/main/java/com/github/imdmk/automessage/command/dispatcher/EnableCommand.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.github.imdmk.automessage.command.dispatcher;
22

3-
import com.github.imdmk.automessage.scheduled.dispatcher.MessagesDispatcherConfig;
3+
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherConfig;
44
import com.github.imdmk.automessage.shared.message.MessageService;
55
import com.github.imdmk.automessage.shared.validate.Validator;
66
import dev.rollczi.litecommands.annotations.command.Command;
@@ -14,11 +14,11 @@
1414
@Permission("command.automessage.enable")
1515
public final class EnableCommand {
1616

17-
private final MessagesDispatcherConfig dispatcherConfig;
17+
private final MessageDispatcherConfig dispatcherConfig;
1818
private final MessageService messageService;
1919

2020
public EnableCommand(
21-
@NotNull MessagesDispatcherConfig dispatcherConfig,
21+
@NotNull MessageDispatcherConfig dispatcherConfig,
2222
@NotNull MessageService messageService
2323
) {
2424
this.dispatcherConfig = Validator.notNull(dispatcherConfig, "dispatcherConfig");

automessage-core/src/main/java/com/github/imdmk/automessage/scheduled/ScheduledMessagesConfig.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.github.imdmk.automessage.scheduled.audience.rule.AudienceRule;
88
import com.github.imdmk.automessage.scheduled.audience.rule.AudienceRuleSerializer;
99
import eu.okaeri.configs.annotation.Comment;
10+
import eu.okaeri.configs.annotation.Header;
1011
import eu.okaeri.configs.serdes.OkaeriSerdesPack;
1112
import net.kyori.adventure.bossbar.BossBar;
1213
import net.kyori.adventure.key.Key;
@@ -16,6 +17,54 @@
1617
import java.time.Duration;
1718
import java.util.List;
1819

20+
@Header({
21+
"# ============================================================================",
22+
"# AutoMessage — scheduledMessages.yml",
23+
"# ============================================================================",
24+
"# This file defines all automatically dispatched messages used by AutoMessage.",
25+
"# Each entry represents one scheduled announcement, which may contain multiple",
26+
"# message formats such as chat, actionbar, title, bossbar, and sound notices.",
27+
"#",
28+
"# How it works:",
29+
"# • Messages are dispatched in a sequence, based on the selector strategy",
30+
"# configured in messagesDispatcher.yml.",
31+
"# • Each message may contain access rules (audience filters) to restrict",
32+
"# delivery to specific players (groups, permissions, etc.).",
33+
"#",
34+
"# Structure of a scheduled message entry:",
35+
"# name: Unique identifier of the message.",
36+
"# notices: One or more notices to send using Multification.",
37+
"# Supported notice types:",
38+
"# - Chat",
39+
"# - Actionbar",
40+
"# - Title / Subtitle",
41+
"# - BossBar",
42+
"# - Sound",
43+
"#",
44+
"# rules: Optional audience restrictions.",
45+
"# Supported rule types:",
46+
"# • PERMISSION -> Only players with this permission receive the message",
47+
"# • GROUP -> Only players in the given group receive the message",
48+
"#",
49+
"# Editing recommendations:",
50+
"# • You may freely add or remove message entries.",
51+
"# • MiniMessage formatting (<red>, <yellow>, <rainbow>, etc.) is fully supported.",
52+
"# • Sound format: \"namespace:key SOURCE volume pitch\".",
53+
"# • Duration fields support values like: 5s, 2m, 500ms.",
54+
"#",
55+
"# After making changes, reload the plugin via:",
56+
"# /automessage reload",
57+
"#",
58+
"# Source Code:",
59+
"# https://github.com/imDMK/AutoMessage",
60+
"#",
61+
"# Support development:",
62+
"# GitHub Sponsors: https://github.com/sponsors/imDMK",
63+
"# PayPal: https://paypal.me/dominiksuliga",
64+
"#",
65+
"# Thank you for using AutoMessage!",
66+
"# ============================================================================"
67+
})
1968
public final class ScheduledMessagesConfig extends ConfigSection {
2069

2170
@Comment({
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package com.github.imdmk.automessage.scheduled.dispatcher;
2+
3+
import com.github.imdmk.automessage.config.ConfigSection;
4+
import com.github.imdmk.automessage.scheduled.selector.MessageSelectorType;
5+
import eu.okaeri.configs.annotation.Comment;
6+
import eu.okaeri.configs.annotation.Header;
7+
import eu.okaeri.configs.serdes.OkaeriSerdesPack;
8+
import org.jetbrains.annotations.NotNull;
9+
10+
import java.time.Duration;
11+
12+
@Header({
13+
"# ============================================================================",
14+
"# AutoMessage — messagesDispatcher.yml",
15+
"# ============================================================================",
16+
"# This file controls how AutoMessage dispatches scheduled announcements.",
17+
"# It defines startup timing, repeat intervals, and which message-selection",
18+
"# strategy the dispatcher should use.",
19+
"#",
20+
"# Fields:",
21+
"# enabled:",
22+
"# Master switch controlling whether automatic message dispatching is active.",
23+
"# true -> messages cycle automatically",
24+
"# false -> announcements are paused",
25+
"#",
26+
"# period:",
27+
"# Time between consecutive dispatch executions.",
28+
"# Examples: 10s, 1m, 500ms",
29+
"#",
30+
"# initialDelay:",
31+
"# How long the dispatcher should wait before sending the first message",
32+
"# after plugin startup.",
33+
"#",
34+
"# selector:",
35+
"# Strategy determining which scheduled message is selected next.",
36+
"# Supported types:",
37+
"# SEQUENTIAL – cycle through messages in order",
38+
"# RANDOM – choose a random message each time",
39+
"#",
40+
"# Notes:",
41+
"# • This file works together with scheduledMessages.yml.",
42+
"# • After editing this file you must restart the server, as dispatcher",
43+
"# scheduling is configured during plugin initialization.",
44+
"#",
45+
"# Source Code:",
46+
"# https://github.com/imDMK/AutoMessage",
47+
"#",
48+
"# Support development:",
49+
"# GitHub Sponsors: https://github.com/sponsors/imDMK",
50+
"# PayPal: https://paypal.me/dominiksuliga",
51+
"#",
52+
"# ============================================================================"
53+
})
54+
public final class MessageDispatcherConfig extends ConfigSection {
55+
56+
@Comment({"#", "# Whether automatic scheduled-message dispatching is enabled.", "#"})
57+
public boolean enabled = true;
58+
59+
@Comment({"#", "# Delay between automatic dispatch executions.", "#"})
60+
public Duration period = Duration.ofSeconds(10);
61+
62+
@Comment({"#", "# Initial delay before the very first automatic message dispatch.", "#"})
63+
public Duration initialDelay = Duration.ofSeconds(10);
64+
65+
@Comment({
66+
"#",
67+
"# Strategy used to select which scheduled message will be dispatched next.",
68+
"# Available options: SEQUENTIAL, RANDOM",
69+
"#"
70+
})
71+
public MessageSelectorType selector = MessageSelectorType.SEQUENTIAL;
72+
73+
public void setEnabled(boolean enabled) {
74+
this.enabled = enabled;
75+
}
76+
77+
public boolean isEnabled() {
78+
return enabled;
79+
}
80+
81+
@Override
82+
public @NotNull OkaeriSerdesPack getSerdesPack() {
83+
return registry -> {};
84+
}
85+
86+
@Override
87+
public @NotNull String getFileName() {
88+
return "messagesDispatcher.yml";
89+
}
90+
}

automessage-core/src/main/java/com/github/imdmk/automessage/scheduled/dispatcher/MessageDispatcherTask.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
public final class MessageDispatcherTask implements PluginTask {
1313

1414
private final Server server;
15-
private final MessagesDispatcherConfig dispatcherConfig;
15+
private final MessageDispatcherConfig dispatcherConfig;
1616
private final MessageDispatcher messageDispatcher;
1717

1818
public MessageDispatcherTask(
1919
@NotNull Server server,
20-
@NotNull MessagesDispatcherConfig dispatcherConfig,
20+
@NotNull MessageDispatcherConfig dispatcherConfig,
2121
@NotNull MessageDispatcher messageDispatcher
2222
) {
2323
this.server = Validator.notNull(server, "server");

automessage-core/src/main/java/com/github/imdmk/automessage/scheduled/dispatcher/MessagesDispatcherConfig.java

Lines changed: 0 additions & 42 deletions
This file was deleted.

automessage-core/src/main/java/com/github/imdmk/automessage/shared/message/MessageConfig.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,37 @@
77
import com.github.imdmk.automessage.config.ConfigSection;
88
import com.github.imdmk.automessage.platform.litecommands.messages.LiteCommandsMessagesImpl;
99
import eu.okaeri.configs.annotation.Comment;
10+
import eu.okaeri.configs.annotation.Header;
1011
import eu.okaeri.configs.serdes.OkaeriSerdesPack;
1112
import org.jetbrains.annotations.NotNull;
1213

14+
@Header({
15+
"# ============================================================================",
16+
"# AutoMessage — messages.yml",
17+
"# ============================================================================",
18+
"# This configuration file defines all user-facing messages used by AutoMessage.",
19+
"# It centralizes command responses, dispatcher status messages, and reload",
20+
"# notifications, allowing full customization without modifying code.",
21+
"#",
22+
"# Sections:",
23+
"# • liteCommandsMessages — errors, usage prompts, and permission responses",
24+
"# • dispatcherMessages — messages for enabling/disabling automatic dispatching",
25+
"# • reloadMessages — messages shown during configuration reload operations",
26+
"#",
27+
"# Editing Tips:",
28+
"# • Colors follow MiniMessage syntax (<red>, <yellow>, <gray>, <rainbow>, etc.).",
29+
"# • Reload the plugin after editing: /automessage reload",
30+
"#",
31+
"# Source Code:",
32+
"# https://github.com/imDMK/AutoMessage",
33+
"#",
34+
"# Support development:",
35+
"# GitHub Sponsors: https://github.com/sponsors/imDMK",
36+
"# PayPal: https://paypal.me/dominiksuliga",
37+
"#",
38+
"# Thank you for using AutoMessage!",
39+
"# ============================================================================"
40+
})
1341
public final class MessageConfig extends ConfigSection {
1442

1543
@Comment({

automessage-plugin/src/main/java/com/github/imdmk/automessage/DefaultPluginSettings.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.github.imdmk.automessage.config.ConfigSection;
44
import com.github.imdmk.automessage.scheduled.ScheduledMessagesConfig;
5-
import com.github.imdmk.automessage.scheduled.dispatcher.MessagesDispatcherConfig;
5+
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherConfig;
66
import com.github.imdmk.automessage.shared.message.MessageConfig;
77

88
import java.util.List;
@@ -14,7 +14,7 @@ public List<Class<? extends ConfigSection>> configs() {
1414
return List.of(
1515
MessageConfig.class,
1616
ScheduledMessagesConfig.class,
17-
MessagesDispatcherConfig.class
17+
MessageDispatcherConfig.class
1818
);
1919
}
2020
}

0 commit comments

Comments
 (0)