stoneharry

Untitled

Jun 10th, 2012
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.08 KB | None | 0 0
  1. package PvP;
  2.  
  3. import java.util.HashMap;
  4. import java.util.logging.Logger;
  5. import org.bukkit.ChatColor;
  6. import org.bukkit.command.Command;
  7. import org.bukkit.command.CommandSender;
  8. import org.bukkit.entity.LivingEntity;
  9. import org.bukkit.entity.Player;
  10. import org.bukkit.entity.Projectile;
  11. import org.bukkit.entity.ThrownPotion;
  12. import org.bukkit.event.EventHandler;
  13. import org.bukkit.event.Listener;
  14. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  15. import org.bukkit.event.entity.EntityDamageEvent;
  16. import org.bukkit.event.entity.PotionSplashEvent;
  17. import org.bukkit.event.player.PlayerJoinEvent;
  18. import org.bukkit.plugin.java.JavaPlugin;
  19.  
  20. /**
  21.  *
  22.  * @author Harry
  23.  */
  24. public class pvpmain extends JavaPlugin implements Listener
  25. {
  26.    
  27.     public static HashMap<String, Long> names;
  28.    
  29.     public void onEnable()
  30.     {
  31.         names = new HashMap<String, Long>();
  32.         Logger.getLogger("Minecraft").info("[StonedPvP] Stoneharry's PvP System Enabled.");
  33.         getServer().getPluginManager().registerEvents(this, this);
  34.     }
  35.  
  36.     public void onDisable()
  37.     {
  38.         names.clear();
  39.         Logger.getLogger("Minecraft").info("[StonedPvP] Stoneharry's PvP System Disabled.");
  40.     }
  41.    
  42.     @EventHandler
  43.     public void OnPlayerDamage(EntityDamageEvent event)
  44.     {
  45.         if (event.isCancelled())
  46.             return;
  47.        
  48.         if ((event.getEntity() instanceof Player))
  49.         {
  50.             if ((event instanceof EntityDamageByEntityEvent))
  51.             {
  52.                 Player plr = (Player)event.getEntity();
  53.                 EntityDamageByEntityEvent edbye = (EntityDamageByEntityEvent)event;
  54.                 if (edbye.getDamager() instanceof Player)
  55.                 {
  56.                     Player damager = (Player)edbye.getDamager();
  57.                     if (names.containsKey(damager.getName()))
  58.                     {
  59.                         if (names.containsKey(plr.getName()))
  60.                         {
  61.                             String damage = String.valueOf(event.getDamage());
  62.                             plr.sendMessage(ChatColor.RED + "You took " + damage + " from " + damager.getName() + "'s attack!");
  63.                             damager.sendMessage(ChatColor.RED + "You dealt " + damage + " to " + plr.getName() + "!");
  64.                             names.put(plr.getName(), System.currentTimeMillis());
  65.                         }
  66.                         else
  67.                         {
  68.                             damager.sendMessage(ChatColor.AQUA + "[ChaoticUnited] " + ChatColor.RED + "Your target does not have PvP enabled.");
  69.                             event.setCancelled(true);
  70.                         }
  71.                     }
  72.                     else
  73.                     {
  74.                         damager.sendMessage(ChatColor.AQUA + "[ChaoticUnited] " + ChatColor.RED + "You do not have PvP enabled. To turn it on, do: /pvp");  
  75.                         event.setCancelled(true);                      
  76.                     }
  77.                 }
  78.                 else if (edbye.getDamager() instanceof Projectile)
  79.                 {
  80.                     if (!names.containsKey(plr.getName()))
  81.                         event.setCancelled(true);
  82.                    
  83.                     Projectile arrow = (Projectile)edbye.getDamager();
  84.                     if (arrow.getShooter() instanceof Player)
  85.                     {
  86.                         Player p = (Player)arrow.getShooter();
  87.                         if (!names.containsKey(p.getName()))
  88.                             event.setCancelled(true);
  89.                     }
  90.                 }
  91.             }
  92.         }
  93.     }
  94.    
  95.     @EventHandler
  96.     public void PotionHit(PotionSplashEvent event)
  97.     {
  98.         if (event.isCancelled())
  99.             return;
  100.  
  101.         ThrownPotion potion = event.getPotion();
  102.         if ((potion.getShooter() instanceof Player))
  103.         {
  104.             Player damager = (Player)potion.getShooter();
  105.             for (LivingEntity entity : event.getAffectedEntities())
  106.             {
  107.                 if ((!(entity instanceof Player)) || (((Player)entity).equals(damager)))
  108.                         continue;
  109.                    
  110.                 Player plr = (Player)entity;
  111.                 if (!names.containsKey(plr.getName()))
  112.                     event.setCancelled(true);
  113.                
  114.             }
  115.         }
  116.     }
  117.    
  118.     @EventHandler
  119.     public void onPlayerJoin(PlayerJoinEvent event)
  120.     {
  121.         String name = event.getPlayer().getName();
  122.         if (names.containsKey(name))
  123.         {
  124.             long time = names.get(name);
  125.             int result = (int)(System.currentTimeMillis()-time);
  126.             if (result < 60000)
  127.             {
  128.                 event.getPlayer().sendMessage(ChatColor.RED + "You logged out while in PvP! Go die in a fire.");
  129.                 event.getPlayer().setFireTicks(10000);
  130.                 names.remove(name);
  131.             }
  132.         }
  133.     }
  134.    
  135.     @EventHandler
  136.     public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
  137.     {
  138.         if(cmd.getName().equalsIgnoreCase("pvp"))
  139.         {
  140.             String name = sender.getName();
  141.             if (names.containsKey(name))
  142.             {
  143.                 long time = names.get(name);
  144.                 int result = (int)(System.currentTimeMillis()-time);
  145.                 if (result > 30000)
  146.                 {
  147.                     names.remove(name);
  148.                     sender.sendMessage(ChatColor.AQUA + "[ChaoticUnited] " + ChatColor.RED + "PvP is now disabled.");
  149.                 }
  150.                 else
  151.                 {
  152.                     sender.sendMessage(ChatColor.RED + "You must wait " + ChatColor.AQUA + String.valueOf(30-(result/1000)) + ChatColor.RED + " more seconds before you can disable PvP!");
  153.                 }
  154.             }
  155.             else
  156.             {
  157.                 names.put(name, System.currentTimeMillis());
  158.                 sender.sendMessage(ChatColor.AQUA + "[ChaoticUnited] " + ChatColor.RED + "PvP is now enabled.");
  159.             }
  160.             return true;
  161.         }
  162.         return false;
  163.     }
  164. }
Advertisement
Add Comment
Please, Sign In to add comment