3.3.0 Updates

This commit is contained in:
rockyhawk64 2020-07-12 11:58:03 +10:00
parent 60f13a9d9c
commit 665bc5cb75
9 changed files with 302 additions and 30 deletions

View File

@ -1,4 +1,4 @@
version: 3.2.3
version: 3.3.0
main: me.rockyhawk.commandPanels.commandpanels
name: CommandPanels
author: RockyHawk
@ -12,12 +12,16 @@ commands:
aliases: [cp, cpanel]
commandpanelreload:
description: Reloads plugin config.
usage: /commandpanelsreload
usage: /commandpanelreload
aliases: [cpr, cpanelr]
commandpaneldebug:
description: Enable and Disable debug mode globally
usage: /commandpanelsdebug
usage: /commandpaneldebug
aliases: [cpd, cpaneld]
commandpanelblock:
description: Add or remove panels from blocks being looked at.
usage: /commandpanelblock
aliases: [cpb, cpanelb]
commandpanelclose:
description: Close current GUI.
usage: /commandpanelclose
@ -51,6 +55,12 @@ permissions:
default: op
commandpanel.debug:
default: op
commandpanel.block.add:
default: op
commandpanel.block.remove:
default: op
commandpanel.block.list:
default: op
commandpanel.generate:
default: op
commandpanel.version:

View File

