1.12.6
This commit is contained in:
parent
76e89a4052
commit
d797352812
17 changed files with 172 additions and 56 deletions
2
pom.xml
2
pom.xml
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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,14 +168,19 @@ 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{
|
||||||
|
if(playerName.equals("*")){
|
||||||
|
msgManager.sendMessage(sender, messagesConfig.getString("kitResetCorrectAll")
|
||||||
|
.replace("%kit%",kitName), true);
|
||||||
}else{
|
}else{
|
||||||
msgManager.sendMessage(sender, messagesConfig.getString("kitResetCorrect")
|
msgManager.sendMessage(sender, messagesConfig.getString("kitResetCorrect")
|
||||||
.replace("%kit%",kitName).replace("%player%",playerName), true);
|
.replace("%kit%",kitName).replace("%player%",playerName), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void open(CommandSender sender,String[] args,FileConfiguration messagesConfig,MessagesManager msgManager) {
|
public void open(CommandSender sender,String[] args,FileConfiguration messagesConfig,MessagesManager msgManager) {
|
||||||
// /kits open <inventory> <player>
|
// /kits open <inventory> <player>
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.");
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
if(all){
|
||||||
|
statement = connection.prepareStatement(
|
||||||
|
"DELETE FROM playerkits_players_kits " +
|
||||||
|
"WHERE NAME=?");
|
||||||
|
statement.setString(1, kitName);
|
||||||
|
}else{
|
||||||
|
statement = connection.prepareStatement(
|
||||||
"DELETE FROM playerkits_players_kits " +
|
"DELETE FROM playerkits_players_kits " +
|
||||||
"WHERE UUID=? AND NAME=?");
|
"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();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(all){
|
||||||
|
for(PlayerData p : players){
|
||||||
|
p.resetKit(kitName);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
playerData.resetKit(kitName);
|
playerData.resetKit(kitName);
|
||||||
playerData.setModified(true);
|
}
|
||||||
|
|
||||||
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();
|
||||||
|
|
|
||||||
|
|
@ -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){
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
42
src/main/java/pk/ajneb97/utils/InventoryUtils.java
Normal file
42
src/main/java/pk/ajneb97/utils/InventoryUtils.java
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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(newSystem){
|
||||||
|
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) {
|
if(m.getSlot() != null) {
|
||||||
line=line+";"+m.getSlot().name();
|
line=line+";"+m.getSlot().name();
|
||||||
}
|
}
|
||||||
line=line+";custom_name:"+m.getName();
|
line=line+";custom_name:"+m.getName();
|
||||||
|
}
|
||||||
|
|
||||||
attributeList.add(line);
|
attributeList.add(line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -555,20 +566,31 @@ public class ItemUtils {
|
||||||
return plugin.getNmsManager().setAttributes(item,attributes);
|
return plugin.getNmsManager().setAttributes(item,attributes);
|
||||||
}else {
|
}else {
|
||||||
//1.13+
|
//1.13+
|
||||||
|
ServerVersion serverVersion = PlayerKits2.serverVersion;
|
||||||
|
boolean newSystem = serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_21_R1);
|
||||||
|
|
||||||
|
try{
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
for(String a : attributes) {
|
for(String a : attributes) {
|
||||||
String[] sep = a.split(";");
|
String[] sep = a.split(";");
|
||||||
String attribute = sep[0];
|
String attribute = sep[0];
|
||||||
AttributeModifier.Operation op = AttributeModifier.Operation.valueOf(sep[1]);
|
AttributeModifier.Operation op = AttributeModifier.Operation.valueOf(sep[1]);
|
||||||
double amount = Double.valueOf(sep[2]);
|
double amount = Double.valueOf(sep[2]);
|
||||||
UUID uuid = UUID.fromString(sep[3]);
|
|
||||||
|
AttributeModifier modifier = null;
|
||||||
|
|
||||||
|
if(newSystem){
|
||||||
|
String[] id = sep[3].split(":");
|
||||||
|
NamespacedKey namespacedKey = new NamespacedKey(id[0],id[1]);
|
||||||
|
modifier = new AttributeModifier(namespacedKey,amount,op,EquipmentSlotGroup.getByName(sep[4]));
|
||||||
|
}else{
|
||||||
String customName = attribute;
|
String customName = attribute;
|
||||||
for(int i=0;i<sep.length;i++){
|
for(int i=0;i<sep.length;i++){
|
||||||
if(sep[i].startsWith("custom_name:")){
|
if(sep[i].startsWith("custom_name:")){
|
||||||
customName = sep[i].replace("custom_name:","");
|
customName = sep[i].replace("custom_name:","");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AttributeModifier modifier = null;
|
UUID uuid = UUID.fromString(sep[3]);
|
||||||
if(sep.length >= 5) {
|
if(sep.length >= 5) {
|
||||||
if(!sep[4].startsWith("custom_name:")){
|
if(!sep[4].startsWith("custom_name:")){
|
||||||
EquipmentSlot slot = EquipmentSlot.valueOf(sep[4]);
|
EquipmentSlot slot = EquipmentSlot.valueOf(sep[4]);
|
||||||
|
|
@ -579,17 +601,22 @@ public class ItemUtils {
|
||||||
}else {
|
}else {
|
||||||
modifier = new AttributeModifier(uuid,customName,amount,op);
|
modifier = new AttributeModifier(uuid,customName,amount,op);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
meta.addAttributeModifier(Attribute.valueOf(attribute), modifier);
|
meta.addAttributeModifier(Attribute.valueOf(attribute), modifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemMeta(meta);
|
item.setItemMeta(meta);
|
||||||
|
}catch(Exception e){
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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✖"
|
||||||
|
|
|
||||||
|
|
@ -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]
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue