diff --git a/src/main/java/fr/openmc/api/entity/player/OMCPlayer.java b/src/main/java/fr/openmc/api/entity/player/OMCPlayer.java new file mode 100644 index 000000000..a602de8db --- /dev/null +++ b/src/main/java/fr/openmc/api/entity/player/OMCPlayer.java @@ -0,0 +1,235 @@ +package fr.openmc.api.entity.player; + +import fr.openmc.core.features.city.CityManager; +import fr.openmc.core.features.economy.EconomyManager; +import fr.openmc.core.utils.text.messages.MessageType; +import fr.openmc.core.utils.text.messages.MessagesManager; +import fr.openmc.core.utils.text.messages.Prefix; +import lombok.experimental.Delegate; +import net.kyori.adventure.text.Component; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.UUID; + +/** + * Wrapper autour d'un {@link Player} pour les methodes propres a OpenMC + * (economie, ville, menus...). + *

+ * Exemples : + *

{@code
+ * // Dans une commande Lamp, en sender ou en argument :
+ * @Command("balance")
+ * public void balance(OMCPlayer player) {
+ *      player.message().sendInfo(Component.text("Vous avez " + player.getFormattedBalance()));
+ * }
+ *
+ * // Dans un event :
+ * OMCPlayer player = OMCPlayer.of(event.getPlayer());
+ * if (player.hasCity()) { ... }
+ * }
+ */ +@SuppressWarnings({"unused", "removal", "deprecation"}) +public class OMCPlayer implements Player { + + @Delegate(types = Player.class) + private final Player player; + + private OMCPlayer(Player player) { + this.player = player; + } + + /** + * Enveloppe un {@link Player} dans un {@link OMCPlayer}. + * Si le joueur est deja un {@link OMCPlayer}, il est retourne tel quel. + * + * @param player le joueur a envelopper + * @return le {@link OMCPlayer} correspondant + */ + public static OMCPlayer of(@NotNull Player player) { + if (player instanceof OMCPlayer omcPlayer) + return omcPlayer; + return new OMCPlayer(player); + } + + /** + * Return the {@link Player} wrapped by this {@link OMCPlayer}. + * + * @return the wrapped {@link Player} + */ + @Override + public @NotNull Player getPlayer() { + return player; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof OMCPlayer omcPlayer) { + obj = omcPlayer.getPlayer(); + } + return player.equals(obj); + } + + @Override + public int hashCode() { + return player.hashCode(); + } + + @Override + public String toString() { + return "OMCPlayer{" + + "username=" + player.getDisplayName() + + ", uuid=" + player.getUniqueId() + + "}"; + } + + private final Message message = new Message(); + private final Economy economy = new Economy(); + private final City city = new City(); + + /** + * Acces au namespace messages du joueur. + *
{@code
+     * player.message().sendSuccess(Component.text("Ville creee !"));
+     * player.message().send(msg, Prefix.CITY, MessageType.ERROR);
+     * }
+ */ + public Message message() { + return message; + } + + public Economy economy() { + return economy; + } + + public City city() { + return city; + } + + public class Message { + + public void send(Component message, Prefix prefix, MessageType type, boolean sound) { + MessagesManager.sendMessage(player, message, prefix, type, sound); + } + + public void send(Component message, Prefix prefix, MessageType type) { + send(message, prefix, type, false); + } + + public void send(Component message, Prefix prefix) { + send(message, prefix, MessageType.NONE, false); + } + + public void send(Component message, MessageType type) { + send(message, Prefix.OPENMC, type, false); + } + + public void send(Component message) { + send(message, Prefix.OPENMC, MessageType.NONE, false); + } + + public void sendSuccess(Component message, boolean sound) { + send(message, Prefix.OPENMC, MessageType.SUCCESS, sound); + } + + public void sendSuccess(Component message) { + sendSuccess(message, true); + } + + public void sendError(Component message, Prefix prefix, boolean sound) { + send(message, prefix, MessageType.ERROR, sound); + } + + public void sendError(Component message, Prefix prefix) { + sendError(message, prefix, false); + } + + public void sendError(Component message, boolean sound) { + sendError(message, Prefix.OPENMC, sound); + } + + public void sendError(Component message) { + sendError(message, true); + } + + public void sendWarning(Component message, boolean sound) { + send(message, Prefix.OPENMC, MessageType.WARNING, sound); + } + + public void sendWarning(Component message) { + sendWarning(message, true); + } + + public void sendInfo(Component message, Prefix prefix, boolean sound) { + send(message, prefix, MessageType.INFO, sound); + } + + public void sendInfo(Component message, Prefix prefix) { + send(message, prefix, MessageType.INFO, false); + } + + public void sendInfo(Component message, boolean sound) { + send(message, Prefix.OPENMC, MessageType.INFO, sound); + } + + public void sendInfo(Component message) { + sendInfo(message, true); + } + } + + public class Economy { + /** + * Recupere la balance du joueur + * + * @return la balance du joueur + */ + public double getBalance() { + return EconomyManager.getBalance(getUniqueId()); + } + + /** + * Recupere la balance du joueur formatee avec le symbole de la monnaie + * + * @return la balance du joueur formatee + */ + public String getFormattedBalance() { + return EconomyManager.getFormattedBalance(getUniqueId()); + } + + public void addBalance(double amount) { + EconomyManager.addBalance(getUniqueId(), amount); + } + + public void addBalance(double amount, @Nullable String reason) { + EconomyManager.addBalance(getUniqueId(), amount, reason); + } + + public boolean withdrawBalance(double amount) { + return EconomyManager.withdrawBalance(getUniqueId(), amount); + } + + public boolean withdrawBalance(double amount, @Nullable String reason) { + return EconomyManager.withdrawBalance(getUniqueId(), amount, reason); + } + + public void setBalance(double amount) { + EconomyManager.setBalance(getUniqueId(), amount); + } + + public boolean pay(UUID targetUUID, double amount, @Nullable String reason) { + return EconomyManager.transferBalance(getUniqueId(), targetUUID, amount, reason); + } + } + + public class City { + @Nullable + public fr.openmc.core.features.city.City getCity() { + return CityManager.getCity(player.getUniqueId()); + } + + public boolean hasCity() { + return getCity() != null; + } + } +} diff --git a/src/main/java/fr/openmc/api/entity/player/OMCPlayerParameterType.java b/src/main/java/fr/openmc/api/entity/player/OMCPlayerParameterType.java new file mode 100644 index 000000000..d1ca280d3 --- /dev/null +++ b/src/main/java/fr/openmc/api/entity/player/OMCPlayerParameterType.java @@ -0,0 +1,24 @@ +package fr.openmc.api.entity.player; + +import org.jetbrains.annotations.NotNull; +import revxrsal.commands.autocomplete.SuggestionProvider; +import revxrsal.commands.bukkit.actor.BukkitCommandActor; +import revxrsal.commands.bukkit.parameters.PlayerParameterType; +import revxrsal.commands.node.ExecutionContext; +import revxrsal.commands.parameter.ParameterType; +import revxrsal.commands.stream.MutableStringStream; + +public class OMCPlayerParameterType implements ParameterType { + + private final PlayerParameterType delegate = new PlayerParameterType(false); + + @Override + public OMCPlayer parse(@NotNull MutableStringStream input, @NotNull ExecutionContext context) { + return OMCPlayer.of(delegate.parse(input, context)); + } + + @Override + public @NotNull SuggestionProvider defaultSuggestions() { + return delegate.defaultSuggestions(); + } +} diff --git a/src/main/java/fr/openmc/api/entity/player/OMCPlayerSenderResolver.java b/src/main/java/fr/openmc/api/entity/player/OMCPlayerSenderResolver.java new file mode 100644 index 000000000..6b9be5406 --- /dev/null +++ b/src/main/java/fr/openmc/api/entity/player/OMCPlayerSenderResolver.java @@ -0,0 +1,20 @@ +package fr.openmc.api.entity.player; + +import org.jetbrains.annotations.NotNull; +import revxrsal.commands.bukkit.actor.BukkitCommandActor; +import revxrsal.commands.command.CommandParameter; +import revxrsal.commands.command.ExecutableCommand; +import revxrsal.commands.process.SenderResolver; + +public class OMCPlayerSenderResolver implements SenderResolver { + + @Override + public boolean isSenderType(@NotNull CommandParameter parameter) { + return parameter.type() == OMCPlayer.class; + } + + @Override + public @NotNull Object getSender(@NotNull Class customSenderType, @NotNull BukkitCommandActor actor, @NotNull ExecutableCommand command) { + return OMCPlayer.of(actor.requirePlayer()); + } +} diff --git a/src/main/java/fr/openmc/core/CommandsManager.java b/src/main/java/fr/openmc/core/CommandsManager.java index d5febf6e8..2ad8693cf 100644 --- a/src/main/java/fr/openmc/core/CommandsManager.java +++ b/src/main/java/fr/openmc/core/CommandsManager.java @@ -1,6 +1,9 @@ package fr.openmc.core; import fr.openmc.api.cooldown.CooldownInterceptor; +import fr.openmc.api.entity.player.OMCPlayer; +import fr.openmc.api.entity.player.OMCPlayerParameterType; +import fr.openmc.api.entity.player.OMCPlayerSenderResolver; import fr.openmc.core.commands.debug.ChronometerCommand; import fr.openmc.core.commands.debug.CustomItemCommand; import fr.openmc.core.commands.debug.ToastCommand; @@ -14,7 +17,8 @@ import fr.openmc.core.registry.mobs.commands.CustomMobsCommands; import lombok.Getter; import revxrsal.commands.Lamp; -import revxrsal.commands.bukkit.BukkitLamp; +import revxrsal.commands.bukkit.BukkitLampConfig; +import revxrsal.commands.bukkit.actor.BukkitCommandActor; /** * Enregistrement des commandes globales du plugin. @@ -28,8 +32,12 @@ public class CommandsManager { * Initialise le handler de commandes et enregistre les commandes. */ public static void init() { - handler = BukkitLamp.builder(OMCPlugin.getInstance()) + handler = Lamp.builder() + .senderResolver(new OMCPlayerSenderResolver()) + .accept(BukkitLampConfig.createDefault(OMCPlugin.getInstance())) .commandCondition(new CooldownInterceptor()) + .parameterTypes(builder -> + builder.addParameterType(OMCPlayer.class, new OMCPlayerParameterType())) .build(); registerCommands(); diff --git a/src/main/java/fr/openmc/core/features/economy/commands/BankCommands.java b/src/main/java/fr/openmc/core/features/economy/commands/BankCommands.java index f949b7280..881d76b5d 100644 --- a/src/main/java/fr/openmc/core/features/economy/commands/BankCommands.java +++ b/src/main/java/fr/openmc/core/features/economy/commands/BankCommands.java @@ -1,36 +1,32 @@ package fr.openmc.core.features.economy.commands; -import fr.openmc.core.features.city.City; -import fr.openmc.core.features.city.CityManager; +import fr.openmc.api.entity.player.OMCPlayer; import fr.openmc.core.features.city.sub.bank.CityBankManager; import fr.openmc.core.features.city.sub.milestone.rewards.FeaturesRewards; import fr.openmc.core.features.economy.BankManager; import fr.openmc.core.features.economy.EconomyManager; import fr.openmc.core.features.economy.menu.PersonalBankMenu; -import fr.openmc.core.utils.text.messages.MessageType; -import fr.openmc.core.utils.text.messages.MessagesManager; import fr.openmc.core.utils.text.messages.Prefix; import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; -import org.bukkit.entity.Player; import revxrsal.commands.annotation.*; import revxrsal.commands.bukkit.annotation.CommandPermission; -@Command({ "bank", "banque" }) +@Command({"bank", "banque"}) public class BankCommands { @CommandPlaceholder() @Description("Ouvre le menu de votre banque personelle") - public static void openBankMenu(Player player) { - City playerCity = CityManager.getPlayerCity(player.getUniqueId()); - if (playerCity == null || !FeaturesRewards.hasUnlockFeature(playerCity, FeaturesRewards.Feature.PLAYER_BANK)) { - MessagesManager.sendMessage(player, + public static void openBankMenu(OMCPlayer player) { + if (player.city().hasCity() || !FeaturesRewards.hasUnlockFeature(player.city().getCity(), FeaturesRewards.Feature.PLAYER_BANK)) { + player.message().sendError( TranslationManager.translation( "feature.economy.bank.command.not_unlocked", Component.text(FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.PLAYER_BANK)).color(NamedTextColor.YELLOW) ), - Prefix.CITY, MessageType.ERROR, false); + Prefix.CITY + ); return; } @@ -40,17 +36,17 @@ public static void openBankMenu(Player player) { @Subcommand("deposit") @Description("Ajout de l'argent a votre banque personelle") void deposit( - Player player, + OMCPlayer player, @Named("montant") String input ) { - City playerCity = CityManager.getPlayerCity(player.getUniqueId()); - if (playerCity == null || !FeaturesRewards.hasUnlockFeature(playerCity, FeaturesRewards.Feature.PLAYER_BANK)) { - MessagesManager.sendMessage(player, + if (player.city().hasCity() || !FeaturesRewards.hasUnlockFeature(player.city().getCity(), FeaturesRewards.Feature.PLAYER_BANK)) { + player.message().sendError( TranslationManager.translation( "feature.economy.bank.command.not_unlocked", Component.text(FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.PLAYER_BANK)).color(NamedTextColor.YELLOW) ), - Prefix.CITY, MessageType.ERROR, false); + Prefix.CITY + ); return; } @@ -60,51 +56,51 @@ void deposit( @Subcommand("withdraw") @Description("Retire de l'argent de votre banque personelle") void withdraw( - Player player, + OMCPlayer player, @Named("montant") String input ) { - City playerCity = CityManager.getPlayerCity(player.getUniqueId()); - if (playerCity == null || !FeaturesRewards.hasUnlockFeature(playerCity, FeaturesRewards.Feature.PLAYER_BANK)) { - MessagesManager.sendMessage(player, + if (player.city().hasCity() || !FeaturesRewards.hasUnlockFeature(player.city().getCity(), FeaturesRewards.Feature.PLAYER_BANK)) { + player.message().sendError( TranslationManager.translation( "feature.economy.bank.command.not_unlocked", Component.text(FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.PLAYER_BANK)).color(NamedTextColor.YELLOW) ), - Prefix.CITY, MessageType.ERROR, false); + Prefix.CITY + ); return; } BankManager.withdraw(player.getUniqueId(), input); } - @Subcommand({ "balance", "bal" }) - void withdraw(Player player) { - City playerCity = CityManager.getPlayerCity(player.getUniqueId()); - if (playerCity == null || !FeaturesRewards.hasUnlockFeature(playerCity, FeaturesRewards.Feature.PLAYER_BANK)) { - MessagesManager.sendMessage(player, TranslationManager.translation( - "feature.economy.bank.command.not_unlocked", - Component.text(FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.PLAYER_BANK)).color(NamedTextColor.YELLOW) - ), Prefix.CITY, MessageType.ERROR, false); - return; + @Subcommand({"balance", "bal"}) + void withdraw(OMCPlayer player) { + if (player.city().hasCity() || !FeaturesRewards.hasUnlockFeature(player.city().getCity(), FeaturesRewards.Feature.PLAYER_BANK)) { + player.message().sendError( + TranslationManager.translation( + "feature.economy.bank.command.not_unlocked", + Component.text(FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.PLAYER_BANK)).color(NamedTextColor.YELLOW) + ), Prefix.CITY); } double balance = BankManager.getBankBalance(player.getUniqueId()); - MessagesManager.sendMessage(player, + player.message().sendInfo( TranslationManager.translation( "feature.economy.bank.command.balance", Component.text(EconomyManager.getFormattedSimplifiedNumber(balance)).color(NamedTextColor.LIGHT_PURPLE), Component.text(EconomyManager.getEconomyIcon()) ), - Prefix.BANK, MessageType.INFO, false); + Prefix.BANK + ); } @Subcommand("admin interest apply") @Description("Distribue les intérèts à tout les joueurs et a toute les villes") @CommandPermission("omc.admins.commands.bank.interest.apply") - void applyInterest(Player player) { - MessagesManager.sendMessage(player, TranslationManager.translation("feature.economy.bank.interest.apply.start"), Prefix.BANK, MessageType.INFO, false); + void applyInterest(OMCPlayer player) { + player.message().sendInfo(TranslationManager.translation("feature.economy.bank.interest.apply.start"), Prefix.BANK); BankManager.applyAllPlayerInterests(); CityBankManager.applyAllCityInterests(); - MessagesManager.sendMessage(player, TranslationManager.translation("feature.economy.bank.interest.apply.success"), Prefix.BANK, MessageType.SUCCESS, false); + player.message().sendInfo(TranslationManager.translation("feature.economy.bank.interest.apply.success"), Prefix.BANK); } } diff --git a/src/main/java/fr/openmc/core/features/economy/commands/History.java b/src/main/java/fr/openmc/core/features/economy/commands/History.java index 71a70bc41..12685191c 100644 --- a/src/main/java/fr/openmc/core/features/economy/commands/History.java +++ b/src/main/java/fr/openmc/core/features/economy/commands/History.java @@ -1,8 +1,8 @@ package fr.openmc.core.features.economy.commands; +import fr.openmc.api.entity.player.OMCPlayer; import fr.openmc.core.commands.autocomplete.OnlinePlayerAutoComplete; import fr.openmc.core.features.economy.menu.TransactionsMenu; -import org.bukkit.entity.Player; import revxrsal.commands.annotation.*; import revxrsal.commands.bukkit.annotation.CommandPermission; @@ -12,19 +12,13 @@ public class History { @CommandPermission("omc.commands.money.history") @Cooldown(30) public void history( - Player sender, - @Named("joueur") @Optional @SuggestWith(OnlinePlayerAutoComplete.class) Player target + OMCPlayer sender, + @Named("joueur") @Optional @SuggestWith(OnlinePlayerAutoComplete.class) OMCPlayer target ) { - if (!(sender instanceof Player player)) { return; } - - if (target == null) { - target = player; - } else { - if (!sender.hasPermission("omc.admin.money.history")) { - target = player; - } + if (target == null || !sender.hasPermission("omc.admin.money.history")) { + target = sender; } - new TransactionsMenu(player, target.getUniqueId()).open(); + new TransactionsMenu(sender, target.getUniqueId()); } } diff --git a/src/main/java/fr/openmc/core/features/economy/commands/Money.java b/src/main/java/fr/openmc/core/features/economy/commands/Money.java index e0e6394f9..3093fc569 100644 --- a/src/main/java/fr/openmc/core/features/economy/commands/Money.java +++ b/src/main/java/fr/openmc/core/features/economy/commands/Money.java @@ -1,5 +1,6 @@ package fr.openmc.core.features.economy.commands; +import fr.openmc.api.entity.player.OMCPlayer; import fr.openmc.core.commands.autocomplete.OnlinePlayerAutoComplete; import fr.openmc.core.features.economy.EconomyManager; import fr.openmc.core.utils.text.messages.MessageType; @@ -22,15 +23,13 @@ public class Money { @CommandPlaceholder() public void getMoney( CommandSender sender, - @Named("joueur") @Optional @SuggestWith(OnlinePlayerAutoComplete.class) OfflinePlayer target + @Named("joueur") @Optional @SuggestWith(OnlinePlayerAutoComplete.class) @Default("me") OfflinePlayer target ) { - if (sender instanceof Player player && target == null) { - MessagesManager.sendMessage(player, - TranslationManager.translation( - "feature.economy.money.self", - Component.text(EconomyManager.getFormattedBalance(player.getUniqueId())).color(NamedTextColor.YELLOW) - ), - Prefix.OPENMC, MessageType.INFO, true); + if (sender instanceof OMCPlayer player && target == null) { + player.message().sendInfo(TranslationManager.translation( + "feature.economy.money.self", + Component.text(player.economy().getFormattedBalance()).color(NamedTextColor.YELLOW) + )); } else { if (target == null) { MessagesManager.sendMessage(sender, TranslationManager.translation("messages.global.missing_arg"), Prefix.OPENMC, MessageType.ERROR, true); diff --git a/src/main/java/fr/openmc/core/features/economy/commands/Pay.java b/src/main/java/fr/openmc/core/features/economy/commands/Pay.java index 761db1126..4eb77447c 100644 --- a/src/main/java/fr/openmc/core/features/economy/commands/Pay.java +++ b/src/main/java/fr/openmc/core/features/economy/commands/Pay.java @@ -1,14 +1,11 @@ package fr.openmc.core.features.economy.commands; +import fr.openmc.api.entity.player.OMCPlayer; import fr.openmc.core.commands.autocomplete.OnlinePlayerAutoComplete; import fr.openmc.core.features.economy.EconomyManager; -import fr.openmc.core.utils.text.messages.MessageType; -import fr.openmc.core.utils.text.messages.MessagesManager; -import fr.openmc.core.utils.text.messages.Prefix; import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; -import org.bukkit.entity.Player; import revxrsal.commands.annotation.*; import revxrsal.commands.bukkit.annotation.CommandPermission; @@ -18,31 +15,27 @@ public class Pay { @Description("Permet de payer un joueur") @CommandPermission("omc.commands.pay") public void pay( - Player player, - @Named("joueur") @SuggestWith(OnlinePlayerAutoComplete.class) Player target, + OMCPlayer player, + @Named("joueur") @SuggestWith(OnlinePlayerAutoComplete.class) OMCPlayer target, @Named("montant") @Range(min = 1) double amount ) { - if(player == target) { - MessagesManager.sendMessage(player, TranslationManager.translation("feature.economy.pay.self"), Prefix.OPENMC, MessageType.ERROR, true); + if (player.equals(target)) { + player.message().sendError(TranslationManager.translation("feature.economy.pay.self")); return; } - if(EconomyManager.transferBalance(player.getUniqueId(), target.getUniqueId(), amount, "Paiement de " + player.getName() + " à " + target.getName())) { - MessagesManager.sendMessage(player, - TranslationManager.translation( - "feature.economy.pay.success", - Component.text(target.getName()).color(NamedTextColor.YELLOW), - Component.text(EconomyManager.getFormattedNumber(amount)).color(NamedTextColor.YELLOW) - ), - Prefix.OPENMC, MessageType.SUCCESS, true); - MessagesManager.sendMessage(target, - TranslationManager.translation( - "feature.economy.pay.received", - Component.text(EconomyManager.getFormattedNumber(amount)).color(NamedTextColor.YELLOW), - Component.text(player.getName()).color(NamedTextColor.YELLOW) - ), - Prefix.OPENMC, MessageType.INFO, true); + if (player.economy().pay(target.getUniqueId(), amount, String.format("Paiement de %s à %s", player.getName(), target.getName()))) { + player.message().sendSuccess(TranslationManager.translation( + "feature.economy.pay.success", + Component.text(target.getName()).color(NamedTextColor.YELLOW), + Component.text(EconomyManager.getFormattedNumber(amount)).color(NamedTextColor.YELLOW) + )); + target.message().sendInfo(TranslationManager.translation( + "feature.economy.pay.received", + Component.text(EconomyManager.getFormattedNumber(amount)).color(NamedTextColor.YELLOW), + Component.text(player.getName()).color(NamedTextColor.YELLOW) + )); } else { - MessagesManager.sendMessage(player, TranslationManager.translation("feature.economy.pay.not_enough"), Prefix.OPENMC, MessageType.ERROR, true); + player.message().sendError(TranslationManager.translation("feature.economy.pay.not_enough")); } } diff --git a/src/main/java/fr/openmc/core/features/mainmenu/menus/Page2.java b/src/main/java/fr/openmc/core/features/mainmenu/menus/Page2.java index ec3573204..032a40215 100644 --- a/src/main/java/fr/openmc/core/features/mainmenu/menus/Page2.java +++ b/src/main/java/fr/openmc/core/features/mainmenu/menus/Page2.java @@ -1,6 +1,7 @@ package fr.openmc.core.features.mainmenu.menus; import dev.lone.itemsadder.api.FontImages.FontImageWrapper; +import fr.openmc.api.entity.player.OMCPlayer; import fr.openmc.api.packetmenulib.PacketMenuLib; import fr.openmc.api.packetmenulib.events.InventoryClickEvent; import fr.openmc.api.packetmenulib.events.InventoryCloseEvent; @@ -214,13 +215,14 @@ public void onInventoryClick(InventoryClickEvent event) { MessagesManager.sendMessage(player, Component.text(FontImageWrapper.replaceFontImages(rawMessage), NamedTextColor.RED), Prefix.OPENMC, MessageType.INFO, true); } else if (BANK_SLOTS.contains(slot)) { - Bukkit.getScheduler().runTask(OMCPlugin.getInstance(), () -> BankCommands.openBankMenu(player)); + Bukkit.getScheduler().runTask(OMCPlugin.getInstance(), () -> BankCommands.openBankMenu(OMCPlayer.of(player))); } else if (COMING_SOON_1_SLOTS.contains(slot) || COMING_SOON_2_SLOTS.contains(slot) || COMING_SOON_3_SLOTS.contains(slot) || COMING_SOON_4_SLOTS.contains(slot) || COMING_SOON_5_SLOTS.contains(slot)) { PacketMenuLib.closeMenu(player); MessagesManager.sendMessage(player, TranslationManager.translation("feature.mainmenu.message.coming_soon") - .color(NamedTextColor.GOLD), Prefix.OPENMC, MessageType.INFO, true);; + .color(NamedTextColor.GOLD), Prefix.OPENMC, MessageType.INFO, true); + ; } }