Refresh/update command added. Used for refreshing a player open panel/s

This commit is contained in:
TinyTank800 2024-02-03 12:34:15 -08:00
parent acca60a4fa
commit b512d94624
4 changed files with 121 additions and 0 deletions

View File

@ -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:

View File

@ -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));

View File

@ -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.refresh")) {
//command /cpu
// /cpu <Playername> <Position/ALL>
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 <Playername> <Position/ALL>"));
return true;
}
}

View File

@ -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<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) {
if(sender.hasPermission("commandpanel.refresh")) {
ArrayList<String> 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;
}
}