Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 26th, 2012  |  syntax: Java  |  size: 12.11 KB  |  hits: 16  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. package chestPVP;
  2.  
  3. import java.util.Calendar;
  4. import java.util.Iterator;
  5. import java.util.Random;
  6. import java.util.TimeZone;
  7.  
  8. import org.bukkit.ChatColor;
  9. import org.bukkit.Effect;
  10. import org.bukkit.Location;
  11. import org.bukkit.Material;
  12. import org.bukkit.World;
  13. import org.bukkit.block.Block;
  14. import org.bukkit.block.BlockFace;
  15. import org.bukkit.block.Chest;
  16. import org.bukkit.block.DoubleChest;
  17. import org.bukkit.command.Command;
  18. import org.bukkit.command.CommandExecutor;
  19. import org.bukkit.command.CommandSender;
  20. import org.bukkit.entity.EntityType;
  21. import org.bukkit.entity.ExperienceOrb;
  22. import org.bukkit.entity.Player;
  23. import org.bukkit.inventory.ItemStack;
  24. import org.getspout.spoutapi.player.SpoutPlayer;
  25.  
  26. public class CommandExec implements CommandExecutor {
  27.         public ChestPVP plugin;
  28.         boolean snowEvent = false;
  29.         Random r = new Random();
  30.  
  31.         public CommandExec(ChestPVP chestPVP) {
  32.                 this.plugin = chestPVP;
  33.         }
  34.  
  35.         @Override
  36.         public boolean onCommand(CommandSender sender, Command cmd,
  37.                         String commandLabel, String[] args) {
  38.                 if (cmd.getName().equalsIgnoreCase("start")) {
  39.                         if (!sender.isOp())
  40.                                 return false;
  41.  
  42.                         if (!plugin.started) {
  43.                                 plugin.started = true;
  44.                                 plugin.getServer()
  45.                                                 .broadcastMessage(
  46.                                                                 ChatColor.AQUA
  47.                                                                                 + "Game started"
  48.                                                                                 + ChatColor.WHITE
  49.                                                                                 + ", 10 chests has been spred all over the world. First player to 15 points will win, good luck!");
  50.                                 startTask();
  51.                                 World w = plugin.getServer().getWorlds().get(0);
  52.                                 w.setPVP(true);
  53.                                 for (Iterator<Player> i = w.getPlayers().iterator(); i
  54.                                                 .hasNext();) {
  55.                                         Player p = i.next();
  56.                                         plugin.scores.put(p, 0);
  57.                                         Helper.reSpawn(p, false);
  58.                                 }
  59.                                 Helper.updateScoreboard(plugin.scores);
  60.  
  61.                                 for (int i = 0; i < 10; i++) {
  62.                                         spawnChest(false);
  63.                                 }
  64.                                 Calendar c = Calendar.getInstance();
  65.                                 c.setTimeZone(TimeZone.getTimeZone("UTC"));
  66.                                 plugin.startTime = c.getTime().getTime();
  67.                                 plugin.getServer().getScheduler()
  68.                                                 .scheduleSyncRepeatingTask(plugin, new Runnable() {
  69.                                                         public void run() {
  70.                                                                 Calendar c = Calendar.getInstance();
  71.                                                                 c.setTimeZone(TimeZone.getTimeZone("UTC"));
  72.                                                                 long t = c.getTime().getTime();
  73.                                                                 int diff;
  74.                                                                 if (plugin.ended)
  75.                                                                         diff = (int) (60000 - (t - plugin.startTime));
  76.                                                                 else
  77.                                                                         diff = (int) (t - plugin.startTime);
  78.                                                                 int m = (diff / 1000) / 60;
  79.                                                                 int s = (diff / 1000) % 60;
  80.                                                                 String sM = String.valueOf(m);
  81.                                                                 String sS = String.valueOf(s);
  82.                                                                 if (sM.length() == 1)
  83.                                                                         sM = "0" + sM;
  84.                                                                 if (sS.length() == 1)
  85.                                                                         sS = "0" + sS;
  86.                                                                 if (!plugin.ended)
  87.                                                                         Helper.updateStatus("Game in progress <span style='color:white'>("
  88.                                                                                         + sM + ":" + sS + ")</span>");
  89.                                                                 else
  90.                                                                         Helper.updateStatus(plugin.endString
  91.                                                                                         + " <span style='color:white'>("
  92.                                                                                         + sM + ":" + sS + ")</span>");
  93.                                                         }
  94.                                                 }, 0L, 20L);
  95.                         }
  96.                         return true;
  97.                 } else if (cmd.getName().equalsIgnoreCase("event")) {
  98.                         if (!sender.isOp())
  99.                                 return false;
  100.                         event(Integer.parseInt(args[0]));
  101.                         return true;
  102.                 }
  103.                 return false;
  104.         }
  105.  
  106.         void startTask() {
  107.                 plugin.getServer().getScheduler()
  108.                                 .scheduleSyncRepeatingTask(plugin, new Runnable() {
  109.                                         public void run() {
  110.                                                 spawnChest(false);
  111.                                         }
  112.                                 }, 0L, 100L);
  113.                 plugin.getServer().getScheduler()
  114.                                 .scheduleSyncRepeatingTask(plugin, new Runnable() {
  115.                                         public void run() {
  116.                                                 event();
  117.                                         }
  118.                                         // }, 3000L, 3000L);
  119.                                 }, 1000L, 3000L);
  120.  
  121.                 // Remove snow
  122.                 plugin.getServer().getScheduler()
  123.                                 .scheduleSyncRepeatingTask(plugin, new Runnable() {
  124.                                         public void run() {
  125.                                                 if (!snowEvent) {
  126.                                                         for (int i = 0; i < 100; i++) {
  127.                                                                 removeSnowBlock();
  128.                                                         }
  129.                                                 }
  130.                                         }
  131.                                 }, 0L, 1L);
  132.         }
  133.  
  134.         void removeSnowBlock() {
  135.                 int x = r.nextInt(200);
  136.                 int z = r.nextInt(200);
  137.                 World w = plugin.getServer().getWorlds().get(0);
  138.                 Block b = w.getHighestBlockAt(x, z).getRelative(BlockFace.DOWN);
  139.                 if (b.getType() == Material.SNOW_BLOCK)
  140.                         b.setType(Material.AIR);
  141.         }
  142.  
  143.         void event() {
  144.                 int y = r.nextInt(7);
  145.                 if (y == 5)
  146.                         y = 2;
  147.                 event(y);
  148.         }
  149.  
  150.         void eventNotification(String e, Material m){
  151.                 World w = plugin.getServer().getWorlds().get(0);
  152.                 for (Iterator<Player> i = w.getPlayers().iterator(); i
  153.                                 .hasNext();) {
  154.                         Player p = i.next();
  155.                         SpoutPlayer sp = (SpoutPlayer) p;
  156.                         if(sp.isSpoutCraftEnabled())
  157.                                 sp.sendNotification("Event started", e, m);
  158.                         else
  159.                                 p.sendMessage(ChatColor.GREEN + "Event started: " + ChatColor.WHITE
  160.                                 + e);
  161.                 }
  162.         }
  163.         void event(int y) {
  164.                 if (y == 0) {
  165.                         // Reveal enemies
  166.                         eventNotification("Smoke Pillars",Material.FLINT);
  167.                         final World w = plugin.getServer().getWorlds().get(0);
  168.                         final int s = plugin.getServer().getScheduler()
  169.                                         .scheduleSyncRepeatingTask(plugin, new Runnable() {
  170.                                                 public void run() {
  171.                                                         for (Iterator<Player> i = w.getPlayers().iterator(); i
  172.                                                                         .hasNext();) {
  173.                                                                 Player p = i.next();
  174.                                                                 for (int h = 0; h < 200; h++) {
  175.                                                                         Location loc = p.getLocation();
  176.                                                                         loc.setY(h);
  177.                                                                         w.playEffect(loc, Effect.SMOKE, 0);
  178.                                                                 }
  179.                                                         }
  180.                                                 }
  181.                                         }, 0L, 1L);
  182.                         plugin.getServer().getScheduler()
  183.                                         .scheduleSyncDelayedTask(plugin, new Runnable() {
  184.                                                 public void run() {
  185.                                                         plugin.getServer().getScheduler().cancelTask(s);
  186.                                                 }
  187.                                         }, 100L);
  188.                 } else if (y == 1) {
  189.                         // Exp rain
  190.                         eventNotification("Exp rain in the center!",Material.FLINT);
  191.                         final World w = plugin.getServer().getWorlds().get(0);
  192.                         final int s = plugin.getServer().getScheduler()
  193.                                         .scheduleSyncRepeatingTask(plugin, new Runnable() {
  194.                                                 public void run() {
  195.                                                         Location loc = new Location(w, 100, plugin.top - 5,
  196.                                                                         100);
  197.                                                         ((ExperienceOrb) w.spawn(loc, ExperienceOrb.class))
  198.                                                                         .setExperience(20);
  199.                                                 }
  200.                                         }, 0L, 5L);
  201.                         plugin.getServer().getScheduler()
  202.                                         .scheduleSyncDelayedTask(plugin, new Runnable() {
  203.                                                 public void run() {
  204.                                                         plugin.getServer().getScheduler().cancelTask(s);
  205.                                                 }
  206.                                         }, 200L);
  207.  
  208.                 } else if (y == 2) {
  209.                         // Group hug!
  210.                         eventNotification("Group hug!",Material.FLINT);
  211.                         final World w = plugin.getServer().getWorlds().get(0);
  212.                         for (Iterator<Player> i = w.getPlayers().iterator(); i.hasNext();) {
  213.                                 Player p = i.next();
  214.                                 Location loc = new Location(p.getWorld(), 100, p.getWorld()
  215.                                                 .getHighestBlockYAt(100, 100), 100);
  216.                                 p.teleport(loc);
  217.                         }
  218.                 } else if (y == 3) {
  219.                         // Diamonds!
  220.                         eventNotification("Diamonds in the center!",Material.FLINT);
  221.                         final World w = plugin.getServer().getWorlds().get(0);
  222.                         final int s = plugin.getServer().getScheduler()
  223.                                         .scheduleSyncRepeatingTask(plugin, new Runnable() {
  224.                                                 public void run() {
  225.                                                         int i = r.nextInt(100);
  226.                                                         Location loc = new Location(w, 100, plugin.top - 5,
  227.                                                                         100);
  228.                                                         Material m;
  229.                                                         if (i == 0)
  230.                                                                 m = Material.DIAMOND_AXE;
  231.                                                         else if (i == 1)
  232.                                                                 m = Material.DIAMOND_BOOTS;
  233.                                                         else if (i == 2)
  234.                                                                 m = Material.DIAMOND_CHESTPLATE;
  235.                                                         else if (i == 3)
  236.                                                                 m = Material.DIAMOND_HELMET;
  237.                                                         else if (i == 4)
  238.                                                                 m = Material.DIAMOND_HOE;
  239.                                                         else if (i == 5)
  240.                                                                 m = Material.DIAMOND_LEGGINGS;
  241.                                                         else if (i == 6)
  242.                                                                 m = Material.DIAMOND_PICKAXE;
  243.                                                         else if (i == 7)
  244.                                                                 m = Material.DIAMOND_SPADE;
  245.                                                         else if (i == 8)
  246.                                                                 m = Material.DIAMOND_SWORD;
  247.                                                         else
  248.                                                                 m = Material.DIAMOND;
  249.                                                         ItemStack item = new ItemStack(m, 1);
  250.                                                         w.dropItem(loc, item);
  251.                                                 }
  252.                                         }, 0L, 20L);
  253.                         plugin.getServer().getScheduler()
  254.                                         .scheduleSyncDelayedTask(plugin, new Runnable() {
  255.                                                 public void run() {
  256.                                                         plugin.getServer().getScheduler().cancelTask(s);
  257.                                                 }
  258.                                         }, 100L);
  259.                 } else if (y == 4) {
  260.                         // Chest madness!
  261.                         eventNotification("Chest madness!",Material.FLINT);
  262.                         for (int i = 0; i < 20; i++) {
  263.                                 spawnChest(true);
  264.                         }
  265.                 } else if (y == 5) {
  266.                         snowEvent = true;
  267.                         final World w = plugin.getServer().getWorlds().get(0);
  268.                         w.setStorm(true);
  269.                         w.setWeatherDuration(950);
  270.                         eventNotification("Snowstorm!",Material.FLINT);
  271.                         final int s = plugin.getServer().getScheduler()
  272.                                         .scheduleSyncRepeatingTask(plugin, new Runnable() {
  273.                                                 public void run() {
  274.                                                         for (int i = 0; i < 50; i++) {
  275.                                                                 spawnSnowBlock();
  276.                                                         }
  277.                                                 }
  278.                                         }, 0L, 1L);
  279.                         plugin.getServer().getScheduler()
  280.                                         .scheduleSyncDelayedTask(plugin, new Runnable() {
  281.                                                 public void run() {
  282.                                                         plugin.getServer().getScheduler().cancelTask(s);
  283.                                                         w.setWeatherDuration(Integer.MAX_VALUE);
  284.                                                         snowEvent = false;
  285.                                                 }
  286.                                         }, 1000L);
  287.                 } else if (y == 6) {
  288.                         final World w = plugin.getServer().getWorlds().get(0);
  289.                         eventNotification("Cows!",Material.FLINT);
  290.                         Location loc = new Location(w, 100, plugin.top - 10, 100);
  291.                         for (int i = 0; i < 20; i++) {
  292.                                 w.spawnCreature(loc, EntityType.COW);
  293.                         }
  294.                 }
  295.         }
  296.  
  297.         void spawnSnowBlock() {
  298.                 int x = r.nextInt(200);
  299.                 int z = r.nextInt(200);
  300.                 World w = plugin.getServer().getWorlds().get(0);
  301.                 Block b = w.getHighestBlockAt(x, z);
  302.                 b.setType(Material.SNOW_BLOCK);
  303.         }
  304.  
  305.         void spawnChest(boolean close) {
  306.                 int x;
  307.                 int z;
  308.                 if (!close) {
  309.                         x = r.nextInt(200);
  310.                         z = r.nextInt(200);
  311.                 } else {
  312.                         x = 90 + r.nextInt(20);
  313.                         z = 90 + r.nextInt(20);
  314.                 }
  315.                 World w = plugin.getServer().getWorlds().get(0);
  316.                 Block b = w.getHighestBlockAt(x, z);
  317.                 b.setType(Material.CHEST);
  318.                 Chest c = (Chest) b.getState();
  319.                 int ammItems = 2 + r.nextInt(5);
  320.                 for (int itemNr = 0; itemNr < ammItems; itemNr++) {
  321.                         int nr = r.nextInt(95);
  322.                         Material mat;
  323.                         int amm = 1;
  324.                         if (nr < 1)
  325.                                 mat = Material.TNT; // 1
  326.                         else if (nr < 5)
  327.                                 mat = Material.WOOD_SWORD; // 4
  328.                         else if (nr < 7)
  329.                                 mat = Material.STONE_SWORD; // 2
  330.                         else if (nr < 8)
  331.                                 mat = Material.IRON_SWORD; // 1
  332.                         else if (nr < 9)
  333.                                 mat = Material.OBSIDIAN; // 1
  334.                         else if (nr < 13)
  335.                                 mat = Material.BOOK; // 4
  336.                         else if (nr < 15)
  337.                                 mat = Material.APPLE; // 2
  338.                         else if (nr < 16)
  339.                                 mat = Material.GOLDEN_APPLE; // 1
  340.                         else if (nr < 23) {
  341.                                 mat = Material.ARROW; // 5
  342.                                 amm = r.nextInt(2) + 1;
  343.                         } else if (nr < 26)
  344.                                 mat = Material.CACTUS; // 2
  345.                         else if (nr < 28)
  346.                                 mat = Material.BOW; // 5
  347.                         else if (nr < 30)
  348.                                 mat = Material.ENCHANTMENT_TABLE; // 2
  349.                         else if (nr < 35) {
  350.                                 mat = Material.WOOL; // 5
  351.                                 amm = r.nextInt(20) + 2;
  352.                         } else if (nr < 37)
  353.                                 mat = Material.FLINT_AND_STEEL; // 2
  354.                         else if (nr < 39)
  355.                                 mat = Material.LEATHER_BOOTS; // 2
  356.                         else if (nr < 41)
  357.                                 mat = Material.LEATHER_CHESTPLATE; // 2
  358.                         else if (nr < 43)
  359.                                 mat = Material.LEATHER_HELMET; // 2
  360.                         else if (nr < 45)
  361.                                 mat = Material.LEATHER_LEGGINGS; // 2
  362.                         else if (nr < 46)
  363.                                 mat = Material.IRON_HELMET; // 1
  364.                         else if (nr < 47)
  365.                                 mat = Material.IRON_BOOTS; // 1
  366.                         else if (nr < 48)
  367.                                 mat = Material.IRON_CHESTPLATE; // 1
  368.                         else if (nr < 49)
  369.                                 mat = Material.IRON_LEGGINGS; // 1
  370.                         else if (nr < 50)
  371.                                 mat = Material.DIAMOND; // 1
  372.                         else if (nr < 55)
  373.                                 mat = Material.WORKBENCH; // 5
  374.                         else if (nr < 57)
  375.                                 mat = Material.STICK; // 2
  376.                         else if (nr < 60) {
  377.                                 mat = Material.BOOKSHELF; // 3
  378.                                 amm = r.nextInt(5) + 1;
  379.                         } else
  380.                                 mat = Material.EXP_BOTTLE; // 20
  381.                         c.getInventory().addItem(new ItemStack(mat, amm));
  382.                 }
  383.                 final Location chestLoc = c.getLocation();
  384.                 // Remove chest after 2 minutes
  385.                 plugin.getServer().getScheduler()
  386.                                 .scheduleSyncDelayedTask(plugin, new Runnable() {
  387.                                         public void run() {
  388.                                                         Block eChest = plugin.getServer().getWorlds().get(0).getBlockAt(chestLoc);
  389.                                                         System.out.println(eChest.getClass());
  390.                                                         if(eChest instanceof Chest){
  391.                                                                 ((Chest) eChest).getInventory().clear();
  392.                                                                 eChest.setType(Material.AIR);
  393.                                                                 System.out.println("Removed a chest");
  394.                                                         }
  395.                                                         else if( eChest instanceof DoubleChest)
  396.                                                         {
  397.                                                                 ((DoubleChest) eChest).getInventory().clear();
  398.                                                                 eChest.setType(Material.AIR);
  399.                                                                 System.out.println("Removed a half double chest");
  400.                                                         }
  401.                                                         else
  402.                                                                 System.out.println("Chest allready removed");
  403.  
  404.                                         }
  405.                                 }, 2400L);
  406.         }
  407. }