From c87d5f4e202c6f2e39d68377b1f62f8ec600f534 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Mon, 14 Mar 2022 10:38:49 +0100 Subject: [PATCH] Totem item will be destroyed after use --- .idea/misc.xml | 2 +- .../benjocraeft/sharehealth/TotemManager.java | 35 +++++++++++++++++-- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 30d2c01..f6e69a1 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,7 +5,7 @@ - + \ No newline at end of file diff --git a/src/main/java/com/benjocraeft/sharehealth/TotemManager.java b/src/main/java/com/benjocraeft/sharehealth/TotemManager.java index ceb6ee0..0131f4c 100644 --- a/src/main/java/com/benjocraeft/sharehealth/TotemManager.java +++ b/src/main/java/com/benjocraeft/sharehealth/TotemManager.java @@ -30,14 +30,26 @@ public class TotemManager { } //Activate Totem Effect - //TODO remove used Totems + //Remove used items //Finally buy some Falafel for Markus public void activate(Player triggeringPlayer){ + List allPlayers = Sharehealth.GetPlayers(); + //Remove all effects from Player for (PotionEffect e : triggeringPlayer.getActivePotionEffects()) triggeringPlayer.removePotionEffect(e.getType()); + //Destroy needed totem items + //Try to destroy holders item first, then the remaining + //Only destroy as many items as were needed for effect to trigger + int totemsRemoveCount = getMinimumPlayerCount(); + if (destroyItemFrom(triggeringPlayer)) + totemsRemoveCount--; + for (int pIndex = 0; pIndex < allPlayers.size() && totemsRemoveCount > 0; pIndex++) + if (destroyItemFrom(allPlayers.get(pIndex))) + totemsRemoveCount--; + //Regeneration II 40sec PotionEffect regeneration = new PotionEffect(PotionEffectType.REGENERATION, 40 * 20, 1); triggeringPlayer.addPotionEffect(regeneration); @@ -50,11 +62,28 @@ public class TotemManager { PotionEffect absorption = new PotionEffect(PotionEffectType.ABSORPTION, 5 * 20, 1); triggeringPlayer.addPotionEffect(absorption); - //Play Totem Effect to every Player - for (Player p : Sharehealth.GetPlayers()) + //Play Totem Effect for every Player + for (Player p : allPlayers) p.playEffect(EntityEffect.TOTEM_RESURRECT); } + private boolean destroyItemFrom(Player holder){ + ItemStack main = holder.getInventory().getItemInMainHand(); + if (main.getType().equals(Material.TOTEM_OF_UNDYING)){ + //destroy item + main.setAmount(0); + return true; + } else { + ItemStack off = holder.getInventory().getItemInOffHand(); + if (off.getType().equals(Material.TOTEM_OF_UNDYING)){ + //destroy item + off.setAmount(0); + return true; + } + } + return false; + } + //Calculates how many players are needed at least to trigger the totem for everyone private int getMinimumPlayerCount(){ int allPlayerCount = Sharehealth.GetPlayers().size();