mirror of
https://github.com/HibiscusMC/HMCCosmetics.git
synced 2025-12-29 11:59:21 +00:00
internal rework of permissions and commands
This commit is contained in:
@@ -38,6 +38,11 @@ public class CosmeticCommand implements CommandExecutor {
|
||||
// Console
|
||||
return true;
|
||||
}
|
||||
if (!sender.hasPermission("hmccosmetics.cmd.default")) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
return true;
|
||||
}
|
||||
|
||||
CosmeticUser user = CosmeticUsers.getUser(((Player) sender).getUniqueId());
|
||||
Menu menu = Menus.getMenu(Settings.getDefaultMenu());
|
||||
|
||||
@@ -54,225 +59,244 @@ public class CosmeticCommand implements CommandExecutor {
|
||||
menu.openMenu(user);
|
||||
return true;
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("reload")) {
|
||||
if (!sender.hasPermission("HMCCosmetics.reload") || !sender.isOp()) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
return true;
|
||||
}
|
||||
HMCCosmeticsPlugin.setup();
|
||||
MessagesUtil.sendMessage(sender, "reloaded");
|
||||
return true;
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("apply")) {
|
||||
Player player = null;
|
||||
Cosmetic cosmetic;
|
||||
Player player = sender instanceof Player ? (Player) sender : null;
|
||||
|
||||
if (sender instanceof Player) player = ((Player) sender).getPlayer();
|
||||
if (args.length >= 3) player = Bukkit.getPlayer(args[2]);
|
||||
|
||||
if (args.length == 1) {
|
||||
MessagesUtil.sendMessage(player, "not-enough-args");
|
||||
return true;
|
||||
}
|
||||
|
||||
cosmetic = Cosmetics.getCosmetic(args[1]);
|
||||
|
||||
if (cosmetic == null) {
|
||||
MessagesUtil.sendMessage(sender, "invalid-cosmetic");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (player == null) {
|
||||
MessagesUtil.sendMessage(sender, "invalid-player");
|
||||
return true;
|
||||
}
|
||||
|
||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||
|
||||
if (!user.canEquipCosmetic(cosmetic)) {
|
||||
MessagesUtil.sendMessage(player, "no-cosmetic-permission");
|
||||
return true;
|
||||
}
|
||||
|
||||
TagResolver placeholders =
|
||||
TagResolver.resolver(Placeholder.parsed("cosmetic", cosmetic.getId()),
|
||||
TagResolver.resolver(Placeholder.parsed("player", player.getName())),
|
||||
TagResolver.resolver(Placeholder.parsed("cosmeticslot", cosmetic.getSlot().name())));
|
||||
|
||||
MessagesUtil.sendMessage(player, "equip-cosmetic", placeholders);
|
||||
|
||||
user.addPlayerCosmetic(cosmetic);
|
||||
user.updateCosmetic(cosmetic.getSlot());
|
||||
return true;
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("unapply")) {
|
||||
Player player = null;
|
||||
CosmeticSlot cosmeticSlot = null;
|
||||
|
||||
if (sender instanceof Player) player = ((Player) sender).getPlayer();
|
||||
if (args.length >= 3) player = Bukkit.getPlayer(args[2]);
|
||||
|
||||
if (!EnumUtils.isValidEnum(CosmeticSlot.class, args[1].toUpperCase())) {
|
||||
MessagesUtil.sendMessage(sender, "invalid-slot");
|
||||
return true;
|
||||
}
|
||||
cosmeticSlot = CosmeticSlot.valueOf(args[1].toUpperCase());
|
||||
|
||||
if (player == null) {
|
||||
MessagesUtil.sendMessage(sender, "invalid-player");
|
||||
return true;
|
||||
}
|
||||
|
||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||
|
||||
if (user.getCosmetic(cosmeticSlot) == null) {
|
||||
MessagesUtil.sendMessage(sender, "no-cosmetic-slot");
|
||||
return true;
|
||||
}
|
||||
|
||||
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())));
|
||||
|
||||
MessagesUtil.sendMessage(player, "unequip-cosmetic", placeholders);
|
||||
|
||||
user.removeCosmeticSlot(cosmeticSlot);
|
||||
user.updateCosmetic(cosmeticSlot);
|
||||
return true;
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("wardrobe")) {
|
||||
Player player = null;
|
||||
|
||||
if (sender instanceof Player) player = ((Player) sender).getPlayer();
|
||||
if (args.length >= 2) player = Bukkit.getPlayer(args[1]);
|
||||
|
||||
if (!player.hasPermission("HMCCosmetic.wardrobe")) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (player == null) {
|
||||
MessagesUtil.sendMessage(sender, "invalid-player");
|
||||
return true;
|
||||
}
|
||||
|
||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||
|
||||
user.toggleWardrobe();
|
||||
return true;
|
||||
}
|
||||
// cosmetic menu exampleMenu playerName
|
||||
else if (args[0].equalsIgnoreCase("menu")) {
|
||||
if (args.length == 1) return true;
|
||||
Menu menu = Menus.getMenu(args[1]);
|
||||
Player player = null;
|
||||
|
||||
if (sender instanceof Player) player = ((Player) sender).getPlayer();
|
||||
if (args.length >= 3) player = Bukkit.getPlayer(args[2]);
|
||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||
|
||||
if (user == null) {
|
||||
MessagesUtil.sendMessage(sender, "invalid-player");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (menu == null) {
|
||||
MessagesUtil.sendMessage(sender, "invalid-menu");
|
||||
return true;
|
||||
}
|
||||
|
||||
menu.openMenu(user);
|
||||
return true;
|
||||
}
|
||||
|
||||
else if (args[0].equalsIgnoreCase("dataclear")) {
|
||||
if (args.length == 1) return true;
|
||||
OfflinePlayer player = Bukkit.getOfflinePlayer(args[1]);
|
||||
if (player == null) return true;
|
||||
if (!sender.hasPermission("HMCCosmetic.dataclear") && !sender.isOp()) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
return true;
|
||||
}
|
||||
Database.clearData(player.getUniqueId());
|
||||
sender.sendMessage("Cleared data for " + player.getName());
|
||||
return true;
|
||||
}
|
||||
|
||||
else if (args[0].equalsIgnoreCase("dye") && args.length >= 2) {
|
||||
Player player = sender instanceof Player ? (Player) sender : null;
|
||||
if (player == null) return true;
|
||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||
if (user == null) return true;
|
||||
if (!sender.hasPermission("HMCCosmetic.dye") && !sender.isOp()) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
return true;
|
||||
}
|
||||
|
||||
CosmeticSlot slot = CosmeticSlot.valueOf(args[1]);
|
||||
Cosmetic cosmetic = user.getCosmetic(slot);
|
||||
|
||||
if (args.length >= 3) {
|
||||
if (!args[2].contains("#") || args[2].isEmpty()) {
|
||||
MessagesUtil.sendMessage(player, "invalid-color");
|
||||
String firstArgs = args[0].toLowerCase();
|
||||
switch (firstArgs) {
|
||||
case ("reload") -> {
|
||||
if (!sender.hasPermission("HMCCosmetics.cmd.reload") || !sender.isOp()) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
return true;
|
||||
}
|
||||
Color color = ServerUtils.hex2Rgb(args[2]);
|
||||
if (color == null) {
|
||||
MessagesUtil.sendMessage(player, "invalid-color");
|
||||
HMCCosmeticsPlugin.setup();
|
||||
MessagesUtil.sendMessage(sender, "reloaded");
|
||||
return true;
|
||||
}
|
||||
case ("apply") -> {
|
||||
if (!sender.hasPermission("hmccosmetics.cmd.apply")) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
return true;
|
||||
}
|
||||
user.addPlayerCosmetic(cosmetic, color); // #FFFFFF
|
||||
} else {
|
||||
DyeMenu.openMenu(user, cosmetic);
|
||||
}
|
||||
}
|
||||
Cosmetic cosmetic;
|
||||
|
||||
else if (args[0].equalsIgnoreCase("setlocation")) {
|
||||
if (sender instanceof Player) player = ((Player) sender).getPlayer();
|
||||
if (args.length >= 3) player = Bukkit.getPlayer(args[2]);
|
||||
|
||||
Player player = sender instanceof Player ? (Player) sender : null;
|
||||
if (player == null) return true;
|
||||
if (args.length == 1) {
|
||||
MessagesUtil.sendMessage(player, "not-enough-args");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args.length < 2) {
|
||||
MessagesUtil.sendMessage(player, "not-enough-args");
|
||||
cosmetic = Cosmetics.getCosmetic(args[1]);
|
||||
|
||||
if (cosmetic == null) {
|
||||
MessagesUtil.sendMessage(sender, "invalid-cosmetic");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (player == null) {
|
||||
MessagesUtil.sendMessage(sender, "invalid-player");
|
||||
return true;
|
||||
}
|
||||
|
||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||
|
||||
if (!user.canEquipCosmetic(cosmetic)) {
|
||||
MessagesUtil.sendMessage(player, "no-cosmetic-permission");
|
||||
return true;
|
||||
}
|
||||
|
||||
TagResolver placeholders =
|
||||
TagResolver.resolver(Placeholder.parsed("cosmetic", cosmetic.getId()),
|
||||
TagResolver.resolver(Placeholder.parsed("player", player.getName())),
|
||||
TagResolver.resolver(Placeholder.parsed("cosmeticslot", cosmetic.getSlot().name())));
|
||||
|
||||
MessagesUtil.sendMessage(player, "equip-cosmetic", placeholders);
|
||||
|
||||
user.addPlayerCosmetic(cosmetic);
|
||||
user.updateCosmetic(cosmetic.getSlot());
|
||||
return true;
|
||||
}
|
||||
case ("unapply") -> {
|
||||
if (!sender.hasPermission("hmccosmetics.cmd.unapply")) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
return true;
|
||||
}
|
||||
if (args.length == 1) {
|
||||
MessagesUtil.sendMessage(player, "not-enough-args");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args[1].equalsIgnoreCase("wardrobelocation")) {
|
||||
WardrobeSettings.setWardrobeLocation(player.getLocation());
|
||||
MessagesUtil.sendMessage(player, "set-wardrobe-location");
|
||||
CosmeticSlot cosmeticSlot = null;
|
||||
|
||||
if (sender instanceof Player) player = ((Player) sender).getPlayer();
|
||||
if (args.length >= 3) player = Bukkit.getPlayer(args[2]);
|
||||
|
||||
if (!EnumUtils.isValidEnum(CosmeticSlot.class, args[1].toUpperCase())) {
|
||||
MessagesUtil.sendMessage(sender, "invalid-slot");
|
||||
return true;
|
||||
}
|
||||
cosmeticSlot = CosmeticSlot.valueOf(args[1].toUpperCase());
|
||||
|
||||
if (player == null) {
|
||||
MessagesUtil.sendMessage(sender, "invalid-player");
|
||||
return true;
|
||||
}
|
||||
|
||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||
|
||||
if (user.getCosmetic(cosmeticSlot) == null) {
|
||||
MessagesUtil.sendMessage(sender, "no-cosmetic-slot");
|
||||
return true;
|
||||
}
|
||||
|
||||
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())));
|
||||
|
||||
MessagesUtil.sendMessage(player, "unequip-cosmetic", placeholders);
|
||||
|
||||
user.removeCosmeticSlot(cosmeticSlot);
|
||||
user.updateCosmetic(cosmeticSlot);
|
||||
return true;
|
||||
}
|
||||
case ("wardrobe") -> {
|
||||
if (sender instanceof Player) player = ((Player) sender).getPlayer();
|
||||
if (args.length >= 2) player = Bukkit.getPlayer(args[1]);
|
||||
|
||||
if (args[1].equalsIgnoreCase("viewerlocation")) {
|
||||
WardrobeSettings.setViewerLocation(player.getLocation());
|
||||
MessagesUtil.sendMessage(player, "set-wardrobe-viewing");
|
||||
if (!sender.hasPermission("hmccosmetics.cmd.wardrobe")) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (player == null) {
|
||||
MessagesUtil.sendMessage(sender, "invalid-player");
|
||||
return true;
|
||||
}
|
||||
|
||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||
|
||||
user.toggleWardrobe();
|
||||
return true;
|
||||
}
|
||||
// cosmetic menu exampleMenu playerName
|
||||
case ("menu") -> {
|
||||
if (args.length == 1) return true;
|
||||
if (!sender.hasPermission("hmccosmetics.cmd.menu")) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
return true;
|
||||
}
|
||||
Menu menu = Menus.getMenu(args[1]);
|
||||
|
||||
if (args[1].equalsIgnoreCase("leavelocation")) {
|
||||
WardrobeSettings.setLeaveLocation(player.getLocation());
|
||||
MessagesUtil.sendMessage(player, "set-wardrobe-leaving");
|
||||
if (sender instanceof Player) player = ((Player) sender).getPlayer();
|
||||
if (args.length >= 3) player = Bukkit.getPlayer(args[2]);
|
||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||
|
||||
if (user == null) {
|
||||
MessagesUtil.sendMessage(sender, "invalid-player");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (menu == null) {
|
||||
MessagesUtil.sendMessage(sender, "invalid-menu");
|
||||
return true;
|
||||
}
|
||||
|
||||
menu.openMenu(user);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
else if (args[0].equalsIgnoreCase("dump") && args.length == 1) {
|
||||
Player player = sender instanceof Player ? (Player) sender : null;
|
||||
if (player == null) return true;
|
||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||
if (user == null) return true;
|
||||
if (!sender.hasPermission("HMCCosmetic.dump") && !sender.isOp()) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
case ("dataclear") -> {
|
||||
if (args.length == 1) return true;
|
||||
OfflinePlayer selectedPlayer = Bukkit.getOfflinePlayer(args[1]);
|
||||
if (selectedPlayer == null) return true;
|
||||
if (!sender.hasPermission("hmccosmetics.cmd.dataclear") && !sender.isOp()) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
return true;
|
||||
}
|
||||
Database.clearData(selectedPlayer.getUniqueId());
|
||||
sender.sendMessage("Cleared data for " + selectedPlayer.getName());
|
||||
return true;
|
||||
}
|
||||
player.sendMessage("Passengers -> " + player.getPassengers());
|
||||
if (user.hasCosmeticInSlot(CosmeticSlot.BACKPACK)) {
|
||||
player.sendMessage("Backpack Location -> " + user.getBackpackEntity().getLocation());
|
||||
case ("dye") -> {
|
||||
if (player == null) return true;
|
||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||
if (user == null) return true;
|
||||
if (!sender.hasPermission("hmccosmetics.cmd.dye") && !sender.isOp()) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args.length == 1) {
|
||||
MessagesUtil.sendMessage(player, "not-enough-args");
|
||||
return true;
|
||||
}
|
||||
|
||||
CosmeticSlot slot = CosmeticSlot.valueOf(args[1]);
|
||||
Cosmetic cosmetic = user.getCosmetic(slot);
|
||||
|
||||
if (args.length >= 3) {
|
||||
if (!args[2].contains("#") || args[2].isEmpty()) {
|
||||
MessagesUtil.sendMessage(player, "invalid-color");
|
||||
return true;
|
||||
}
|
||||
Color color = ServerUtils.hex2Rgb(args[2]);
|
||||
if (color == null) {
|
||||
MessagesUtil.sendMessage(player, "invalid-color");
|
||||
return true;
|
||||
}
|
||||
user.addPlayerCosmetic(cosmetic, color); // #FFFFFF
|
||||
} else {
|
||||
DyeMenu.openMenu(user, cosmetic);
|
||||
}
|
||||
}
|
||||
case ("setlocation") -> {
|
||||
if (!sender.hasPermission("hmccosmetics.cmd.setlocation")) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (player == null) return true;
|
||||
|
||||
if (args.length < 2) {
|
||||
MessagesUtil.sendMessage(player, "not-enough-args");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args[1].equalsIgnoreCase("wardrobelocation")) {
|
||||
WardrobeSettings.setWardrobeLocation(player.getLocation());
|
||||
MessagesUtil.sendMessage(player, "set-wardrobe-location");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args[1].equalsIgnoreCase("viewerlocation")) {
|
||||
WardrobeSettings.setViewerLocation(player.getLocation());
|
||||
MessagesUtil.sendMessage(player, "set-wardrobe-viewing");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args[1].equalsIgnoreCase("leavelocation")) {
|
||||
WardrobeSettings.setLeaveLocation(player.getLocation());
|
||||
MessagesUtil.sendMessage(player, "set-wardrobe-leaving");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
case ("dump") -> {
|
||||
if (player == null) return true;
|
||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||
if (user == null) return true;
|
||||
if (!sender.hasPermission("HMCCosmetic.cmd.dump") && !sender.isOp()) {
|
||||
MessagesUtil.sendMessage(sender, "no-permission");
|
||||
return true;
|
||||
}
|
||||
player.sendMessage("Passengers -> " + player.getPassengers());
|
||||
if (user.hasCosmeticInSlot(CosmeticSlot.BACKPACK)) {
|
||||
player.sendMessage("Backpack Location -> " + user.getBackpackEntity().getLocation());
|
||||
}
|
||||
player.sendMessage("Cosmetics -> " + user.getCosmetic());
|
||||
player.sendMessage("EntityId -> " + player.getEntityId());
|
||||
return true;
|
||||
}
|
||||
player.sendMessage("Cosmetics -> " + user.getCosmetic());
|
||||
player.sendMessage("EntityId -> " + player.getEntityId());
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -28,14 +28,14 @@ public class CosmeticCommandTabComplete implements TabCompleter {
|
||||
List<String> finalCompletitons = new ArrayList<>();
|
||||
|
||||
if (args.length == 1) {
|
||||
completions.add("apply");
|
||||
completions.add("wardrobe");
|
||||
completions.add("unapply");
|
||||
completions.add("menu");
|
||||
completions.add("reload");
|
||||
completions.add("dataclear");
|
||||
completions.add("dye");
|
||||
completions.add("setlocation");
|
||||
if (hasPermission(sender, "hmccosmetics.cmd.apply")) completions.add("apply");
|
||||
if (hasPermission(sender, "hmccosmetics.cmd.unapply")) completions.add("unapply");
|
||||
if (hasPermission(sender, "hmccosmetics.cmd.menu")) completions.add("menu");
|
||||
if (hasPermission(sender, "hmccosmetics.cmd.reload")) completions.add("reload");
|
||||
if (hasPermission(sender, "hmccosmetics.cmd.wardrobe")) completions.add("wardrobe");
|
||||
if (hasPermission(sender, "hmccosmetics.cmd.dataclear")) completions.add("dataclear");
|
||||
if (hasPermission(sender, "hmccosmetics.cmd.dye")) completions.add("dye");
|
||||
if (hasPermission(sender, "hmccosmetics.cmd.setlocation")) completions.add("setlocation");
|
||||
|
||||
StringUtil.copyPartialMatches(args[0], completions, finalCompletitons);
|
||||
}
|
||||
@@ -50,8 +50,8 @@ public class CosmeticCommandTabComplete implements TabCompleter {
|
||||
completions.addAll(applyCommandComplete(user, args));
|
||||
}
|
||||
case "unapply" -> {
|
||||
for (CosmeticSlot slot : CosmeticSlot.values()) {
|
||||
completions.add(slot.toString().toUpperCase());
|
||||
for (Cosmetic cosmetic : user.getCosmetic()) {
|
||||
completions.add(cosmetic.getSlot().toString().toUpperCase());
|
||||
}
|
||||
}
|
||||
case "menu" -> {
|
||||
@@ -115,4 +115,10 @@ public class CosmeticCommandTabComplete implements TabCompleter {
|
||||
}
|
||||
return completitions;
|
||||
}
|
||||
|
||||
private boolean hasPermission(CommandSender sender, String permission) {
|
||||
if (sender.isOp()) return true;
|
||||
if (sender.hasPermission(permission)) return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user