This commit is contained in:
Ajneb97 2023-09-14 20:05:06 -03:00
parent d9d9128539
commit 7b6fc59673
15 changed files with 354 additions and 10 deletions

View file

@ -64,6 +64,8 @@ public class MainCommand implements CommandExecutor, TabCompleter {
reset(sender,args,messagesConfig,msgManager); reset(sender,args,messagesConfig,msgManager);
}else if(args[0].equalsIgnoreCase("edit")) { }else if(args[0].equalsIgnoreCase("edit")) {
edit(player,args,messagesConfig,msgManager); edit(player,args,messagesConfig,msgManager);
}else if(args[0].equalsIgnoreCase("verify")){
verify(player,messagesConfig,msgManager);
} }
else{ else{
// /kit <kit> (short command) // /kit <kit> (short command)
@ -76,6 +78,10 @@ public class MainCommand implements CommandExecutor, TabCompleter {
} }
}else{ }else{
// /kit // /kit
if(plugin.getVerifyManager().isCriticalErrors()){
msgManager.sendMessage(player,messagesConfig.getString("pluginCriticalErrors"),true);
return true;
}
plugin.getInventoryManager().openInventory(new InventoryPlayer(player,"main_inventory")); plugin.getInventoryManager().openInventory(new InventoryPlayer(player,"main_inventory"));
} }
@ -98,10 +104,19 @@ public class MainCommand implements CommandExecutor, TabCompleter {
sender.sendMessage(MessagesManager.getColoredMessage("&6/kit delete <kit> &8Deletes a kit.")); sender.sendMessage(MessagesManager.getColoredMessage("&6/kit delete <kit> &8Deletes a kit."));
sender.sendMessage(MessagesManager.getColoredMessage("&6/kit reset <kit> <player> &8Resets kit data for a player.")); sender.sendMessage(MessagesManager.getColoredMessage("&6/kit reset <kit> <player> &8Resets kit data for a player."));
sender.sendMessage(MessagesManager.getColoredMessage("&6/kit reload &8Reloads the config.")); sender.sendMessage(MessagesManager.getColoredMessage("&6/kit reload &8Reloads the config."));
sender.sendMessage(MessagesManager.getColoredMessage("&6/kit verify &8Checks the plugin for errors."));
sender.sendMessage(MessagesManager.getColoredMessage(" ")); sender.sendMessage(MessagesManager.getColoredMessage(" "));
sender.sendMessage(MessagesManager.getColoredMessage("&7[ [ &8[&bPlayerKits&a²&8] &7] ]")); sender.sendMessage(MessagesManager.getColoredMessage("&7[ [ &8[&bPlayerKits&a²&8] &7] ]"));
} }
public void verify(Player player,FileConfiguration messagesConfig,MessagesManager msgManager){
if(!PlayerUtils.isPlayerKitsAdmin(player)){
msgManager.sendMessage(player,messagesConfig.getString("noPermissions"),true);
return;
}
plugin.getVerifyManager().sendVerification(player);
}
public void reload(CommandSender sender,String[] args,FileConfiguration messagesConfig,MessagesManager msgManager){ public void reload(CommandSender sender,String[] args,FileConfiguration messagesConfig,MessagesManager msgManager){
if(!PlayerUtils.isPlayerKitsAdmin(sender)){ if(!PlayerUtils.isPlayerKitsAdmin(sender)){
msgManager.sendMessage(sender,messagesConfig.getString("noPermissions"),true); msgManager.sendMessage(sender,messagesConfig.getString("noPermissions"),true);
@ -272,6 +287,7 @@ public class MainCommand implements CommandExecutor, TabCompleter {
if(PlayerUtils.isPlayerKitsAdmin(sender)){ if(PlayerUtils.isPlayerKitsAdmin(sender)){
commands.add("give");commands.add("delete");commands.add("create"); commands.add("give");commands.add("delete");commands.add("create");
commands.add("reload");commands.add("reset");commands.add("edit"); commands.add("reload");commands.add("reset");commands.add("edit");
commands.add("verify");
} }
for(String c : commands) { for(String c : commands) {
if(args[0].isEmpty() || c.startsWith(args[0].toLowerCase())) { if(args[0].isEmpty() || c.startsWith(args[0].toLowerCase())) {

View file

@ -33,6 +33,7 @@ public class PlayerKits2 extends JavaPlugin {
private InventoryEditManager inventoryEditManager; private InventoryEditManager inventoryEditManager;
private NMSManager nmsManager; private NMSManager nmsManager;
private UpdateCheckerManager updateCheckerManager; private UpdateCheckerManager updateCheckerManager;
private VerifyManager verifyManager;
private InventoryUpdateTaskManager inventoryUpdateTaskManager; private InventoryUpdateTaskManager inventoryUpdateTaskManager;
private PlayerDataSaveTask playerDataSaveTask; private PlayerDataSaveTask playerDataSaveTask;
@ -56,6 +57,9 @@ public class PlayerKits2 extends JavaPlugin {
this.inventoryUpdateTaskManager = new InventoryUpdateTaskManager(this); this.inventoryUpdateTaskManager = new InventoryUpdateTaskManager(this);
this.inventoryUpdateTaskManager.start(); this.inventoryUpdateTaskManager.start();
this.verifyManager = new VerifyManager(this);
this.verifyManager.verify();
if(configsManager.getMainConfigManager().isMySQL()){ if(configsManager.getMainConfigManager().isMySQL()){
mySQLConnection = new MySQLConnection(this); mySQLConnection = new MySQLConnection(this);
mySQLConnection.setupMySql(); mySQLConnection.setupMySql();
@ -147,12 +151,16 @@ public class PlayerKits2 extends JavaPlugin {
return updateCheckerManager; return updateCheckerManager;
} }
public VerifyManager getVerifyManager() {
return verifyManager;
}
public void updateMessage(UpdateCheckerResult result){ public void updateMessage(UpdateCheckerResult result){
if(!result.isError()){ if(!result.isError()){
String latestVersion = result.getLatestVersion(); String latestVersion = result.getLatestVersion();
if(latestVersion != null){ if(latestVersion != null){
Bukkit.getConsoleSender().sendMessage(MessagesManager.getColoredMessage("&cThere is a new version available. &e(&7"+latestVersion+"&e)")); Bukkit.getConsoleSender().sendMessage(MessagesManager.getColoredMessage("&cThere is a new version available. &e(&7"+latestVersion+"&e)"));
Bukkit.getConsoleSender().sendMessage(MessagesManager.getColoredMessage("&cYou can download it at: &fhttps://www.spigotmc.org/resources/112616/")); Bukkit.getConsoleSender().sendMessage(MessagesManager.getColoredMessage("&cYou can download it at: &fhttps://modrinth.com/plugin/playerkits-2"));
} }
}else{ }else{
Bukkit.getConsoleSender().sendMessage(MessagesManager.getColoredMessage(prefix+"&cError while checking update.")); Bukkit.getConsoleSender().sendMessage(MessagesManager.getColoredMessage(prefix+"&cError while checking update."));

View file

@ -66,6 +66,8 @@ public class ConfigsManager {
plugin.reloadPlayerDataSaveTask(); plugin.reloadPlayerDataSaveTask();
} }
plugin.getVerifyManager().verify();
return true; return true;
} }
} }

View file

@ -18,7 +18,7 @@ public class MessagesConfigManager {
this.plugin = plugin; this.plugin = plugin;
this.configFile = new CustomConfig("messages.yml",plugin,null, false); this.configFile = new CustomConfig("messages.yml",plugin,null, false);
this.configFile.registerConfig(); this.configFile.registerConfig();
checkUpdate();
} }
public void configure(){ public void configure(){
@ -38,6 +38,10 @@ public class MessagesConfigManager {
this.plugin.setMessagesManager(msgManager); this.plugin.setMessagesManager(msgManager);
} }
public void saveConfig(){
configFile.saveConfig();
}
public boolean reloadConfig(){ public boolean reloadConfig(){
if(!configFile.reloadConfig()){ if(!configFile.reloadConfig()){
return false; return false;
@ -54,13 +58,11 @@ public class MessagesConfigManager {
Path pathConfig = Paths.get(configFile.getRoute()); Path pathConfig = Paths.get(configFile.getRoute());
try{ try{
String text = new String(Files.readAllBytes(pathConfig)); String text = new String(Files.readAllBytes(pathConfig));
/* if(!text.contains("pluginCriticalErrors:")){
if(!text.contains("register_commands:")){ getConfig().set("pluginCriticalErrors", "&cThe plugin has detected some errors. Check them using &7/kit verify");
List<String> commands = new ArrayList<>();
getConfig().set("Config.register_commands", commands);
saveConfig(); saveConfig();
} }
*/
}catch(IOException e){ }catch(IOException e){
e.printStackTrace(); e.printStackTrace();
} }

View file

@ -29,6 +29,7 @@ public class InventoryEditListener implements Listener {
if(inventoryPlayer.getInventoryName().startsWith("edit_position")){ if(inventoryPlayer.getInventoryName().startsWith("edit_position")){
invManager.getInventoryEditPositionManager().closeInventory(inventoryPlayer); invManager.getInventoryEditPositionManager().closeInventory(inventoryPlayer);
} }
plugin.getVerifyManager().verify();
} }
plugin.getInventoryEditManager().removeInventoryPlayer(player); plugin.getInventoryEditManager().removeInventoryPlayer(player);
} }

View file

@ -28,7 +28,7 @@ public class PlayerListener implements Listener {
String latestVersion = plugin.getUpdateCheckerManager().getLatestVersion(); String latestVersion = plugin.getUpdateCheckerManager().getLatestVersion();
if(player.isOp() && plugin.getConfigsManager().getMainConfigManager().isUpdateNotify() && !plugin.version.equals(latestVersion)){ if(player.isOp() && plugin.getConfigsManager().getMainConfigManager().isUpdateNotify() && !plugin.version.equals(latestVersion)){
player.sendMessage(MessagesManager.getColoredMessage(plugin.prefix+"&cThere is a new version available. &e(&7"+latestVersion+"&e)")); player.sendMessage(MessagesManager.getColoredMessage(plugin.prefix+"&cThere is a new version available. &e(&7"+latestVersion+"&e)"));
player.sendMessage(MessagesManager.getColoredMessage("&cYou can download it at: &ahttps://www.spigotmc.org/resources/112616/")); player.sendMessage(MessagesManager.getColoredMessage("&cYou can download it at: &ahttps://modrinth.com/plugin/playerkits-2"));
} }
} }

View file

@ -0,0 +1,103 @@
package pk.ajneb97.managers;
import org.bukkit.entity.Player;
import pk.ajneb97.PlayerKits2;
import pk.ajneb97.model.Kit;
import pk.ajneb97.model.KitAction;
import pk.ajneb97.model.inventory.ItemKitInventory;
import pk.ajneb97.model.inventory.KitInventory;
import pk.ajneb97.model.verify.PKBaseError;
import pk.ajneb97.model.verify.PKInventoryInvalidKitError;
import pk.ajneb97.model.verify.PKKitActionError;
import pk.ajneb97.model.verify.PKKitDisplayItemError;
import java.util.ArrayList;
import java.util.List;
public class VerifyManager {
private PlayerKits2 plugin;
private ArrayList<PKBaseError> errors;
private boolean criticalErrors;
public VerifyManager(PlayerKits2 plugin) {
this.plugin = plugin;
this.errors = new ArrayList<PKBaseError>();
this.criticalErrors = false;
}
public void sendVerification(Player player) {
player.sendMessage(MessagesManager.getColoredMessage("&f&l- - - - - - - - &b&lPLAYERKITS 2 VERIFY &f&l- - - - - - - -"));
player.sendMessage(MessagesManager.getColoredMessage(""));
if(errors.isEmpty()) {
player.sendMessage(MessagesManager.getColoredMessage("&aThere are no errors in the plugin ;)"));
}else {
player.sendMessage(MessagesManager.getColoredMessage("&e&oHover on the errors to see more information."));
for(PKBaseError error : errors) {
error.sendMessage(player);
}
}
player.sendMessage(MessagesManager.getColoredMessage(""));
player.sendMessage(MessagesManager.getColoredMessage("&f&l- - - - - - - - &b&lPLAYERKITS 2 VERIFY &f&l- - - - - - - -"));
}
public void verify() {
this.errors = new ArrayList<PKBaseError>();
this.criticalErrors = false;
//CHECK KITS
ArrayList<Kit> kits = plugin.getKitsManager().getKits();
for(Kit kit : kits) {
verifyKit(kit);
}
//CHECK INVENTORIES
ArrayList<KitInventory> inventories = plugin.getInventoryManager().getInventories();
for(KitInventory inventory : inventories){
verifyInventory(inventory);
}
}
public void verifyKit(Kit kit) {
String kitName = kit.getName();
if(kit.getDisplayItemDefault() == null || kit.getDisplayItemDefault().getId() == null){
errors.add(new PKKitDisplayItemError(kitName+".yml",null,true,kitName));
criticalErrors = true;
}
verifyActions(kit.getClaimActions(),"claim",kitName);
verifyActions(kit.getErrorActions(),"error",kitName);
}
public void verifyActions(ArrayList<KitAction> actions,String actionGroup,String kitName){
for(int i=0;i<actions.size();i++){
KitAction action = actions.get(i);
String[] actionText = action.getAction().split(" ");
String actionName = actionText[0];
if(actionName.equals("console_command:") || actionName.equals("player_command:")
|| actionName.equals("playsound:") || actionName.equals("actionbar:")
|| actionName.equals("title:") || actionName.equals("firework:")){
continue;
}
errors.add(new PKKitActionError(kitName+".yml",action.getAction(),false,kitName,actionGroup,(i+1)+""));
}
}
public void verifyInventory(KitInventory inventory){
//Invalid kit on slot
KitsManager kitsManager = plugin.getKitsManager();
List<ItemKitInventory> items = inventory.getItems();
for(ItemKitInventory item : items){
String type = item.getType();
if(type != null && type.startsWith("kit: ")){
String kitName = type.replace("kit: ","");
if(kitsManager.getKitByName(kitName) == null){
errors.add(new PKInventoryInvalidKitError("inventory.yml",null,true,kitName,
inventory.getName(),item.getSlotsString()));
criticalErrors = true;
}
}
}
}
public boolean isCriticalErrors() {
return criticalErrors;
}
}

View file

@ -89,7 +89,7 @@ public class InventoryEditDisplayManager {
lore.add("&7inventory."); lore.add("&7inventory.");
new InventoryItem(inv, 26, Material.EMERALD_BLOCK).name("&6&lSave Item").lore(lore).ready(); new InventoryItem(inv, 26, Material.EMERALD_BLOCK).name("&6&lSave Item").lore(lore).ready();
if(kitItem != null){ if(kitItem != null && kitItem.getId() != null){
inv.setItem(13,plugin.getKitItemManager().createItemFromKitItem(kitItem, inventoryPlayer.getPlayer())); inv.setItem(13,plugin.getKitItemManager().createItemFromKitItem(kitItem, inventoryPlayer.getPlayer()));
} }

View file

@ -0,0 +1,45 @@
package pk.ajneb97.model.verify;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public abstract class PKBaseError {
protected String file;
protected String errorText;
protected boolean critical;
protected String prefix;
public PKBaseError(String file, String errorText, boolean critical){
this.file = file;
this.errorText = errorText;
this.critical = critical;
this.prefix = "&e⚠ ";;
if(this.critical){
this.prefix = "&c⚠ ";
}
}
public List<String> getFixedErrorText(){
List<String> sepText = new ArrayList<String>();
int currentPos = 0;
for(int i=0;i<errorText.length();i++) {
if(currentPos >= 35 && errorText.charAt(i) == ' ') {
String m = errorText.substring(i-currentPos, i);
currentPos = 0;
sepText.add(m);
}else {
currentPos++;
}
if(i==errorText.length()-1) {
String m = errorText.substring(i-currentPos+1, errorText.length());
sepText.add(m);
}
}
return sepText;
}
public abstract void sendMessage(Player player);
}

View file

@ -0,0 +1,33 @@
package pk.ajneb97.model.verify;
import org.bukkit.entity.Player;
import pk.ajneb97.utils.JSONMessage;
import java.util.ArrayList;
import java.util.List;
public class PKInventoryInvalidKitError extends PKBaseError{
private String kitName;
private String inventoryName;
private String slot;
public PKInventoryInvalidKitError(String file, String errorText, boolean critical, String kitName, String inventoryName, String slot) {
super(file, errorText, critical);
this.kitName = kitName;
this.inventoryName = inventoryName;
this.slot = slot;
}
@Override
public void sendMessage(Player player) {
List<String> hover = new ArrayList<String>();
JSONMessage jsonMessage = new JSONMessage(player,prefix+"&7Invalid kit named &c"+kitName+" &7on file &c"+file);
hover.add("&eTHIS IS AN ERROR!");
hover.add("&fA kit that doesn't exists is present on");
hover.add("&finventory &c"+inventoryName+" &fand slot &c"+slot+"&f.");
jsonMessage.hover(hover).send();
}
}

View file

@ -0,0 +1,40 @@
package pk.ajneb97.model.verify;
import org.bukkit.entity.Player;
import pk.ajneb97.utils.JSONMessage;
import java.util.ArrayList;
import java.util.List;
public class PKKitActionError extends PKBaseError{
private String kitName;
private String actionGroup;
private String actionId;
public PKKitActionError(String file, String errorText, boolean critical, String kitName, String actionGroup, String actionId) {
super(file, errorText, critical);
this.kitName = kitName;
this.actionId = actionId;
this.actionGroup = actionGroup;
}
@Override
public void sendMessage(Player player) {
List<String> hover = new ArrayList<String>();
JSONMessage jsonMessage = new JSONMessage(player,prefix+"&7Action (&c"+actionGroup+"&7,&c"+actionId+"&7)" +
" &7on kit &c"+kitName+" &7is not valid.");
hover.add("&eTHIS IS A WARNING!");
hover.add("&fThe action defined for this event");
hover.add("&fis probably not formatted correctly:");
for(String m : getFixedErrorText()) {
hover.add("&c"+m);
}
hover.add(" ");
hover.add("&fRemember to use a valid action from this list:");
hover.add("&ahttps://ajneb97.gitbook.io/playerkits-2/actions");
jsonMessage.hover(hover).send();
}
}

View file

@ -0,0 +1,29 @@
package pk.ajneb97.model.verify;
import org.bukkit.entity.Player;
import pk.ajneb97.utils.JSONMessage;
import java.util.ArrayList;
import java.util.List;
public class PKKitDisplayItemError extends PKBaseError{
private String kitName;
public PKKitDisplayItemError(String file, String errorText, boolean critical, String kitName) {
super(file, errorText, critical);
this.kitName = kitName;
}
@Override
public void sendMessage(Player player) {
List<String> hover = new ArrayList<String>();
JSONMessage jsonMessage = new JSONMessage(player,prefix+"&7Kit &c"+kitName+" &7doesn't have a default display item.");
hover.add("&eTHIS IS AN ERROR!");
hover.add("&fAll kits must have a default display");
hover.add("&fitem. Set one using /kit edit "+kitName);
jsonMessage.hover(hover).send();
}
}

View file

@ -0,0 +1,64 @@
package pk.ajneb97.utils;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.util.List;
public class JSONMessage {
private Player player;
private String text;
private BaseComponent[] hover;
private String suggestCommand;
private String executeCommand;
public JSONMessage(Player player, String text) {
this.player = player;
this.hover = null;
this.text = text;
}
public JSONMessage hover(List<String> list) {
hover = new BaseComponent[list.size()];
for(int i=0;i<list.size();i++) {
TextComponent line = new TextComponent();
if(i == list.size()-1) {
line.setText(ChatColor.translateAlternateColorCodes('&', list.get(i)));
}else {
line.setText(ChatColor.translateAlternateColorCodes('&', list.get(i))+"\n");
}
hover[i] = line;
}
return this;
}
public JSONMessage setSuggestCommand(String command) {
this.suggestCommand = command;
return this;
}
public JSONMessage setExecuteCommand(String command) {
this.executeCommand = command;
return this;
}
public void send() {
TextComponent message = new TextComponent();
message.setText(ChatColor.translateAlternateColorCodes('&', text));
if(hover != null) {
message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hover));
}
if(suggestCommand != null) {
message.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, suggestCommand));
}
if(executeCommand != null) {
message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, executeCommand));
}
player.spigot().sendMessage(message);
}
}

View file

@ -34,5 +34,6 @@ minutes: 'm'
hours: 'h' hours: 'h'
days: 'd' days: 'd'
cooldownPlaceholderReady: "&a&lReady!" cooldownPlaceholderReady: "&a&lReady!"
pluginCriticalErrors: "&cThe plugin has detected some errors. Check them using &7/kit verify"

View file

@ -1,5 +1,5 @@
main: pk.ajneb97.PlayerKits2 main: pk.ajneb97.PlayerKits2
version: 1.1.1 version: 1.2.1
name: PlayerKits2 name: PlayerKits2
api-version: 1.13 api-version: 1.13
softdepend: [Vault,PlaceholderAPI] softdepend: [Vault,PlaceholderAPI]