private void runPhaseTwo(final Beacon beacon, final int repeat) { final Location loc = beacon.getLocation().add(0.0D, 1.0D, 0.0D); final Block aboveBlock = loc.getWorld().getBlockAt(loc); final Random rnd = new Random(); loc.getWorld().playSound(loc, Sound.EXPLODE, 1.0F, 1.0F); aboveBlock.setType(Material.WATER); spawnPressurePlates(beacon); final int itemDropTask = this.plugin .getServer() .getScheduler() .scheduleSyncRepeatingTask( this.plugin, new Runnable() { @SuppressWarnings("deprecation") public void run() { beacon .getWorld() .dropItemNaturally( loc, new ItemStack( BeaconDrops.this.config.getItemId(), rnd.nextInt(64) + 1)); } }, 10L, 10L); this.plugin .getServer() .getScheduler() .scheduleSyncDelayedTask( this.plugin, new Runnable() { public void run() { BeaconDrops.this.plugin.getServer().getScheduler().cancelTask(itemDropTask); aboveBlock.setType(Material.AIR); BeaconDrops.this .plugin .getServer() .getScheduler() .scheduleSyncDelayedTask( BeaconDrops.this.plugin, new Runnable() { public void run() { BeaconDrops.this.removePressurePlates(beacon); BeaconDrops.this.runPhaseOne(beacon, repeat + 1); } }, 60L); } }, this.config.getPhaseTwo() * 20L); }
private void removePressurePlates(Beacon beacon) { for (int x = -2; x <= 2; x++) { Block block = beacon.getWorld().getBlockAt(beacon.getLocation().add(x, -1.0D, 3.0D)); if (block.getType() == Material.WOOD_PLATE) { block.setType(Material.AIR); } block = beacon.getWorld().getBlockAt(beacon.getLocation().add(x, -1.0D, -3.0D)); if (block.getType() == Material.WOOD_PLATE) { block.setType(Material.AIR); } } for (int z = -2; z <= 2; z++) { Block block = beacon.getWorld().getBlockAt(beacon.getLocation().add(3.0D, -1.0D, z)); if (block.getType() == Material.WOOD_PLATE) { block.setType(Material.AIR); } block = beacon.getWorld().getBlockAt(beacon.getLocation().add(-3.0D, -1.0D, z)); if (block.getType() == Material.WOOD_PLATE) { block.setType(Material.AIR); } } }
private void runPhaseOne(final Beacon beacon, final int repeat) { if (repeat > this.config.getRepeat()) { this.plugin .getServer() .getScheduler() .runTaskLaterAsynchronously( this.plugin, new Runnable() { public void run() { BeaconDrops.this .plugin .getServer() .broadcastMessage(BeaconDrops.this.config.getMessage("charged")); BeaconDrops.this.canRun = true; } }, this.config.getWaitTime() * 20L * 60L); return; } final Block belowBlock = beacon.getWorld().getBlockAt(beacon.getLocation().add(0.0D, -1.0D, 0.0D)); final Random rnd = new Random(); final int blockSwitchTask = this.plugin .getServer() .getScheduler() .scheduleSyncRepeatingTask( this.plugin, new Runnable() { @SuppressWarnings("deprecation") public void run() { switch (belowBlock.getType()) { case COOKED_CHICKEN: belowBlock.setType(Material.GOLD_BLOCK); break; default: belowBlock.setType(Material.DIAMOND_BLOCK); } beacon .getWorld() .dropItemNaturally( beacon.getLocation().add(0.0D, 1.0D, 0.0D), new ItemStack( BeaconDrops.this.config.getItemId(), rnd.nextInt(64) + 1)); } }, 10L, 10L); this.plugin .getServer() .getScheduler() .scheduleSyncDelayedTask( this.plugin, new Runnable() { public void run() { BeaconDrops.this.plugin.getServer().getScheduler().cancelTask(blockSwitchTask); belowBlock.setType(Material.DIAMOND_BLOCK); BeaconDrops.this .plugin .getServer() .getScheduler() .scheduleSyncDelayedTask( BeaconDrops.this.plugin, new Runnable() { public void run() { runPhaseTwo(beacon, repeat); } }, 60L); } }, this.config.getPhaseOne() * 20L); }