@ -25,6 +25,9 @@ import me.rockyhawk.commandPanels.ingameEditor.cpIngameEditCommand;
import me.rockyhawk.commandPanels.ingameEditor.cpTabCompleteIngame;
import me.rockyhawk.commandPanels.ingameEditor.editorUserInput;
import me.rockyhawk.commandPanels.ingameEditor.editorUtils;
import me.rockyhawk.commandPanels.panelBlocks.blocksTabComplete;
import me.rockyhawk.commandPanels.panelBlocks.commandpanelblocks;
import me.rockyhawk.commandPanels.panelBlocks.panelBlockOnClick;
import me.rockyhawk.commandPanels.premium.commandpanelUserInput;
import me.rockyhawk.commandPanels.premium.commandpanelrefresher;
import net.milkbowl.vault.economy.Economy;
@ -57,9 +60,11 @@ public class commandpanels extends JavaPlugin {
public ArrayList<String> panelFiles = new ArrayList<String>(); //names of all the files in the panels folder including extension
public ArrayList<String[]> panelNames = new ArrayList<String[]>(); //this will return something like {"mainMenuPanel","4"} which means the 4 is for panelFiles.get(4). So you know which file it is for
public File panelsf;
public YamlConfiguration blockConfig; //where panel block locations are stored
public commandpanels() {
this.panelsf = new File(this.getDataFolder() + File.separator + "panels");
this.blockConfig = YamlConfiguration.loadConfiguration(new File(getDataFolder() + File.separator + "blocks.yml"));
}
public void onEnable() {
@ -70,6 +75,7 @@ public class commandpanels extends JavaPlugin {
new Metrics(this);
Objects.requireNonNull(this.getCommand("commandpanel")).setExecutor(new commandpanel(this));
Objects.requireNonNull(this.getCommand("commandpanel")).setTabCompleter(new cpTabComplete(this));
Objects.requireNonNull(this.getCommand("commandpanelblock")).setTabCompleter(new blocksTabComplete(this));
Objects.requireNonNull(this.getCommand("commandpanelgenerate")).setTabCompleter(new tabCompleteGenerate(this));
Objects.requireNonNull(this.getCommand("commandpaneledit")).setTabCompleter(new cpTabCompleteIngame(this));
Objects.requireNonNull(this.getCommand("commandpanelgenerate")).setExecutor(new commandpanelsgenerate(this));
@ -79,6 +85,7 @@ public class commandpanels extends JavaPlugin {
Objects.requireNonNull(this.getCommand("commandpanelversion")).setExecutor(new commandpanelversion(this));
Objects.requireNonNull(this.getCommand("commandpanellist")).setExecutor(new commandpanelslist(this));
Objects.requireNonNull(this.getCommand("commandpaneledit")).setExecutor(new cpIngameEditCommand(this));
Objects.requireNonNull(this.getCommand("commandpanelblock")).setExecutor(new commandpanelblocks(this));
this.getServer().getPluginManager().registerEvents(new utils(this), this);
this.getServer().getPluginManager().registerEvents(new editorUtils(this), this);
this.getServer().getPluginManager().registerEvents(new newGenUtils(this), this);
@ -86,8 +93,10 @@ public class commandpanels extends JavaPlugin {
this.getServer().getPluginManager().registerEvents(new commandpanelUserInput(this), this);
this.getServer().getPluginManager().registerEvents(new editorUserInput(this), this);
this.getServer().getPluginManager().registerEvents(new commandpanelrefresher(this), this);
this.getServer().getPluginManager().registerEvents(new panelBlockOnClick(this), this);
this.config.addDefault("config.version", "3.0");
this.config.addDefault("config.refresh-panels", "true");
this.config.addDefault("config.panel-blocks", "true");
this.config.addDefault("config.refresh-delay", "4");
this.config.addDefault("config.stop-sound", "true");
this.config.addDefault("config.disabled-world-message", "true");
@ -110,7 +119,6 @@ public class commandpanels extends JavaPlugin {
this.config.addDefault("config.format.needitems", "&cInsufficient Items!");
this.config.addDefault("config.format.bought", "&aSuccessfully Bought For $%cp-args%");
this.config.addDefault("config.format.sold", "&aSuccessfully Sold For $%cp-args%");
this.config.addDefault("config.format.signtag", "[CommandPanel]");
this.config.addDefault("config.format.tag", "&6[&bCommandPanels&6]");
this.config.addDefault("config.format.offline", "Offline");
this.config.addDefault("config.format.offlineHeadValue", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmU1Mjg2YzQ3MGY2NmZmYTFhMTgzMzFjYmZmYjlhM2MyYTQ0MjRhOGM3MjU5YzQ0MzZmZDJlMzU1ODJhNTIyIn19fQ==");
@ -1171,6 +1179,15 @@ public class commandpanels extends JavaPlugin {
if (p.hasPermission("commandpanel.debug")) {
p.sendMessage(ChatColor.GOLD + "/cpd " + ChatColor.WHITE + "Enable and Disable debug mode globally.");
}
if (p.hasPermission("commandpanel.block.add")) {
p.sendMessage(ChatColor.GOLD + "/cpb add <panel> " + ChatColor.WHITE + "Add panel to a block being looked at.");
}
if (p.hasPermission("commandpanel.block.remove")) {
p.sendMessage(ChatColor.GOLD + "/cpb remove " + ChatColor.WHITE + "Removes any panel assigned to a block looked at.");
}
if (p.hasPermission("commandpanel.block.list")) {
p.sendMessage(ChatColor.GOLD + "/cpb list " + ChatColor.WHITE + "List blocks that will open panels.");
}
}
public final Map<String, Color> colourCodes = new HashMap<String, Color>() {{

View File

@ -14,7 +14,7 @@ public class commandpanelsdebug implements CommandExecutor {
@EventHandler
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
String tag = plugin.config.getString("config.format.tag") + " ";
if (label.equalsIgnoreCase("cpd") || label.equalsIgnoreCase("commandpanelsdebug") || label.equalsIgnoreCase("cpaneld")) {
if (label.equalsIgnoreCase("cpd") || label.equalsIgnoreCase("commandpaneldebug") || label.equalsIgnoreCase("cpaneld")) {
if (sender.hasPermission("commandpanel.debug")) {
if (args.length == 0) {
//command /cpd

View File

@ -17,7 +17,7 @@ public class commandpanelsreload implements CommandExecutor {
@EventHandler
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
String tag = plugin.config.getString("config.format.tag") + " ";
if (label.equalsIgnoreCase("cpr") || label.equalsIgnoreCase("commandpanelsreload") || label.equalsIgnoreCase("cpanelr")) {
if (label.equalsIgnoreCase("cpr") || label.equalsIgnoreCase("commandpanelreload") || label.equalsIgnoreCase("cpanelr")) {
if (sender.hasPermission("commandpanel.reload")) {
plugin.config = YamlConfiguration.loadConfiguration(new File(plugin.getDataFolder() + File.separator + "config.yml"));
plugin.reloadPanelFiles();

View File

@ -312,7 +312,7 @@ public class editorUserInput implements Listener {
savePanelFile(cf, panelFile);
p.sendMessage(ChatColor.translateAlternateColorCodes('&', tag + ChatColor.GREEN + "Set new Potion to " + e.getMessage().toUpperCase()));
break;
case "panel.customdata":
case "customdata":
if(e.getMessage().trim().equalsIgnoreCase("remove")){
cf.set("panels." + panelName + ".item." + itemSlot + ".customdata", null);
savePanelFile(cf, panelFile);

View File

@ -0,0 +1,79 @@
package me.rockyhawk.commandPanels.panelBlocks;
import me.rockyhawk.commandPanels.commandpanels;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
public class blocksTabComplete implements TabCompleter {
commandpanels plugin;
public blocksTabComplete(commandpanels pl) { this.plugin = pl; }
@Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) {
if(sender instanceof Player){
Player p = ((Player) sender).getPlayer();
if(label.equalsIgnoreCase("cpb") || label.equalsIgnoreCase("cpanelb") || label.equalsIgnoreCase("commandpanelblock")){
if(args.length == 2) {
if(args[0].equals("add") && p.hasPermission("commandpanel.block.add")) {
ArrayList<String> apanels = new ArrayList<String>(); //all panels
String tpanels; //tpanels is the temp to check through the files
try {
for (String fileName : plugin.panelFiles) { //will loop through all the files in folder
YamlConfiguration temp = YamlConfiguration.loadConfiguration(new File(plugin.panelsf + File.separator + fileName));
String key;
tpanels = "";
if (!plugin.checkPanels(temp)) {
return null;
}
for (Iterator var10 = Objects.requireNonNull(temp.getConfigurationSection("panels")).getKeys(false).iterator(); var10.hasNext(); tpanels = tpanels + key + " ") {
key = (String) var10.next();
if (!key.startsWith(args[1])) {
//this will narrow down the panels to what the user types
continue;
}
if (sender.hasPermission("commandpanel.panel." + temp.getString("panels." + key + ".perm"))) {
if (temp.contains("panels." + key + ".disabled-worlds")) {
List<String> disabledWorlds = (List<String>) temp.getList("panels." + key + ".disabled-worlds");
if (!disabledWorlds.contains(p.getWorld().getName())) {
apanels.add(key);
}
} else {
apanels.add(key);
}
}
}
//if file contains opened panel then start
}
} catch (Exception fail) {
//could not fetch all panel names (probably no panels exist)
}
return apanels;
}
}
if(args.length == 1){
ArrayList<String> output = new ArrayList<String>();
if (sender.hasPermission("commandpanel.block.add")){
output.add("add");
}
if (sender.hasPermission("commandpanel.block.remove")){
output.add("remove");
}
if (sender.hasPermission("commandpanel.block.list")){
output.add("list");
}
return output;
}
}
}
return null;
}
}

View File

@ -0,0 +1,138 @@
package me.rockyhawk.commandPanels.panelBlocks;
import me.rockyhawk.commandPanels.commandpanels;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
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;
import java.io.File;
import java.io.IOException;
import java.util.Objects;
public class commandpanelblocks implements CommandExecutor {
commandpanels plugin;
public commandpanelblocks(commandpanels pl) { this.plugin = pl; }
@EventHandler
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
String tag = plugin.config.getString("config.format.tag") + " ";
if (label.equalsIgnoreCase("cpb") || label.equalsIgnoreCase("commandpanelsblock") || label.equalsIgnoreCase("cpanelb")) {
if(args.length == 2) {
if (args[0].equalsIgnoreCase("add")) {
if(!(sender instanceof Player)) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + ChatColor.RED + "Please execute command as a Player!"));
return true;
}
Player p = (Player)sender;
if(p.hasPermission("commandpanel.block.add")){
if(Objects.requireNonNull(plugin.config.getString("config.panel-blocks")).equalsIgnoreCase("false")){
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + ChatColor.RED + "Panel blocks disabled in config!"));
return true;
}
boolean foundPanel = false;
for(String[] temp : plugin.panelNames){
if(temp[0].equals(args[1])){
foundPanel = true;
break;
}
}
if(!foundPanel){
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + plugin.config.getString("config.format.nopanel")));
return true;
}
Block blockType = p.getTargetBlock(null, 5);
if(blockType.getType() == Material.AIR){
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + ChatColor.RED + "Look at a block to add a panel!"));
return true;
}
Location blockLocation = blockType.getLocation();
String configValue = "blocks." + Objects.requireNonNull(blockLocation.getWorld()).getName() + "_" + blockLocation.getBlockX() + "_" + blockLocation.getBlockY() + "_" + blockLocation.getBlockZ() + ".panel";
plugin.blockConfig.set(configValue, args[1]);
try {
plugin.blockConfig.save(new File(plugin.getDataFolder() + File.separator + "blocks.yml"));
} catch (IOException e) {
plugin.debug(e);
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + ChatColor.RED + "Could not save to file!"));
return true;
}
//make the material name look okay
String materialNameFormatted = blockType.getType().toString().substring(0, 1).toUpperCase() + blockType.getType().toString().substring(1).toLowerCase();
materialNameFormatted = materialNameFormatted.replaceAll("_"," ");
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + ChatColor.WHITE + args[1] + ChatColor.GREEN + " will now open when right clicking " + ChatColor.WHITE + materialNameFormatted));
return true;
}else{
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + plugin.config.getString("config.format.perms")));
return true;
}
}
}
if(args.length == 1){
if (args[0].equalsIgnoreCase("remove")) {
if(!(sender instanceof Player)) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + ChatColor.RED + "Please execute command as a Player!"));
return true;
}
Player p = (Player)sender;
if(p.hasPermission("commandpanel.block.remove")){
if(Objects.requireNonNull(plugin.config.getString("config.panel-blocks")).equalsIgnoreCase("false")){
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + ChatColor.RED + "Panel blocks disabled in config!"));
return true;
}
Block blockType = p.getTargetBlock(null, 5);
Location blockLocation = blockType.getLocation();
String configValue = "blocks." + Objects.requireNonNull(blockLocation.getWorld()).getName() + "_" + blockLocation.getBlockX() + "_" + blockLocation.getBlockY() + "_" + blockLocation.getBlockZ() + ".panel";
if(plugin.blockConfig.contains(configValue)){
plugin.blockConfig.set(configValue.replace(".panel",""), null);
try {
plugin.blockConfig.save(new File(plugin.getDataFolder() + File.separator + "blocks.yml"));
} catch (IOException e) {
plugin.debug(e);
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + ChatColor.RED + "Could not save to file!"));
return true;
}
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + ChatColor.GREEN + "Panel has been removed from block."));
}else{
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + plugin.config.getString("config.format.nopanel")));
}
return true;
}else{
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + plugin.config.getString("config.format.perms")));
return true;
}
}
if (args[0].equalsIgnoreCase("list")) {
if(sender.hasPermission("commandpanel.block.list")){
if(Objects.requireNonNull(plugin.config.getString("config.panel-blocks")).equalsIgnoreCase("false")){
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + ChatColor.RED + "Panel blocks disabled in config!"));
return true;
}
if(plugin.blockConfig.contains("blocks")){
if(Objects.requireNonNull(plugin.blockConfig.getConfigurationSection("blocks")).getKeys(false).size() == 0){
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag) + ChatColor.RED + "No panel blocks found.");
return true;
}
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag) + ChatColor.DARK_AQUA + "Panel Block Locations:");
for (String location : Objects.requireNonNull(plugin.blockConfig.getConfigurationSection("blocks")).getKeys(false)) {
sender.sendMessage(ChatColor.GREEN + location.replaceAll("_"," ") + ": " + ChatColor.WHITE + plugin.blockConfig.getString("blocks." + location + ".panel"));
}
}else{
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag) + ChatColor.RED + "No panel blocks found.");
}
return true;
}else{
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',tag + plugin.config.getString("config.format.perms")));
return true;
}
}
}
}
plugin.helpMessage(sender);
return true;
}
}

