This commit is contained in:
Ajneb97 2024-02-20 20:11:01 -03:00
parent 97b5fc89bd
commit edd31638d0
6 changed files with 105 additions and 13 deletions

View file

@ -13,6 +13,7 @@ import pk.ajneb97.model.Kit;
import pk.ajneb97.model.internal.GiveKitInstructions; import pk.ajneb97.model.internal.GiveKitInstructions;
import pk.ajneb97.model.internal.PlayerKitsMessageResult; import pk.ajneb97.model.internal.PlayerKitsMessageResult;
import pk.ajneb97.model.inventory.InventoryPlayer; import pk.ajneb97.model.inventory.InventoryPlayer;
import pk.ajneb97.model.inventory.KitInventory;
import pk.ajneb97.utils.PlayerUtils; import pk.ajneb97.utils.PlayerUtils;
import java.util.ArrayList; import java.util.ArrayList;
@ -41,6 +42,8 @@ public class MainCommand implements CommandExecutor, TabCompleter {
reset(sender,args,messagesConfig,msgManager); reset(sender,args,messagesConfig,msgManager);
}else if(args[0].equalsIgnoreCase("migrate")) { }else if(args[0].equalsIgnoreCase("migrate")) {
migrate(sender,args,messagesConfig,msgManager); migrate(sender,args,messagesConfig,msgManager);
}else if(args[0].equalsIgnoreCase("open")){
open(sender,args,messagesConfig,msgManager);
}else{ }else{
help(sender,msgManager,messagesConfig); help(sender,msgManager,messagesConfig);
} }
@ -73,6 +76,8 @@ public class MainCommand implements CommandExecutor, TabCompleter {
verify(player,messagesConfig,msgManager); verify(player,messagesConfig,msgManager);
}else if(args[0].equalsIgnoreCase("migrate")) { }else if(args[0].equalsIgnoreCase("migrate")) {
migrate(sender,args,messagesConfig,msgManager); migrate(sender,args,messagesConfig,msgManager);
}else if(args[0].equalsIgnoreCase("open")){
open(sender,args,messagesConfig,msgManager);
} }
else{ else{
// /kit <kit> (short command) // /kit <kit> (short command)
@ -171,6 +176,37 @@ public class MainCommand implements CommandExecutor, TabCompleter {
} }
} }
public void open(CommandSender sender,String[] args,FileConfiguration messagesConfig,MessagesManager msgManager) {
// /kits open <inventory> <player>
if(!PlayerUtils.isPlayerKitsAdmin(sender)) {
msgManager.sendMessage(sender, messagesConfig.getString("noPermissions"), true);
return;
}
if(args.length < 3) {
msgManager.sendMessage(sender, messagesConfig.getString("commandOpenError"), true);
return;
}
String inventoryName = args[1];
String playerName = args[2];
if(plugin.getInventoryManager().getInventory(inventoryName) == null){
msgManager.sendMessage(sender, messagesConfig.getString("inventoryNotExists"), true);
return;
}
Player player = Bukkit.getPlayer(playerName);
if(player == null){
msgManager.sendMessage(sender,messagesConfig.getString("playerNotOnline")
.replace("%player%",playerName),true);
return;
}
InventoryPlayer inventoryPlayer = new InventoryPlayer(player,inventoryName);
plugin.getInventoryManager().openInventory(inventoryPlayer);
}
public void give(CommandSender sender,String[] args,FileConfiguration messagesConfig,MessagesManager msgManager){ public void give(CommandSender sender,String[] args,FileConfiguration messagesConfig,MessagesManager msgManager){
// /kits give <kit> <player> // /kits give <kit> <player>
if(!PlayerUtils.isPlayerKitsAdmin(sender)){ if(!PlayerUtils.isPlayerKitsAdmin(sender)){
@ -341,7 +377,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");commands.add("migrate"); commands.add("verify");commands.add("migrate");commands.add("open");
} }
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())) {
@ -360,10 +396,16 @@ public class MainCommand implements CommandExecutor, TabCompleter {
if(PlayerUtils.isPlayerKitsAdmin(sender)){ if(PlayerUtils.isPlayerKitsAdmin(sender)){
commands.add("give");commands.add("delete"); commands.add("give");commands.add("delete");
commands.add("reset");commands.add("edit"); commands.add("reset");commands.add("edit");
commands.add("open");
} }
for(String c : commands) { for(String c : commands) {
if(args[0].equalsIgnoreCase(c)){ if(args[0].equalsIgnoreCase(c)){
return getKitCompletions(sender,args,1); if(c.equals("open")){
return getInventoryCompletions(args,1);
}else{
return getKitCompletions(sender,args,1);
}
} }
} }
} }
@ -390,4 +432,23 @@ public class MainCommand implements CommandExecutor, TabCompleter {
} }
return completions; return completions;
} }
public List<String> getInventoryCompletions(String[] args,int argInvPos){
List<String> completions = new ArrayList<>();
String argInv = args[argInvPos];
ArrayList<KitInventory> 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());
}
}
if(completions.isEmpty()){
return null;
}
return completions;
}
} }

