From a92916f112bf7c98d24386296d2e211abb8fcb62 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Wed, 5 Feb 2020 14:23:53 +1300 Subject: [PATCH] Add mission perms, add /libsdisguises json --- .../commands/LibsDisguisesCommand.java | 58 +++++++++++++++++++ .../utilities/translations/LibsMsg.java | 6 +- src/main/resources/plugin.yml | 9 +++ 3 files changed, 71 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/libraryaddict/disguise/commands/LibsDisguisesCommand.java b/src/main/java/me/libraryaddict/disguise/commands/LibsDisguisesCommand.java index feccd707..9fbb0e7e 100644 --- a/src/main/java/me/libraryaddict/disguise/commands/LibsDisguisesCommand.java +++ b/src/main/java/me/libraryaddict/disguise/commands/LibsDisguisesCommand.java @@ -4,9 +4,11 @@ import me.libraryaddict.disguise.DisguiseConfig; import me.libraryaddict.disguise.LibsDisguises; import me.libraryaddict.disguise.disguisetypes.DisguiseType; import me.libraryaddict.disguise.disguisetypes.MetaIndex; +import me.libraryaddict.disguise.utilities.DisguiseUtilities; import me.libraryaddict.disguise.utilities.LibsPremium; import me.libraryaddict.disguise.utilities.parser.DisguisePerm; import me.libraryaddict.disguise.utilities.parser.DisguisePermissions; +import me.libraryaddict.disguise.utilities.parser.params.ParamInfoManager; import me.libraryaddict.disguise.utilities.translations.LibsMsg; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ComponentBuilder; @@ -17,6 +19,8 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; import org.bukkit.permissions.Permissible; import java.util.ArrayList; @@ -128,6 +132,29 @@ public class LibsDisguisesCommand implements CommandExecutor, TabCompleter { } else { sender.sendMessage(LibsMsg.NORMAL_PERM_CHECK_FAIL.get()); } + } else if (args[0].equalsIgnoreCase("json") || args[0].equalsIgnoreCase("gson") || + args[0].equalsIgnoreCase("item") || args[0].equalsIgnoreCase("parse") || + args[0].equalsIgnoreCase("tostring")) { + if (!sender.hasPermission("libsdisguises.json")) { + sender.sendMessage(LibsMsg.NO_PERM.get()); + return true; + } + + if (!(sender instanceof Player)) { + sender.sendMessage(LibsMsg.NO_CONSOLE.get()); + return true; + } + + ItemStack item = ((Player) sender).getInventory().getItemInMainHand(); + + String gson = DisguiseUtilities.getGson().toJson(item); + String simple = ParamInfoManager.toString(item); + + sendMessage(sender, LibsMsg.ITEM_SERIALIZED, gson); + + if (!gson.equals(simple)) { + sendMessage(sender, LibsMsg.ITEM_SIMPLE_STRING, simple); + } } else if (args[0].equalsIgnoreCase("metainfo") || args[0].equalsIgnoreCase("meta")) { if (!sender.hasPermission("libsdisguises.metainfo")) { sender.sendMessage(LibsMsg.NO_PERM.get()); @@ -179,6 +206,37 @@ public class LibsDisguisesCommand implements CommandExecutor, TabCompleter { return true; } + private void sendMessage(CommandSender sender, LibsMsg prefix, String string) { + int start = 0; + int msg = 1; + + ComponentBuilder builder = new ComponentBuilder("").appendLegacy(prefix.get()); + + while (start < string.length()) { + int end = Math.min(256, string.length() - start); + + String sub = string.substring(start, start + end); + + builder.append(" "); + + if (string.length() <= 256) { + builder.appendLegacy(LibsMsg.CLICK_TO_COPY_DATA.get()); + } else { + builder.reset(); + builder.appendLegacy(LibsMsg.CLICK_COPY.get(msg)); + } + + start += end; + + builder.event(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, sub)); + builder.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, + new ComponentBuilder(LibsMsg.CLICK_TO_COPY_HOVER.get() + " " + msg).create())); + msg += 1; + } + + sender.spigot().sendMessage(builder.create()); + } + @Override public List onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { ArrayList tabs = new ArrayList<>(); diff --git a/src/main/java/me/libraryaddict/disguise/utilities/translations/LibsMsg.java b/src/main/java/me/libraryaddict/disguise/utilities/translations/LibsMsg.java index 1e158e06..c85a3f58 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/translations/LibsMsg.java +++ b/src/main/java/me/libraryaddict/disguise/utilities/translations/LibsMsg.java @@ -113,7 +113,7 @@ public enum LibsMsg { PLEASE_WAIT(ChatColor.GRAY + "Please wait..."), INVALID_CLONE(ChatColor.DARK_RED + "Unknown option '%s' - Valid options are 'IgnoreEquipment' 'DoSneakSprint' " + "'DoSneak' 'DoSprint'"), - LIBS_COMMAND_WRONG_ARG(ChatColor.RED + "[LibsDisguises] Did you mean 'reload', 'permtest' or 'metainfo'?"), + LIBS_COMMAND_WRONG_ARG(ChatColor.RED + "[LibsDisguises] Did you mean 'reload', 'permtest', 'json' or 'metainfo'?"), LIMITED_RADIUS(ChatColor.RED + "Limited radius to %s! Don't want to make too much lag right?"), LISTEN_ENTITY_ENTITY_DISG_ENTITY(ChatColor.RED + "Disguised %s as a %s!"), LISTEN_ENTITY_ENTITY_DISG_ENTITY_FAIL(ChatColor.RED + "Failed to disguise %s as a %s!"), @@ -248,7 +248,9 @@ public enum LibsMsg { CANT_ATTACK_DISGUISED(ChatColor.RED + "Cannot fight while disguised!"), CANT_ATTACK_DISGUISED_RECENTLY(ChatColor.RED + "You were disguised recently! Can't attack yet!"), SWITCH_WORLD_DISGUISE_REMOVED(ChatColor.RED + "Disguise removed as you've switched worlds!"), - ACTION_BAR_MESSAGE(ChatColor.GOLD + "Currently disguised as %s"); + ACTION_BAR_MESSAGE(ChatColor.GOLD + "Currently disguised as %s"), + ITEM_SERIALIZED(ChatColor.GOLD + "Serialized, click to copy: "), + ITEM_SIMPLE_STRING(ChatColor.GOLD + "Simple, click to copy: "); private String string; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index abb6358b..0ff4b1b1 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -98,6 +98,15 @@ permissions: libsdisguises.pve: description: Allows player to ignore pve restrictions. default: false + libsdisguises.permtest: + description: Allows player to test permissions + default: false + libsdisguises.metainfo: + description: Allows player to get meta info + default: false + libsdisguises.json: + description: Allows player to parse held item to json + default: true libsdisguises.pvp: description: Allows player to ignore pvp restrictions. default: false