diff --git a/api/src/main/java/net/okocraft/box/api/BoxAPI.java b/api/src/main/java/net/okocraft/box/api/BoxAPI.java index 773cab0809..f8ee9dcb0e 100644 --- a/api/src/main/java/net/okocraft/box/api/BoxAPI.java +++ b/api/src/main/java/net/okocraft/box/api/BoxAPI.java @@ -9,7 +9,6 @@ import net.okocraft.box.api.event.caller.EventCallerProvider; import net.okocraft.box.api.feature.BoxFeature; import net.okocraft.box.api.feature.FeatureProvider; -import net.okocraft.box.api.message.MessageProvider; import net.okocraft.box.api.model.customdata.CustomDataManager; import net.okocraft.box.api.model.manager.ItemManager; import net.okocraft.box.api.model.manager.StockManager; @@ -54,13 +53,6 @@ static boolean isLoaded() { */ @NotNull Path getPluginDirectory(); - /** - * Gets the {@link MessageProvider}. - * - * @return the {@link MessageProvider} - */ - @NotNull MessageProvider getMessageProvider(); - /** * Gets the {@link UserManager}. * diff --git a/api/src/main/java/net/okocraft/box/api/command/Command.java b/api/src/main/java/net/okocraft/box/api/command/Command.java index b92d8c6f1d..77b89fa7b8 100644 --- a/api/src/main/java/net/okocraft/box/api/command/Command.java +++ b/api/src/main/java/net/okocraft/box/api/command/Command.java @@ -1,7 +1,6 @@ package net.okocraft.box.api.command; -import com.github.siroshun09.messages.minimessage.source.MiniMessageSource; -import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Unmodifiable; @@ -38,10 +37,9 @@ public interface Command { /** * Gets the helps. * - * @param msgSrc a {@link MiniMessageSource} * @return the helps */ - @NotNull Component getHelp(@NotNull MiniMessageSource msgSrc); + @NotNull ComponentLike getHelp(); /** * Executes the command. diff --git a/api/src/main/java/net/okocraft/box/api/message/ErrorMessages.java b/api/src/main/java/net/okocraft/box/api/message/ErrorMessages.java index 9eb8b4e1d3..d533b7c521 100644 --- a/api/src/main/java/net/okocraft/box/api/message/ErrorMessages.java +++ b/api/src/main/java/net/okocraft/box/api/message/ErrorMessages.java @@ -1,12 +1,10 @@ package net.okocraft.box.api.message; -import com.github.siroshun09.messages.minimessage.arg.Arg1; -import com.github.siroshun09.messages.minimessage.base.MiniMessageBase; +import dev.siroshun.mcmsgdef.MessageKey; +import net.kyori.adventure.text.ComponentLike; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import static com.github.siroshun09.messages.minimessage.arg.Arg1.arg1; -import static com.github.siroshun09.messages.minimessage.base.MiniMessageBase.messageKey; import static net.okocraft.box.api.message.Placeholders.ARG; import static net.okocraft.box.api.message.Placeholders.ITEM_NAME; import static net.okocraft.box.api.message.Placeholders.PERMISSION; @@ -20,54 +18,54 @@ public final class ErrorMessages { /** * A message sent when the player does not have the permission. */ - public static final Arg1 NO_PERMISSION = arg1(getKeyFromCore("NO_PERMISSION"), PERMISSION); + public static final MessageKey.Arg1 NO_PERMISSION = getKeyFromCore("NO_PERMISSION").with(PERMISSION); /** * A message sent when the player cannot use Box. */ - public static final MiniMessageBase CANNOT_USE_BOX = messageKey(getKeyFromCore("CANNOT_USE_BOX")); + public static final MessageKey CANNOT_USE_BOX = getKeyFromCore("CANNOT_USE_BOX"); /** * A message sent when the command executed by the non-player. */ - public static final MiniMessageBase COMMAND_ONLY_PLAYER = messageKey(getKeyFromCore("ONLY_PLAYER")); + public static final MessageKey COMMAND_ONLY_PLAYER = getKeyFromCore("ONLY_PLAYER"); /** * A message sent when the specified argument is not number. */ - public static final Arg1 INVALID_NUMBER = arg1(getKeyFromCore("INVALID_NUMBER"), ARG); + public static final MessageKey.Arg1 INVALID_NUMBER = getKeyFromCore("INVALID_NUMBER").with(ARG); /** * A message sent when the specified item is not found. */ - public static final Arg1 ITEM_NOT_FOUND = arg1(getKeyFromCore("ITEM_NOT_FOUND"), ITEM_NAME); + public static final MessageKey.Arg1 ITEM_NOT_FOUND = getKeyFromCore("ITEM_NOT_FOUND").with(ITEM_NAME); /** * A message sent when the specified player is not found. */ - public static final Arg1 PLAYER_NOT_FOUND = arg1(getKeyFromCore("PLAYER_NOT_FOUND"), PLAYER_NAME); + public static final MessageKey.Arg1 PLAYER_NOT_FOUND = getKeyFromCore("PLAYER_NOT_FOUND").with(PLAYER_NAME); /** * A message sent when the specified subcommand is not found. */ - public static final MiniMessageBase SUB_COMMAND_NOT_FOUND = messageKey(getKeyFromCore("SUB_COMMAND_NOT_FOUND")); + public static final MessageKey SUB_COMMAND_NOT_FOUND = getKeyFromCore("SUB_COMMAND_NOT_FOUND"); /** * A message sent when arguments are not enough. */ - public static final MiniMessageBase NOT_ENOUGH_ARGUMENT = messageKey(getKeyFromCore("NOT_ENOUGH_ARGUMENT")); + public static final MessageKey NOT_ENOUGH_ARGUMENT = getKeyFromCore("NOT_ENOUGH_ARGUMENT"); - private static final MiniMessageBase NOT_LOADED_SELF = messageKey(getKeyFromCore("NOT_LOADED_SELF")); - private static final Arg1 NOT_LOADED_OTHER = arg1(getKeyFromCore("NOT_LOADED_OTHER"), PLAYER_NAME); - private static final MiniMessageBase LOADING_SELF = messageKey(getKeyFromCore("LOADING_SELF")); - private static final Arg1 LOADING_OTHER = arg1(getKeyFromCore("LOADING_OTHER"), PLAYER_NAME); + private static final MessageKey NOT_LOADED_SELF = getKeyFromCore("NOT_LOADED_SELF"); + private static final MessageKey.Arg1 NOT_LOADED_OTHER = getKeyFromCore("NOT_LOADED_OTHER").with(PLAYER_NAME); + private static final MessageKey LOADING_SELF = getKeyFromCore("LOADING_SELF"); + private static final MessageKey.Arg1 LOADING_OTHER = getKeyFromCore("LOADING_OTHER").with(PLAYER_NAME); - private static @NotNull String getKeyFromCore(@NotNull String fieldName) { + private static @NotNull MessageKey getKeyFromCore(@NotNull String fieldName) { try { var clazz = Class.forName("net.okocraft.box.core.message.CoreMessages"); var field = clazz.getDeclaredField(fieldName); field.setAccessible(true); - return (String) field.get(null); + return MessageKey.key((String) field.get(null)); } catch (NoSuchFieldException | ClassNotFoundException | IllegalAccessException e) { throw new RuntimeException(e); } @@ -79,7 +77,7 @@ public final class ErrorMessages { * @param playerName a player name or {@code null} if self * @return a message sent when the player data is not loaded */ - public static @NotNull MiniMessageBase playerDataIsNotLoaded(@Nullable String playerName) { + public static @NotNull ComponentLike playerDataIsNotLoaded(@Nullable String playerName) { return playerName == null ? NOT_LOADED_SELF : NOT_LOADED_OTHER.apply(playerName); } @@ -89,7 +87,7 @@ public final class ErrorMessages { * @param playerName a player name or {@code null} if self * @return a message sent when the player data is currently loading */ - public static @NotNull MiniMessageBase playerDataIsLoading(@Nullable String playerName) { + public static @NotNull ComponentLike playerDataIsLoading(@Nullable String playerName) { return playerName == null ? LOADING_SELF : LOADING_OTHER.apply(playerName); } diff --git a/api/src/main/java/net/okocraft/box/api/message/MessageProvider.java b/api/src/main/java/net/okocraft/box/api/message/MessageProvider.java deleted file mode 100644 index c236b144b4..0000000000 --- a/api/src/main/java/net/okocraft/box/api/message/MessageProvider.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.okocraft.box.api.message; - -import com.github.siroshun09.messages.minimessage.source.MiniMessageSource; -import org.bukkit.command.CommandSender; -import org.jetbrains.annotations.NotNull; - -/** - * An interface that provides a localized {@link MiniMessageSource} for {@link CommandSender}s. - */ -public interface MessageProvider { - - /** - * Gets a localized {@link MiniMessageSource} for {@link CommandSender}s. - * - * @param sender a {@link CommandSender} - * @return a localized {@link MiniMessageSource} or default one - */ - @NotNull MiniMessageSource findSource(@NotNull CommandSender sender); - -} diff --git a/api/src/main/java/net/okocraft/box/api/message/Placeholders.java b/api/src/main/java/net/okocraft/box/api/message/Placeholders.java index 271f58a61e..d33406fe73 100644 --- a/api/src/main/java/net/okocraft/box/api/message/Placeholders.java +++ b/api/src/main/java/net/okocraft/box/api/message/Placeholders.java @@ -1,9 +1,8 @@ package net.okocraft.box.api.message; -import com.github.siroshun09.messages.minimessage.base.Placeholder; -import net.kyori.adventure.text.Component; +import dev.siroshun.mcmsgdef.Placeholder; +import net.kyori.adventure.text.minimessage.translation.Argument; import net.okocraft.box.api.model.item.BoxItem; -import org.jetbrains.annotations.NotNull; /** * A collection of common {@link Placeholder}s. @@ -13,46 +12,42 @@ public final class Placeholders { /** * A {@link Placeholder} of {@code }. */ - public static final Placeholder PERMISSION = Placeholder.component("permission", Component::text); + public static final Placeholder PERMISSION = node -> Argument.string("permission", node); /** * A {@link Placeholder} of {@code }. */ - public static final Placeholder PLAYER_NAME = Placeholder.component("player_name", Component::text); + public static final Placeholder PLAYER_NAME = name -> Argument.string("player_name", name); /** * A {@link Placeholder} of {@code }. */ - public static final Placeholder ITEM = Placeholder.component("item", Placeholders::render); + public static final Placeholder ITEM = item -> Argument.component("item", item.getDisplayName().color(null).hoverEvent(item.getOriginal())); /** * A {@link Placeholder} of {@code }. */ - public static final Placeholder ITEM_NAME = Placeholder.component("item_name", Component::text); + public static final Placeholder ITEM_NAME = itemName -> Argument.string("item_name", itemName); /** * A {@link Placeholder} of {@code }. */ - public static final Placeholder AMOUNT = Placeholder.component("amount", Component::text); + public static final Placeholder AMOUNT = amount -> Argument.numeric("amount", amount); /** * A {@link Placeholder} of {@code }. */ - public static final Placeholder CURRENT = Placeholder.component("current", Component::text); + public static final Placeholder CURRENT = current -> Argument.numeric("current", current); /** * A {@link Placeholder} of {@code }. */ - public static final Placeholder ERROR = Placeholder.component("error", e -> Component.text(e.getMessage())); + public static final Placeholder ERROR = e -> Argument.string("error", e.getMessage()); /** * A {@link Placeholder} of {@code }. */ - public static final Placeholder ARG = Placeholder.component("arg", Component::text); - - private static @NotNull Component render(@NotNull BoxItem item) { - return item.getDisplayName().color(null).hoverEvent(item.getOriginal()); - } + public static final Placeholder ARG = arg -> Argument.string("arg", arg); private Placeholders() { throw new UnsupportedOperationException(); diff --git a/build.gradle.kts b/build.gradle.kts index 30ee36bb74..888de7f4f7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -23,7 +23,7 @@ jcommon { exclude("org.yaml", "snakeyaml") } api(libs.event4j) - api(libs.messages) + api(libs.mcmsgdef) compileOnlyApi(libs.paper) implementation(libs.configapi.serialization.record) diff --git a/bundle/src/main/java/net/okocraft/box/bootstrap/BoxBootstrapContext.java b/bundle/src/main/java/net/okocraft/box/bootstrap/BoxBootstrapContext.java index eb4d53b620..a4b3487c2c 100644 --- a/bundle/src/main/java/net/okocraft/box/bootstrap/BoxBootstrapContext.java +++ b/bundle/src/main/java/net/okocraft/box/bootstrap/BoxBootstrapContext.java @@ -1,11 +1,11 @@ package net.okocraft.box.bootstrap; -import com.github.siroshun09.messages.api.directory.DirectorySource; -import com.github.siroshun09.messages.api.util.Loader; import dev.siroshun.event4j.api.caller.EventCaller; import dev.siroshun.event4j.api.listener.ListenerSubscriber; import dev.siroshun.event4j.api.priority.Priority; import dev.siroshun.event4j.tree.TreeEventService; +import dev.siroshun.mcmsgdef.directory.DirectorySource; +import dev.siroshun.mcmsgdef.file.Loader; import io.papermc.paper.plugin.bootstrap.BootstrapContext; import net.kyori.adventure.key.Key; import net.okocraft.box.api.event.BoxEvent; diff --git a/bundle/src/main/java/net/okocraft/box/bundle/Builtin.java b/bundle/src/main/java/net/okocraft/box/bundle/Builtin.java index b552559a55..ca97e8907e 100644 --- a/bundle/src/main/java/net/okocraft/box/bundle/Builtin.java +++ b/bundle/src/main/java/net/okocraft/box/bundle/Builtin.java @@ -1,6 +1,6 @@ package net.okocraft.box.bundle; -import com.github.siroshun09.messages.api.util.PropertiesFile; +import dev.siroshun.mcmsgdef.file.PropertiesFile; import net.okocraft.box.bootstrap.BoxBootstrapContext; import net.okocraft.box.feature.autostore.AutoStoreFeature; import net.okocraft.box.feature.bemode.BEModeFeature; diff --git a/core/src/main/java/net/okocraft/box/core/BoxCore.java b/core/src/main/java/net/okocraft/box/core/BoxCore.java index eaf6822e7d..69ccf887ce 100644 --- a/core/src/main/java/net/okocraft/box/core/BoxCore.java +++ b/core/src/main/java/net/okocraft/box/core/BoxCore.java @@ -15,7 +15,6 @@ import net.okocraft.box.api.feature.FeatureContext; import net.okocraft.box.api.feature.FeatureProvider; import net.okocraft.box.api.feature.Reloadable; -import net.okocraft.box.api.message.MessageProvider; import net.okocraft.box.api.model.manager.ItemManager; import net.okocraft.box.api.model.manager.StockManager; import net.okocraft.box.api.model.manager.UserManager; @@ -107,7 +106,7 @@ public boolean enable(@NotNull Storage storage) { this.customDataManager = new BoxCustomDataManager(storage.getCustomDataStorage()); - this.playerMap = new BoxPlayerMapImpl(this.userManager, this.stockManager, this.eventCallers, this.context.scheduler(), this.context.messageProvider()); + this.playerMap = new BoxPlayerMapImpl(this.userManager, this.stockManager, this.eventCallers, this.context.scheduler()); this.playerMap.loadAll(); Bukkit.getPluginManager().registerEvents(new PlayerConnectionListener(this.playerMap), this.context.plugin()); @@ -116,8 +115,8 @@ public boolean enable(@NotNull Storage storage) { BoxLogger.logger().info("Registering commands..."); - this.boxCommand = new BoxCommandImpl(this.context.messageProvider(), this.context.scheduler(), this.playerMap, this::canUseBox); - this.boxAdminCommand = new BoxAdminCommandImpl(this.context.messageProvider(), this.context.scheduler()); + this.boxCommand = new BoxCommandImpl(this.context.scheduler(), this.playerMap, this::canUseBox); + this.boxAdminCommand = new BoxAdminCommandImpl(this.context.scheduler()); this.context.commandRegisterer().register(this.boxCommand).register(this.boxAdminCommand); @@ -138,7 +137,6 @@ public void disable() { @Override public void reload(@NotNull CommandSender sender) { - var source = this.context.messageProvider().findSource(sender); var playerMessenger = new Consumer>() { @Override public void accept(Supplier componentSupplier) { @@ -154,9 +152,9 @@ public void accept(Supplier componentSupplier) { try { this.context.config().reload(); - CoreMessages.CONFIG_RELOADED_MSG.apply(Config.FILENAME).source(source).send(sender); + sender.sendMessage(CoreMessages.CONFIG_RELOADED_MSG.apply(Config.FILENAME)); } catch (Throwable e) { - playerMessenger.accept(() -> CoreMessages.CONFIG_RELOAD_FAILURE.apply(Config.FILENAME, e).source(source).message()); + playerMessenger.accept(() -> CoreMessages.CONFIG_RELOAD_FAILURE.apply(Config.FILENAME, e)); BoxLogger.logger().error("Could not reload {}", Config.FILENAME, e); } @@ -164,9 +162,9 @@ public void accept(Supplier componentSupplier) { try { this.context.messageProvider().load(); - CoreMessages.MESSAGE_RELOADED_MSG.source(source).send(sender); + sender.sendMessage(CoreMessages.MESSAGE_RELOADED_MSG); } catch (Throwable e) { - playerMessenger.accept(() -> CoreMessages.MESSAGES_RELOAD_FAILURE.apply(e).source(source).message()); + playerMessenger.accept(() -> CoreMessages.MESSAGES_RELOAD_FAILURE.apply(e)); BoxLogger.logger().error("Could not reload messages", e); } @@ -178,7 +176,7 @@ public void accept(Supplier componentSupplier) { reloadable.reload(featureReloadContext); this.eventCallers.sync().call(new FeatureEvent(feature, FeatureEvent.Type.RELOAD)); } catch (Throwable e) { - playerMessenger.accept(() -> CoreMessages.FEATURE_RELOAD_FAILURE.apply(feature, e).source(source).message()); + playerMessenger.accept(() -> CoreMessages.FEATURE_RELOAD_FAILURE.apply(feature, e)); BoxLogger.logger().error("Could not reload {}", feature.getName(), e); } } @@ -194,12 +192,6 @@ public void accept(Supplier componentSupplier) { return this.context.dataDirectory(); } - @Override - public @NotNull MessageProvider getMessageProvider() { - return this.context.messageProvider(); - } - - @Override public @NotNull EventCallerProvider getEventCallers() { return this.eventCallers; diff --git a/core/src/main/java/net/okocraft/box/core/command/BaseCommand.java b/core/src/main/java/net/okocraft/box/core/command/BaseCommand.java index 882ce97705..06d245573b 100644 --- a/core/src/main/java/net/okocraft/box/core/command/BaseCommand.java +++ b/core/src/main/java/net/okocraft/box/core/command/BaseCommand.java @@ -1,12 +1,11 @@ package net.okocraft.box.core.command; import com.destroystokyo.paper.event.server.AsyncTabCompleteEvent; -import com.github.siroshun09.messages.minimessage.source.MiniMessageSource; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.okocraft.box.api.command.Command; import net.okocraft.box.api.command.SubCommandHoldable; import net.okocraft.box.api.message.ErrorMessages; -import net.okocraft.box.api.message.MessageProvider; import net.okocraft.box.api.scheduler.BoxScheduler; import net.okocraft.box.core.message.CoreMessages; import org.bukkit.command.CommandSender; @@ -23,12 +22,10 @@ public abstract class BaseCommand implements Command, SubCommandHoldable, Listener { private final SubCommandHolder subCommandHolder = new SubCommandHolder(); - protected final MessageProvider messageProvider; private final BoxScheduler scheduler; private Command commandOfNoArgument; - protected BaseCommand(@NotNull MessageProvider messageProvider, @NotNull BoxScheduler scheduler) { - this.messageProvider = messageProvider; + protected BaseCommand(@NotNull BoxScheduler scheduler) { this.scheduler = scheduler; } @@ -37,10 +34,8 @@ public void onCommand(@NotNull CommandSender sender, @NotNull String[] args) { Objects.requireNonNull(sender); Objects.requireNonNull(args); - var source = this.messageProvider.findSource(sender); - if (!sender.hasPermission(this.getPermissionNode())) { - ErrorMessages.NO_PERMISSION.apply(this.getPermissionNode()).source(source).send(sender); + sender.sendMessage(ErrorMessages.NO_PERMISSION.apply(this.getPermissionNode())); return; } @@ -48,8 +43,8 @@ public void onCommand(@NotNull CommandSender sender, @NotNull String[] args) { if (this.commandOfNoArgument != null && sender.hasPermission(this.commandOfNoArgument.getPermissionNode())) { this.scheduler.runAsyncTask(() -> this.commandOfNoArgument.onCommand(sender, args)); } else { - ErrorMessages.NOT_ENOUGH_ARGUMENT.source(source).send(sender); - this.sendHelp(sender, source); + sender.sendMessage(ErrorMessages.NOT_ENOUGH_ARGUMENT); + this.sendHelp(sender); } return; } @@ -58,9 +53,9 @@ public void onCommand(@NotNull CommandSender sender, @NotNull String[] args) { if (optionalSubCommand.isEmpty()) { if (!args[0].equalsIgnoreCase("help")) { - ErrorMessages.SUB_COMMAND_NOT_FOUND.source(source).send(sender); + sender.sendMessage(ErrorMessages.SUB_COMMAND_NOT_FOUND); } - this.sendHelp(sender, source); + this.sendHelp(sender); return; } @@ -71,11 +66,11 @@ public void onCommand(@NotNull CommandSender sender, @NotNull String[] args) { try { subCommand.onCommand(sender, args); } catch (Throwable e) { - CoreMessages.COMMAND_EXECUTION_ERROR_MSG.apply(e).source(source).send(sender); + sender.sendMessage(CoreMessages.COMMAND_EXECUTION_ERROR_MSG.apply(e)); } }); } else { - ErrorMessages.NO_PERMISSION.apply(subCommand.getPermissionNode()).source(source).send(sender); + sender.sendMessage(ErrorMessages.NO_PERMISSION.apply(subCommand.getPermissionNode())); } } @@ -108,7 +103,7 @@ public void onCommand(@NotNull CommandSender sender, @NotNull String[] args) { } @Override - public @NotNull Component getHelp(@NotNull MiniMessageSource msgSrc) { + public @NotNull ComponentLike getHelp() { return Component.text("/" + this.getName()); } @@ -149,11 +144,11 @@ public void onAsyncTabComplete(@NotNull AsyncTabCompleteEvent event) { event.setHandled(true); } - private void sendHelp(@NotNull CommandSender sender, @NotNull MiniMessageSource msgSrc) { - CoreMessages.COMMAND_HELP_HEADER.apply("/" + this.getName()).source(msgSrc).send(sender); + private void sendHelp(@NotNull CommandSender sender) { + sender.sendMessage(CoreMessages.COMMAND_HELP_HEADER.apply("/" + this.getName())); this.subCommandHolder.getSubCommands() .stream() - .map(command -> command.getHelp(msgSrc)) + .map(Command::getHelp) .forEach(sender::sendMessage); } } diff --git a/core/src/main/java/net/okocraft/box/core/command/BoxAdminCommandImpl.java b/core/src/main/java/net/okocraft/box/core/command/BoxAdminCommandImpl.java index deb2ae4664..98f8717816 100644 --- a/core/src/main/java/net/okocraft/box/core/command/BoxAdminCommandImpl.java +++ b/core/src/main/java/net/okocraft/box/core/command/BoxAdminCommandImpl.java @@ -1,7 +1,6 @@ package net.okocraft.box.core.command; import net.okocraft.box.api.command.base.BoxAdminCommand; -import net.okocraft.box.api.message.MessageProvider; import net.okocraft.box.api.scheduler.BoxScheduler; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Unmodifiable; @@ -10,8 +9,8 @@ public class BoxAdminCommandImpl extends BaseCommand implements BoxAdminCommand { - public BoxAdminCommandImpl(@NotNull MessageProvider messageProvider, @NotNull BoxScheduler scheduler) { - super(messageProvider, scheduler); + public BoxAdminCommandImpl(@NotNull BoxScheduler scheduler) { + super(scheduler); } @Override diff --git a/core/src/main/java/net/okocraft/box/core/command/BoxCommandImpl.java b/core/src/main/java/net/okocraft/box/core/command/BoxCommandImpl.java index cd198a658b..80cfedeba2 100644 --- a/core/src/main/java/net/okocraft/box/core/command/BoxCommandImpl.java +++ b/core/src/main/java/net/okocraft/box/core/command/BoxCommandImpl.java @@ -2,7 +2,6 @@ import net.okocraft.box.api.command.base.BoxCommand; import net.okocraft.box.api.message.ErrorMessages; -import net.okocraft.box.api.message.MessageProvider; import net.okocraft.box.api.player.BoxPlayerMap; import net.okocraft.box.api.scheduler.BoxScheduler; import org.bukkit.command.CommandSender; @@ -21,9 +20,9 @@ public class BoxCommandImpl extends BaseCommand implements BoxCommand { private final Predicate canUseBox; - public BoxCommandImpl(@NotNull MessageProvider messageProvider, @NotNull BoxScheduler scheduler, + public BoxCommandImpl(@NotNull BoxScheduler scheduler, @NotNull BoxPlayerMap playerMap, @NotNull Predicate canUseBox) { - super(messageProvider, scheduler); + super(scheduler); this.playerMap = playerMap; this.canUseBox = canUseBox; } @@ -48,15 +47,15 @@ public void onCommand(@NotNull CommandSender sender, @NotNull String[] args) { if (sender instanceof Player player) { if (this.playerMap.isLoaded(player)) { if (!this.canUseBox.test(player)) { - ErrorMessages.CANNOT_USE_BOX.source(this.messageProvider.findSource(sender)).send(sender); + sender.sendMessage(ErrorMessages.CANNOT_USE_BOX); return; } } else { - if (this.playerMap.isScheduledLoading(player)) { - ErrorMessages.playerDataIsLoading(null).source(this.messageProvider.findSource(sender)).send(sender); - } else { - ErrorMessages.playerDataIsNotLoaded(null).source(this.messageProvider.findSource(sender)).send(sender); - } + sender.sendMessage( + this.playerMap.isScheduledLoading(player) ? + ErrorMessages.playerDataIsLoading(null) : + ErrorMessages.playerDataIsNotLoaded(null) + ); return; } } diff --git a/core/src/main/java/net/okocraft/box/core/message/BoxMessageProvider.java b/core/src/main/java/net/okocraft/box/core/message/BoxMessageProvider.java index 29512f566a..815ed17a35 100644 --- a/core/src/main/java/net/okocraft/box/core/message/BoxMessageProvider.java +++ b/core/src/main/java/net/okocraft/box/core/message/BoxMessageProvider.java @@ -1,16 +1,12 @@ package net.okocraft.box.core.message; -import com.github.siroshun09.messages.api.directory.DirectorySource; -import com.github.siroshun09.messages.api.directory.MessageProcessors; -import com.github.siroshun09.messages.api.source.StringMessageMap; -import com.github.siroshun09.messages.api.util.Loader; -import com.github.siroshun09.messages.api.util.PropertiesFile; -import com.github.siroshun09.messages.minimessage.localization.MiniMessageLocalization; -import com.github.siroshun09.messages.minimessage.source.MiniMessageSource; +import dev.siroshun.mcmsgdef.directory.DirectorySource; +import dev.siroshun.mcmsgdef.directory.MessageProcessors; +import dev.siroshun.mcmsgdef.file.Loader; +import net.kyori.adventure.key.Key; +import net.kyori.adventure.text.minimessage.translation.MiniMessageTranslationStore; +import net.kyori.adventure.translation.GlobalTranslator; import net.okocraft.box.api.message.DefaultMessageCollector; -import net.okocraft.box.api.message.MessageProvider; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.TestOnly; @@ -20,45 +16,39 @@ import java.util.Locale; import java.util.Map; -public class BoxMessageProvider implements MessageProvider { +public class BoxMessageProvider { public static @NotNull BoxMessageProvider.Collector createCollector() { return new BoxMessageProvider.Collector(); } private final Collector collector; - private final DirectorySource directorySource; + private final DirectorySource directorySource; private final Loader> defaultMessageMapLoader; - private MiniMessageLocalization localization; + private MiniMessageTranslationStore store; - public BoxMessageProvider(@NotNull Collector collector, DirectorySource directorySource, Loader> defaultMessageMapLoader) { + public BoxMessageProvider(@NotNull Collector collector, DirectorySource directorySource, Loader> defaultMessageMapLoader) { this.collector = collector; this.directorySource = directorySource; this.defaultMessageMapLoader = defaultMessageMapLoader; } - @Override - public @NotNull MiniMessageSource findSource(@NotNull CommandSender sender) { - return this.localization.findSource(sender instanceof Player player ? player.locale() : Locale.getDefault()); - } - public void load() throws IOException { - if (this.localization == null) { // on startup - this.localization = new MiniMessageLocalization(MiniMessageSource.create(StringMessageMap.create(this.collector.collectedMessages))); - } else { // on reload - this.localization.clearSources(); + if (this.store != null) { + GlobalTranslator.translator().removeSource(this.store); } - this.directorySource - .messageProcessor(MessageProcessors.appendMissingStringMessages(this.defaultMessageMapLoader, PropertiesFile.DEFAULT_APPENDER)) - .messageProcessor(MessageProcessors.appendMissingStringMessages(ignored -> this.collector.collectedMessages, PropertiesFile.DEFAULT_APPENDER)) - .load(loaded -> this.localization.addSource(loaded.locale(), MiniMessageSource.create(loaded.messageSource()))); + this.store = this.directorySource + .messageProcessor(MessageProcessors.appendMissingMessagesToPropertiesFile(this.defaultMessageMapLoader)) + .messageProcessor(MessageProcessors.appendMissingMessagesToPropertiesFile(ignored -> this.collector.collectedMessages)) + .loadAsMiniMessageTranslationStore(Key.key("box", "languages")); + GlobalTranslator.translator().addSource(this.store); } public void unload() { - if (this.localization != null) { - this.localization.clearSources(); + if (this.store != null) { + GlobalTranslator.translator().removeSource(this.store); } } diff --git a/core/src/main/java/net/okocraft/box/core/message/CoreMessages.java b/core/src/main/java/net/okocraft/box/core/message/CoreMessages.java index caa3110403..e812ca23ce 100644 --- a/core/src/main/java/net/okocraft/box/core/message/CoreMessages.java +++ b/core/src/main/java/net/okocraft/box/core/message/CoreMessages.java @@ -1,17 +1,11 @@ package net.okocraft.box.core.message; -import com.github.siroshun09.messages.minimessage.arg.Arg1; -import com.github.siroshun09.messages.minimessage.arg.Arg2; -import com.github.siroshun09.messages.minimessage.base.MiniMessageBase; -import com.github.siroshun09.messages.minimessage.base.Placeholder; -import net.kyori.adventure.text.Component; +import dev.siroshun.mcmsgdef.MessageKey; +import net.kyori.adventure.text.minimessage.translation.Argument; import net.okocraft.box.api.feature.BoxFeature; import net.okocraft.box.api.message.DefaultMessageCollector; import org.jetbrains.annotations.NotNull; -import static com.github.siroshun09.messages.minimessage.arg.Arg1.arg1; -import static com.github.siroshun09.messages.minimessage.arg.Arg2.arg2; -import static com.github.siroshun09.messages.minimessage.base.MiniMessageBase.messageKey; import static net.okocraft.box.api.message.Placeholders.ERROR; public class CoreMessages { @@ -39,14 +33,14 @@ public class CoreMessages { private static final String ERROR_RELOAD_MESSAGES = "box.core.reload.error.messages"; private static final String ERROR_RELOAD_FEATURE = "box.core.reload.error.feature"; - public static final Arg1 COMMAND_HELP_HEADER = arg1(HELP_BOX, Placeholder.component("command", Component::text)); - public static final Arg1 COMMAND_EXECUTION_ERROR_MSG = arg1(COMMAND_EXECUTION_ERROR, ERROR); - public static final MiniMessageBase LOAD_FAILURE_ON_JOIN = messageKey(LOAD_ERROR_ON_JOIN); - public static final Arg1 CONFIG_RELOADED_MSG = arg1(CONFIG_RELOADED, Placeholder.component("filename", Component::text)); - public static final MiniMessageBase MESSAGE_RELOADED_MSG = messageKey(MESSAGES_RELOADED); - public static final Arg2 CONFIG_RELOAD_FAILURE = arg2(ERROR_RELOAD_CONFIG, Placeholder.component("filename", Component::text), ERROR); - public static final Arg1 MESSAGES_RELOAD_FAILURE = arg1(ERROR_RELOAD_MESSAGES, ERROR); - public static final Arg2 FEATURE_RELOAD_FAILURE = arg2(ERROR_RELOAD_FEATURE, Placeholder.component("feature", feature -> Component.text(feature.getName())), ERROR); + public static final MessageKey.Arg1 COMMAND_HELP_HEADER = MessageKey.arg1(HELP_BOX, command -> Argument.string("command", command)); + public static final MessageKey.Arg1 COMMAND_EXECUTION_ERROR_MSG = MessageKey.arg1(COMMAND_EXECUTION_ERROR, ERROR); + public static final MessageKey LOAD_FAILURE_ON_JOIN = MessageKey.key(LOAD_ERROR_ON_JOIN); + public static final MessageKey.Arg1 CONFIG_RELOADED_MSG = MessageKey.arg1(CONFIG_RELOADED, filename -> Argument.string("filename", filename)); + public static final MessageKey MESSAGE_RELOADED_MSG = MessageKey.key(MESSAGES_RELOADED); + public static final MessageKey.Arg2 CONFIG_RELOAD_FAILURE = MessageKey.arg2(ERROR_RELOAD_CONFIG, filename -> Argument.string("filename", filename), ERROR); + public static final MessageKey.Arg1 MESSAGES_RELOAD_FAILURE = MessageKey.arg1(ERROR_RELOAD_MESSAGES, ERROR); + public static final MessageKey.Arg2 FEATURE_RELOAD_FAILURE = MessageKey.arg2(ERROR_RELOAD_FEATURE, feature -> Argument.string("feature", feature.getName()), ERROR); public static void addDefaultMessages(@NotNull DefaultMessageCollector collector) { collector.add(HELP_BOX, "==================== Command helps for ===================="); diff --git a/core/src/main/java/net/okocraft/box/core/player/BoxPlayerMapImpl.java b/core/src/main/java/net/okocraft/box/core/player/BoxPlayerMapImpl.java index ab33dc8bd9..041b04db18 100644 --- a/core/src/main/java/net/okocraft/box/core/player/BoxPlayerMapImpl.java +++ b/core/src/main/java/net/okocraft/box/core/player/BoxPlayerMapImpl.java @@ -3,7 +3,6 @@ import net.okocraft.box.api.event.caller.EventCallerProvider; import net.okocraft.box.api.event.player.PlayerLoadEvent; import net.okocraft.box.api.event.player.PlayerUnloadEvent; -import net.okocraft.box.api.message.MessageProvider; import net.okocraft.box.api.player.BoxPlayer; import net.okocraft.box.api.player.BoxPlayerMap; import net.okocraft.box.api.scheduler.BoxScheduler; @@ -31,16 +30,13 @@ public class BoxPlayerMapImpl implements BoxPlayerMap { private final BoxUserManager userManager; private final EventCallerProvider eventCallers; private final BoxScheduler scheduler; - private final MessageProvider messageProvider; public BoxPlayerMapImpl(@NotNull BoxUserManager userManager, @NotNull BoxStockManager stockManager, - @NotNull EventCallerProvider eventCallers, @NotNull BoxScheduler scheduler, - @NotNull MessageProvider messageProvider) { + @NotNull EventCallerProvider eventCallers, @NotNull BoxScheduler scheduler) { this.userManager = userManager; this.stockManager = stockManager; this.eventCallers = eventCallers; this.scheduler = scheduler; - this.messageProvider = messageProvider; } @Override @@ -80,7 +76,7 @@ private void load(@NotNull Player player) { } catch (Exception e) { this.playerMap.remove(player); BoxLogger.logger().error("Could not load a player ({})", player.getName(), e); - CoreMessages.LOAD_FAILURE_ON_JOIN.source(this.messageProvider.findSource(player)).send(player); + player.sendMessage(CoreMessages.LOAD_FAILURE_ON_JOIN); } } diff --git a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/AutoStoreFeature.java b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/AutoStoreFeature.java index c82920733d..b2b0d28534 100644 --- a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/AutoStoreFeature.java +++ b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/AutoStoreFeature.java @@ -1,6 +1,6 @@ package net.okocraft.box.feature.autostore; -import com.github.siroshun09.messages.minimessage.base.MiniMessageBase; +import dev.siroshun.mcmsgdef.MessageKey; import net.kyori.adventure.key.Key; import net.okocraft.box.api.BoxAPI; import net.okocraft.box.api.feature.AbstractBoxFeature; @@ -16,8 +16,6 @@ import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; -import static com.github.siroshun09.messages.minimessage.base.MiniMessageBase.messageKey; - /** * A {@link net.okocraft.box.api.feature.BoxFeature} that provides autostore feature. */ @@ -27,7 +25,7 @@ public class AutoStoreFeature extends AbstractBoxFeature { private static final Key CUSTOM_DATA_EXPORT_LISTENER_KEY = Key.key("box", "feature/autostore/custom_data_export_listener"); private final AutoStoreSettingContainer settingContainer; - private final MiniMessageBase loadErrorMessage; + private final MessageKey loadErrorMessage; private final AutoSaveListener autoSaveListener; private final CustomDataExportListener customDataExportListener; @@ -45,7 +43,7 @@ public class AutoStoreFeature extends AbstractBoxFeature { public AutoStoreFeature(@NotNull FeatureContext.Registration context) { super("autostore"); var collector = context.defaultMessageCollector(); - this.loadErrorMessage = messageKey(collector.add("box.autostore.error.failed-to-load-settings", "Failed to load the auto-store settings. Please contact the administrator.")); + this.loadErrorMessage = MessageKey.key(collector.add("box.autostore.error.failed-to-load-settings", "Failed to load the auto-store settings. Please contact the administrator.")); this.settingContainer = new AutoStoreSettingContainer(); this.autoSaveListener = new AutoSaveListener(this.settingContainer); this.customDataExportListener = new CustomDataExportListener(); diff --git a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/AutoStoreSettingContainer.java b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/AutoStoreSettingContainer.java index d3ce1f2975..dc0eeb438b 100644 --- a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/AutoStoreSettingContainer.java +++ b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/AutoStoreSettingContainer.java @@ -1,11 +1,11 @@ package net.okocraft.box.feature.autostore; -import com.github.siroshun09.messages.minimessage.base.MiniMessageBase; import dev.siroshun.configapi.core.node.IntArray; import dev.siroshun.configapi.core.node.ListNode; import dev.siroshun.configapi.core.node.MapNode; import dev.siroshun.configapi.core.node.NumberValue; import dev.siroshun.event4j.api.priority.Priority; +import dev.siroshun.mcmsgdef.MessageKey; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import net.kyori.adventure.key.Key; @@ -53,7 +53,7 @@ public void save(@NotNull AutoStoreSetting setting) throws Exception { BoxAPI.api().getCustomDataManager().saveData(createKey(setting.getUuid()), serialize(setting)); } - void registerBoxPlayerListener(@NotNull MiniMessageBase loadErrorMessage) { + void registerBoxPlayerListener(@NotNull MessageKey loadErrorMessage) { this.listenerHolder.subscribeAll(subscriber -> subscriber.add(PlayerLoadEvent.class, PLAYER_LISTENER_KEY, event -> this.load(event.getBoxPlayer().getPlayer(), loadErrorMessage), Priority.NORMAL) .add(PlayerUnloadEvent.class, PLAYER_LISTENER_KEY, event -> this.unload(event.getBoxPlayer().getPlayer()), Priority.NORMAL) @@ -64,12 +64,12 @@ void unregisterBoxPlayerListener() { this.listenerHolder.unsubscribeAll(); } - void load(@NotNull Player player, @NotNull MiniMessageBase loadErrorMessage) { + void load(@NotNull Player player, @NotNull MessageKey loadErrorMessage) { try { this.settingMap.put(player.getUniqueId(), this.load(player.getUniqueId())); } catch (Exception e) { BoxLogger.logger().error("Could not load autostore setting ({})", player.getName(), e); - loadErrorMessage.source(BoxAPI.api().getMessageProvider().findSource(player)).send(player); + player.sendMessage(loadErrorMessage); } } diff --git a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreAllCommand.java b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreAllCommand.java index 631aaaf1f8..221c1e313a 100644 --- a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreAllCommand.java +++ b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreAllCommand.java @@ -1,7 +1,6 @@ package net.okocraft.box.feature.autostore.command; -import com.github.siroshun09.messages.minimessage.base.MiniMessageBase; -import com.github.siroshun09.messages.minimessage.source.MiniMessageSource; +import dev.siroshun.mcmsgdef.MessageKey; import net.okocraft.box.api.message.DefaultMessageCollector; import net.okocraft.box.feature.autostore.setting.AutoStoreSetting; import org.bukkit.command.CommandSender; @@ -12,18 +11,18 @@ class AutoStoreAllCommand extends AutoStoreSubCommand { - private final MiniMessageBase allModeEnabled; + private final MessageKey allModeEnabled; AutoStoreAllCommand(@NotNull DefaultMessageCollector collector) { super("all"); - this.allModeEnabled = MiniMessageBase.messageKey(collector.add("box.autostore.command.change-to-all-mode", "Auto-store mode is now all-items and all items are stored to Box.")); + this.allModeEnabled = MessageKey.key(collector.add("box.autostore.command.change-to-all-mode", "Auto-store mode is now all-items and all items are stored to Box.")); } @Override - void runCommand(@NotNull CommandSender sender, @NotNull String[] args, @NotNull MiniMessageSource msgSrc, @NotNull AutoStoreSetting setting) { - this.allModeEnabled.source(msgSrc).send(sender); + void runCommand(@NotNull CommandSender sender, @NotNull String[] args, @NotNull AutoStoreSetting setting) { + sender.sendMessage(this.allModeEnabled); - if (AutoStoreCommandUtil.changeAutoStore(setting, sender, msgSrc, true, false) || !setting.isAllMode()) { // setting changed + if (AutoStoreCommandUtil.changeAutoStore(setting, sender, true, false) || !setting.isAllMode()) { // setting changed setting.setAllMode(true); AutoStoreCommandUtil.callEvent(setting); } diff --git a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreCommand.java b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreCommand.java index c956a2059f..f0bfa3e6a7 100644 --- a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreCommand.java +++ b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreCommand.java @@ -1,10 +1,7 @@ package net.okocraft.box.feature.autostore.command; -import com.github.siroshun09.messages.minimessage.arg.Arg1; -import com.github.siroshun09.messages.minimessage.base.MiniMessageBase; -import com.github.siroshun09.messages.minimessage.source.MiniMessageSource; -import net.kyori.adventure.text.Component; -import net.okocraft.box.api.BoxAPI; +import dev.siroshun.mcmsgdef.MessageKey; +import net.kyori.adventure.text.ComponentLike; import net.okocraft.box.api.command.AbstractCommand; import net.okocraft.box.api.message.DefaultMessageCollector; import net.okocraft.box.api.message.ErrorMessages; @@ -31,14 +28,14 @@ public class AutoStoreCommand extends AbstractCommand { /box autostore direct [on/off] - Toggles auto-store setting to store drops directly"""; private final AutoStoreSettingProvider container; - private final MiniMessageBase loadErrorMessage; + private final MessageKey loadErrorMessage; private final AutoStoreAllCommand allCommand; private final AutoStoreItemCommand itemCommand; private final AutoStoreDirectCommand directCommand; - private final MiniMessageBase help; - private final Arg1 subCommandNotFound; + private final MessageKey help; + private final MessageKey.Arg1 subCommandNotFound; - public AutoStoreCommand(@NotNull AutoStoreSettingProvider container, @NotNull MiniMessageBase loadErrorMessage, @NotNull DefaultMessageCollector collector) { + public AutoStoreCommand(@NotNull AutoStoreSettingProvider container, @NotNull MessageKey loadErrorMessage, @NotNull DefaultMessageCollector collector) { super("autostore", "box.command.autostore", Set.of("a", "as")); this.container = container; this.loadErrorMessage = loadErrorMessage; @@ -50,34 +47,32 @@ public AutoStoreCommand(@NotNull AutoStoreSettingProvider container, @NotNull Mi this.directCommand = new AutoStoreDirectCommand(collector); AutoStoreCommandUtil.addErrorMessages(collector); - this.help = MiniMessageBase.messageKey(collector.add("box.autostore.command.help", DEFAULT_HELP)); - this.subCommandNotFound = Arg1.arg1(collector.add("box.autostore.command.error.subcommand-not-found", "Auto-store sub command named is not found."), Placeholders.ARG); + this.help = MessageKey.key(collector.add("box.autostore.command.help", DEFAULT_HELP)); + this.subCommandNotFound = MessageKey.arg1(collector.add("box.autostore.command.error.subcommand-not-found", "Auto-store sub command named is not found."), Placeholders.ARG); } @Override public void onCommand(@NotNull CommandSender sender, @NotNull String[] args) { - var msgSrc = BoxAPI.api().getMessageProvider().findSource(sender); - if (!(sender instanceof Player player)) { - ErrorMessages.COMMAND_ONLY_PLAYER.source(msgSrc).send(sender); + sender.sendMessage(ErrorMessages.COMMAND_ONLY_PLAYER); return; } var setting = this.container.getIfLoaded(player.getUniqueId()); if (setting == null) { - this.loadErrorMessage.source(msgSrc).send(sender); + sender.sendMessage(this.loadErrorMessage); return; } // process autostore toggle if (args.length == 1) { - AutoStoreCommandUtil.changeAutoStore(setting, sender, msgSrc, !setting.isEnabled(), true); + AutoStoreCommandUtil.changeAutoStore(setting, sender, !setting.isEnabled(), true); return; } else { Boolean value = AutoStoreCommandUtil.getBoolean(args[1]); if (value != null) { - AutoStoreCommandUtil.changeAutoStore(setting, sender, msgSrc, value, true); + AutoStoreCommandUtil.changeAutoStore(setting, sender, value, true); return; } } @@ -85,13 +80,13 @@ public void onCommand(@NotNull CommandSender sender, @NotNull String[] args) { var subCommand = this.matchSubCommand(args[1]); if (subCommand.isPresent()) { - subCommand.get().runCommand(sender, args, msgSrc, setting); + subCommand.get().runCommand(sender, args, setting); } else { if (!args[1].equalsIgnoreCase("help")) { - this.subCommandNotFound.apply(args[1]).source(msgSrc).send(sender); + sender.sendMessage(this.subCommandNotFound.apply(args[1])); } - sender.sendMessage(this.getHelp(msgSrc)); + sender.sendMessage(this.getHelp()); } } @@ -119,7 +114,7 @@ public void onCommand(@NotNull CommandSender sender, @NotNull String[] args) { } @Override - public @NotNull Component getHelp(@NotNull MiniMessageSource msgSrc) { - return this.help.create(msgSrc); + public @NotNull ComponentLike getHelp() { + return this.help; } } diff --git a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreCommandUtil.java b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreCommandUtil.java index a5dcf91ed7..7dbf602d92 100644 --- a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreCommandUtil.java +++ b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreCommandUtil.java @@ -1,8 +1,6 @@ package net.okocraft.box.feature.autostore.command; -import com.github.siroshun09.messages.minimessage.arg.Arg1; -import com.github.siroshun09.messages.minimessage.base.MiniMessageBase; -import com.github.siroshun09.messages.minimessage.source.MiniMessageSource; +import dev.siroshun.mcmsgdef.MessageKey; import net.okocraft.box.api.BoxAPI; import net.okocraft.box.api.message.DefaultMessageCollector; import net.okocraft.box.api.message.Placeholders; @@ -15,12 +13,12 @@ final class AutoStoreCommandUtil { private static final String AUTOSTORE_ENABLED_KEY = "box.autostore.command.enable-autostore"; - private static final MiniMessageBase AUTOSTORE_ENABLED = MiniMessageBase.messageKey(AUTOSTORE_ENABLED_KEY); + private static final MessageKey AUTOSTORE_ENABLED = MessageKey.key(AUTOSTORE_ENABLED_KEY); private static final String AUTOSTORE_DISABLED_KEY = "box.autostore.command.disable-autostore"; - private static final MiniMessageBase AUTOSTORE_DISABLED = MiniMessageBase.messageKey(AUTOSTORE_DISABLED_KEY); + private static final MessageKey AUTOSTORE_DISABLED = MessageKey.key(AUTOSTORE_DISABLED_KEY); private static final String NOT_BOOLEAN_KEY = "box.autostore.command.error.not-boolean"; - static final Arg1 NOT_BOOLEAN = Arg1.arg1(NOT_BOOLEAN_KEY, Placeholders.ARG); + static final MessageKey.Arg1 NOT_BOOLEAN = MessageKey.arg1(NOT_BOOLEAN_KEY, Placeholders.ARG); static void addToggleMessages(@NotNull DefaultMessageCollector collector) { collector.add(AUTOSTORE_ENABLED_KEY, "Auto-store is now enabled."); @@ -31,7 +29,7 @@ static void addErrorMessages(@NotNull DefaultMessageCollector collector) { collector.add(NOT_BOOLEAN_KEY, " is not boolean. [on/off/true/false]"); } - static boolean changeAutoStore(@NotNull AutoStoreSetting setting, @NotNull CommandSender sender, @NotNull MiniMessageSource msgSrc, boolean newState, boolean alwaysSendMessage) { + static boolean changeAutoStore(@NotNull AutoStoreSetting setting, @NotNull CommandSender sender, boolean newState, boolean alwaysSendMessage) { boolean change = setting.isEnabled() != newState; if (change) { @@ -39,7 +37,7 @@ static boolean changeAutoStore(@NotNull AutoStoreSetting setting, @NotNull Comma } if (change || alwaysSendMessage) { - (newState ? AUTOSTORE_ENABLED : AUTOSTORE_DISABLED).source(msgSrc).send(sender); + sender.sendMessage(newState ? AUTOSTORE_ENABLED : AUTOSTORE_DISABLED); } return change; diff --git a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreDirectCommand.java b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreDirectCommand.java index d66afc7389..48a3c84cf7 100644 --- a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreDirectCommand.java +++ b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreDirectCommand.java @@ -1,7 +1,6 @@ package net.okocraft.box.feature.autostore.command; -import com.github.siroshun09.messages.minimessage.base.MiniMessageBase; -import com.github.siroshun09.messages.minimessage.source.MiniMessageSource; +import dev.siroshun.mcmsgdef.MessageKey; import net.okocraft.box.api.message.DefaultMessageCollector; import net.okocraft.box.feature.autostore.setting.AutoStoreSetting; import org.bukkit.command.CommandSender; @@ -15,17 +14,17 @@ class AutoStoreDirectCommand extends AutoStoreSubCommand { - private final MiniMessageBase directModeEnabled; - private final MiniMessageBase directModeDisabled; + private final MessageKey directModeEnabled; + private final MessageKey directModeDisabled; AutoStoreDirectCommand(@NotNull DefaultMessageCollector collector) { super("direct"); - this.directModeEnabled = MiniMessageBase.messageKey(collector.add("box.autostore.command.direct-mode-enabled", "Direct-auto-store is now enabled.")); - this.directModeDisabled = MiniMessageBase.messageKey(collector.add("box.autostore.command.direct-mode-disabled", "Direct-auto-store is now disabled.")); + this.directModeEnabled = MessageKey.key(collector.add("box.autostore.command.direct-mode-enabled", "Direct-auto-store is now enabled.")); + this.directModeDisabled = MessageKey.key(collector.add("box.autostore.command.direct-mode-disabled", "Direct-auto-store is now disabled.")); } @Override - void runCommand(@NotNull CommandSender sender, @NotNull String[] args, @NotNull MiniMessageSource msgSrc, @NotNull AutoStoreSetting setting) { + void runCommand(@NotNull CommandSender sender, @NotNull String[] args, @NotNull AutoStoreSetting setting) { boolean enabled; if (2 < args.length) { @@ -33,16 +32,16 @@ void runCommand(@NotNull CommandSender sender, @NotNull String[] args, @NotNull if (bool != null) { enabled = bool; } else { - AutoStoreCommandUtil.NOT_BOOLEAN.apply(args[2]).source(msgSrc).send(sender); + sender.sendMessage(AutoStoreCommandUtil.NOT_BOOLEAN.apply(args[2])); return; } } else { enabled = !setting.isDirect(); } - (enabled ? this.directModeEnabled : this.directModeDisabled).source(msgSrc).send(sender); + sender.sendMessage(enabled ? this.directModeEnabled : this.directModeDisabled); - if ((enabled && AutoStoreCommandUtil.changeAutoStore(setting, sender, msgSrc, true, false)) || enabled != setting.isDirect()) { + if ((enabled && AutoStoreCommandUtil.changeAutoStore(setting, sender, true, false)) || enabled != setting.isDirect()) { setting.setDirect(enabled); AutoStoreCommandUtil.callEvent(setting); } diff --git a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreItemCommand.java b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreItemCommand.java index a132bea505..e8a3366fd4 100644 --- a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreItemCommand.java +++ b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreItemCommand.java @@ -1,8 +1,6 @@ package net.okocraft.box.feature.autostore.command; -import com.github.siroshun09.messages.minimessage.arg.Arg1; -import com.github.siroshun09.messages.minimessage.base.MiniMessageBase; -import com.github.siroshun09.messages.minimessage.source.MiniMessageSource; +import dev.siroshun.mcmsgdef.MessageKey; import it.unimi.dsi.fastutil.ints.IntSet; import net.okocraft.box.api.BoxAPI; import net.okocraft.box.api.message.DefaultMessageCollector; @@ -22,28 +20,28 @@ class AutoStoreItemCommand extends AutoStoreSubCommand { - private final MiniMessageBase perItemModeEnabled; - private final MiniMessageBase allEnabled; - private final MiniMessageBase allDisabled; - private final Arg1 itemEnabled; - private final Arg1 itemDisabled; + private final MessageKey perItemModeEnabled; + private final MessageKey allEnabled; + private final MessageKey allDisabled; + private final MessageKey.Arg1 itemEnabled; + private final MessageKey.Arg1 itemDisabled; AutoStoreItemCommand(@NotNull DefaultMessageCollector collector) { super("item"); - this.perItemModeEnabled = MiniMessageBase.messageKey(collector.add("box.autostore.command.per-item.mode-changed", "Auto-store mode is now per-item.")); - this.allEnabled = MiniMessageBase.messageKey(collector.add("box.autostore.command.per-item.all-enabled", "Auto-store settings for all items have been enabled.")); - this.allDisabled = MiniMessageBase.messageKey(collector.add("box.autostore.command.per-item.all-disabled", "Auto-store settings for all items have been disabled.")); - this.itemEnabled = Arg1.arg1(collector.add("box.autostore.command.per-item.item-enabled", "Auto-store setting of the item has been enabled."), Placeholders.ITEM); - this.itemDisabled = Arg1.arg1(collector.add("box.autostore.command.per-item.item-disabled", "Auto-store setting of the item has been disabled."), Placeholders.ITEM); + this.perItemModeEnabled = MessageKey.key(collector.add("box.autostore.command.per-item.mode-changed", "Auto-store mode is now per-item.")); + this.allEnabled = MessageKey.key(collector.add("box.autostore.command.per-item.all-enabled", "Auto-store settings for all items have been enabled.")); + this.allDisabled = MessageKey.key(collector.add("box.autostore.command.per-item.all-disabled", "Auto-store settings for all items have been disabled.")); + this.itemEnabled = MessageKey.arg1(collector.add("box.autostore.command.per-item.item-enabled", "Auto-store setting of the item has been enabled."), Placeholders.ITEM); + this.itemDisabled = MessageKey.arg1(collector.add("box.autostore.command.per-item.item-disabled", "Auto-store setting of the item has been disabled."), Placeholders.ITEM); } @Override - void runCommand(@NotNull CommandSender sender, @NotNull String[] args, @NotNull MiniMessageSource msgSrc, @NotNull AutoStoreSetting setting) { + void runCommand(@NotNull CommandSender sender, @NotNull String[] args, @NotNull AutoStoreSetting setting) { // set all mode false if (args.length < 3) { - this.perItemModeEnabled.source(msgSrc).send(sender); + sender.sendMessage(this.perItemModeEnabled); - if (AutoStoreCommandUtil.changeAutoStore(setting, sender, msgSrc, true, false) || setting.isAllMode()) { + if (AutoStoreCommandUtil.changeAutoStore(setting, sender, true, false) || setting.isAllMode()) { setting.setAllMode(false); AutoStoreCommandUtil.callEvent(setting); } @@ -56,21 +54,21 @@ void runCommand(@NotNull CommandSender sender, @NotNull String[] args, @NotNull if (optionalBoxItem.isEmpty()) { if (args.length < 4 || !this.isAll(args[2])) { - ErrorMessages.ITEM_NOT_FOUND.apply(args[2]).source(msgSrc).send(sender); + sender.sendMessage(ErrorMessages.ITEM_NOT_FOUND.apply(args[2])); return; } Boolean result = AutoStoreCommandUtil.getBoolean(args[3]); if (result == null) { - AutoStoreCommandUtil.NOT_BOOLEAN.apply(args[3]).source(msgSrc).send(sender); + sender.sendMessage(AutoStoreCommandUtil.NOT_BOOLEAN.apply(args[3])); return; } - AutoStoreCommandUtil.changeAutoStore(setting, sender, msgSrc, true, false); - this.changeToPerItemMode(setting, sender, msgSrc); + AutoStoreCommandUtil.changeAutoStore(setting, sender, true, false); + this.changeToPerItemMode(setting, sender); perItemModeSetting.clearAndEnableItems(result ? itemManager.getItemIdList() : IntSet.of()); - (result ? this.allEnabled : this.allDisabled).source(msgSrc).send(sender); + sender.sendMessage(result ? this.allEnabled : this.allDisabled); AutoStoreCommandUtil.callEvent(setting); @@ -84,7 +82,7 @@ void runCommand(@NotNull CommandSender sender, @NotNull String[] args, @NotNull var temp = AutoStoreCommandUtil.getBoolean(args[3]); if (temp == null) { - AutoStoreCommandUtil.NOT_BOOLEAN.apply(args[3]).source(msgSrc).send(sender); + sender.sendMessage(AutoStoreCommandUtil.NOT_BOOLEAN.apply(args[3])); return; } @@ -94,10 +92,10 @@ void runCommand(@NotNull CommandSender sender, @NotNull String[] args, @NotNull result = perItemModeSetting.toggleEnabled(boxItem); } - AutoStoreCommandUtil.changeAutoStore(setting, sender, msgSrc, true, false); - this.changeToPerItemMode(setting, sender, msgSrc); + AutoStoreCommandUtil.changeAutoStore(setting, sender, true, false); + this.changeToPerItemMode(setting, sender); - (result ? this.itemEnabled : this.itemDisabled).apply(boxItem).source(msgSrc).send(sender); + sender.sendMessage((result ? this.itemEnabled : this.itemDisabled).apply(boxItem)); AutoStoreCommandUtil.callEvent(setting); } @@ -105,9 +103,9 @@ private boolean isAll(@NotNull String arg) { return !arg.isEmpty() && arg.length() < 4 && (arg.charAt(0) == 'a' || arg.charAt(0) == 'A'); } - private void changeToPerItemMode(@NotNull AutoStoreSetting setting, @NotNull CommandSender sender, @NotNull MiniMessageSource msgSrc) { + private void changeToPerItemMode(@NotNull AutoStoreSetting setting, @NotNull CommandSender sender) { if (setting.isAllMode()) { - this.perItemModeEnabled.source(msgSrc).send(sender); + sender.sendMessage(this.perItemModeEnabled); } } diff --git a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreSubCommand.java b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreSubCommand.java index 2796b9a357..9d76055151 100644 --- a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreSubCommand.java +++ b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/command/AutoStoreSubCommand.java @@ -1,6 +1,5 @@ package net.okocraft.box.feature.autostore.command; -import com.github.siroshun09.messages.minimessage.source.MiniMessageSource; import net.okocraft.box.feature.autostore.setting.AutoStoreSetting; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; @@ -20,7 +19,7 @@ protected AutoStoreSubCommand(@NotNull String name) { return this.name; } - abstract void runCommand(@NotNull CommandSender sender, @NotNull String[] args, @NotNull MiniMessageSource msgSrc, @NotNull AutoStoreSetting setting); + abstract void runCommand(@NotNull CommandSender sender, @NotNull String[] args, @NotNull AutoStoreSetting setting); abstract @NotNull List runTabComplete(@NotNull CommandSender sender, @NotNull String[] args); } diff --git a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/gui/AutoStoreClickMode.java b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/gui/AutoStoreClickMode.java index 3b724579f7..5578cb4a54 100644 --- a/features/autostore/src/main/java/net/okocraft/box/feature/autostore/gui/AutoStoreClickMode.java +++ b/features/autostore/src/main/java/net/okocraft/box/feature/autostore/gui/AutoStoreClickMode.java @@ -1,6 +1,6 @@ package net.okocraft.box.feature.autostore.gui; -import com.github.siroshun09.messages.minimessage.base.MiniMessageBase; +import dev.siroshun.mcmsgdef.MessageKey; import io.papermc.paper.registry.keys.SoundEventKeys; import net.kyori.adventure.text.Component; import net.okocraft.box.api.message.DefaultMessageCollector; @@ -26,8 +26,6 @@ import java.util.List; -import static com.github.siroshun09.messages.minimessage.base.MiniMessageBase.messageKey; - public class AutoStoreClickMode implements BoxItemClickMode { private static final SoundBase ENABLE_SOUND = SoundBase.builder().sound(SoundEventKeys.BLOCK_WOODEN_BUTTON_CLICK_ON).pitch(1.5f).build(); @@ -35,18 +33,18 @@ public class AutoStoreClickMode implements BoxItemClickMode { private final AutoStoreSettingProvider container; - private final MiniMessageBase displayName; - private final MiniMessageBase itemEnabled; - private final MiniMessageBase itemDisabled; - private final MiniMessageBase settingMenuButtonDisplayName; + private final MessageKey displayName; + private final MessageKey itemEnabled; + private final MessageKey itemDisabled; + private final MessageKey settingMenuButtonDisplayName; private final AutoStoreSettingMenu settingMenu; public AutoStoreClickMode(@NotNull AutoStoreSettingProvider container, @NotNull DefaultMessageCollector collector) { this.container = container; - this.displayName = messageKey(collector.add("box.autostore.gui.mode.display-name", "Auto-store setting")); - this.itemEnabled = messageKey(collector.add("box.autostore.gui.mode.item.enabled", "Auto-store setting: Enabled")); - this.itemDisabled = messageKey(collector.add("box.autostore.gui.mode.item.disabled", "Auto-store setting: Disabled")); - this.settingMenuButtonDisplayName = messageKey(collector.add("box.autostore.gui.mode.setting-menu.open-button", "Open auto-store setting menu")); + this.displayName = MessageKey.key(collector.add("box.autostore.gui.mode.display-name", "Auto-store setting")); + this.itemEnabled = MessageKey.key(collector.add("box.autostore.gui.mode.item.enabled", "Auto-store setting: Enabled")); + this.itemDisabled = MessageKey.key(collector.add("box.autostore.gui.mode.item.disabled", "Auto-store setting: Disabled")); + this.settingMenuButtonDisplayName = MessageKey.key(collector.add("box.autostore.gui.mode.setting-menu.open-button", "Open auto-store setting menu")); this.settingMenu = new AutoStoreSettingMenu(collector); } @@ -57,7 +55,7 @@ public AutoStoreClickMode(@NotNull AutoStoreSettingProvider container, @NotNull @Override public @NotNull Component getDisplayName(@NotNull PlayerSession session) { - return this.displayName.create(session.getMessageSource()); + return this.displayName.asComponent(); } @Override @@ -70,9 +68,9 @@ public AutoStoreClickMode(@NotNull AutoStoreSettingProvider container, @NotNull return ItemEditor.create() .copyLoreFrom(icon) .loreEmptyLine() - .loreLine((setting.getPerItemModeSetting().isEnabled(item) ? this.itemEnabled : this.itemDisabled).create(session.getMessageSource())) + .loreLine(setting.getPerItemModeSetting().isEnabled(item) ? this.itemEnabled : this.itemDisabled) .loreEmptyLine() - .applyTo(icon); + .applyTo(session.getViewer(), icon); } } @@ -126,7 +124,7 @@ public boolean canUse(@NotNull PlayerSession session) { return new AutoStoreSettingMenuButton(this.settingMenuButtonDisplayName, this.settingMenu, slot); } - private record AutoStoreSettingMenuButton(@NotNull MiniMessageBase displayName, + private record AutoStoreSettingMenuButton(@NotNull MessageKey displayName, @NotNull AutoStoreSettingMenu menu, int slot) implements Button { @@ -138,8 +136,8 @@ public int getSlot() { @Override public @NotNull ItemStack createIcon(@NotNull PlayerSession session) { return ItemEditor.create() - .displayName(this.displayName.create(session.getMessageSource())) - .createItem(Material.SUNFLOWER); + .displayName(this.displayName) + .createItem(session.getViewer(), Material.SUNFLOWER); } @Override @@ -150,11 +148,11 @@ public int getSlot() { private static class AutoStoreSettingMenu implements Menu { - private final MiniMessageBase title; + private final MessageKey title; private final List