v3.10.0 Updates

This commit is contained in:
rockyhawk64 2020-08-27 08:36:41 +10:00
parent 677d7d92bd
commit c62f8ee4fb
6 changed files with 102 additions and 73 deletions

View File

@ -6,6 +6,7 @@
panels:
example:
perm: default
panelType: default
rows: 4
title: '&6[&bExample Panel&6]&f Welcome!'
command: example

View File

@ -1,4 +1,4 @@
version: 3.9.4
version: 3.10.0
main: me.rockyhawk.commandPanels.commandpanels
name: CommandPanels
author: RockyHawk

View File

@ -40,6 +40,7 @@ import me.rockyhawk.commandPanels.premium.commandpanelrefresher;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.*;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.Configuration;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
@ -187,7 +188,7 @@ public class commandpanels extends JavaPlugin {
String section = "";
//onOpen needs to not be 3 so the editor won't include hasperm and hasvalue, etc items
if (onOpen != 3) {
section = hasSection(panels, pconfig, Integer.parseInt(item.split("\\s")[c]), p);
section = hasSection(pconfig.getConfigurationSection("panels." + panels + ".item." + Integer.parseInt(item.split("\\s")[c])), p);
//This section is for animations below here: VISUAL ONLY
//check for if there is animations inside the items section
@ -1818,92 +1819,100 @@ public class commandpanels extends JavaPlugin {
}
//hasperm hasvalue, etc sections will be done here
public String hasSection(String panelName, YamlConfiguration cf, int slot, Player p){
if (cf.contains("panels." + panelName + ".item." + slot + ".hasvalue")) {
//loop through possible hasvalue 1,2,3,etc
for (int count = 0; Objects.requireNonNull(cf.getConfigurationSection("panels." + panelName + ".item." + slot)).getKeys(false).size() > count; count++) {
if (cf.contains("panels." + panelName + ".item." + slot + ".hasvalue" + count)) {
boolean outputValue = true;
//outputValue will default to true
if (cf.contains("panels." + panelName + ".item." + slot + ".hasvalue" + count + ".output")) {
//if output is true, and values match it will be this item, vice versa
outputValue = cf.getBoolean("panels." + panelName + ".item." + slot + ".hasvalue" + count + ".output");
}
String value = cf.getString("panels." + panelName + ".item." + slot + ".hasvalue" + count + ".value");
String compare = ChatColor.stripColor(papi(p,setCpPlaceholders(p,cf.getString("panels." + panelName + ".item." + slot + ".hasvalue" + count + ".compare"))));
if (compare.equals(value) == outputValue) {
//onOpen being 3 means it is the editor panel.. hasvalue items cannot be included to avoid item breaking
return ".hasvalue" + count;
}
}
}
public String hasSection(ConfigurationSection cf, Player p){
if (cf.contains("hasvalue")) {
//this will do the hasvalue without any numbers
boolean outputValue = true;
//outputValue will default to true
if (cf.contains("panels." + panelName + ".item." + slot + ".hasvalue.output")) {
if (cf.contains("hasvalue.output")) {
//if output is true, and values match it will be this item, vice versa
outputValue = cf.getBoolean("panels." + panelName + ".item." + slot + ".hasvalue.output");
outputValue = cf.getBoolean("hasvalue.output");
}
String value = cf.getString("panels." + panelName + ".item." + slot + ".hasvalue.value");
String compare = ChatColor.stripColor(papi(p,setCpPlaceholders(p,cf.getString("panels." + panelName + ".item." + slot + ".hasvalue.compare"))));
String value = cf.getString("hasvalue.value");
String compare = ChatColor.stripColor(papi(p,setCpPlaceholders(p,cf.getString("hasvalue.compare"))));
if (compare.equals(value) == outputValue) {
//onOpen being 3 means it is the editor panel.. hasvalue items cannot be included to avoid item breaking
return ".hasvalue";
String section = hasSection(Objects.requireNonNull(cf.getConfigurationSection("hasvalue")), p);
//string section, it executes itself to check for subsections
return ".hasvalue" + section;
}
}
if (cf.contains("panels." + panelName + ".item." + slot + ".hasgreater")) {
//this will do the hasgreater without any numbers
boolean outputValue = true;
//outputValue will default to true
if (cf.contains("panels." + panelName + ".item." + slot + ".hasgreater.output")) {
//if output is true, and values match it will be this item, vice versa
outputValue = cf.getBoolean("panels." + panelName + ".item." + slot + ".hasgreater.output");
}
int value = cf.getInt("panels." + panelName + ".item." + slot + ".hasgreater.value");
double compare = Double.parseDouble(ChatColor.stripColor(papi(p,setCpPlaceholders(p,cf.getString("panels." + panelName + ".item." + slot + ".hasgreater.compare")))));
if ((compare >= value) == outputValue) {
//onOpen being 3 means it is the editor panel.. hasgreater items cannot be included to avoid item breaking
return ".hasgreater";
}
//loop through possible hasgreater 1,2,3,etc
for (int count = 0; Objects.requireNonNull(cf.getConfigurationSection("panels." + panelName + ".item." + slot)).getKeys(false).size() > count; count++) {
if (cf.contains("panels." + panelName + ".item." + slot + ".hasgreater" + count)) {
//loop through possible hasvalue 1,2,3,etc
for (int count = 0; cf.getKeys(false).size() > count; count++) {
if (cf.contains("hasvalue" + count)) {
outputValue = true;
//outputValue will default to true
if (cf.contains("panels." + panelName + ".item." + slot + ".hasgreater" + count + ".output")) {
if (cf.contains("hasvalue" + count + ".output")) {
//if output is true, and values match it will be this item, vice versa
outputValue = cf.getBoolean("panels." + panelName + ".item." + slot + ".hasgreater" + count + ".output");
outputValue = cf.getBoolean("hasvalue" + count + ".output");
}
value = cf.getInt("panels." + panelName + ".item." + slot + ".hasgreater" + count + ".value");
compare = Double.parseDouble(ChatColor.stripColor(papi(p,setCpPlaceholders(p,cf.getString("panels." + panelName + ".item." + slot + ".hasgreater" + count + ".compare")))));
if ((compare >= value) == outputValue) {
//onOpen being 3 means it is the editor panel.. hasgreater items cannot be included to avoid item breaking
return ".hasgreater" + count;
value = cf.getString("hasvalue" + count + ".value");
compare = ChatColor.stripColor(papi(p,setCpPlaceholders(p,cf.getString("hasvalue" + count + ".compare"))));
if (compare.equals(value) == outputValue) {
//onOpen being 3 means it is the editor panel.. hasvalue items cannot be included to avoid item breaking
String section = hasSection(Objects.requireNonNull(cf.getConfigurationSection("hasvalue" + count)), p);
//string section, it executes itself to check for subsections
return ".hasvalue" + count + section;
}
}
}
}
if (cf.contains("panels." + panelName + ".item." + slot + ".hasperm")) {
if (cf.contains("hasgreater")) {
//this will do the hasgreater without any numbers
boolean outputValue = true;
//outputValue will default to true
if (cf.contains("hasgreater.output")) {
//if output is true, and values match it will be this item, vice versa
outputValue = cf.getBoolean("hasgreater.output");
}
int value = cf.getInt("hasgreater.value");
double compare = Double.parseDouble(ChatColor.stripColor(papi(p,setCpPlaceholders(p,cf.getString("hasgreater.compare")))));
if ((compare >= value) == outputValue) {
//onOpen being 3 means it is the editor panel.. hasgreater items cannot be included to avoid item breaking
String section = hasSection(Objects.requireNonNull(cf.getConfigurationSection("hasgreater")), p);
return ".hasgreater" + section;
}
//loop through possible hasgreater 1,2,3,etc
for (int count = 0; cf.getKeys(false).size() > count; count++) {
if (cf.contains("hasgreater" + count)) {
outputValue = true;
//outputValue will default to true
if (cf.contains("hasgreater" + count + ".output")) {
//if output is true, and values match it will be this item, vice versa
outputValue = cf.getBoolean("hasgreater" + count + ".output");
}
value = cf.getInt("hasgreater" + count + ".value");
compare = Double.parseDouble(ChatColor.stripColor(papi(p,setCpPlaceholders(p,cf.getString("hasgreater" + count + ".compare")))));
if ((compare >= value) == outputValue) {
//onOpen being 3 means it is the editor panel.. hasgreater items cannot be included to avoid item breaking
String section = hasSection(Objects.requireNonNull(cf.getConfigurationSection("hasgreater" + count)), p);
return ".hasgreater" + count + section;
}
}
}
}
if (cf.contains("hasperm")) {
//this will do hasperm with no numbers
boolean outputValue = true;
//outputValue will default to true
if (cf.contains("panels." + panelName + ".item." + slot + ".hasperm" + ".output")) {
if (cf.contains("output")) {
//if output is true, and values match it will be this item, vice versa
outputValue = cf.getBoolean("panels." + panelName + ".item." + slot + ".hasperm" + ".output");
outputValue = cf.getBoolean("output");
}
if (p.hasPermission(Objects.requireNonNull(cf.getString("panels." + panelName + ".item." + slot + ".hasperm.perm"))) == outputValue) {
return ".hasperm";
if (p.hasPermission(Objects.requireNonNull(cf.getString("hasperm.perm"))) == outputValue) {
String section = hasSection(Objects.requireNonNull(cf.getConfigurationSection("hasperm")), p);
return ".hasperm" + section;
}
for(int count = 0; Objects.requireNonNull(cf.getConfigurationSection("panels." + panelName + ".item." + slot)).getKeys(false).size() > count; count++){
if (cf.contains("panels." + panelName + ".item." + slot + ".hasperm" + count) && cf.contains("panels." + panelName + ".item." + slot + ".hasperm" + count + ".perm")) {
for(int count = 0; cf.getKeys(false).size() > count; count++){
if (cf.contains("hasperm" + count) && cf.contains("hasperm" + count + ".perm")) {
outputValue = true;
//outputValue will default to true
if (cf.contains("panels." + panelName + ".item." + slot + ".hasperm" + count + ".output")) {
if (cf.contains("hasperm" + count + ".output")) {
//if output is true, and values match it will be this item, vice versa
outputValue = cf.getBoolean("panels." + panelName + ".item." + slot + ".hasperm" + count + ".output");
outputValue = cf.getBoolean("hasperm" + count + ".output");
}
if (p.hasPermission(Objects.requireNonNull(cf.getString("panels." + panelName + ".item." + slot + ".hasperm" + count + ".perm"))) == outputValue) {
return ".hasperm" + count;
if (p.hasPermission(Objects.requireNonNull(cf.getString("hasperm" + count + ".perm"))) == outputValue) {
String section = hasSection(Objects.requireNonNull(cf.getConfigurationSection("hasperm" + count)), p);
return ".hasperm" + count + section;
}
}
}

View File

@ -91,6 +91,7 @@ public class newGenUtils implements Listener {
File folder = new File(plugin.getDataFolder() + File.separator + "panels");
file = YamlConfiguration.loadConfiguration(new File(folder + File.separator + date + ".yml"));
file.addDefault("panels." + date + ".perm", "default");
file.addDefault("panels." + date + ".panelType", "default");
file.addDefault("panels." + date + ".rows", inv.getSize()/9);
file.addDefault("panels." + date + ".title", "&8Generated " + date);
file.addDefault("panels." + date + ".command", date);

View File

@ -19,9 +19,6 @@ public class commandpanelrefresher implements Listener {
public commandpanelrefresher(commandpanels pl) {
this.plugin = pl;
}
private int c = 0;
private int animatevalue = -1;
private int animatecount = 0;
@EventHandler
public void onInventoryOpen(InventoryOpenEvent e){ //Handles when Players open inventory
//I have to convert HumanEntity to a player
@ -38,7 +35,6 @@ public class commandpanelrefresher implements Listener {
return;
}
//get all panel names (not titles)
String tag = plugin.config.getString("config.format.tag") + " ";
YamlConfiguration cf = null;
String panel = null;
String panelTitle = null;
@ -82,9 +78,11 @@ public class commandpanelrefresher implements Listener {
Bukkit.getConsoleSender().sendMessage("[CommandPanels] " + p.getName() + " Opened " + panel);
}
}
assert cf != null;
if(cf.contains("panels." + panel + ".animatevalue")){
animatevalue = cf.getInt("panels." + panel + ".animatevalue");
if(cf.contains("panels." + panel + ".panelType")) {
if (cf.getString("panels." + panel + ".panelType").equalsIgnoreCase("temporary")) {
//do not update temporary panels, only default panels
return;
}
}
final YamlConfiguration cfFinal = cf;
final String fpanel = panel;
@ -92,8 +90,14 @@ public class commandpanelrefresher implements Listener {
ItemStack[] panelItemList = plugin.openGui(fpanel, p, cf,2, -1).getContents();
ItemStack[] playerItemList = p.getInventory().getStorageContents();
new BukkitRunnable(){
int c = 0;
int animatecount = 0;
@Override
public void run() {
int animatevalue = -1;
if(cfFinal.contains("panels." + fpanel + ".animatevalue")){
animatevalue = cfFinal.getInt("panels." + fpanel + ".animatevalue");
}
//counter counts to refresh delay (in seconds) then restarts
if(c < Double.parseDouble(Objects.requireNonNull(plugin.config.getString("config.refresh-delay")).trim())){
c+=1;

View File

@ -1,6 +1,7 @@
package me.rockyhawk.commandPanels;
import org.bukkit.*;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@ -89,7 +90,7 @@ public class utils implements Listener {
return;
}
//loop through possible hasvalue/hasperm 1,2,3,etc
String section = plugin.hasSection(panel, cf, e.getSlot(),p);
String section = plugin.hasSection(cf.getConfigurationSection("panels." + panel + ".item." + e.getSlot()), p);
//this will remove any pending user inputs, if there is already something there from a previous item
for(int o = 0; plugin.userInputStrings.size() > o; o++){
if(plugin.userInputStrings.get(o)[0].equals(p.getName())){
@ -198,13 +199,26 @@ public class utils implements Listener {
p.sendMessage(plugin.papi(tag + plugin.config.getString("config.format.nopanel")));
return;
}
boolean forced = false;
if(cf.contains("panels." + panel + ".item." + slot + section + ".redirect.force")){
//this will force the panel open without consideration of permissions, world, etc
if(cf.getBoolean("panels." + panel + ".item." + slot + section + ".redirect.force")){
plugin.openGui(panelName, p, panelConfig, 1, 0);
return;
forced = true;
}
}
plugin.openCommandPanel(p, p, panelName, panelConfig, false);
if(cf.contains("panels." + panel + ".item." + slot + section + ".redirect.replacements")){
if(!panelConfig.getString("panels." + panelName + ".panelType").equalsIgnoreCase("temporary") && plugin.config.getBoolean("config.refresh-panels")){
p.sendMessage(plugin.papi(tag + ChatColor.RED + panelName + " panel type needs to be temporary to replace elements."));
}
for(String sectionName : cf.getConfigurationSection("panels." + panel + ".item." + slot + section + ".redirect.replacements").getKeys(false)){
ConfigurationSection temp = cf.getConfigurationSection("panels." + panel + ".item." + slot + section + ".redirect.replacements." + sectionName);
panelConfig.set("panels." + panelName + ".item." + sectionName, temp);
}
}
if(forced){
plugin.openGui(panelName, p, panelConfig, 1, 0);
}else{
plugin.openCommandPanel(p, p, panelName, panelConfig, false);
}
}
}