Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package main;
- import java.util.HashMap;
- import java.util.Random;
- import java.util.Stack;
- import java.util.logging.Logger;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Location;
- import org.bukkit.block.Block;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.BlockBreakEvent;
- import org.bukkit.event.block.BlockPlaceEvent;
- import org.bukkit.event.entity.EntityDamageEvent;
- import org.bukkit.event.entity.FoodLevelChangeEvent;
- import org.bukkit.event.player.PlayerJoinEvent;
- import org.bukkit.event.player.PlayerQuitEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- import org.bukkit.event.player.PlayerMoveEvent;
- /**
- *
- * @author Harry
- */
- public class zombieMain extends JavaPlugin implements Listener
- {
- public static Logger console = null;
- private static HashMap<String, String> humans;
- public static Boolean gameRunning = false;
- public static Boolean resetting = false;
- private static final Boolean debug = false;
- private static Stack blocks_changed = new Stack();
- public void onDisable()
- {
- humans.clear();
- console.info("[StonedZombie] Stoneharry - Disabled!");
- }
- public void onEnable()
- {
- console = Logger.getLogger("Minecraft");
- humans = new HashMap<String, String>();
- getServer().getPluginManager().registerEvents(this, this);
- console.info("[StonedZombie] Stoneharry - Enabled!");
- }
- @EventHandler
- public void onPlayerMove(PlayerMoveEvent event)
- {
- if (gameRunning)
- {
- Player plr = event.getPlayer();
- for (Entity entity : plr.getNearbyEntities(0.7, 0.7, 0.7))
- {
- if (entity instanceof Player)
- {
- DebugMessage("Found player!", plr);
- Player target = (Player)entity;
- if (humans.containsKey(target.getName()) && !humans.containsKey(plr.getName()))
- {
- humans.remove(target.getName());
- target.sendMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "You have been infected by " + plr.getName() + "!");
- plr.sendMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "You have infected " + target.getName() + "!");
- target.setDisplayName("[" + ChatColor.RED + "Zombie" + ChatColor.WHITE + "] " + target.getName());
- if (humans.isEmpty() && gameRunning)
- {
- resetting = true;
- Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "All humans have been caught! The game will end in 10 seconds...");
- getServer().getScheduler().scheduleAsyncDelayedTask(this, new Runnable()
- {
- public void run()
- {
- resetGame();
- }
- }, 200L);
- }
- else
- {
- Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "There are " + String.valueOf(humans.size()) + " humans remaining!");
- }
- }
- }
- }
- for (String name : humans.values())
- {
- if (Bukkit.getPlayer(name) == null)
- {
- DebugMessage("Removing player for being null", plr);
- humans.remove(name);
- }
- }
- }
- else
- {
- Player players[] = Bukkit.getOnlinePlayers();
- if (players.length > 1)
- {
- DebugMessage("Starting game!", event.getPlayer());
- Random ran = new Random();
- int x = ran.nextInt(players.length - 1);
- for (int i = 0; i < players.length; i++)
- {
- if (i == x)
- {
- Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "The game has begun and " + players[i].getName() + " is the first zombie!");
- players[i].setDisplayName("[" + ChatColor.RED + "Zombie" + ChatColor.WHITE + "] " + players[i].getName());
- }
- else
- {
- players[i].setDisplayName("[" + ChatColor.GREEN + "Human" + ChatColor.WHITE + "] " + players[i].getName());
- humans.put(players[i].getName(), players[i].getName());
- }
- }
- gameRunning = true;
- }
- }
- }
- @EventHandler
- public void onPlayerJoin(PlayerJoinEvent event)
- {
- if (gameRunning)
- {
- event.getPlayer().sendMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "The game is in progress already! You have joined as a Zombie. Catch the humans!");
- event.getPlayer().setDisplayName("[" + ChatColor.RED + "Zombie" + ChatColor.WHITE + "] " + event.getPlayer().getName());
- }
- event.setJoinMessage(null);
- }
- @EventHandler
- public void onPlayerLeave(PlayerQuitEvent event)
- {
- event.setQuitMessage(null);
- }
- private void DebugMessage(String message, Player plr)
- {
- if (debug)
- {
- console.info(message);
- plr.sendMessage(message);
- }
- }
- @EventHandler
- public void onEntityDamage(EntityDamageEvent event)
- {
- event.setCancelled(true);
- }
- @EventHandler
- public void onFoodLevelChange(FoodLevelChangeEvent event)
- {
- event.setCancelled(true);
- }
- @EventHandler
- public void onBlockPlace(BlockPlaceEvent event)
- {
- if (!resetting)
- {
- blocks_changed.push(event.getBlockPlaced().getLocation());
- blocks_changed.push(0);
- blocks_changed.push((byte)0);
- }
- else
- {
- event.setCancelled(true);
- }
- }
- @EventHandler
- public void onBlockBreak(BlockBreakEvent event)
- {
- if (!resetting)
- {
- Block b = event.getBlock();
- blocks_changed.push(b.getLocation());
- blocks_changed.push(b.getTypeId());
- blocks_changed.push(b.getData());
- b.getDrops().clear();
- }
- else
- {
- event.setCancelled(true);
- }
- }
- public void resetGame()
- {
- Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "Restoring arena... This may cause some lag.");
- while (!blocks_changed.isEmpty())
- {
- Byte b = (Byte)blocks_changed.pop();
- Integer mat = (Integer)blocks_changed.pop();
- Location loc = (Location)blocks_changed.pop();
- loc.getBlock().setTypeIdAndData(mat, b, true);
- }
- Bukkit.broadcastMessage(ChatColor.RED + "[ChaoticUnited] " + ChatColor.AQUA + "Done!");
- blocks_changed.clear();
- gameRunning = false;
- resetting = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment