This commit is contained in:
Ajneb97 2024-10-09 17:37:01 -03:00
parent 76e89a4052
commit d797352812
17 changed files with 172 additions and 56 deletions

View file

@ -37,7 +37,7 @@
<dependency> <dependency>
<groupId>org.spigotmc</groupId> <groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId> <artifactId>spigot-api</artifactId>
<version>1.20.6-R0.1-SNAPSHOT</version> <version>1.21.1-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>

View file

@ -114,7 +114,7 @@ public class MainCommand implements CommandExecutor, TabCompleter {
sender.sendMessage(MessagesManager.getColoredMessage("&6/kit edit <kit> &8Edits a kit.")); sender.sendMessage(MessagesManager.getColoredMessage("&6/kit edit <kit> &8Edits a kit."));
sender.sendMessage(MessagesManager.getColoredMessage("&6/kit give <kit> <player> &8Gives a kit to a player.")); sender.sendMessage(MessagesManager.getColoredMessage("&6/kit give <kit> <player> &8Gives a kit to a player."));
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 preview <kit> &8Previews a kit.")); sender.sendMessage(MessagesManager.getColoredMessage("&6/kit preview <kit> &8Previews a kit."));
sender.sendMessage(MessagesManager.getColoredMessage("&6/kit open <inventory> <player> &8Opens a specific inventory for a player.")); sender.sendMessage(MessagesManager.getColoredMessage("&6/kit open <inventory> <player> &8Opens a specific inventory for a player."));
sender.sendMessage(MessagesManager.getColoredMessage("&6/kit reload &8Reloads the config.")); sender.sendMessage(MessagesManager.getColoredMessage("&6/kit reload &8Reloads the config."));
@ -168,12 +168,17 @@ public class MainCommand implements CommandExecutor, TabCompleter {
String kitName = args[1]; String kitName = args[1];
String playerName = args[2]; String playerName = args[2];
PlayerKitsMessageResult result = plugin.getPlayerDataManager().resetKitForPlayer(playerName,kitName); PlayerKitsMessageResult result = plugin.getPlayerDataManager().resetKitForPlayer(playerName,kitName,playerName.equals("*"));
if(result.isError()){ if(result.isError()){
msgManager.sendMessage(sender, result.getMessage(), true); msgManager.sendMessage(sender, result.getMessage(), true);
}else{ }else{
msgManager.sendMessage(sender, messagesConfig.getString("kitResetCorrect") if(playerName.equals("*")){
.replace("%kit%",kitName).replace("%player%",playerName), true); msgManager.sendMessage(sender, messagesConfig.getString("kitResetCorrectAll")
.replace("%kit%",kitName), true);
}else{
msgManager.sendMessage(sender, messagesConfig.getString("kitResetCorrect")
.replace("%kit%",kitName).replace("%player%",playerName), true);
}
} }
} }
@ -430,6 +435,16 @@ public class MainCommand implements CommandExecutor, TabCompleter {
} }
} }
return completions; return completions;
}else if(args[0].equalsIgnoreCase("reset")){
for(Player p : Bukkit.getOnlinePlayers()) {
if(args[2].isEmpty() || p.getName().toLowerCase().startsWith(args[2].toLowerCase())){
completions.add(p.getName());
}
}
if(args[2].isEmpty() || "*".startsWith(args[2].toLowerCase())) {
completions.add("*");
}
return completions;
} }
} }
} }

View file

@ -58,6 +58,10 @@ 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("kitResetCorrectAll:")){
getConfig().set("kitResetCorrectAll", "&aKit &7%kit% &areset for &7all players&a!");
saveConfig();
}
if(!text.contains("commandOpenError:")){ if(!text.contains("commandOpenError:")){
getConfig().set("commandOpenError", "&cYou need to use: &7/kit open <inventory> <player>"); getConfig().set("commandOpenError", "&cYou need to use: &7/kit open <inventory> <player>");
getConfig().set("inventoryNotExists", "&cThat inventory doesn't exists."); getConfig().set("inventoryNotExists", "&cThat inventory doesn't exists.");

View file

@ -267,18 +267,27 @@ public class MySQLConnection {
}.runTaskAsynchronously(plugin); }.runTaskAsynchronously(plugin);
} }
public void resetKit(String uuid,String kitName){ public void resetKit(String uuid,String kitName,boolean all){
new BukkitRunnable(){ new BukkitRunnable(){
@Override @Override
public void run() { public void run() {
try(Connection connection = getConnection()){ try(Connection connection = getConnection()){
PreparedStatement statement = connection.prepareStatement( PreparedStatement statement;
"DELETE FROM playerkits_players_kits " + if(all){
"WHERE UUID=? AND NAME=?"); statement = connection.prepareStatement(
"DELETE FROM playerkits_players_kits " +
"WHERE NAME=?");
statement.setString(1, kitName);
}else{
statement = connection.prepareStatement(
"DELETE FROM playerkits_players_kits " +
"WHERE UUID=? AND NAME=?");
statement.setString(1, uuid); statement.setString(1, uuid);
statement.setString(2, kitName); statement.setString(2, kitName);
}
statement.executeUpdate(); statement.executeUpdate();
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }

View file

@ -13,6 +13,7 @@ import org.bukkit.scheduler.BukkitRunnable;
import pk.ajneb97.PlayerKits2; import pk.ajneb97.PlayerKits2;
import pk.ajneb97.managers.edit.InventoryEditManager; import pk.ajneb97.managers.edit.InventoryEditManager;
import pk.ajneb97.model.inventory.InventoryPlayer; import pk.ajneb97.model.inventory.InventoryPlayer;
import pk.ajneb97.utils.InventoryUtils;
public class InventoryEditListener implements Listener { public class InventoryEditListener implements Listener {
@ -62,7 +63,7 @@ public class InventoryEditListener implements Listener {
return; return;
} }
if(event.getClickedInventory().equals(player.getOpenInventory().getTopInventory())) { if(event.getClickedInventory().equals(InventoryUtils.getTopInventory(player))) {
invManager.clickInventory(inventoryPlayer,event.getCurrentItem(),event.getSlot(),clickType); invManager.clickInventory(inventoryPlayer,event.getCurrentItem(),event.getSlot(),clickType);
} }
} }

View file

@ -11,6 +11,7 @@ import pk.ajneb97.PlayerKits2;
import pk.ajneb97.managers.InventoryManager; import pk.ajneb97.managers.InventoryManager;
import pk.ajneb97.managers.MessagesManager; import pk.ajneb97.managers.MessagesManager;
import pk.ajneb97.model.inventory.InventoryPlayer; import pk.ajneb97.model.inventory.InventoryPlayer;
import pk.ajneb97.utils.InventoryUtils;
public class PlayerListener implements Listener { public class PlayerListener implements Listener {
@ -49,7 +50,7 @@ public class PlayerListener implements Listener {
return; return;
} }
if(event.getClickedInventory().equals(player.getOpenInventory().getTopInventory())) { if(event.getClickedInventory().equals(InventoryUtils.getTopInventory(player))) {
ClickType clickType = event.getClick(); ClickType clickType = event.getClick();
invManager.clickInventory(inventoryPlayer,event.getCurrentItem(),clickType); invManager.clickInventory(inventoryPlayer,event.getCurrentItem(),clickType);
} }

View file

@ -224,7 +224,7 @@ public class KitItemManager {
if (flag.equals("HIDE_ATTRIBUTES") && plugin.getDependencyManager().isPaper() && if (flag.equals("HIDE_ATTRIBUTES") && plugin.getDependencyManager().isPaper() &&
serverVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_21_R1)) { serverVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_21_R1)) {
//Fix PAPER HIDE_ATTRIBUTES //Fix PAPER HIDE_ATTRIBUTES
ItemUtils.addDummyAttribute(meta); ItemUtils.addDummyAttribute(meta,plugin);
} }
meta.addItemFlags(ItemFlag.valueOf(flag)); meta.addItemFlags(ItemFlag.valueOf(flag));
} }

View file

@ -130,18 +130,29 @@ public class PlayerDataManager {
} }
} }
public PlayerKitsMessageResult resetKitForPlayer(String name, String kitName){ public PlayerKitsMessageResult resetKitForPlayer(String name, String kitName, boolean all){
PlayerData playerData = getPlayerByName(name); PlayerData playerData = getPlayerByName(name);
FileConfiguration messagesConfig = plugin.getConfigsManager().getMessagesConfigManager().getConfig(); FileConfiguration messagesConfig = plugin.getConfigsManager().getMessagesConfigManager().getConfig();
if(playerData == null){ if(playerData == null && !all){
return PlayerKitsMessageResult.error(messagesConfig.getString("playerDataNotFound") return PlayerKitsMessageResult.error(messagesConfig.getString("playerDataNotFound")
.replace("%player%",name)); .replace("%player%",name));
} }
playerData.resetKit(kitName); if(all){
playerData.setModified(true); for(PlayerData p : players){
p.resetKit(kitName);
}
}else{
playerData.resetKit(kitName);
}
if(plugin.getMySQLConnection() != null){ if(plugin.getMySQLConnection() != null){
plugin.getMySQLConnection().resetKit(playerData.getUuid(),kitName); if(all){
plugin.getMySQLConnection().resetKit(null,kitName,true);
}else{
plugin.getMySQLConnection().resetKit(playerData.getUuid(),kitName,false);
}
} }
return PlayerKitsMessageResult.success(); return PlayerKitsMessageResult.success();

View file

@ -13,6 +13,7 @@ import pk.ajneb97.model.KitAction;
import pk.ajneb97.model.inventory.InventoryPlayer; import pk.ajneb97.model.inventory.InventoryPlayer;
import pk.ajneb97.model.item.KitItem; import pk.ajneb97.model.item.KitItem;
import pk.ajneb97.utils.InventoryItem; import pk.ajneb97.utils.InventoryItem;
import pk.ajneb97.utils.InventoryUtils;
import pk.ajneb97.utils.OtherUtils; import pk.ajneb97.utils.OtherUtils;
import java.util.ArrayList; import java.util.ArrayList;
@ -104,7 +105,7 @@ public class InventoryEditDisplayManager {
} }
public void saveKitItem(InventoryPlayer inventoryPlayer){ public void saveKitItem(InventoryPlayer inventoryPlayer){
Inventory inv = inventoryPlayer.getPlayer().getOpenInventory().getTopInventory(); Inventory inv = InventoryUtils.getTopInventory(inventoryPlayer.getPlayer());
if(inv != null) { if(inv != null) {
ItemStack item = inv.getItem(13); ItemStack item = inv.getItem(13);
@ -139,7 +140,7 @@ public class InventoryEditDisplayManager {
if(event.getSlotType() == null || event.getClickedInventory() == null){ if(event.getSlotType() == null || event.getClickedInventory() == null){
return; return;
} }
if(event.getClickedInventory().equals(inventoryPlayer.getPlayer().getOpenInventory().getTopInventory())){ if(event.getClickedInventory().equals(InventoryUtils.getTopInventory(inventoryPlayer.getPlayer()))){
//Top inventory //Top inventory
//Cancel unless is slot 13 //Cancel unless is slot 13
if(slot != 13){ if(slot != 13){

View file

@ -14,6 +14,7 @@ import pk.ajneb97.model.Kit;
import pk.ajneb97.model.inventory.InventoryPlayer; import pk.ajneb97.model.inventory.InventoryPlayer;
import pk.ajneb97.model.item.KitItem; import pk.ajneb97.model.item.KitItem;
import pk.ajneb97.utils.InventoryItem; import pk.ajneb97.utils.InventoryItem;
import pk.ajneb97.utils.InventoryUtils;
import pk.ajneb97.utils.ItemUtils; import pk.ajneb97.utils.ItemUtils;
import pk.ajneb97.utils.OtherUtils; import pk.ajneb97.utils.OtherUtils;
@ -147,7 +148,7 @@ public class InventoryEditKitItemsManager {
} }
public void saveKitItems(InventoryPlayer inventoryPlayer){ public void saveKitItems(InventoryPlayer inventoryPlayer){
Inventory inv = inventoryPlayer.getPlayer().getOpenInventory().getTopInventory(); Inventory inv = InventoryUtils.getTopInventory(inventoryPlayer.getPlayer());
if(inv != null) { if(inv != null) {
Kit kit = plugin.getKitsManager().getKitByName(inventoryPlayer.getKitName()); Kit kit = plugin.getKitsManager().getKitByName(inventoryPlayer.getKitName());
KitItemManager kitItemManager = plugin.getKitItemManager(); KitItemManager kitItemManager = plugin.getKitItemManager();
@ -182,7 +183,7 @@ public class InventoryEditKitItemsManager {
if(event.getSlotType() == null || event.getClickedInventory() == null){ if(event.getSlotType() == null || event.getClickedInventory() == null){
return; return;
} }
if(event.getClickedInventory().equals(inventoryPlayer.getPlayer().getOpenInventory().getTopInventory())){ if(event.getClickedInventory().equals(InventoryUtils.getTopInventory(inventoryPlayer.getPlayer()))){
//Top inventory //Top inventory
//Cancel between 45 and 53 //Cancel between 45 and 53
//Cancel if right click //Cancel if right click

View file

@ -16,6 +16,7 @@ import pk.ajneb97.model.inventory.InventoryPlayer;
import pk.ajneb97.model.inventory.ItemKitInventory; import pk.ajneb97.model.inventory.ItemKitInventory;
import pk.ajneb97.model.inventory.KitInventory; import pk.ajneb97.model.inventory.KitInventory;
import pk.ajneb97.utils.InventoryItem; import pk.ajneb97.utils.InventoryItem;
import pk.ajneb97.utils.InventoryUtils;
import pk.ajneb97.utils.ItemUtils; import pk.ajneb97.utils.ItemUtils;
import java.util.ArrayList; import java.util.ArrayList;
@ -124,7 +125,7 @@ public class InventoryEditPositionManager {
if(event.getSlotType() == null || event.getClickedInventory() == null){ if(event.getSlotType() == null || event.getClickedInventory() == null){
return; return;
} }
if(event.getClickedInventory().equals(inventoryPlayer.getPlayer().getOpenInventory().getTopInventory())){ if(event.getClickedInventory().equals(InventoryUtils.getTopInventory(inventoryPlayer.getPlayer()))){
//Should not be an item unless has open inventory tag //Should not be an item unless has open inventory tag
if(item == null || item.getType().equals(Material.AIR)){ if(item == null || item.getType().equals(Material.AIR)){
//Update position //Update position

View file

@ -132,6 +132,7 @@ public class PlayerData {
for(int i=0;i<kits.size();i++){ for(int i=0;i<kits.size();i++){
if(kits.get(i).getName().equals(kitName)){ if(kits.get(i).getName().equals(kitName)){
kits.remove(i); kits.remove(i);
modified = true;
} }
} }
} }

View file

@ -7,6 +7,7 @@ import org.bukkit.scheduler.BukkitRunnable;
import pk.ajneb97.PlayerKits2; import pk.ajneb97.PlayerKits2;
import pk.ajneb97.managers.*; import pk.ajneb97.managers.*;
import pk.ajneb97.model.inventory.InventoryPlayer; import pk.ajneb97.model.inventory.InventoryPlayer;
import pk.ajneb97.utils.InventoryUtils;
import pk.ajneb97.utils.ItemUtils; import pk.ajneb97.utils.ItemUtils;
import java.util.ArrayList; import java.util.ArrayList;
@ -36,7 +37,7 @@ public class InventoryUpdateTaskManager {
ArrayList<InventoryPlayer> players = inventoryManager.getPlayers(); ArrayList<InventoryPlayer> players = inventoryManager.getPlayers();
for(InventoryPlayer player : players){ for(InventoryPlayer player : players){
Inventory inv = player.getPlayer().getOpenInventory().getTopInventory(); Inventory inv = InventoryUtils.getTopInventory(player.getPlayer());
if(inv == null){ if(inv == null){
continue; continue;
} }

View file

@ -0,0 +1,42 @@
package pk.ajneb97.utils;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryEvent;
import org.bukkit.inventory.Inventory;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class InventoryUtils {
/**
* Thanks to Rumsfield
* https://www.spigotmc.org/threads/inventoryview-changed-to-interface-backwards-compatibility.651754/
* In API versions 1.20.6 and earlier, InventoryView is a class.
* In versions 1.21 and later, it is an interface.
* This method uses reflection to get the top Inventory object from the
* InventoryView associated with an InventoryEvent, to avoid runtime errors.
* @param event The generic InventoryEvent with an InventoryView to inspect.
* @return The top Inventory object from the event's InventoryView.
*/
public static Inventory getTopInventory(InventoryEvent event) {
try {
Object view = event.getView();
Method getTopInventory = view.getClass().getMethod("getTopInventory");
getTopInventory.setAccessible(true);
return (Inventory) getTopInventory.invoke(view);
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
throw new RuntimeException(e);
}
}
public static Inventory getTopInventory(Player player) {
try {
Object view = player.getOpenInventory();
Method getTopInventory = view.getClass().getMethod("getTopInventory");
getTopInventory.setAccessible(true);
return (Inventory) getTopInventory.invoke(view);
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}

View file

@ -17,6 +17,7 @@ import org.bukkit.block.banner.Pattern;
import org.bukkit.block.banner.PatternType; import org.bukkit.block.banner.PatternType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.EquipmentSlotGroup;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.*; import org.bukkit.inventory.meta.*;
import org.bukkit.inventory.meta.BookMeta.Generation; import org.bukkit.inventory.meta.BookMeta.Generation;
@ -522,6 +523,9 @@ public class ItemUtils {
return plugin.getNmsManager().getAttributes(item); return plugin.getNmsManager().getAttributes(item);
}else { }else {
//1.13+ //1.13+
ServerVersion serverVersion = PlayerKits2.serverVersion;
boolean newSystem = serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_21_R1);
ItemMeta meta = item.getItemMeta(); ItemMeta meta = item.getItemMeta();
if(meta.hasAttributeModifiers()) { if(meta.hasAttributeModifiers()) {
Multimap<Attribute,AttributeModifier> attributes = meta.getAttributeModifiers(); Multimap<Attribute,AttributeModifier> attributes = meta.getAttributeModifiers();
@ -531,11 +535,18 @@ public class ItemUtils {
for(Attribute a : set) { for(Attribute a : set) {
Collection<AttributeModifier> listModifiers = attributes.get(a); Collection<AttributeModifier> listModifiers = attributes.get(a);
for(AttributeModifier m : listModifiers) { for(AttributeModifier m : listModifiers) {
String line = a.name()+";"+m.getOperation().name()+";"+m.getAmount()+";"+m.getUniqueId(); String line;
if(m.getSlot() != null) { if(newSystem){
line=line+";"+m.getSlot().name(); line = a.name()+";"+m.getOperation().name()+";"+m.getAmount()+";"+m.getKey().getNamespace()+":"+m.getKey().getKey();
line=line+";"+m.getSlotGroup().toString();
}else{
line = a.name()+";"+m.getOperation().name()+";"+m.getAmount()+";"+m.getUniqueId();
if(m.getSlot() != null) {
line=line+";"+m.getSlot().name();
}
line=line+";custom_name:"+m.getName();
} }
line=line+";custom_name:"+m.getName();
attributeList.add(line); attributeList.add(line);
} }
} }
@ -555,41 +566,57 @@ public class ItemUtils {
return plugin.getNmsManager().setAttributes(item,attributes); return plugin.getNmsManager().setAttributes(item,attributes);
}else { }else {
//1.13+ //1.13+
ItemMeta meta = item.getItemMeta(); ServerVersion serverVersion = PlayerKits2.serverVersion;
for(String a : attributes) { boolean newSystem = serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_21_R1);
String[] sep = a.split(";");
String attribute = sep[0]; try{
AttributeModifier.Operation op = AttributeModifier.Operation.valueOf(sep[1]); ItemMeta meta = item.getItemMeta();
double amount = Double.valueOf(sep[2]); for(String a : attributes) {
UUID uuid = UUID.fromString(sep[3]); String[] sep = a.split(";");
String customName = attribute; String attribute = sep[0];
for(int i=0;i<sep.length;i++){ AttributeModifier.Operation op = AttributeModifier.Operation.valueOf(sep[1]);
if(sep[i].startsWith("custom_name:")){ double amount = Double.valueOf(sep[2]);
customName = sep[i].replace("custom_name:","");
} AttributeModifier modifier = null;
}
AttributeModifier modifier = null; if(newSystem){
if(sep.length >= 5) { String[] id = sep[3].split(":");
if(!sep[4].startsWith("custom_name:")){ NamespacedKey namespacedKey = new NamespacedKey(id[0],id[1]);
EquipmentSlot slot = EquipmentSlot.valueOf(sep[4]); modifier = new AttributeModifier(namespacedKey,amount,op,EquipmentSlotGroup.getByName(sep[4]));
modifier = new AttributeModifier(uuid,customName,amount,op,slot);
}else{ }else{
modifier = new AttributeModifier(uuid,customName,amount,op); String customName = attribute;
for(int i=0;i<sep.length;i++){
if(sep[i].startsWith("custom_name:")){
customName = sep[i].replace("custom_name:","");
}
}
UUID uuid = UUID.fromString(sep[3]);
if(sep.length >= 5) {
if(!sep[4].startsWith("custom_name:")){
EquipmentSlot slot = EquipmentSlot.valueOf(sep[4]);
modifier = new AttributeModifier(uuid,customName,amount,op,slot);
}else{
modifier = new AttributeModifier(uuid,customName,amount,op);
}
}else {
modifier = new AttributeModifier(uuid,customName,amount,op);
}
} }
}else {
modifier = new AttributeModifier(uuid,customName,amount,op); meta.addAttributeModifier(Attribute.valueOf(attribute), modifier);
} }
meta.addAttributeModifier(Attribute.valueOf(attribute), modifier); item.setItemMeta(meta);
}catch(Exception e){
} }
item.setItemMeta(meta);
} }
return item; return item;
} }
public static void addDummyAttribute(ItemMeta meta){ // 1.21+ only
AttributeModifier modifier = new AttributeModifier(UUID.randomUUID(),"",0,AttributeModifier.Operation.ADD_NUMBER,EquipmentSlot.FEET); public static void addDummyAttribute(ItemMeta meta,PlayerKits2 plugin){
AttributeModifier modifier = new AttributeModifier(new NamespacedKey(plugin,"dummy_attribute"),0,AttributeModifier.Operation.ADD_NUMBER,EquipmentSlotGroup.FEET);
meta.addAttributeModifier(Attribute.GENERIC_GRAVITY, modifier); meta.addAttributeModifier(Attribute.GENERIC_GRAVITY, modifier);
} }

View file

@ -27,6 +27,7 @@ noPermissions: "&cYou don't have permissions for that."
kitDeleted: "&aKit &7%kit% &adeleted correctly." kitDeleted: "&aKit &7%kit% &adeleted correctly."
playerDataNotFound: "&cNo data found for player &7%player%&c." playerDataNotFound: "&cNo data found for player &7%player%&c."
kitResetCorrect: "&aKit &7%kit% &areset for &7%player%&a!" kitResetCorrect: "&aKit &7%kit% &areset for &7%player%&a!"
kitResetCorrectAll: "&aKit &7%kit% &areset for &7all players&a!"
cantPreviewError: "&cYou can't preview this kit." cantPreviewError: "&cYou can't preview this kit."
requirementsMessageStatusSymbolTrue: "&a&l✔" requirementsMessageStatusSymbolTrue: "&a&l✔"
requirementsMessageStatusSymbolFalse: "&c&l✖" requirementsMessageStatusSymbolFalse: "&c&l✖"

View file

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