stoneharry

Untitled

Aug 17th, 2012
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 12.21 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.BlockIgniteEvent;
  21. import org.bukkit.event.block.BlockPlaceEvent;
  22. import org.bukkit.event.entity.EntityDamageEvent;
  23. import org.bukkit.event.entity.FoodLevelChangeEvent;
  24. import org.bukkit.event.player.PlayerJoinEvent;
  25. import org.bukkit.event.player.PlayerQuitEvent;
  26. import org.bukkit.plugin.java.JavaPlugin;
  27. import org.bukkit.event.player.PlayerMoveEvent;
  28. import org.bukkit.event.weather.WeatherChangeEvent;
  29. import org.bukkit.inventory.ItemStack;
  30.  
  31. /**
  32.  *
  33.  * @author Harry
  34.  */
  35.  
  36. public class zombieMain extends JavaPlugin implements Listener
  37. {
  38.     public static Logger console = null;
  39.     private static HashMap<String, String> humans;
  40.     public static Boolean gameRunning = false;
  41.     public static Boolean resetting = true;
  42.     private static final Boolean debug = false;
  43.     private static Stack blocks_changed = new Stack();
  44.     public static final long timeLimit = 300000;
  45.     public static long lastTime = 0;
  46.     public static Boolean mark_zombies = false;
  47.    
  48.     public void onDisable()
  49.     {
  50.         humans.clear();
  51.         console.info("[StonedZombie] Stoneharry - Disabled!");
  52.     }
  53.  
  54.     public void onEnable()
  55.     {
  56.         console = Logger.getLogger("Minecraft");
  57.         humans = new HashMap<String, String>();
  58.         getServer().getPluginManager().registerEvents(this, this);
  59.         getServer().getScheduler().scheduleAsyncRepeatingTask(this, new Runnable() {
  60.            public void run()
  61.            {
  62.                if (gameRunning && !resetting)
  63.                {
  64.                    int result = (int)(System.currentTimeMillis()-lastTime);
  65.                    
  66.                    if (result > timeLimit)
  67.                    {
  68.                        Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "The time limit is up, humans have won!");
  69.                        prepareReset();
  70.                    }
  71.                    else
  72.                    {
  73.                        int seconds = (int)(timeLimit / 1000) - ( result / 1000 );
  74.                        int minutes = 0;
  75.                        while (seconds > 59)
  76.                        {
  77.                            seconds = seconds - 60;
  78.                            minutes = minutes + 1;
  79.                        }
  80.                        if (minutes == 0)
  81.                        {
  82.                             Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "There is " + String.valueOf(seconds) + " seconds remaining!");
  83.                        }
  84.                        else
  85.                        {
  86.                             Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "There is " + String.valueOf(minutes) + " minutes and " + String.valueOf(seconds) + " seconds remaining!");
  87.                        }
  88.                        
  89.                        if (mark_zombies)
  90.                        {
  91.                            Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "The lightning shows where the remaining humans are!");
  92.                            for (String name : humans.values())
  93.                            {
  94.                                Player player = Bukkit.getPlayer(name);
  95.                                if (player != null)
  96.                                {
  97.                                    if (player.isOnline())
  98.                                    {
  99.                                        Bukkit.getWorld("world").strikeLightningEffect(player.getLocation());
  100.                                    }
  101.                                }
  102.                            }
  103.                            mark_zombies = false;
  104.                        }
  105.                        else
  106.                        {
  107.                            mark_zombies = true;
  108.                        }
  109.                    }
  110.                }
  111.            }
  112.         }, 700L, 700L);
  113.         console.info("[StonedZombie] Stoneharry - Enabled!");
  114.     }
  115.    
  116.     @EventHandler
  117.     public void onPlayerMove(PlayerMoveEvent event)
  118.     {
  119.         if (gameRunning)
  120.         {
  121.             Player plr = event.getPlayer();
  122.            
  123.             for (Entity entity : plr.getNearbyEntities(0.7, 0.7, 0.7))
  124.             {
  125.                 if (entity instanceof Player)
  126.                 {          
  127.                     Player target = (Player)entity;
  128.                     if (humans.containsKey(target.getName()) && !humans.containsKey(plr.getName()))
  129.                     {
  130.                         humans.remove(target.getName());
  131.                         //target.sendMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "You have been infected by " + plr.getName() + "!");
  132.                         //plr.sendMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "You have infected " + target.getName() + "!");
  133.                         Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + plr.getName() + " has infected " + target.getName() + "!");
  134.                         target.setDisplayName("[" + ChatColor.RED + "Zombie" + ChatColor.WHITE + "] " + target.getName());
  135.                         //target.setPlayerListName("[Zombie] " + target.getName());
  136.                         if (humans.isEmpty() && gameRunning && !resetting)
  137.                         {
  138.                             Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "All humans have been caught! The game will end in 10 seconds...");
  139.                             prepareReset();
  140.                         }
  141.                         else
  142.                         {
  143.                             Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "There are " + String.valueOf(humans.size()) + " humans remaining!");
  144.                         }
  145.                     }
  146.                 }
  147.             }
  148.             for (String name : humans.values())
  149.             {
  150.                 if (Bukkit.getPlayer(name) == null)
  151.                 {
  152.                     humans.remove(name);
  153.                 }
  154.                 else
  155.                 {
  156.                     if (!Bukkit.getPlayer(name).isOnline())
  157.                     {
  158.                         humans.remove(name);                      
  159.                     }
  160.                 }
  161.             }
  162.         }
  163.         else
  164.         {
  165.             Player players[] = Bukkit.getOnlinePlayers();
  166.             if (players.length > 1)
  167.             {
  168.                 lastTime = System.currentTimeMillis();
  169.  
  170.                  Random ran = new Random();
  171.                  int x = ran.nextInt(players.length - 1);
  172.                  for (int i = 0; i < players.length; i++)
  173.                  {
  174.                      players[i].getInventory().clear();
  175.                      players[i].getInventory().setArmorContents(null);
  176.                      ItemStack reward = new ItemStack(3, 20);
  177.                      players[i].getInventory().addItem(reward);
  178.                      players[i].updateInventory();
  179.                      if (i == x)
  180.                      {
  181.                          Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "The game has begun and " + players[i].getName() + " is the first zombie!");
  182.                          players[i].setDisplayName("[" + ChatColor.RED + "Zombie" + ChatColor.WHITE + "] " + players[i].getName());
  183.                          //players[i].setPlayerListName("[Zombie] " + players[i].getName());
  184.                          players[i].teleport(new Location(Bukkit.getServer().getWorld("world"), 458, 84, 231));
  185.                      }
  186.                      else
  187.                      {
  188.                          players[i].setDisplayName("[" + ChatColor.GREEN + "Human" + ChatColor.WHITE + "] " + players[i].getName());
  189.                          //players[i].setPlayerListName("[Human] " + players[i].getName());
  190.                          humans.put(players[i].getName(), players[i].getName());
  191.                          players[i].teleport(new Location(Bukkit.getServer().getWorld("world"), 437, 71, 230));
  192.                      }
  193.                  }
  194.                  gameRunning = true;
  195.                  resetting = false;
  196.             }
  197.         }
  198.     }
  199.    
  200.     public void prepareReset()
  201.     {
  202.         resetting = true;
  203.         getServer().getScheduler().scheduleAsyncDelayedTask(this, new Runnable()
  204.         {
  205.            public void run()
  206.            {
  207.                resetGame();
  208.            }
  209.         }, 200L);
  210.     }
  211.    
  212.     @EventHandler
  213.     public void onPlayerJoin(PlayerJoinEvent event)
  214.     {
  215.         if (gameRunning)
  216.         {
  217.             Player p = event.getPlayer();
  218.             p.sendMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "The game is in progress already. You have joined as a Zombie. Catch the humans!");
  219.             //Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + p.getName() + " has joined the Zombies!");
  220.             p.setDisplayName("[" + ChatColor.RED + "Zombie" + ChatColor.WHITE + "] " + p.getName());
  221.             //p.setPlayerListName("[Zombie] " + p.getName());
  222.             ItemStack reward = new ItemStack(3, 20);
  223.             p.getInventory().addItem(reward);
  224.             p.updateInventory();
  225.         }
  226.         event.getPlayer().teleport(new Location(Bukkit.getServer().getWorld("world"), 437, 71, 230));
  227.         event.setJoinMessage(null);
  228.     }
  229.    
  230.     @EventHandler
  231.     public void onPlayerLeave(PlayerQuitEvent event)
  232.     {
  233.         event.setQuitMessage(null);
  234.     }
  235.    
  236.     private void DebugMessage(String message, Player plr)
  237.     {
  238.         if (debug)
  239.         {
  240.             console.info(message);
  241.             plr.sendMessage(message);
  242.         }
  243.     }
  244.  
  245.     @EventHandler
  246.     public void onEntityDamage(EntityDamageEvent event)
  247.     {
  248.         event.setCancelled(true);
  249.     }
  250.    
  251.     @EventHandler
  252.     public void onFoodLevelChange(FoodLevelChangeEvent event)
  253.     {
  254.         event.setCancelled(true);
  255.     }
  256.    
  257.     @EventHandler
  258.     public void onBlockPlace(BlockPlaceEvent event)
  259.     {
  260.         if (!resetting)
  261.         {
  262.             blocks_changed.push(event.getBlockPlaced().getLocation());
  263.             blocks_changed.push(0);
  264.             blocks_changed.push((byte)0);
  265.         }
  266.         else
  267.         {
  268.             event.setCancelled(true);
  269.         }
  270.     }
  271.    
  272.     @EventHandler
  273.     public void onBlockBreak(BlockBreakEvent event)
  274.     {
  275.         if (!resetting)
  276.         {
  277.             Block b = event.getBlock();
  278.             blocks_changed.push(b.getLocation());
  279.             blocks_changed.push(b.getTypeId());
  280.             blocks_changed.push(b.getData());
  281.             b.getDrops().clear();
  282.         }
  283.         else
  284.         {
  285.             event.setCancelled(true);
  286.         }
  287.     }
  288.    
  289.     public void resetGame()
  290.     {
  291.         Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "Restoring arena... This may cause some lag.");
  292.        
  293.         while (!blocks_changed.isEmpty())
  294.         {
  295.             Byte b = (Byte)blocks_changed.pop();
  296.             Integer mat = (Integer)blocks_changed.pop();
  297.             Location loc = (Location)blocks_changed.pop();
  298.             loc.getBlock().setTypeIdAndData(mat, b, true);
  299.         }
  300.        
  301.         Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "Done!");
  302.        
  303.         blocks_changed.clear();
  304.        
  305.         gameRunning = false;
  306.         resetting = false;
  307.         mark_zombies = false;
  308.     }
  309.    
  310.     @EventHandler
  311.     public void ignitefire(BlockIgniteEvent event)
  312.     {
  313.         event.setCancelled(true);
  314.     }
  315.    
  316.     @EventHandler
  317.     public void onWeatherChange(WeatherChangeEvent event)
  318.     {
  319.         event.getWorld().setStorm(false);
  320.         event.getWorld().setThundering(false);
  321.     }
  322. }
Advertisement
Add Comment
Please, Sign In to add comment