diff --git a/build.gradle.kts b/build.gradle.kts index 32373940..9ac08224 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -213,7 +213,7 @@ bukkit { register("hmccosmetics.cmd.emote.other") { default = BukkitPluginDescription.Permission.Default.OP } - register("hmccosmetics.cmd.setlocation") { + register("hmccosmetics.cmd.setwardrobesetting") { default = BukkitPluginDescription.Permission.Default.OP } register("hmccosmetics.cmd.dataclear") { diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/command/CosmeticCommand.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/command/CosmeticCommand.java index e0df47de..71184d71 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/command/CosmeticCommand.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/command/CosmeticCommand.java @@ -307,8 +307,8 @@ public class CosmeticCommand implements CommandExecutor { DyeMenu.openMenu(user, cosmetic); } } - case ("setlocation") -> { - if (!sender.hasPermission("hmccosmetics.cmd.setlocation")) { + case ("setwardrobesetting") -> { + if (!sender.hasPermission("hmccosmetics.cmd.setwardrobesetting")) { if (!silent) MessagesUtil.sendMessage(sender, "no-permission"); return true; } @@ -344,6 +344,19 @@ public class CosmeticCommand implements CommandExecutor { if (!silent) MessagesUtil.sendMessage(player, "set-wardrobe-leaving"); return true; } + + if (args.length >= 4) { + if (args[2].equalsIgnoreCase("permission")) { + WardrobeSettings.setWardrobePermission(wardrobe, args[3]); + if (!silent) MessagesUtil.sendMessage(player, "set-wardrobe-permission"); + return true; + } + if (args[2].equalsIgnoreCase("distance")) { + WardrobeSettings.setWardrobeDistance(wardrobe, Integer.valueOf(args[3])); + if (!silent) MessagesUtil.sendMessage(player, "set-wardrobe-distance"); + return true; + } + } } case ("dump") -> { if (player == null) return true; diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/command/CosmeticCommandTabComplete.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/command/CosmeticCommandTabComplete.java index 09b8c641..c2c86b4a 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/command/CosmeticCommandTabComplete.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/command/CosmeticCommandTabComplete.java @@ -38,7 +38,7 @@ public class CosmeticCommandTabComplete implements TabCompleter { 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"); + if (hasPermission(sender, "hmccosmetics.cmd.setwardrobesetting")) completions.add("setwardrobesetting"); if (hasPermission(sender, "hmccosmetics.cmd.hide")) completions.add("hide"); if (hasPermission(sender, "hmccosmetics.cmd.show")) completions.add("show"); if (hasPermission(sender, "hmccosmetics.cmd.debug")) completions.add("debug"); @@ -87,7 +87,7 @@ public class CosmeticCommandTabComplete implements TabCompleter { completions.add(slot.name()); } } - case "setlocation" -> { + case "setwardrobesetting" -> { for (Wardrobe wardrobe : WardrobeSettings.getWardrobes()) { completions.add(wardrobe.getId()); } @@ -107,10 +107,12 @@ public class CosmeticCommandTabComplete implements TabCompleter { completions.add(player.getName()); } } - case "setlocation" -> { + case "setwardrobesetting" -> { completions.add("npclocation"); completions.add("viewerlocation"); completions.add("leavelocation"); + completions.add("permission"); + completions.add("distance"); } } StringUtil.copyPartialMatches(args[2], completions, finalCompletions); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Wardrobe.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Wardrobe.java index 6cea4aa2..1d080173 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Wardrobe.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Wardrobe.java @@ -27,6 +27,14 @@ public class Wardrobe { return location; } + public void setDistance(int distance) { + this.distance = distance; + } + + public void setPermission(String permission) { + this.permission = permission; + } + public boolean hasPermission() { return permission != null; } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/config/WardrobeSettings.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/config/WardrobeSettings.java index 6d712add..1dca8c97 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/config/WardrobeSettings.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/config/WardrobeSettings.java @@ -302,7 +302,7 @@ public class WardrobeSettings { plugin.getConfig().set("wardrobe.wardrobes." + wardrobe.getId() + ".npc-location." + "yaw", newLocation.getYaw()); plugin.getConfig().set("wardrobe.wardrobes." + wardrobe.getId() + ".npc-location." + "pitch", newLocation.getPitch()); - HMCCosmeticsPlugin.getInstance().saveConfig(); + plugin.saveConfig(); } /** @@ -321,7 +321,7 @@ public class WardrobeSettings { plugin.getConfig().set("wardrobe.wardrobes." + wardrobe.getId() + ".viewer-location.yaw", newLocation.getYaw()); plugin.getConfig().set("wardrobe.wardrobes." + wardrobe.getId() + ".viewer-location.pitch", newLocation.getPitch()); - HMCCosmeticsPlugin.getInstance().saveConfig(); + plugin.saveConfig(); } /** @@ -340,6 +340,26 @@ public class WardrobeSettings { plugin.getConfig().set("wardrobe.wardrobes." + wardrobe.getId() + ".leave-location.yaw", newLocation.getYaw()); plugin.getConfig().set("wardrobe.wardrobes." + wardrobe.getId() + ".leave-location.pitch", newLocation.getPitch()); - HMCCosmeticsPlugin.getInstance().saveConfig(); + plugin.saveConfig(); + } + + public static void setWardrobePermission(Wardrobe wardrobe, String permission) { + wardrobe.setPermission(permission); + + HMCCosmeticsPlugin plugin = HMCCosmeticsPlugin.getInstance(); + + plugin.getConfig().set("wardrobe.wardrobes." + wardrobe.getId() + ".permission", permission); + + plugin.saveConfig(); + } + + public static void setWardrobeDistance(Wardrobe wardrobe, int distance) { + wardrobe.setDistance(distance); + + HMCCosmeticsPlugin plugin = HMCCosmeticsPlugin.getInstance(); + + plugin.getConfig().set("wardrobe.wardrobes." + wardrobe.getId() + ".distance", distance); + + plugin.saveConfig(); } } diff --git a/common/src/main/resources/messages.yml b/common/src/main/resources/messages.yml index ca862e4a..32b6b734 100644 --- a/common/src/main/resources/messages.yml +++ b/common/src/main/resources/messages.yml @@ -11,6 +11,8 @@ not-near-wardrobe: "%prefix% You are not near the wardrobe!" set-wardrobe-location: "%prefix% Set new wardrobe location!" set-wardrobe-viewing: "%prefix% Set new wardrobe viewing location!" set-wardrobe-leaving: "%prefix% Set new wardrobe leaving location!" +set-wardrobe-permission: "%prefix% Set new wardrobe permission!" +set-wardrobe-distance: "%prefix% Set new wardrobe distance!" no-wardrobes: "%prefix% There are no wardrobes with that name!" wardrobe-not-setup: "%prefix% This wardrobe does not have all required locations set!"