|
5 | 5 | import com.github.imdmk.automessage.command.dispatcher.EnableCommand; |
6 | 6 | import com.github.imdmk.automessage.command.reload.ReloadCommand; |
7 | 7 | import com.github.imdmk.automessage.config.ConfigManager; |
| 8 | +import com.github.imdmk.automessage.message.MessageConfig; |
| 9 | +import com.github.imdmk.automessage.message.MessageService; |
8 | 10 | import com.github.imdmk.automessage.platform.litecommands.handler.InvalidUsageHandlerImpl; |
9 | 11 | import com.github.imdmk.automessage.platform.litecommands.handler.MissingPermissionsHandlerImpl; |
10 | 12 | import com.github.imdmk.automessage.platform.litecommands.handler.NoticeResultHandlerImpl; |
11 | 13 | import com.github.imdmk.automessage.platform.logger.BukkitPluginLogger; |
12 | 14 | import com.github.imdmk.automessage.platform.logger.PluginLogger; |
| 15 | +import com.github.imdmk.automessage.platform.metrics.MetricsService; |
13 | 16 | import com.github.imdmk.automessage.platform.scheduler.BukkitTaskScheduler; |
14 | 17 | import com.github.imdmk.automessage.platform.scheduler.TaskScheduler; |
15 | 18 | import com.github.imdmk.automessage.scheduled.ScheduledMessagesConfig; |
16 | 19 | import com.github.imdmk.automessage.scheduled.audience.filter.AudienceFilter; |
17 | 20 | import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcher; |
18 | 21 | import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherConfig; |
19 | 22 | import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherTask; |
20 | | -import com.github.imdmk.automessage.scheduled.selector.MessageSelector; |
21 | 23 | import com.github.imdmk.automessage.scheduled.selector.MessageSelectorFactory; |
22 | | -import com.github.imdmk.automessage.shared.message.MessageConfig; |
23 | | -import com.github.imdmk.automessage.shared.message.MessageService; |
24 | | -import com.github.imdmk.automessage.shared.validate.Validator; |
25 | 24 | import dev.rollczi.litecommands.LiteCommands; |
26 | 25 | import dev.rollczi.litecommands.bukkit.LiteBukkitFactory; |
27 | | -import net.kyori.adventure.platform.bukkit.BukkitAudiences; |
28 | | -import org.bstats.bukkit.Metrics; |
29 | 26 | import org.bukkit.Server; |
30 | 27 | import org.bukkit.plugin.Plugin; |
31 | | -import org.jetbrains.annotations.NotNull; |
32 | 28 |
|
33 | 29 | final class AutoMessagePlugin { |
34 | 30 |
|
35 | 31 | private static final String PLUGIN_PREFIX = "AutoMessage"; |
36 | | - private static final int PLUGIN_METRICS_ID = 19487; |
37 | 32 |
|
38 | | - private final Plugin plugin; |
39 | | - private final Server server; |
40 | 33 | private final PluginLogger logger; |
| 34 | + private final ConfigManager configManager; |
41 | 35 |
|
42 | | - private ConfigManager configManager; |
| 36 | + private final MessageService messageService; |
| 37 | + private final TaskScheduler taskScheduler; |
| 38 | + private final LiteCommands<?> liteCommands; |
| 39 | + private final MetricsService metricsService; |
43 | 40 |
|
44 | | - private BukkitAudiences bukkitAudiences; |
45 | | - private MessageService messageService; |
46 | | - private TaskScheduler taskScheduler; |
| 41 | + AutoMessagePlugin(Plugin plugin) { |
| 42 | + final Server server = plugin.getServer(); |
| 43 | + this.logger = new BukkitPluginLogger(plugin.getLogger()); |
47 | 44 |
|
48 | | - private LiteCommands<?> liteCommands; |
49 | | - private Metrics metrics; |
| 45 | + this.configManager = new ConfigManager(logger, plugin.getDataFolder()); |
50 | 46 |
|
51 | | - public AutoMessagePlugin( |
52 | | - @NotNull final Plugin plugin, |
53 | | - @NotNull final Server server, |
54 | | - @NotNull final PluginLogger logger |
55 | | - ) { |
56 | | - this.plugin = Validator.notNull(plugin, "plugin"); |
57 | | - this.server = Validator.notNull(server, "server"); |
58 | | - this.logger = Validator.notNull(logger, "logger"); |
59 | | - } |
60 | | - |
61 | | - AutoMessagePlugin(@NotNull final Plugin plugin) { |
62 | | - this(plugin, plugin.getServer(), new BukkitPluginLogger(plugin)); |
63 | | - } |
64 | | - |
65 | | - void enable(@NotNull PluginSettings settings) { |
66 | | - Validator.notNull(settings, "settings"); |
67 | | - |
68 | | - configManager = new ConfigManager(logger, plugin.getDataFolder()); |
69 | | - configManager.createAll(settings.configs()); |
70 | | - |
71 | | - bukkitAudiences = BukkitAudiences.create(plugin); |
72 | | - messageService = new MessageService(configManager.require(MessageConfig.class), bukkitAudiences); |
73 | | - taskScheduler = new BukkitTaskScheduler(plugin, server.getScheduler()); |
74 | | - |
75 | | - final MessageDispatcherConfig messageDispatcherConfig = configManager.require(MessageDispatcherConfig.class); |
76 | | - final ScheduledMessagesConfig scheduledMessagesConfig = configManager.require(ScheduledMessagesConfig.class); |
| 47 | + final MessageConfig messageConfig = configManager.create(MessageConfig.class); |
| 48 | + final ScheduledMessagesConfig scheduledMessagesConfig = configManager.create(ScheduledMessagesConfig.class); |
| 49 | + final MessageDispatcherConfig dispatcherConfig = configManager.create(MessageDispatcherConfig.class); |
77 | 50 |
|
78 | | - final AudienceFilter audienceFilter = AudienceFilter.createDefault(); |
79 | | - final MessageSelector messageSelector = MessageSelectorFactory.create(messageDispatcherConfig.selector); |
| 51 | + this.messageService = new MessageService(messageConfig, plugin); |
| 52 | + this.taskScheduler = new BukkitTaskScheduler(plugin, server.getScheduler()); |
80 | 53 |
|
81 | 54 | final MessageDispatcher messageDispatcher = new MessageDispatcher( |
82 | 55 | messageService, |
83 | | - messageSelector, |
84 | | - audienceFilter, |
| 56 | + MessageSelectorFactory.create(dispatcherConfig.selector), |
| 57 | + AudienceFilter.ruleFilter(), |
85 | 58 | () -> scheduledMessagesConfig.messages |
86 | 59 | ); |
87 | 60 |
|
88 | | - MessageDispatcherTask messageDispatcherTask = new MessageDispatcherTask(server, messageDispatcherConfig, messageDispatcher); |
89 | | - taskScheduler.runTimerAsync(messageDispatcherTask); |
| 61 | + final MessageDispatcherTask dispatcherTask = new MessageDispatcherTask(server, dispatcherConfig, messageDispatcher); |
| 62 | + taskScheduler.runTimerAsync(dispatcherTask); |
90 | 63 |
|
91 | | - liteCommands = LiteBukkitFactory.builder(PLUGIN_PREFIX, plugin, server) |
| 64 | + this.liteCommands = LiteBukkitFactory.builder(PLUGIN_PREFIX, plugin, server) |
92 | 65 | .invalidUsage(new InvalidUsageHandlerImpl(messageService)) |
93 | 66 | .missingPermission(new MissingPermissionsHandlerImpl(messageService)) |
94 | 67 | .result(Notice.class, new NoticeResultHandlerImpl(messageService)) |
95 | 68 |
|
96 | 69 | .commands( |
97 | | - new DisableCommand(messageDispatcherConfig, messageService), |
98 | | - new EnableCommand(messageDispatcherConfig, messageService), |
| 70 | + new DisableCommand(dispatcherConfig, messageService), |
| 71 | + new EnableCommand(dispatcherConfig, messageService), |
99 | 72 | new ReloadCommand(logger, configManager, taskScheduler, messageService) |
100 | 73 | ) |
101 | 74 |
|
102 | 75 | .build(); |
103 | 76 |
|
104 | | - metrics = new Metrics(plugin, PLUGIN_METRICS_ID); |
| 77 | + this.metricsService = new MetricsService(plugin); |
105 | 78 |
|
106 | 79 | logger.info("%s plugin enabled.", PLUGIN_PREFIX); |
107 | 80 | } |
108 | 81 |
|
109 | 82 | void disable() { |
110 | | -// Validator.ifNotNull(configManager, manager -> { |
111 | | -// manager.saveAll(); |
112 | | -// manager.clearAll(); |
113 | | -// }); |
114 | | - Validator.ifNotNull(bukkitAudiences, BukkitAudiences::close); |
115 | | - Validator.ifNotNull(taskScheduler, TaskScheduler::shutdown); |
116 | | - Validator.ifNotNull(liteCommands, LiteCommands::unregister); |
117 | | - Validator.ifNotNull(metrics, Metrics::shutdown); |
| 83 | + configManager.saveAll(); |
| 84 | + configManager.clearAll(); |
| 85 | + messageService.shutdown(); |
| 86 | + taskScheduler.shutdown(); |
| 87 | + liteCommands.unregister(); |
| 88 | + metricsService.shutdown(); |
118 | 89 |
|
119 | 90 | logger.info("%s plugin disabled successfully.", PLUGIN_PREFIX); |
120 | 91 | } |
|
0 commit comments