View File

@ -0,0 +1,51 @@
package me.rockyhawk.commandPanels.panelBlocks;
import me.clip.placeholderapi.PlaceholderAPI;
import me.rockyhawk.commandPanels.commandpanels;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.Sign;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import java.util.Objects;
public class panelBlockOnClick implements Listener {
commandpanels plugin;
public panelBlockOnClick(commandpanels pl) {
this.plugin = pl;
}
@EventHandler
public void onInteract(PlayerInteractEvent e){
String tag = plugin.config.getString("config.format.tag") + " ";
//if panel blocks are disabled return
if(Objects.requireNonNull(plugin.config.getString("")).equalsIgnoreCase("false")){
return;
}
if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {
Block block = e.getClickedBlock();
Player p = e.getPlayer();
assert block != null;
if(plugin.blockConfig.contains("blocks")){
if(Objects.requireNonNull(plugin.config.getString("config.panel-blocks")).equalsIgnoreCase("false")){
return;
}
for (String configLocation : Objects.requireNonNull(plugin.blockConfig.getConfigurationSection("blocks")).getKeys(false)) {
String[] loc = configLocation.split("_");
Location tempLocation = new Location(plugin.getServer().getWorld(loc[0]),Double.parseDouble(loc[1]),Double.parseDouble(loc[2]),Double.parseDouble(loc[3]));
if(tempLocation.equals(block.getLocation())){
e.setCancelled(true);
Bukkit.dispatchCommand(p, "commandpanels:commandpanel " + plugin.blockConfig.getString("blocks." + configLocation + ".panel"));
return;
}
}
}
}
}
}

View File

@ -619,29 +619,6 @@ public class utils implements Listener {
}
}
@EventHandler
public void onInteract(PlayerInteractEvent e){
String tag = plugin.config.getString("config.format.tag") + " ";
if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {
Block block = e.getClickedBlock();
Player p = e.getPlayer();
assert block != null;
if (block.getType().toString().contains("SIGN")) {
Sign sign = (Sign) block.getState();
if (ChatColor.stripColor(sign.getLine(0).trim()).equalsIgnoreCase(ChatColor.stripColor(plugin.config.getString("config.format.signtag")))) {
try {
Bukkit.dispatchCommand(p, "commandpanels:commandpanel " + ChatColor.stripColor(sign.getLine(1)).trim());
} catch (Exception n) {
if (plugin.getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', tag + PlaceholderAPI.setPlaceholders(p, plugin.config.getString("config.format.nopanel"))));
} else {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', tag + plugin.config.getString("config.format.nopanel")));
}
}
}
}
}
}
@EventHandler
public void onInteractEntity(PlayerInteractEntityEvent e){
//cancel everything if holding item (item frames eg)
Player p = (Player)e.getPlayer();