View file

@ -58,6 +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("commandOpenError:")){
getConfig().set("commandOpenError", "&cYou need to use: &7/kit open <inventory> <player>");
getConfig().set("inventoryNotExists", "&cThat inventory doesn't exists.");
saveConfig();
}
if(!text.contains("commandPreviewError:")){ if(!text.contains("commandPreviewError:")){
getConfig().set("commandPreviewError", "&cYou need to use: &7/kit preview <kit>"); getConfig().set("commandPreviewError", "&cYou need to use: &7/kit preview <kit>");
getConfig().set("kitPreviewDisabled", "&cKit preview is disabled."); getConfig().set("kitPreviewDisabled", "&cKit preview is disabled.");

View file

@ -165,8 +165,8 @@ public class ItemUtils {
String decoded = new String(Base64.getDecoder().decode(texture)); String decoded = new String(Base64.getDecoder().decode(texture));
String decodedFormatted = decoded.replaceAll("\\s", ""); String decodedFormatted = decoded.replaceAll("\\s", "");
int firstIndex = decodedFormatted.indexOf("\"SKIN\":{\"url\":")+15; int firstIndex = decodedFormatted.indexOf("\"SKIN\":{\"url\":")+15;
int lastIndex = decodedFormatted.indexOf("}",firstIndex+1); int lastIndex = decodedFormatted.indexOf("\"",firstIndex+1);
url = new URL(decodedFormatted.substring(firstIndex,lastIndex-1)); url = new URL(decodedFormatted.substring(firstIndex,lastIndex));
} catch (MalformedURLException error) { } catch (MalformedURLException error) {
error.printStackTrace(); error.printStackTrace();
return; return;

View file

@ -1,9 +1,13 @@
package pk.ajneb97.versions; package pk.ajneb97.versions;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import org.bukkit.Bukkit;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import pk.ajneb97.PlayerKits2; import pk.ajneb97.PlayerKits2;
import pk.ajneb97.utils.ServerVersion; import pk.ajneb97.utils.ServerVersion;
import java.io.StringReader;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.*; import java.util.*;
@ -20,22 +24,20 @@ public class NMSManager {
try { try {
//Classes //Classes
version.addClass("CraftItemStack",Class.forName("org.bukkit.craftbukkit."+serverVersion+".inventory.CraftItemStack")); version.addClass("CraftItemStack",Class.forName("org.bukkit.craftbukkit."+serverVersion+".inventory.CraftItemStack"));
if(!serverVersionGreaterEqualThan(ServerVersion.v1_13_R1)) {
//1.12 or lower
version.addClass("NBTTagList",Class.forName("net.minecraft.server."+serverVersion+".NBTTagList"));
}
if(serverVersionGreaterEqualThan(ServerVersion.v1_17_R1)){ if(serverVersionGreaterEqualThan(ServerVersion.v1_17_R1)){
//1.17 or greater //1.17 or greater
version.addClass("ItemStackNMS",Class.forName("net.minecraft.world.item.ItemStack")); version.addClass("ItemStackNMS",Class.forName("net.minecraft.world.item.ItemStack"));
version.addClass("NBTTagCompound",Class.forName("net.minecraft.nbt.NBTTagCompound")); version.addClass("NBTTagCompound",Class.forName("net.minecraft.nbt.NBTTagCompound"));
version.addClass("MojangsonParser",Class.forName("net.minecraft.nbt.MojangsonParser")); version.addClass("MojangsonParser",Class.forName("net.minecraft.nbt.MojangsonParser"));
version.addClass("NBTBase",Class.forName("net.minecraft.nbt.NBTBase")); version.addClass("NBTBase",Class.forName("net.minecraft.nbt.NBTBase"));
version.addClass("NBTTagList",Class.forName("net.minecraft.nbt.NBTTagList"));
}else{ }else{
//1.16 or lower //1.16 or lower
version.addClass("ItemStackNMS",Class.forName("net.minecraft.server."+serverVersion+".ItemStack")); version.addClass("ItemStackNMS",Class.forName("net.minecraft.server."+serverVersion+".ItemStack"));
version.addClass("NBTTagCompound",Class.forName("net.minecraft.server."+serverVersion+".NBTTagCompound")); version.addClass("NBTTagCompound",Class.forName("net.minecraft.server."+serverVersion+".NBTTagCompound"));
version.addClass("MojangsonParser",Class.forName("net.minecraft.server."+serverVersion+".MojangsonParser")); version.addClass("MojangsonParser",Class.forName("net.minecraft.server."+serverVersion+".MojangsonParser"));
version.addClass("NBTBase",Class.forName("net.minecraft.server."+serverVersion+".NBTBase")); version.addClass("NBTBase",Class.forName("net.minecraft.server."+serverVersion+".NBTBase"));
version.addClass("NBTTagList",Class.forName("net.minecraft.server."+serverVersion+".NBTTagList"));
} }
//Methods //Methods
@ -43,10 +45,8 @@ public class NMSManager {
version.addMethod("asBukkitCopy",version.getClassRef("CraftItemStack").getMethod("asBukkitCopy",version.getClassRef("ItemStackNMS"))); version.addMethod("asBukkitCopy",version.getClassRef("CraftItemStack").getMethod("asBukkitCopy",version.getClassRef("ItemStackNMS")));
if(!serverVersionGreaterEqualThan(ServerVersion.v1_13_R1)){ if(!serverVersionGreaterEqualThan(ServerVersion.v1_13_R1)){
//1.12 or lower //1.12 or lower
version.addMethod("getList",version.getClassRef("NBTTagCompound").getMethod("getList",String.class,int.class));
version.addMethod("listSize",version.getClassRef("NBTTagList").getMethod("size")); version.addMethod("listSize",version.getClassRef("NBTTagList").getMethod("size"));
version.addMethod("listGet",version.getClassRef("NBTTagList").getMethod("get",int.class)); version.addMethod("listGet",version.getClassRef("NBTTagList").getMethod("get",int.class));
version.addMethod("listAdd",version.getClassRef("NBTTagList").getMethod("add",version.getClassRef("NBTBase")));
} }
if(!serverVersionGreaterEqualThan(ServerVersion.v1_18_R1)){ if(!serverVersionGreaterEqualThan(ServerVersion.v1_18_R1)){
//1.17 or lower //1.17 or lower
@ -64,6 +64,7 @@ public class NMSManager {
version.addMethod("getInt",version.getClassRef("NBTTagCompound").getMethod("getInt",String.class)); version.addMethod("getInt",version.getClassRef("NBTTagCompound").getMethod("getInt",String.class));
version.addMethod("getDouble",version.getClassRef("NBTTagCompound").getMethod("getDouble",String.class)); version.addMethod("getDouble",version.getClassRef("NBTTagCompound").getMethod("getDouble",String.class));
version.addMethod("getCompound",version.getClassRef("NBTTagCompound").getMethod("getCompound",String.class)); version.addMethod("getCompound",version.getClassRef("NBTTagCompound").getMethod("getCompound",String.class));
version.addMethod("getList",version.getClassRef("NBTTagCompound").getMethod("getList",String.class,int.class));
version.addMethod("get",version.getClassRef("NBTTagCompound").getMethod("get",String.class)); version.addMethod("get",version.getClassRef("NBTTagCompound").getMethod("get",String.class));
version.addMethod("remove",version.getClassRef("NBTTagCompound").getMethod("remove",String.class)); version.addMethod("remove",version.getClassRef("NBTTagCompound").getMethod("remove",String.class));
if(serverVersionGreaterEqualThan(ServerVersion.v1_13_R1)){ if(serverVersionGreaterEqualThan(ServerVersion.v1_13_R1)){
@ -73,6 +74,7 @@ public class NMSManager {
} }
version.addMethod("hasKeyOfType",version.getClassRef("NBTTagCompound").getMethod("hasKeyOfType",String.class,int.class)); version.addMethod("hasKeyOfType",version.getClassRef("NBTTagCompound").getMethod("hasKeyOfType",String.class,int.class));
version.addMethod("parse",version.getClassRef("MojangsonParser").getMethod("parse",String.class)); version.addMethod("parse",version.getClassRef("MojangsonParser").getMethod("parse",String.class));
version.addMethod("listAdd",version.getClassRef("NBTTagList").getMethod("add",version.getClassRef("NBTBase")));
}else{ }else{
//1.18 or greater //1.18 or greater
String methodName = null; String methodName = null;
@ -113,6 +115,7 @@ public class NMSManager {
version.addMethod("getInt",version.getClassRef("NBTTagCompound").getMethod("h",String.class)); version.addMethod("getInt",version.getClassRef("NBTTagCompound").getMethod("h",String.class));
version.addMethod("getDouble",version.getClassRef("NBTTagCompound").getMethod("k",String.class)); version.addMethod("getDouble",version.getClassRef("NBTTagCompound").getMethod("k",String.class));
version.addMethod("getCompound",version.getClassRef("NBTTagCompound").getMethod("p",String.class)); version.addMethod("getCompound",version.getClassRef("NBTTagCompound").getMethod("p",String.class));
version.addMethod("getList",version.getClassRef("NBTTagCompound").getMethod("c",String.class,int.class));
version.addMethod("get",version.getClassRef("NBTTagCompound").getMethod("c",String.class)); version.addMethod("get",version.getClassRef("NBTTagCompound").getMethod("c",String.class));
version.addMethod("remove",version.getClassRef("NBTTagCompound").getMethod("r",String.class)); version.addMethod("remove",version.getClassRef("NBTTagCompound").getMethod("r",String.class));
@ -213,7 +216,13 @@ public class NMSManager {
}else if((boolean)version.getMethodRef("hasKeyOfType").invoke(compound,t,8)) { }else if((boolean)version.getMethodRef("hasKeyOfType").invoke(compound,t,8)) {
//String //String
nbtList.add(t+"|"+version.getMethodRef("getString").invoke(compound,t)); nbtList.add(t+"|"+version.getMethodRef("getString").invoke(compound,t));
}else { }
/*
else if((boolean)version.getMethodRef("hasKeyOfType").invoke(compound,t,9)){
nbtList.add(t+"|"+version.getMethodRef("get").invoke(compound,t)+"|list");
}
*/
else {
//Other //Other
nbtList.add(t+"|"+version.getMethodRef("get").invoke(compound,t)); nbtList.add(t+"|"+version.getMethodRef("get").invoke(compound,t));
} }
@ -250,7 +259,22 @@ public class NMSManager {
String finalNBT = nbt.replace(id+"|", "").replace("|compound", ""); String finalNBT = nbt.replace(id+"|", "").replace("|compound", "");
Object compoundNew = version.getMethodRef("parse").invoke(null,finalNBT); Object compoundNew = version.getMethodRef("parse").invoke(null,finalNBT);
version.getMethodRef("set").invoke(compound,sep[0],compoundNew); version.getMethodRef("set").invoke(compound,sep[0],compoundNew);
}else { }else if(type.equals("list")){
/*
String finalNBT = nbt.replace(id+"|", "").replace("|list", "");
JsonArray jsonArray = new Gson().fromJson(finalNBT, JsonArray.class);
Object list = version.getClassRef("NBTTagList").newInstance();
for (int c=0;c<jsonArray.size();i++) {
if(finalNBT.startsWith("{")){
Object compoundNew = version.getMethodRef("parse").invoke(null,jsonArray.get(i).toString());
version.getMethodRef("listAdd").invoke(list,compoundNew);
}else{
}
}
*/
}
else {
version.getMethodRef("setString").invoke(compound,sep[0],nbt.replace(id+"|", "")); version.getMethodRef("setString").invoke(compound,sep[0],nbt.replace(id+"|", ""));
} }

View file

@ -12,6 +12,7 @@ commandDeleteError: "&cYou need to use: &7/kit delete <name>"
commandResetError: "&cYou need to use: &7/kit reset <kit> <player>" commandResetError: "&cYou need to use: &7/kit reset <kit> <player>"
commandEditError: "&cYou need to use: &7/kit edit <kit>" commandEditError: "&cYou need to use: &7/kit edit <kit>"
commandPreviewError: "&cYou need to use: &7/kit preview <kit>" commandPreviewError: "&cYou need to use: &7/kit preview <kit>"
commandOpenError: "&cYou need to use: &7/kit open <inventory> <player>"
commandDoesNotExists: "&cThat command doesn't exists." commandDoesNotExists: "&cThat command doesn't exists."
playerNotOnline: "&cPlayer &7%player% &cis not online." playerNotOnline: "&cPlayer &7%player% &cis not online."
oneTimeError: "&cYou can't claim this kit again." oneTimeError: "&cYou can't claim this kit again."
@ -37,5 +38,6 @@ days: 'd'
cooldownPlaceholderReady: "&a&lReady!" cooldownPlaceholderReady: "&a&lReady!"
pluginCriticalErrors: "&cThe plugin has detected some errors. Check them using &7/kit verify" pluginCriticalErrors: "&cThe plugin has detected some errors. Check them using &7/kit verify"
kitPreviewDisabled: "&cKit preview is disabled." kitPreviewDisabled: "&cKit preview is disabled."
inventoryNotExists: "&cThat inventory doesn't exists."

View file

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