Totem item will be destroyed after use

master
Benjamin Kraft 3 years ago
parent f7169ba58a
commit c87d5f4e20
  1. 2
      .idea/misc.xml
  2. 35
      src/main/java/com/benjocraeft/sharehealth/TotemManager.java

@ -5,7 +5,7 @@
<item index="0" class="java.lang.String" itemvalue="org.bukkit.event.EventHandler" /> <item index="0" class="java.lang.String" itemvalue="org.bukkit.event.EventHandler" />
</list> </list>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_15" project-jdk-name="openjdk-17" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_16" project-jdk-name="openjdk-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
</project> </project>

@ -30,14 +30,26 @@ public class TotemManager {
} }
//Activate Totem Effect //Activate Totem Effect
//TODO remove used Totems //Remove used items
//Finally buy some Falafel for Markus //Finally buy some Falafel for Markus
public void activate(Player triggeringPlayer){ public void activate(Player triggeringPlayer){
List<Player> allPlayers = Sharehealth.GetPlayers();
//Remove all effects from Player //Remove all effects from Player
for (PotionEffect e : triggeringPlayer.getActivePotionEffects()) for (PotionEffect e : triggeringPlayer.getActivePotionEffects())
triggeringPlayer.removePotionEffect(e.getType()); 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 //Regeneration II 40sec
PotionEffect regeneration = new PotionEffect(PotionEffectType.REGENERATION, 40 * 20, 1); PotionEffect regeneration = new PotionEffect(PotionEffectType.REGENERATION, 40 * 20, 1);
triggeringPlayer.addPotionEffect(regeneration); triggeringPlayer.addPotionEffect(regeneration);
@ -50,11 +62,28 @@ public class TotemManager {
PotionEffect absorption = new PotionEffect(PotionEffectType.ABSORPTION, 5 * 20, 1); PotionEffect absorption = new PotionEffect(PotionEffectType.ABSORPTION, 5 * 20, 1);
triggeringPlayer.addPotionEffect(absorption); triggeringPlayer.addPotionEffect(absorption);
//Play Totem Effect to every Player //Play Totem Effect for every Player
for (Player p : Sharehealth.GetPlayers()) for (Player p : allPlayers)
p.playEffect(EntityEffect.TOTEM_RESURRECT); 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 //Calculates how many players are needed at least to trigger the totem for everyone
private int getMinimumPlayerCount(){ private int getMinimumPlayerCount(){
int allPlayerCount = Sharehealth.GetPlayers().size(); int allPlayerCount = Sharehealth.GetPlayers().size();

Loading…
Cancel
Save