9
0
mirror of https://github.com/HibiscusMC/HMCCosmetics.git synced 2025-12-30 04:19:28 +00:00

feat: add all to unapply command

This commit is contained in:
LoJoSho
2023-03-01 10:45:06 -06:00
parent 2ecc86fc7b
commit 981c6155e7
3 changed files with 32 additions and 18 deletions

View File

@@ -28,6 +28,9 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.Set;
public class CosmeticCommand implements CommandExecutor {
// cosmetics apply cosmetics playerName
@@ -148,19 +151,11 @@ public class CosmeticCommand implements CommandExecutor {
return true;
}
CosmeticSlot cosmeticSlot;
if (sender instanceof Player) player = ((Player) sender).getPlayer();
if (sender.hasPermission("hmccosmetics.cmd.unapply.other")) {
if (args.length >= 3) player = Bukkit.getPlayer(args[2]);
}
if (!EnumUtils.isValidEnum(CosmeticSlot.class, args[1].toUpperCase())) {
if (!silent) MessagesUtil.sendMessage(sender, "invalid-slot");
return true;
}
cosmeticSlot = CosmeticSlot.valueOf(args[1].toUpperCase());
if (player == null) {
if (!silent) MessagesUtil.sendMessage(sender, "invalid-player");
return true;
@@ -168,20 +163,34 @@ public class CosmeticCommand implements CommandExecutor {
CosmeticUser user = CosmeticUsers.getUser(player);
if (user.getCosmetic(cosmeticSlot) == null) {
if (!silent) MessagesUtil.sendMessage(sender, "no-cosmetic-slot");
return true;
Set<CosmeticSlot> cosmeticSlots;
if (args[1].equalsIgnoreCase("all")) {
cosmeticSlots = user.getSlotsWithCosmetics();
} else {
if (!EnumUtils.isValidEnum(CosmeticSlot.class, args[1].toUpperCase())) {
if (!silent) MessagesUtil.sendMessage(sender, "invalid-slot");
return true;
}
cosmeticSlots = Set.of(CosmeticSlot.valueOf(args[1].toUpperCase()));
}
TagResolver placeholders =
TagResolver.resolver(Placeholder.parsed("cosmetic", user.getCosmetic(cosmeticSlot).getId()),
TagResolver.resolver(Placeholder.parsed("player", player.getName())),
TagResolver.resolver(Placeholder.parsed("cosmeticslot", cosmeticSlot.name())));
for (CosmeticSlot cosmeticSlot : cosmeticSlots) {
if (user.getCosmetic(cosmeticSlot) == null) {
if (!silent) MessagesUtil.sendMessage(sender, "no-cosmetic-slot");
continue;
}
if (!silent) MessagesUtil.sendMessage(player, "unequip-cosmetic", placeholders);
TagResolver placeholders =
TagResolver.resolver(Placeholder.parsed("cosmetic", user.getCosmetic(cosmeticSlot).getId()),
TagResolver.resolver(Placeholder.parsed("player", player.getName())),
TagResolver.resolver(Placeholder.parsed("cosmeticslot", cosmeticSlot.name())));
user.removeCosmeticSlot(cosmeticSlot);
user.updateCosmetic(cosmeticSlot);
if (!silent) MessagesUtil.sendMessage(player, "unequip-cosmetic", placeholders);
user.removeCosmeticSlot(cosmeticSlot);
user.updateCosmetic(cosmeticSlot);
}
return true;
}
case ("wardrobe") -> {

View File

@@ -59,6 +59,7 @@ public class CosmeticCommandTabComplete implements TabCompleter {
for (Cosmetic cosmetic : user.getCosmetic()) {
completions.add(cosmetic.getSlot().toString().toUpperCase());
}
completions.add("ALL");
}
case "menu" -> {
for (Menu menu : Menus.getMenu()) {

View File

@@ -151,6 +151,10 @@ public class CosmeticUser {
return playerCosmetics.containsKey(slot);
}
public Set<CosmeticSlot> getSlotsWithCosmetics() {
return Set.copyOf(playerCosmetics.keySet());
}
public void updateCosmetic(CosmeticSlot slot) {
if (getCosmetic(slot) == null) {
return;