stoneharry

Untitled

Aug 15th, 2012
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.71 KB | None | 0 0
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package main;
  6.  
  7. import java.util.HashMap;
  8. import java.util.Random;
  9. import java.util.Stack;
  10. import java.util.logging.Logger;
  11. import org.bukkit.Bukkit;
  12. import org.bukkit.ChatColor;
  13. import org.bukkit.Location;
  14. import org.bukkit.block.Block;
  15. import org.bukkit.entity.Entity;
  16. import org.bukkit.entity.Player;
  17. import org.bukkit.event.EventHandler;
  18. import org.bukkit.event.Listener;
  19. import org.bukkit.event.block.BlockBreakEvent;
  20. import org.bukkit.event.block.BlockPlaceEvent;
  21. import org.bukkit.event.entity.EntityDamageEvent;
  22. import org.bukkit.event.entity.FoodLevelChangeEvent;
  23. import org.bukkit.event.player.PlayerJoinEvent;
  24. import org.bukkit.event.player.PlayerQuitEvent;
  25. import org.bukkit.plugin.java.JavaPlugin;
  26. import org.bukkit.event.player.PlayerMoveEvent;
  27.  
  28. /**
  29.  *
  30.  * @author Harry
  31.  */
  32.  
  33. public class zombieMain extends JavaPlugin implements Listener
  34. {
  35.     public static Logger console = null;
  36.     private static HashMap<String, String> humans;
  37.     public static Boolean gameRunning = false;
  38.     public static Boolean resetting = false;
  39.     private static final Boolean debug = false;
  40.     private static Stack blocks_changed = new Stack();
  41.    
  42.     public void onDisable()
  43.     {
  44.         humans.clear();
  45.         console.info("[StonedZombie] Stoneharry - Disabled!");
  46.     }
  47.  
  48.     public void onEnable()
  49.     {
  50.         console = Logger.getLogger("Minecraft");
  51.         humans = new HashMap<String, String>();
  52.         getServer().getPluginManager().registerEvents(this, this);
  53.         console.info("[StonedZombie] Stoneharry - Enabled!");
  54.     }
  55.    
  56.     @EventHandler
  57.     public void onPlayerMove(PlayerMoveEvent event)
  58.     {
  59.         if (gameRunning)
  60.         {
  61.             Player plr = event.getPlayer();
  62.            
  63.             for (Entity entity : plr.getNearbyEntities(0.7, 0.7, 0.7))
  64.             {
  65.                 if (entity instanceof Player)
  66.                 {
  67.                    
  68.                     DebugMessage("Found player!", plr);
  69.                    
  70.                     Player target = (Player)entity;
  71.                     if (humans.containsKey(target.getName()) && !humans.containsKey(plr.getName()))
  72.                     {
  73.                         humans.remove(target.getName());
  74.                         target.sendMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "You have been infected by " + plr.getName() + "!");
  75.                         plr.sendMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "You have infected " + target.getName() + "!");
  76.                         target.setDisplayName("[" + ChatColor.RED + "Zombie" + ChatColor.WHITE + "] " + target.getName());
  77.                         if (humans.isEmpty() && gameRunning)
  78.                         {
  79.                             resetting = true;
  80.                             Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "All humans have been caught! The game will end in 10 seconds...");
  81.                             getServer().getScheduler().scheduleAsyncDelayedTask(this, new Runnable()
  82.                             {
  83.                                public void run()
  84.                                {
  85.                                    resetGame();
  86.                                }
  87.                             }, 200L);
  88.                         }
  89.                         else
  90.                         {
  91.                             Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "There are " + String.valueOf(humans.size()) + " humans remaining!");
  92.                         }
  93.                     }
  94.                 }
  95.             }
  96.             for (String name : humans.values())
  97.             {
  98.                 if (Bukkit.getPlayer(name) == null)
  99.                 {
  100.                    
  101.                     DebugMessage("Removing player for being null", plr);
  102.                    
  103.                     humans.remove(name);
  104.                 }
  105.             }
  106.         }
  107.         else
  108.         {
  109.             Player players[] = Bukkit.getOnlinePlayers();
  110.             if (players.length > 1)
  111.             {
  112.                
  113.                 DebugMessage("Starting game!", event.getPlayer());
  114.  
  115.                  Random ran = new Random();
  116.                  int x = ran.nextInt(players.length - 1);
  117.                  for (int i = 0; i < players.length; i++)
  118.                  {
  119.                      if (i == x)
  120.                      {
  121.                          Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "The game has begun and " + players[i].getName() + " is the first zombie!");
  122.                          players[i].setDisplayName("[" + ChatColor.RED + "Zombie" + ChatColor.WHITE + "] " + players[i].getName());
  123.                      }
  124.                      else
  125.                      {
  126.                          players[i].setDisplayName("[" + ChatColor.GREEN + "Human" + ChatColor.WHITE + "] " + players[i].getName());
  127.                          humans.put(players[i].getName(), players[i].getName());
  128.                      }
  129.                  }
  130.                  gameRunning = true;
  131.             }
  132.         }
  133.     }
  134.    
  135.     @EventHandler
  136.     public void onPlayerJoin(PlayerJoinEvent event)
  137.     {
  138.         if (gameRunning)
  139.         {
  140.             event.getPlayer().sendMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "The game is in progress already! You have joined as a Zombie. Catch the humans!");
  141.             event.getPlayer().setDisplayName("[" + ChatColor.RED + "Zombie" + ChatColor.WHITE + "] " + event.getPlayer().getName());
  142.         }
  143.         event.setJoinMessage(null);
  144.     }
  145.    
  146.     @EventHandler
  147.     public void onPlayerLeave(PlayerQuitEvent event)
  148.     {
  149.         event.setQuitMessage(null);
  150.     }
  151.    
  152.     private void DebugMessage(String message, Player plr)
  153.     {
  154.         if (debug)
  155.         {
  156.             console.info(message);
  157.             plr.sendMessage(message);
  158.         }
  159.     }
  160.  
  161.     @EventHandler
  162.     public void onEntityDamage(EntityDamageEvent event)
  163.     {
  164.         event.setCancelled(true);
  165.     }
  166.    
  167.     @EventHandler
  168.     public void onFoodLevelChange(FoodLevelChangeEvent event)
  169.     {
  170.         event.setCancelled(true);
  171.     }
  172.    
  173.     @EventHandler
  174.     public void onBlockPlace(BlockPlaceEvent event)
  175.     {
  176.         if (!resetting)
  177.         {
  178.             blocks_changed.push(event.getBlockPlaced().getLocation());
  179.             blocks_changed.push(0);
  180.             blocks_changed.push((byte)0);
  181.         }
  182.         else
  183.         {
  184.             event.setCancelled(true);
  185.         }
  186.     }
  187.    
  188.     @EventHandler
  189.     public void onBlockBreak(BlockBreakEvent event)
  190.     {
  191.         if (!resetting)
  192.         {
  193.             Block b = event.getBlock();
  194.             blocks_changed.push(b.getLocation());
  195.             blocks_changed.push(b.getTypeId());
  196.             blocks_changed.push(b.getData());
  197.             b.getDrops().clear();
  198.         }
  199.         else
  200.         {
  201.             event.setCancelled(true);
  202.         }
  203.     }
  204.    
  205.     public void resetGame()
  206.     {
  207.         Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "Restoring arena... This may cause some lag.");
  208.        
  209.         while (!blocks_changed.isEmpty())
  210.         {
  211.             Byte b = (Byte)blocks_changed.pop();
  212.             Integer mat = (Integer)blocks_changed.pop();
  213.             Location loc = (Location)blocks_changed.pop();
  214.             loc.getBlock().setTypeIdAndData(mat, b, true);
  215.         }
  216.        
  217.         Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "Done!");
  218.        
  219.         blocks_changed.clear();
  220.        
  221.         gameRunning = false;
  222.         resetting = false;
  223.     }
  224. }
Advertisement
Add Comment
Please, Sign In to add comment