From 1b71947d13de289907f8c362aeddb9c1b0829c22 Mon Sep 17 00:00:00 2001 From: TinyTank800 Date: Sat, 3 Feb 2024 12:34:15 -0800 Subject: [PATCH] Refresh/update command added. Used for refreshing a player open panel/s --- resource/plugin.yml | 6 ++ .../commandpanels/CommandPanels.java | 4 ++ .../commands/Commandpanelsupdate.java | 72 +++++++++++++++++++ .../completetabs/UpdateTabComplete.java | 39 ++++++++++ 4 files changed, 121 insertions(+) create mode 100644 src/me/rockyhawk/commandpanels/commands/Commandpanelsupdate.java create mode 100644 src/me/rockyhawk/commandpanels/completetabs/UpdateTabComplete.java diff --git a/resource/plugin.yml b/resource/plugin.yml index 9c27c67..e04d6a9 100644 --- a/resource/plugin.yml +++ b/resource/plugin.yml @@ -18,6 +18,10 @@ commands: description: Change data values for players usage: /commandpaneldata aliases: [cpdata] + commandpanelupdate: + description: Refresh/update panel/s for player + usage: /commandpanelupdate + aliases: [ cpu, cpanelu ] commandpaneldebug: description: Enable and Disable debug mode globally usage: /commandpaneldebug @@ -73,6 +77,8 @@ permissions: default: op commandpanel.data: default: op + commandpanel.refresh: + default: op commandpanel.edit: default: op commandpanel.list: diff --git a/src/me/rockyhawk/commandpanels/CommandPanels.java b/src/me/rockyhawk/commandpanels/CommandPanels.java index f776b4c..02373aa 100644 --- a/src/me/rockyhawk/commandpanels/CommandPanels.java +++ b/src/me/rockyhawk/commandpanels/CommandPanels.java @@ -18,6 +18,7 @@ import me.rockyhawk.commandpanels.classresources.placeholders.Placeholders; import me.rockyhawk.commandpanels.commands.*; import me.rockyhawk.commandpanels.commandtags.CommandTags; import me.rockyhawk.commandpanels.completetabs.CpTabComplete; +import me.rockyhawk.commandpanels.completetabs.UpdateTabComplete; import me.rockyhawk.commandpanels.customcommands.Commandpanelcustom; import me.rockyhawk.commandpanels.datamanager.DebugManager; import me.rockyhawk.commandpanels.datamanager.PanelDataLoader; @@ -160,6 +161,9 @@ public class CommandPanels extends JavaPlugin{ Objects.requireNonNull(this.getCommand("commandpaneldata")).setTabCompleter(new DataTabComplete(this)); Objects.requireNonNull(this.getCommand("commandpaneldata")).setExecutor(new Commandpanelsdata(this)); + Objects.requireNonNull(this.getCommand("commandpanelupdate")).setTabCompleter(new UpdateTabComplete(this)); + Objects.requireNonNull(this.getCommand("commandpanelupdate")).setExecutor(new Commandpanelsupdate(this)); + Objects.requireNonNull(this.getCommand("commandpanelimport")).setExecutor(new CommandPanelImport(this)); Objects.requireNonNull(this.getCommand("commandpanelimport")).setTabCompleter(new ImportTabComplete(this)); Objects.requireNonNull(this.getCommand("commandpaneledit")).setExecutor(new CommandPanelsEditor(this)); diff --git a/src/me/rockyhawk/commandpanels/commands/Commandpanelsupdate.java b/src/me/rockyhawk/commandpanels/commands/Commandpanelsupdate.java new file mode 100644 index 0000000..f3f24bb --- /dev/null +++ b/src/me/rockyhawk/commandpanels/commands/Commandpanelsupdate.java @@ -0,0 +1,72 @@ +package me.rockyhawk.commandpanels.commands; + +import me.rockyhawk.commandpanels.CommandPanels; +import me.rockyhawk.commandpanels.openpanelsmanager.PanelOpenType; +import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; + + +public class Commandpanelsupdate implements CommandExecutor { + CommandPanels plugin; + public Commandpanelsupdate(CommandPanels pl) { this.plugin = pl; } + + @EventHandler + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (label.equalsIgnoreCase("cpu") || label.equalsIgnoreCase("commandpanelupdate") || label.equalsIgnoreCase("cpanelu")) { + if (sender.hasPermission("commandpanel.update")) { + //command /cpu + // /cpu + + String name; + Player targetPlayer; + try { + name = args[0]; + targetPlayer = Bukkit.getPlayer(name); + }catch (Exception e){ + sender.sendMessage(plugin.tex.colour(plugin.tag + ChatColor.RED + "Player was not found.")); + return true; + } + assert targetPlayer != null; + + PanelPosition pp; + if(args[1].equalsIgnoreCase("all")){ + for(PanelPosition papo : PanelPosition.values()){ + if(plugin.openPanels.hasPanelOpen(name, papo)) { + plugin.createGUI.openGui(plugin.openPanels.getOpenPanel(name, papo), targetPlayer, papo, PanelOpenType.Refresh, 0); + } + } + } else { + try { + pp = PanelPosition.valueOf(args[1]); + }catch (Exception e){ + sender.sendMessage(plugin.tex.colour(plugin.tag + ChatColor.RED + "Panel position not found.")); + return true; + } + + if(plugin.openPanels.hasPanelOpen(name, pp)) { + plugin.createGUI.openGui(plugin.openPanels.getOpenPanel(name, pp), targetPlayer, pp, PanelOpenType.Refresh, 0); + } + } + + + if(plugin.inventorySaver.hasNormalInventory(targetPlayer)){ + plugin.hotbar.updateHotbarItems(targetPlayer); + } + + //Successfully refreshed panel for targetPlayer.getName() + sender.sendMessage(plugin.tex.colour(plugin.tag + ChatColor.GREEN + "Successfully refreshed panel for " + targetPlayer.getName() + ".")); + }else{ + sender.sendMessage(plugin.tex.colour(plugin.tag + plugin.config.getString("config.format.perms"))); + } + return true; + } + sender.sendMessage(plugin.tex.colour(plugin.tag + ChatColor.RED + "Usage: /cpu ")); + return true; + } +} \ No newline at end of file diff --git a/src/me/rockyhawk/commandpanels/completetabs/UpdateTabComplete.java b/src/me/rockyhawk/commandpanels/completetabs/UpdateTabComplete.java new file mode 100644 index 0000000..9203aea --- /dev/null +++ b/src/me/rockyhawk/commandpanels/completetabs/UpdateTabComplete.java @@ -0,0 +1,39 @@ +package me.rockyhawk.commandpanels.completetabs; + +import me.rockyhawk.commandpanels.CommandPanels; +import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; + +import java.util.*; + + +public class UpdateTabComplete implements TabCompleter { + CommandPanels plugin; + public UpdateTabComplete(CommandPanels pl) { this.plugin = pl; } + @Override + public List onTabComplete(CommandSender sender, Command cmd, String label, String[] args) { + if(sender.hasPermission("commandpanel.update")) { + ArrayList output = new ArrayList<>(); + if (args.length>=1 && args[0].equalsIgnoreCase("-s")) { + + args = Arrays.copyOfRange(args, 1, args.length); + } + if(args.length == 1){ + for(Player player : Bukkit.getOnlinePlayers()){ + output.add(player.getName()); + } + }else if(args.length == 2){ + output.add("ALL"); + for(PanelPosition pp : PanelPosition.values()){ + output.add(pp.toString()); + } + } + return output; + } + return null; + } +} \ No newline at end of file