diff --git a/pom.xml b/pom.xml index c75b4d3..a88b027 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.technovision homegui - 1.3 + 1.5 jar Homegui @@ -40,6 +40,12 @@ false + + + com.cryptomorin.xseries + com.technovision.homegui.libs.xseries + + @@ -78,7 +84,7 @@ com.github.cryptomorin XSeries - 6.0.1 + 13.7.1 diff --git a/src/main/java/com/technovision/homegui/events/HomeEvents.java b/src/main/java/com/technovision/homegui/events/HomeEvents.java index 88487de..f36bacb 100644 --- a/src/main/java/com/technovision/homegui/events/HomeEvents.java +++ b/src/main/java/com/technovision/homegui/events/HomeEvents.java @@ -10,19 +10,29 @@ import org.bukkit.event.Listener; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryDragEvent; import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.InventoryHolder; public class HomeEvents implements Listener { + @EventHandler + public void onGuiDrag(InventoryDragEvent event) { + InventoryHolder holder = event.getInventory().getHolder(); + if (holder instanceof HomeGUI || holder instanceof ChangeIconGUI) { + event.setCancelled(true); + } + } + @EventHandler public void onGuiActivation(InventoryClickEvent event){ if (event.getInventory().getHolder() instanceof HomeGUI) { if (event.getClickedInventory() == null) { return; } + event.setCancelled(true); Player player = (Player) event.getWhoClicked(); + if (event.getClickedInventory().getType() == InventoryType.PLAYER) { return; } if (event.getCurrentItem() != null) { if (event.getCurrentItem().getType() == Material.AIR) { return; } - event.setCancelled(true); - if (event.getClickedInventory().getType() == InventoryType.PLAYER) { return; } String playerID = player.getUniqueId().toString(); int slotNum = event.getSlot(); String name = HomeGUI.allHomes.get(playerID).get(slotNum).getName(); @@ -44,11 +54,11 @@ public void onGuiActivation(InventoryClickEvent event){ } } else if (event.getInventory().getHolder() instanceof ChangeIconGUI) { if (event.getClickedInventory() == null) { return; } + event.setCancelled(true); Player player = (Player) event.getWhoClicked(); + if (event.getClickedInventory().getType() == InventoryType.PLAYER) { return; } if (event.getCurrentItem() != null) { if (event.getCurrentItem().getType() == Material.AIR) { return; } - event.setCancelled(true); - if (event.getClickedInventory().getType() == InventoryType.PLAYER) { return; } if (event.isLeftClick()) { String itemName = getFriendlyName(event.getCurrentItem().getType()); String playerID = event.getWhoClicked().getUniqueId().toString(); diff --git a/src/main/java/com/technovision/homegui/gui/HomeGUI.java b/src/main/java/com/technovision/homegui/gui/HomeGUI.java index b4d578f..9d26d04 100644 --- a/src/main/java/com/technovision/homegui/gui/HomeGUI.java +++ b/src/main/java/com/technovision/homegui/gui/HomeGUI.java @@ -4,6 +4,7 @@ import com.technovision.homegui.playerdata.EssentialsReader; import com.technovision.homegui.playerdata.Home; import org.bukkit.Bukkit; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; @@ -34,21 +35,19 @@ private int calculateSize() { if (size == 0) {return 9;} if (size >= 54) { return 54; } if (size % 9 == 0) { return size; } - int count = 0; - for (int i = size%9; i>0; i--) { - count++; - } - return (size - count) + 9; + return (size - (size % 9)) + 9; } private void initItems(String playerID) { + YamlConfiguration iconConfig = Homegui.dataReader.loadConfig(playerID); + String nameColor = Homegui.PLUGIN.getConfig().getString("home-color").replace("&", "§"); + List loreTemplate = Homegui.PLUGIN.getConfig().getStringList("home-lore"); String name; for (Home home : homes) { name = home.getName().substring(0, 1).toUpperCase() + home.getName().substring(1); - ItemStack item = Homegui.dataReader.getItem(playerID, home.getName()); - String nameColor = Homegui.PLUGIN.getConfig().getString("home-color").replace("&", "§"); + ItemStack item = Homegui.dataReader.getItem(iconConfig, home.getName()); name = nameColor + name; - List lore = Homegui.PLUGIN.getConfig().getStringList("home-lore"); + List lore = new ArrayList<>(loreTemplate); String location = "§f " + home.getX() + "x§7,§f " + home.getY() + "y§7,§f " + home.getZ() + "z"; for (int i = 0; i < lore.size(); i++) { String newLine = lore.get(i).replace("{location}", location); diff --git a/src/main/java/com/technovision/homegui/playerdata/PlayerDataReader.java b/src/main/java/com/technovision/homegui/playerdata/PlayerDataReader.java index 0f1b224..b9070a9 100644 --- a/src/main/java/com/technovision/homegui/playerdata/PlayerDataReader.java +++ b/src/main/java/com/technovision/homegui/playerdata/PlayerDataReader.java @@ -49,20 +49,24 @@ public void write(String playerUUID, String key, Material icon) { } } - public ItemStack getItem(String playerUUID, String homeName) { + public YamlConfiguration loadConfig(String playerUUID) { File dataFile = getFile(playerUUID); - if (dataFile.exists()) { - YamlConfiguration dataFileConfig = YamlConfiguration.loadConfiguration(dataFile); - if (dataFileConfig.contains(homeName)) { - String name = dataFileConfig.get(homeName).toString(); + return dataFile.exists() ? YamlConfiguration.loadConfiguration(dataFile) : null; + } + + public ItemStack getItem(YamlConfiguration dataFileConfig, String homeName) { + if (dataFileConfig != null && dataFileConfig.contains(homeName)) { + String name = dataFileConfig.get(homeName).toString(); + Material material = Material.getMaterial(name); + if (material != null) { XMaterial item; - String materialName = Material.getMaterial(name).toString(); + String materialName = material.toString(); if (materialName.equalsIgnoreCase("PISTON_MOVING_PIECE")) { item = XMaterial.PISTON; } else if (materialName.equalsIgnoreCase("BED")) { item = XMaterial.RED_BED; } else { - item = XMaterial.matchXMaterial(Material.getMaterial(name)); + item = XMaterial.matchXMaterial(material); } return item.parseItem(); } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 3e66fce..19f1aa0 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: HomeGUI -version: 1.4 +version: 1.5 main: com.technovision.homegui.Homegui api-version: 1.13 depend: [Essentials]