diff --git a/pom.xml b/pom.xml
index 67c4df7..a100e52 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
pk.ajneb97
PlayerKits2
- 1.18.3
+ 1.18.4
21
diff --git a/src/main/java/pk/ajneb97/MainCommand.java b/src/main/java/pk/ajneb97/MainCommand.java
index ac3af16..95d7d6d 100644
--- a/src/main/java/pk/ajneb97/MainCommand.java
+++ b/src/main/java/pk/ajneb97/MainCommand.java
@@ -44,6 +44,8 @@ public class MainCommand implements CommandExecutor, TabCompleter {
migrate(sender,args,messagesConfig,msgManager);
}else if(args[0].equalsIgnoreCase("open")){
open(sender,args,messagesConfig,msgManager);
+ }else if(args[0].equalsIgnoreCase("preview")){
+ preview(sender,args,messagesConfig,msgManager);
}else{
help(sender,msgManager,messagesConfig);
}
@@ -115,7 +117,7 @@ public class MainCommand implements CommandExecutor, TabCompleter {
sender.sendMessage(MessagesManager.getColoredMessage("&6/kit give &8Gives a kit to a player."));
sender.sendMessage(MessagesManager.getColoredMessage("&6/kit delete &8Deletes a kit."));
sender.sendMessage(MessagesManager.getColoredMessage("&6/kit reset /* &8Resets kit data for a player."));
- sender.sendMessage(MessagesManager.getColoredMessage("&6/kit preview &8Previews a kit."));
+ sender.sendMessage(MessagesManager.getColoredMessage("&6/kit preview (optional) &8Previews a kit."));
sender.sendMessage(MessagesManager.getColoredMessage("&6/kit open &8Opens a specific inventory for a player."));
sender.sendMessage(MessagesManager.getColoredMessage("&6/kit reload &8Reloads the config."));
sender.sendMessage(MessagesManager.getColoredMessage("&6/kit verify &8Checks the plugin for errors."));
@@ -254,31 +256,57 @@ public class MainCommand implements CommandExecutor, TabCompleter {
claimKitShortCommand(player,messagesConfig,msgManager,kitName);
}
- public void preview(Player player,String[] args,FileConfiguration messagesConfig,MessagesManager msgManager){
- // /kit preview
+ public void preview(CommandSender sender,String[] args,FileConfiguration messagesConfig,MessagesManager msgManager){
+ // /kit preview (optional)
MainConfigManager mainConfigManager = plugin.getConfigsManager().getMainConfigManager();
if(!mainConfigManager.isKitPreview()){
- msgManager.sendMessage(player,messagesConfig.getString("kitPreviewDisabled"),true);
+ msgManager.sendMessage(sender,messagesConfig.getString("kitPreviewDisabled"),true);
return;
}
if(args.length < 2){
- msgManager.sendMessage(player,messagesConfig.getString("commandPreviewError"),true);
+ msgManager.sendMessage(sender,messagesConfig.getString("commandPreviewError"),true);
return;
}
Kit kit = plugin.getKitsManager().getKitByName(args[1]);
if(kit == null){
- msgManager.sendMessage(player,messagesConfig.getString("kitDoesNotExists")
+ msgManager.sendMessage(sender,messagesConfig.getString("kitDoesNotExists")
.replace("%kit%",args[1]),true);
return;
}
- if(kit.isPermissionRequired()){
- if(mainConfigManager.isKitPreviewRequiresKitPermission() && !kit.playerHasPermission(player)){
- msgManager.sendMessage(player,messagesConfig.getString("cantPreviewError"),true);
+ Player player;
+ if(args.length > 2){
+ // Kit preview for someone else
+ if(!PlayerUtils.isPlayerKitsAdmin(sender)){
+ msgManager.sendMessage(sender,messagesConfig.getString("noPermissions"),true);
return;
}
+
+ player = Bukkit.getPlayer(args[2]);
+ if(player == null){
+ msgManager.sendMessage(sender,messagesConfig.getString("playerNotOnline")
+ .replace("%player%",args[2]),true);
+ return;
+ }
+
+ msgManager.sendMessage(sender,messagesConfig.getString("commandPreviewOtherCorrect")
+ .replace("%kit%",args[1]).replace("%player%",args[2]),true);
+ }else{
+ if(kit.isPermissionRequired()){
+ if(mainConfigManager.isKitPreviewRequiresKitPermission() && !kit.playerHasPermission(sender)){
+ msgManager.sendMessage(sender,messagesConfig.getString("cantPreviewError"),true);
+ return;
+ }
+ }
+
+ if(!(sender instanceof Player)){
+ msgManager.sendMessage(sender,messagesConfig.getString("onlyPlayerCommand"),true);
+ return;
+ }
+
+ player = (Player)sender;
}
InventoryPlayer inventoryPlayer = new InventoryPlayer(player,"preview_inventory");
@@ -477,7 +505,6 @@ public class MainCommand implements CommandExecutor, TabCompleter {
ArrayList inventories = plugin.getInventoryManager().getInventories();
for(KitInventory inv : inventories) {
- Bukkit.getConsoleSender().sendMessage(inv.getName());
if((argInv.isEmpty() || inv.getName().toLowerCase().startsWith(argInv.toLowerCase()))
&& !inv.getName().equals("preview_inventory") && !inv.getName().equals("buy_requirements_inventory")) {
completions.add(inv.getName());
diff --git a/src/main/java/pk/ajneb97/configs/MessagesConfigManager.java b/src/main/java/pk/ajneb97/configs/MessagesConfigManager.java
index ea24ee1..77ea39e 100644
--- a/src/main/java/pk/ajneb97/configs/MessagesConfigManager.java
+++ b/src/main/java/pk/ajneb97/configs/MessagesConfigManager.java
@@ -59,6 +59,11 @@ public class MessagesConfigManager {
Path pathConfig = Paths.get(configFile.getRoute());
try{
String text = new String(Files.readAllBytes(pathConfig));
+ if(!text.contains("commandPreviewOtherCorrect:")){
+ getConfig().set("onlyPlayerCommand", "&cOnly a player can use this command.");
+ getConfig().set("commandPreviewOtherCorrect", "&aPreviewing kit &7%kit% &ato &e%player%&a.");
+ saveConfig();
+ }
if(!text.contains("kitResetCorrectAll:")){
getConfig().set("kitResetCorrectAll", "&aKit &7%kit% &areset for &7all players&a!");
saveConfig();
diff --git a/src/main/java/pk/ajneb97/managers/KitsManager.java b/src/main/java/pk/ajneb97/managers/KitsManager.java
index 2ed552e..736ee41 100644
--- a/src/main/java/pk/ajneb97/managers/KitsManager.java
+++ b/src/main/java/pk/ajneb97/managers/KitsManager.java
@@ -236,6 +236,8 @@ public class KitsManager {
KitItem itemBoots = null;
KitItem itemOffhand = null;
+ boolean clearInventory = kit.isClearInventory();
+
PlayerInventory playerInventory = player.getInventory();
for(KitItem item : items){
if(kit.isAutoArmor()){
@@ -245,34 +247,39 @@ public class KitsManager {
}
//Check if the item must be put in the player equipment
- if((id.contains("_HELMET") || id.contains("PLAYER_HEAD") || id.contains("SKULL_ITEM")) && itemHelmet == null && (playerInventory.getHelmet() == null
- || playerInventory.getHelmet().getType().equals(Material.AIR))){
- itemHelmet = item;
- freeSlots++;
- continue;
- }else if((id.contains("_CHESTPLATE") || id.contains("ELYTRA")) && itemChestplate == null && (playerInventory.getChestplate() == null
- || playerInventory.getChestplate().getType().equals(Material.AIR))){
- itemChestplate = item;
- freeSlots++;
- continue;
- }else if(id.contains("_LEGGINGS") && itemLeggings == null && (playerInventory.getLeggings() == null
- || playerInventory.getLeggings().getType().equals(Material.AIR))){
- itemLeggings = item;
- freeSlots++;
- continue;
- }else if(id.contains("_BOOTS") && itemBoots == null && (playerInventory.getBoots() == null
- || playerInventory.getBoots().getType().equals(Material.AIR))){
- itemBoots = item;
- freeSlots++;
- continue;
+ if((id.contains("_HELMET") || id.contains("PLAYER_HEAD") || id.contains("SKULL_ITEM")) && itemHelmet == null){
+ if(playerInventory.getHelmet() == null || playerInventory.getHelmet().getType().equals(Material.AIR) || clearInventory){
+ itemHelmet = item;
+ freeSlots++;
+ continue;
+ }
+ }else if((id.contains("_CHESTPLATE") || id.contains("ELYTRA")) && itemChestplate == null){
+ if(playerInventory.getChestplate() == null || playerInventory.getChestplate().getType().equals(Material.AIR) || clearInventory){
+ itemChestplate = item;
+ freeSlots++;
+ continue;
+ }
+ }else if(id.contains("_LEGGINGS") && itemLeggings == null){
+ if(playerInventory.getLeggings() == null || playerInventory.getLeggings().getType().equals(Material.AIR) || clearInventory){
+ itemLeggings = item;
+ freeSlots++;
+ continue;
+ }
+ }else if(id.contains("_BOOTS") && itemBoots == null){
+ if(playerInventory.getBoots() == null || playerInventory.getBoots().getType().equals(Material.AIR) || clearInventory){
+ itemBoots = item;
+ freeSlots++;
+ continue;
+ }
}
}
- if(item.isOffhand() && itemOffhand == null && (playerInventory.getItemInOffHand() == null
- || playerInventory.getItemInOffHand().getType().equals(Material.AIR))){
- itemOffhand = item;
- freeSlots++;
- continue;
+ if(item.isOffhand() && itemOffhand == null){
+ if(playerInventory.getItemInOffHand() == null || playerInventory.getItemInOffHand().getType().equals(Material.AIR) || clearInventory){
+ itemOffhand = item;
+ freeSlots++;
+ continue;
+ }
}
inventoryKitItems++;
@@ -286,7 +293,6 @@ public class KitsManager {
boolean enoughSpace = freeSlots < inventoryKitItems;
boolean dropItemsIfFullInventory = configFile.getBoolean("drop_items_if_full_inventory");
- boolean clearInventory = kit.isClearInventory();
if(enoughSpace && !dropItemsIfFullInventory && !clearInventory){
sendKitActions(kit.getErrorActions(),player,false);
diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml
index 35e3231..5205581 100644
--- a/src/main/resources/messages.yml
+++ b/src/main/resources/messages.yml
@@ -11,7 +11,7 @@ commandCreateError: "&cYou need to use: &7/kit create (optional)original/
commandDeleteError: "&cYou need to use: &7/kit delete "
commandResetError: "&cYou need to use: &7/kit reset "
commandEditError: "&cYou need to use: &7/kit edit "
-commandPreviewError: "&cYou need to use: &7/kit preview "
+commandPreviewError: "&cYou need to use: &7/kit preview (optional)"
commandOpenError: "&cYou need to use: &7/kit open "
commandDoesNotExists: "&cThat command doesn't exists."
playerNotOnline: "&cPlayer &7%player% &cis not online."
@@ -40,5 +40,7 @@ cooldownPlaceholderReady: "&a&lReady!"
pluginCriticalErrors: "&cThe plugin has detected some errors. Check them using &7/kit verify"
kitPreviewDisabled: "&cKit preview is disabled."
inventoryNotExists: "&cThat inventory doesn't exists."
+onlyPlayerCommand: "&cOnly a player can use this command."
+commandPreviewOtherCorrect: "&aPreviewing kit &7%kit% &ato &e%player%&a."