Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.32 KB | None | 0 0
  1. package me.sitrismc.sharedhealth.listeners;
  2.  
  3. import me.sitrismc.sharedhealth.SharedHealth;
  4. import org.bukkit.Bukkit;
  5. import org.bukkit.OfflinePlayer;
  6. import org.bukkit.entity.Player;
  7. import org.bukkit.event.EventHandler;
  8. import org.bukkit.event.EventPriority;
  9. import org.bukkit.event.Listener;
  10. import org.bukkit.event.entity.EntityDamageEvent;
  11. import org.bukkit.scheduler.BukkitRunnable;
  12. import org.bukkit.scoreboard.Team;
  13.  
  14. import java.util.*;
  15.  
  16. /**
  17.  * Created by linse_000 on 10/28/2014.
  18.  */
  19. public class DamageListener implements Listener {
  20.  
  21.     SharedHealth plugin;
  22.  
  23.     List<String> offlines = new ArrayList<String>();
  24.     Map<String, Double> offlineMap = new HashMap<String, Double>();
  25.  
  26.     public DamageListener(SharedHealth plugin) {
  27.         this.plugin = plugin;
  28.     }
  29.  
  30.     @EventHandler(priority = EventPriority.HIGH)
  31.     public void onDamage(final EntityDamageEvent event) {
  32.  
  33.         if (!plugin.isRunning()) {
  34.             return;
  35.         }
  36.         if (event.isCancelled()) {
  37.             return;
  38.         }
  39.         if (!(event.getEntity() instanceof Player)) {
  40.             return;
  41.         }
  42.  
  43.         final Player p = (Player) event.getEntity();
  44.         final Team team = p.getScoreboard().getPlayerTeam(p);
  45.         final double health = p.getHealth();
  46.         final double initDamage = event.getDamage();
  47.  
  48.         if (team == null || team.getSize() <= 1) {
  49.             return;
  50.         }
  51.  
  52.         new BukkitRunnable() {
  53.             public void run() {
  54.                 int divider = team.getSize();
  55.                 double damage = initDamage / divider;
  56.  
  57.                 double finalHealth = health - damage;
  58.                 if (finalHealth < 0) {
  59.                     finalHealth = 0;
  60.                 }
  61.  
  62.                 if (!(p.isDead())) {
  63.                     p.setHealth(finalHealth);
  64.                 }
  65.  
  66.                 for (OfflinePlayer offlinePlayer : team.getPlayers()) {
  67.                     if (offlinePlayer.isOnline()) {
  68.                         Player teammate = (Player) offlinePlayer;
  69.                         if (teammate.getName() != p.getName()) {
  70.                             teammate.damage(0.1);
  71.                             teammate.setHealth(finalHealth);
  72.                         }
  73.                     }
  74.                 }
  75.  
  76.             }
  77.         }.runTaskLater(plugin, 1);
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement