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);
+ ;
}
}