Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions automessage-core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ dependencies {
compileOnlyApi("org.spigotmc:spigot-api:1.21.10-R0.1-SNAPSHOT")

implementation("net.kyori:adventure-platform-bukkit:4.4.1")
implementation("net.kyori:adventure-text-minimessage:4.21.0")
implementation("net.kyori:adventure-text-minimessage:4.25.0")

implementation("com.eternalcode:multification-bukkit:1.2.2")
implementation("com.eternalcode:multification-okaeri:1.2.2")
implementation("com.eternalcode:multification-bukkit:1.2.3")
implementation("com.eternalcode:multification-okaeri:1.2.3")

api("eu.okaeri:okaeri-configs-yaml-snakeyaml:5.0.9")
implementation("eu.okaeri:okaeri-configs-serdes-commons:5.0.5")
Expand All @@ -15,9 +15,9 @@ dependencies {
implementation("dev.rollczi:litecommands-annotations:3.10.6")

testImplementation("org.junit.jupiter:junit-jupiter:6.0.1")
testImplementation("org.assertj:assertj-core:3.25.2")
testImplementation("org.mockito:mockito-core:5.8.0")
testImplementation("org.mockito:mockito-junit-jupiter:5.8.0")
testImplementation("org.assertj:assertj-core:3.27.7")
testImplementation("org.mockito:mockito-core:5.20.0")
testImplementation("org.mockito:mockito-junit-jupiter:5.20.0")
testImplementation("org.mockito:mockito-inline:5.2.0")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,116 +5,87 @@
import com.github.imdmk.automessage.command.dispatcher.EnableCommand;
import com.github.imdmk.automessage.command.reload.ReloadCommand;
import com.github.imdmk.automessage.config.ConfigManager;
import com.github.imdmk.automessage.message.MessageConfig;
import com.github.imdmk.automessage.message.MessageService;
import com.github.imdmk.automessage.platform.litecommands.handler.InvalidUsageHandlerImpl;
import com.github.imdmk.automessage.platform.litecommands.handler.MissingPermissionsHandlerImpl;
import com.github.imdmk.automessage.platform.litecommands.handler.NoticeResultHandlerImpl;
import com.github.imdmk.automessage.platform.logger.BukkitPluginLogger;
import com.github.imdmk.automessage.platform.logger.PluginLogger;
import com.github.imdmk.automessage.platform.metrics.MetricsService;
import com.github.imdmk.automessage.platform.scheduler.BukkitTaskScheduler;
import com.github.imdmk.automessage.platform.scheduler.TaskScheduler;
import com.github.imdmk.automessage.scheduled.ScheduledMessagesConfig;
import com.github.imdmk.automessage.scheduled.audience.filter.AudienceFilter;
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcher;
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherConfig;
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherTask;
import com.github.imdmk.automessage.scheduled.selector.MessageSelector;
import com.github.imdmk.automessage.scheduled.selector.MessageSelectorFactory;
import com.github.imdmk.automessage.shared.message.MessageConfig;
import com.github.imdmk.automessage.shared.message.MessageService;
import com.github.imdmk.automessage.shared.validate.Validator;
import dev.rollczi.litecommands.LiteCommands;
import dev.rollczi.litecommands.bukkit.LiteBukkitFactory;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import org.bstats.bukkit.Metrics;
import org.bukkit.Server;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;

final class AutoMessagePlugin {

private static final String PLUGIN_PREFIX = "AutoMessage";
private static final int PLUGIN_METRICS_ID = 19487;

private final Plugin plugin;
private final Server server;
private final PluginLogger logger;
private final ConfigManager configManager;

private ConfigManager configManager;
private final MessageService messageService;
private final TaskScheduler taskScheduler;
private final LiteCommands<?> liteCommands;
private final MetricsService metricsService;

private BukkitAudiences bukkitAudiences;
private MessageService messageService;
private TaskScheduler taskScheduler;
AutoMessagePlugin(Plugin plugin) {
final Server server = plugin.getServer();
this.logger = new BukkitPluginLogger(plugin.getLogger());

private LiteCommands<?> liteCommands;
private Metrics metrics;
this.configManager = new ConfigManager(logger, plugin.getDataFolder());

public AutoMessagePlugin(
@NotNull final Plugin plugin,
@NotNull final Server server,
@NotNull final PluginLogger logger
) {
this.plugin = Validator.notNull(plugin, "plugin");
this.server = Validator.notNull(server, "server");
this.logger = Validator.notNull(logger, "logger");
}

AutoMessagePlugin(@NotNull final Plugin plugin) {
this(plugin, plugin.getServer(), new BukkitPluginLogger(plugin));
}

void enable(@NotNull PluginSettings settings) {
Validator.notNull(settings, "settings");

configManager = new ConfigManager(logger, plugin.getDataFolder());
configManager.createAll(settings.configs());

bukkitAudiences = BukkitAudiences.create(plugin);
messageService = new MessageService(configManager.require(MessageConfig.class), bukkitAudiences);
taskScheduler = new BukkitTaskScheduler(plugin, server.getScheduler());

final MessageDispatcherConfig messageDispatcherConfig = configManager.require(MessageDispatcherConfig.class);
final ScheduledMessagesConfig scheduledMessagesConfig = configManager.require(ScheduledMessagesConfig.class);
final MessageConfig messageConfig = configManager.create(MessageConfig.class);
final ScheduledMessagesConfig scheduledMessagesConfig = configManager.create(ScheduledMessagesConfig.class);
final MessageDispatcherConfig dispatcherConfig = configManager.create(MessageDispatcherConfig.class);

final AudienceFilter audienceFilter = AudienceFilter.createDefault();
final MessageSelector messageSelector = MessageSelectorFactory.create(messageDispatcherConfig.selector);
this.messageService = new MessageService(messageConfig, plugin);
this.taskScheduler = new BukkitTaskScheduler(plugin, server.getScheduler());

final MessageDispatcher messageDispatcher = new MessageDispatcher(
messageService,
messageSelector,
audienceFilter,
MessageSelectorFactory.create(dispatcherConfig.selector),
AudienceFilter.ruleFilter(),
() -> scheduledMessagesConfig.messages
);

MessageDispatcherTask messageDispatcherTask = new MessageDispatcherTask(server, messageDispatcherConfig, messageDispatcher);
taskScheduler.runTimerAsync(messageDispatcherTask);
final MessageDispatcherTask dispatcherTask = new MessageDispatcherTask(server, dispatcherConfig, messageDispatcher);
taskScheduler.runTimerAsync(dispatcherTask);

liteCommands = LiteBukkitFactory.builder(PLUGIN_PREFIX, plugin, server)
this.liteCommands = LiteBukkitFactory.builder(PLUGIN_PREFIX, plugin, server)
.invalidUsage(new InvalidUsageHandlerImpl(messageService))
.missingPermission(new MissingPermissionsHandlerImpl(messageService))
.result(Notice.class, new NoticeResultHandlerImpl(messageService))

.commands(
new DisableCommand(messageDispatcherConfig, messageService),
new EnableCommand(messageDispatcherConfig, messageService),
new DisableCommand(dispatcherConfig, messageService),
new EnableCommand(dispatcherConfig, messageService),
new ReloadCommand(logger, configManager, taskScheduler, messageService)
)

.build();

metrics = new Metrics(plugin, PLUGIN_METRICS_ID);
this.metricsService = new MetricsService(plugin);

logger.info("%s plugin enabled.", PLUGIN_PREFIX);
}

void disable() {
// Validator.ifNotNull(configManager, manager -> {
// manager.saveAll();
// manager.clearAll();
// });
Validator.ifNotNull(bukkitAudiences, BukkitAudiences::close);
Validator.ifNotNull(taskScheduler, TaskScheduler::shutdown);
Validator.ifNotNull(liteCommands, LiteCommands::unregister);
Validator.ifNotNull(metrics, Metrics::shutdown);
configManager.saveAll();
configManager.clearAll();
messageService.shutdown();
taskScheduler.shutdown();
liteCommands.unregister();
metricsService.shutdown();

logger.info("%s plugin disabled successfully.", PLUGIN_PREFIX);
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package com.github.imdmk.automessage.command.dispatcher;

import com.github.imdmk.automessage.message.MessageService;
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherConfig;
import com.github.imdmk.automessage.shared.message.MessageService;
import com.github.imdmk.automessage.shared.validate.Validator;
import dev.rollczi.litecommands.annotations.command.Command;
import dev.rollczi.litecommands.annotations.context.Context;
import dev.rollczi.litecommands.annotations.execute.Execute;
import dev.rollczi.litecommands.annotations.permission.Permission;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;

@Command(name = "automessage disable")
@Permission("command.automessage.disable")
Expand All @@ -18,11 +16,11 @@ public final class DisableCommand {
private final MessageService messageService;

public DisableCommand(
@NotNull MessageDispatcherConfig dispatcherConfig,
@NotNull MessageService messageService
MessageDispatcherConfig dispatcherConfig,
MessageService messageService
) {
this.dispatcherConfig = Validator.notNull(dispatcherConfig, "dispatcherConfig");
this.messageService = Validator.notNull(messageService, "messageService");
this.dispatcherConfig = dispatcherConfig;
this.messageService = messageService;
}

@Execute
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package com.github.imdmk.automessage.command.dispatcher;

import com.github.imdmk.automessage.message.MessageService;
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherConfig;
import com.github.imdmk.automessage.shared.message.MessageService;
import com.github.imdmk.automessage.shared.validate.Validator;
import dev.rollczi.litecommands.annotations.command.Command;
import dev.rollczi.litecommands.annotations.context.Context;
import dev.rollczi.litecommands.annotations.execute.Execute;
import dev.rollczi.litecommands.annotations.permission.Permission;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;

@Command(name = "automessage enable")
@Permission("command.automessage.enable")
Expand All @@ -18,11 +16,11 @@ public final class EnableCommand {
private final MessageService messageService;

public EnableCommand(
@NotNull MessageDispatcherConfig dispatcherConfig,
@NotNull MessageService messageService
MessageDispatcherConfig dispatcherConfig,
MessageService messageService
) {
this.dispatcherConfig = Validator.notNull(dispatcherConfig, "dispatcherConfig");
this.messageService = Validator.notNull(messageService, "messageService");
this.dispatcherConfig = dispatcherConfig;
this.messageService = messageService;
}

@Execute
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import eu.okaeri.configs.OkaeriConfig;
import eu.okaeri.configs.annotation.Comment;

public final class DispatcherMessagesImpl
public final class ENDispatcherMessages
extends OkaeriConfig
implements DispatcherMessages {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
package com.github.imdmk.automessage.command.reload;

import com.github.imdmk.automessage.config.ConfigManager;
import com.github.imdmk.automessage.message.MessageService;
import com.github.imdmk.automessage.platform.logger.PluginLogger;
import com.github.imdmk.automessage.platform.scheduler.TaskScheduler;
import com.github.imdmk.automessage.shared.message.MessageService;
import com.github.imdmk.automessage.shared.validate.Validator;
import dev.rollczi.litecommands.annotations.command.Command;
import dev.rollczi.litecommands.annotations.context.Context;
import dev.rollczi.litecommands.annotations.execute.Execute;
import dev.rollczi.litecommands.annotations.permission.Permission;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;

@Command(name = "automessage reload")
@Permission("command.automessage.reload")
Expand All @@ -22,15 +20,15 @@ public final class ReloadCommand {
private final MessageService messageService;

public ReloadCommand(
@NotNull PluginLogger logger,
@NotNull ConfigManager configManager,
@NotNull TaskScheduler taskScheduler,
@NotNull MessageService messageService
PluginLogger logger,
ConfigManager configManager,
TaskScheduler taskScheduler,
MessageService messageService
) {
this.logger = Validator.notNull(logger, "logger");
this.configManager = Validator.notNull(configManager, "configManager");
this.taskScheduler = Validator.notNull(taskScheduler, "taskScheduler");
this.messageService = Validator.notNull(messageService, "messageService");
this.logger = logger;
this.configManager = configManager;
this.taskScheduler = taskScheduler;
this.messageService = messageService;
}

@Execute
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import eu.okaeri.configs.OkaeriConfig;
import eu.okaeri.configs.annotation.Comment;

public final class ReloadMessagesImpl
public final class ENReloadMessages
extends OkaeriConfig
implements ReloadMessages {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,14 @@
package com.github.imdmk.automessage.config;

import com.github.imdmk.automessage.shared.validate.Validator;
import eu.okaeri.configs.serdes.OkaeriSerdesPack;
import eu.okaeri.configs.serdes.commons.SerdesCommons;
import eu.okaeri.configs.yaml.snakeyaml.YamlSnakeYamlConfigurer;
import org.jetbrains.annotations.NotNull;

import java.io.File;

final class ConfigBinder {

void bind(@NotNull ConfigSection config, @NotNull File file) {
Validator.notNull(config, "config");
Validator.notNull(file, "file");

final OkaeriSerdesPack serdesPack = config.getSerdesPack();
final YamlSnakeYamlConfigurer yamlConfigurer = YamlConfigurerFactory.create();

config.withConfigurer(yamlConfigurer)
.withSerdesPack(serdesPack)
void bind(ConfigSection config, File file) {
config.withConfigurer(YamlConfigurerFactory.create())
.withSerdesPack(config.getSerdesPack())
.withSerdesPack(new SerdesCommons())
.withBindFile(file)
.withRemoveOrphans(true);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
package com.github.imdmk.automessage.config;

import com.github.imdmk.automessage.shared.validate.Validator;
import eu.okaeri.configs.ConfigManager;
import eu.okaeri.configs.exception.OkaeriException;
import org.jetbrains.annotations.NotNull;

final class ConfigFactory {

<T extends ConfigSection> @NotNull T instantiate(@NotNull Class<T> type) {
Validator.notNull(type, "type");

<T extends ConfigSection> T create(Class<T> type) {
try {
return ConfigManager.create(type);
} catch (OkaeriException e) {
throw new IllegalStateException(
"Failed to instantiate config: " + type.getName(), e
);
throw new IllegalStateException("Failed to create config: " + type.getName(), e);
}
}
}
Expand Down
Loading
Loading