diff --git a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/BingoChallengeEvent.java b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/BingoChallengeEvent.java index cd4c910..9bf1a2e 100644 --- a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/BingoChallengeEvent.java +++ b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/BingoChallengeEvent.java @@ -15,6 +15,7 @@ import org.bukkit.Material; import org.bukkit.OfflinePlayer; import org.bukkit.Sound; +import org.bukkit.Statistic; import org.bukkit.boss.BarColor; import org.bukkit.boss.BarStyle; import org.bukkit.boss.BossBar; @@ -22,12 +23,13 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.player.PlayerAttemptPickupItemEvent; import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.event.player.PlayerBucketEntityEvent; import org.bukkit.event.player.PlayerBucketFillEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerStatisticIncrementEvent; +import org.bukkit.inventory.CraftingInventory; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; @@ -89,6 +91,11 @@ if (playerInv != null && playerInv.equals(e.getClickedInventory())) { return; } + + if (e.getClickedInventory() instanceof CraftingInventory) { + return; + } + ItemStack itemStack = e.getCurrentItem(); if (itemStack != null && itemStack.getType() != Material.AIR) { addDiscoveredItem(player, itemStack); @@ -96,6 +103,28 @@ } @EventHandler + public void onItemCraft(PlayerStatisticIncrementEvent e) { + Player player = e.getPlayer(); + if (!isRunning()) { + return; + } + + if (e.getStatistic() != Statistic.CRAFT_ITEM) { + return; + } + + Material material = e.getMaterial(); + if (material == null) { + return; + } + + ItemStack itemStack = new ItemStack(material); + if (itemStack.getType() != Material.AIR) { + addDiscoveredItem(player, itemStack); + } + } + + @EventHandler public void onPickUpItem(PlayerPickupItemEvent e) { ItemStack itemStack = e.getItem().getItemStack(); Player player = e.getPlayer(); diff --git a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/DifferentItemsChallenge.java b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/DifferentItemsChallenge.java index 7791a96..cd0cc63 100644 --- a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/DifferentItemsChallenge.java +++ b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/DifferentItemsChallenge.java @@ -11,19 +11,20 @@ import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.Sound; +import org.bukkit.Statistic; import org.bukkit.boss.BarColor; import org.bukkit.boss.BarStyle; import org.bukkit.boss.BossBar; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; -import org.bukkit.event.inventory.CraftItemEvent; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerAttemptPickupItemEvent; import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.event.player.PlayerBucketEntityEvent; import org.bukkit.event.player.PlayerBucketFillEvent; import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerStatisticIncrementEvent; import org.bukkit.inventory.CraftingInventory; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; @@ -70,7 +71,6 @@ return; } if (e.getClickedInventory() instanceof CraftingInventory) { - ChatUtil.sendDebugMessage(e.getWhoClicked(), "Cancel crafting"); return; } @@ -81,25 +81,23 @@ } @EventHandler - public void onItemCraft(CraftItemEvent e) { - Player player = (Player) e.getWhoClicked(); - Inventory playerInv = BingoItemsGui.getPlayerInvs().get(player.getUniqueId()); - if (e.getClickedInventory() == null) { - return; - } + public void onItemCraft(PlayerStatisticIncrementEvent e) { + Player player = e.getPlayer(); if (!isRunning()) { return; } - if (playerInv != null && playerInv.equals(e.getClickedInventory())) { + + if (e.getStatistic() != Statistic.CRAFT_ITEM) { return; } - if (e.isCancelled()) { + Material material = e.getMaterial(); + if (material == null) { return; } - ItemStack itemStack = e.getCurrentItem(); - if (itemStack != null && itemStack.getType() != Material.AIR) { + ItemStack itemStack = new ItemStack(material); + if (itemStack.getType() != Material.AIR) { addDiscoveredItem(player, itemStack); } } diff --git a/src/main/java/de/fanta/challenges/commands/BackpackCommand.java b/src/main/java/de/fanta/challenges/commands/BackpackCommand.java index 08bb0a5..9052e76 100644 --- a/src/main/java/de/fanta/challenges/commands/BackpackCommand.java +++ b/src/main/java/de/fanta/challenges/commands/BackpackCommand.java @@ -1,6 +1,8 @@ package de.fanta.challenges.commands; import de.fanta.challenges.Challenges; +import de.fanta.challenges.teams.ChallengeTeam; +import de.fanta.challenges.teams.TeamUtils; import de.fanta.challenges.utils.ChatUtil; import de.fanta.challenges.utils.Config; import de.iani.cubesideutils.bukkit.commands.SubCommand; @@ -25,7 +27,12 @@ if (!Config.getBoolean("event.enabled")) { plugin.getBackpack().open(p); } else { - ChatUtil.sendWarningMessage(p, "Backpack darf während einem Event nicht genutzt werde!"); + ChallengeTeam challengeTeam = TeamUtils.getPlayerTeam(p); + if (challengeTeam != null) { + challengeTeam.getBackpack().open(p); + } else { + ChatUtil.sendErrorMessage(p, "Du bist in keinem Team!"); + } } return true; } diff --git a/src/main/java/de/fanta/challenges/guis/BackpackGui.java b/src/main/java/de/fanta/challenges/guis/BackpackGui.java index b6498cf..7d43e82 100644 --- a/src/main/java/de/fanta/challenges/guis/BackpackGui.java +++ b/src/main/java/de/fanta/challenges/guis/BackpackGui.java @@ -23,6 +23,10 @@ this.backpack = Bukkit.createInventory(null, size, TITLE); } + public BackpackGui(int size, String title) { + this.backpack = Bukkit.createInventory(null, size, title); + } + public void resize(int newSize) { if (newSize == backpack.getSize()) { return; diff --git a/src/main/java/de/fanta/challenges/guis/challengesettingsguis/BackPackSettingsGui.java b/src/main/java/de/fanta/challenges/guis/challengesettingsguis/BackPackSettingsGui.java index 4ce9baa..60e2875 100644 --- a/src/main/java/de/fanta/challenges/guis/challengesettingsguis/BackPackSettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/challengesettingsguis/BackPackSettingsGui.java @@ -2,6 +2,8 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.guis.settingsgui.OtherSettingsGui; +import de.fanta.challenges.teams.ChallengeTeam; +import de.fanta.challenges.teams.TeamUtils; import de.fanta.challenges.utils.ChatUtil; import de.fanta.challenges.utils.Config; import de.fanta.challenges.utils.ItemUtils; @@ -47,6 +49,13 @@ size++; Config.setValue("backpack_size", size); plugin.getBackpack().resize(size * 9); + + if (TeamUtils.getTeams() != null) { + for (ChallengeTeam team : TeamUtils.getTeams()) { + team.getBackpack().resize(size * 9); + } + } + rebuildInventory(); } } diff --git a/src/main/java/de/fanta/challenges/teams/ChallengeTeam.java b/src/main/java/de/fanta/challenges/teams/ChallengeTeam.java index 6f06c9e..4febffc 100644 --- a/src/main/java/de/fanta/challenges/teams/ChallengeTeam.java +++ b/src/main/java/de/fanta/challenges/teams/ChallengeTeam.java @@ -1,6 +1,9 @@ package de.fanta.challenges.teams; +import de.fanta.challenges.Challenges; +import de.fanta.challenges.guis.BackpackGui; import de.fanta.challenges.scoreboard.Scorable; +import de.fanta.challenges.utils.Config; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -22,10 +25,13 @@ private int score; + private BackpackGui backpack; + public ChallengeTeam(String name, ChatColor chatColor, ItemStack displayItem) { this.name = name; this.chatColor = chatColor; this.displayItem = displayItem; + this.backpack = new BackpackGui(Config.getInt("backpack_size") * 9, Challenges.getPlugin().getGUIPREFIX() + " >> " + name); } public String getName() { @@ -90,4 +96,8 @@ public String getIdentifier() { return getChatColor() + getName(); } + + public BackpackGui getBackpack() { + return backpack; + } } diff --git a/src/main/java/de/fanta/challenges/utils/ItemUtils.java b/src/main/java/de/fanta/challenges/utils/ItemUtils.java index 3804ed6..d75db25 100644 --- a/src/main/java/de/fanta/challenges/utils/ItemUtils.java +++ b/src/main/java/de/fanta/challenges/utils/ItemUtils.java @@ -20,10 +20,9 @@ builder.enchantment(Enchantment.UNBREAKING, 1, true).flag(ItemFlag.HIDE_ENCHANTS); } if (!showTooltip) { - builder.flag(ItemFlag.HIDE_ADDITIONAL_TOOLTIP); + builder.hideTooltip(true); } return builder.build(); - } public static ItemStack createGuiItem(Material material, String name, boolean glowing, String... lore) {