Don't allow players to buy the same prize twice

This commit is contained in:
Teriuihi 2023-09-24 05:15:42 +02:00
parent 6de8d07e34
commit bbd4c6d99b

View File

@ -20,10 +20,18 @@ public class PrizesWindow extends GUI {
private final Logger logger; private final Logger logger;
private final ItemStack alreadyPurchasedItem = new ItemStack(Material.BARRIER, 1); private final ItemStack alreadyPurchasedItem = new ItemStack(Material.BARRIER, 1);
private final List<Prize> prizes;
private final Player player;
public PrizesWindow(Player player, Logger logger, List<Prize> prizes) { public PrizesWindow(Player player, Logger logger, List<Prize> prizes) {
super(InventoryType.CHEST, MiniMessage.miniMessage().deserialize(Messages.GUI.PRIZES_GUI_NAME)); super(InventoryType.CHEST, MiniMessage.miniMessage().deserialize(Messages.GUI.PRIZES_GUI_NAME));
this.logger = logger; this.logger = logger;
this.prizes = prizes;
this.player = player;
updateGUI();
}
private void updateGUI() {
int i = 0; int i = 0;
for (Prize prize : prizes) { for (Prize prize : prizes) {
if (player.hasPermission(prize.permission())) if (player.hasPermission(prize.permission()))
@ -39,6 +47,10 @@ public class PrizesWindow extends GUI {
} }
private void buy(Player player, Prize prize) { private void buy(Player player, Prize prize) {
if (player.hasPermission(prize.permission())) {
alreadyPurchased(player, prize);
return;
}
UUID uuid = player.getUniqueId(); UUID uuid = player.getUniqueId();
PointsManagement pointsManagement = PointsManagement.getInstance(); PointsManagement pointsManagement = PointsManagement.getInstance();
int playerPoints = pointsManagement.getPoints(uuid); int playerPoints = pointsManagement.getPoints(uuid);
@ -63,7 +75,9 @@ public class PrizesWindow extends GUI {
Placeholder.parsed("remaining_points", String.valueOf(remainingPoints)), Placeholder.parsed("remaining_points", String.valueOf(remainingPoints)),
Placeholder.parsed("prize", prize.name()) Placeholder.parsed("prize", prize.name())
)); ));
player.getServer().dispatchCommand(player.getServer().getConsoleSender(), prize.command().replace("<player>", player.getName())); player.getServer().dispatchCommand(player.getServer().getConsoleSender(), prize.command().replaceAll("<user>", player.getName()));
updateGUI();
player.updateInventory();
} }
@Override @Override