1.9.1
This commit is contained in:
parent
97b5fc89bd
commit
edd31638d0
6 changed files with 105 additions and 13 deletions
|
|
@ -13,6 +13,7 @@ import pk.ajneb97.model.Kit;
|
|||
import pk.ajneb97.model.internal.GiveKitInstructions;
|
||||
import pk.ajneb97.model.internal.PlayerKitsMessageResult;
|
||||
import pk.ajneb97.model.inventory.InventoryPlayer;
|
||||
import pk.ajneb97.model.inventory.KitInventory;
|
||||
import pk.ajneb97.utils.PlayerUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -41,6 +42,8 @@ public class MainCommand implements CommandExecutor, TabCompleter {
|
|||
reset(sender,args,messagesConfig,msgManager);
|
||||
}else if(args[0].equalsIgnoreCase("migrate")) {
|
||||
migrate(sender,args,messagesConfig,msgManager);
|
||||
}else if(args[0].equalsIgnoreCase("open")){
|
||||
open(sender,args,messagesConfig,msgManager);
|
||||
}else{
|
||||
help(sender,msgManager,messagesConfig);
|
||||
}
|
||||
|
|
@ -73,6 +76,8 @@ public class MainCommand implements CommandExecutor, TabCompleter {
|
|||
verify(player,messagesConfig,msgManager);
|
||||
}else if(args[0].equalsIgnoreCase("migrate")) {
|
||||
migrate(sender,args,messagesConfig,msgManager);
|
||||
}else if(args[0].equalsIgnoreCase("open")){
|
||||
open(sender,args,messagesConfig,msgManager);
|
||||
}
|
||||
else{
|
||||
// /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){
|
||||
// /kits give <kit> <player>
|
||||
if(!PlayerUtils.isPlayerKitsAdmin(sender)){
|
||||
|
|
@ -341,7 +377,7 @@ public class MainCommand implements CommandExecutor, TabCompleter {
|
|||
if(PlayerUtils.isPlayerKitsAdmin(sender)){
|
||||
commands.add("give");commands.add("delete");commands.add("create");
|
||||
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) {
|
||||
if(args[0].isEmpty() || c.startsWith(args[0].toLowerCase())) {
|
||||
|
|
@ -360,10 +396,16 @@ public class MainCommand implements CommandExecutor, TabCompleter {
|
|||
if(PlayerUtils.isPlayerKitsAdmin(sender)){
|
||||
commands.add("give");commands.add("delete");
|
||||
commands.add("reset");commands.add("edit");
|
||||
commands.add("open");
|
||||
}
|
||||
for(String c : commands) {
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,6 +58,11 @@ public class MessagesConfigManager {
|
|||
Path pathConfig = Paths.get(configFile.getRoute());
|
||||
try{
|
||||
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:")){
|
||||
getConfig().set("commandPreviewError", "&cYou need to use: &7/kit preview <kit>");
|
||||
getConfig().set("kitPreviewDisabled", "&cKit preview is disabled.");
|
||||
|
|
|
|||
|
|
@ -165,8 +165,8 @@ public class ItemUtils {
|
|||
String decoded = new String(Base64.getDecoder().decode(texture));
|
||||
String decodedFormatted = decoded.replaceAll("\\s", "");
|
||||
int firstIndex = decodedFormatted.indexOf("\"SKIN\":{\"url\":")+15;
|
||||
int lastIndex = decodedFormatted.indexOf("}",firstIndex+1);
|
||||
url = new URL(decodedFormatted.substring(firstIndex,lastIndex-1));
|
||||
int lastIndex = decodedFormatted.indexOf("\"",firstIndex+1);
|
||||
url = new URL(decodedFormatted.substring(firstIndex,lastIndex));
|
||||
} catch (MalformedURLException error) {
|
||||
error.printStackTrace();
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,13 @@
|
|||
package pk.ajneb97.versions;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import pk.ajneb97.PlayerKits2;
|
||||
import pk.ajneb97.utils.ServerVersion;
|
||||
|
||||
import java.io.StringReader;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.*;
|
||||
|
||||
|
|
@ -20,22 +24,20 @@ public class NMSManager {
|
|||
try {
|
||||
//Classes
|
||||
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)){
|
||||
//1.17 or greater
|
||||
version.addClass("ItemStackNMS",Class.forName("net.minecraft.world.item.ItemStack"));
|
||||
version.addClass("NBTTagCompound",Class.forName("net.minecraft.nbt.NBTTagCompound"));
|
||||
version.addClass("MojangsonParser",Class.forName("net.minecraft.nbt.MojangsonParser"));
|
||||
version.addClass("NBTBase",Class.forName("net.minecraft.nbt.NBTBase"));
|
||||
version.addClass("NBTTagList",Class.forName("net.minecraft.nbt.NBTTagList"));
|
||||
}else{
|
||||
//1.16 or lower
|
||||
version.addClass("ItemStackNMS",Class.forName("net.minecraft.server."+serverVersion+".ItemStack"));
|
||||
version.addClass("NBTTagCompound",Class.forName("net.minecraft.server."+serverVersion+".NBTTagCompound"));
|
||||
version.addClass("MojangsonParser",Class.forName("net.minecraft.server."+serverVersion+".MojangsonParser"));
|
||||
version.addClass("NBTBase",Class.forName("net.minecraft.server."+serverVersion+".NBTBase"));
|
||||
version.addClass("NBTTagList",Class.forName("net.minecraft.server."+serverVersion+".NBTTagList"));
|
||||
}
|
||||
|
||||
//Methods
|
||||
|
|
@ -43,10 +45,8 @@ public class NMSManager {
|
|||
version.addMethod("asBukkitCopy",version.getClassRef("CraftItemStack").getMethod("asBukkitCopy",version.getClassRef("ItemStackNMS")));
|
||||
if(!serverVersionGreaterEqualThan(ServerVersion.v1_13_R1)){
|
||||
//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("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)){
|
||||
//1.17 or lower
|
||||
|
|
@ -64,6 +64,7 @@ public class NMSManager {
|
|||
version.addMethod("getInt",version.getClassRef("NBTTagCompound").getMethod("getInt",String.class));
|
||||
version.addMethod("getDouble",version.getClassRef("NBTTagCompound").getMethod("getDouble",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("remove",version.getClassRef("NBTTagCompound").getMethod("remove",String.class));
|
||||
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("parse",version.getClassRef("MojangsonParser").getMethod("parse",String.class));
|
||||
version.addMethod("listAdd",version.getClassRef("NBTTagList").getMethod("add",version.getClassRef("NBTBase")));
|
||||
}else{
|
||||
//1.18 or greater
|
||||
String methodName = null;
|
||||
|
|
@ -113,6 +115,7 @@ public class NMSManager {
|
|||
version.addMethod("getInt",version.getClassRef("NBTTagCompound").getMethod("h",String.class));
|
||||
version.addMethod("getDouble",version.getClassRef("NBTTagCompound").getMethod("k",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("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)) {
|
||||
//String
|
||||
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
|
||||
nbtList.add(t+"|"+version.getMethodRef("get").invoke(compound,t));
|
||||
}
|
||||
|
|
@ -250,7 +259,22 @@ public class NMSManager {
|
|||
String finalNBT = nbt.replace(id+"|", "").replace("|compound", "");
|
||||
Object compoundNew = version.getMethodRef("parse").invoke(null,finalNBT);
|
||||
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+"|", ""));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ commandDeleteError: "&cYou need to use: &7/kit delete <name>"
|
|||
commandResetError: "&cYou need to use: &7/kit reset <kit> <player>"
|
||||
commandEditError: "&cYou need to use: &7/kit edit <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."
|
||||
playerNotOnline: "&cPlayer &7%player% &cis not online."
|
||||
oneTimeError: "&cYou can't claim this kit again."
|
||||
|
|
@ -37,5 +38,6 @@ days: 'd'
|
|||
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."
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
main: pk.ajneb97.PlayerKits2
|
||||
version: 1.8.4
|
||||
version: 1.9.1
|
||||
name: PlayerKits2
|
||||
api-version: 1.13
|
||||
softdepend: [Vault,PlaceholderAPI]
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue