public ItemProjectile(Player caster, float power) { this.caster = caster; this.power = power; Location location = caster.getEyeLocation().add(0, yOffset, 0); location.setPitch(0f); if (vertSpeedUsed) { vel = caster.getLocation().getDirection().setY(0).multiply(speed).setY(vertSpeed); } else { vel = caster.getLocation().getDirection().multiply(speed); } entity = caster.getWorld().dropItem(location, item.clone()); MagicSpells.getVolatileCodeHandler().setGravity(entity, projectileHasGravity); playSpellEffects(EffectPosition.PROJECTILE, entity); playTrackingLinePatterns( EffectPosition.DYNAMIC_CASTER_PROJECTILE_LINE, caster.getLocation(), entity.getLocation(), caster, entity); entity.teleport(location); entity.setPickupDelay(1000000); entity.setVelocity(vel); taskId = MagicSpells.scheduleRepeatingTask(this, 3, 3); }
@EventHandler public void onInteract(PlayerInteractEvent pie) { if (pie.getAction().equals(Action.RIGHT_CLICK_BLOCK) || pie.getAction().equals(Action.RIGHT_CLICK_AIR)) { Player player = pie.getPlayer(); World world = player.getWorld(); if (player.getInventory().getItemInHand() != null) { ItemStack item = player.getInventory().getItemInHand(); if (item.getType().equals(Material.DOUBLE_PLANT)) { pie.setCancelled(true); Item bomb = world.dropItem(player.getEyeLocation(), new ItemStack(Material.GOLD_BLOCK)); bomb.setPickupDelay(Integer.MAX_VALUE); bomb.setVelocity(player.getLocation().getDirection().multiply(0.5)); double radius = 1.5; for (double i = 0; i <= 20D; i += 0.1) { Item coin = world.dropItem(bomb.getLocation(), new ItemStack(Material.DOUBLE_PLANT)); double x = Math.sin(radius * i); double z = Math.cos(radius * i); Bukkit.getScheduler() .scheduleSyncDelayedTask( Factions.instance, new Runnable() { public void run() {} }, 1); } } } } }
@Override void onUpdate() { final Item ITEM = ent.getWorld() .dropItem( ((Sheep) ent).getEyeLocation(), ItemFactory.create( Material.WOOL, (byte) r.nextInt(017), UUID.randomUUID().toString())); ITEM.setPickupDelay(30000); ITEM.setVelocity( new Vector(r.nextDouble() - 0.5, r.nextDouble() / 2.0 + 0.3, r.nextDouble() - 0.5) .multiply(0.4)); items.add(ITEM); Bukkit.getScheduler() .runTaskLater( Core.getPlugin(), new Runnable() { @Override public void run() { ITEM.remove(); items.remove(ITEM); } }, 5); }
@Override void onInteractRightClick() { getPlayer().playSound(getPlayer().getLocation(), Sound.EXPLODE, 1, 1); Item item = getPlayer() .getWorld() .dropItem( getPlayer().getEyeLocation(), ItemFactory.create(Material.MELON_BLOCK, (byte) 0x0, UUID.randomUUID().toString())); item.setPickupDelay(0); item.setVelocity(getPlayer().getEyeLocation().getDirection().multiply(1.3d)); melonBlocks.add(item); }
@EventHandler public void onPlayerMonkeyBomb(PlayerInteractEvent event) { if (!(event.getAction().equals(Action.RIGHT_CLICK_AIR)) || !(event.getAction().equals(Action.RIGHT_CLICK_AIR))) { return; } if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { if (event.getClickedBlock().getType().equals(Material.SIGN) || event.getClickedBlock().getType().equals(Material.SIGN_POST) || event.getClickedBlock().getType().equals(Material.WALL_SIGN)) { return; } } final Player player = event.getPlayer(); if (plugin.manager.isPlayerInGame(player)) { Game game = plugin.manager.getGame(player); if (!(game.mode == ArenaStatus.INGAME)) { return; } if (player.getItemInHand().getType().equals(Material.MAGMA_CREAM)) { player.getInventory().removeItem(new ItemStack(Material.MAGMA_CREAM, 1)); final Item item = player .getWorld() .dropItemNaturally(player.getEyeLocation(), new ItemStack(Material.MAGMA_CREAM)); // Location Iloc = item.getLocation(); item.setVelocity(player.getLocation().getDirection().multiply(1)); item.setPickupDelay(1000); /*for(Entity e: game.spawnManager.mobs) { }*/ Bukkit.getScheduler() .scheduleSyncDelayedTask( plugin, new Runnable() { @Override public void run() { Location loc = item.getLocation(); player .getWorld() .createExplosion(loc.getX(), loc.getY(), loc.getZ(), 4.0F, false, false); item.remove(); } }, 140); } } }
public static void attemptSecond(Player p) { if (cooldown2.containsKey(p.getName())) { p.sendMessage( ChatColor.RED + "Cooldown: " + ChatColor.YELLOW + cooldown2.get(p.getName()) + ChatColor.RED + "."); return; } cooldown2.put(p.getName(), 2.0); Item i = p.getWorld().dropItem(p.getLocation().clone().add(0, 1.8, 0), new ItemStack(Material.TNT)); i.setPickupDelay(1000); i.setVelocity(p.getLocation().getDirection().multiply(0.7)); Game.playSound(Sound.FIZZ, p.getLocation(), 0.6f, 0.3f); tnts.add(i.getUniqueId()); }
public static void itemToRemove( Location l, Material tipo, byte id, long tempoToRemove, boolean randomVector, Vector vector) { final ItemStack item = new ItemStack(tipo, 1, id); final Item drop = l.getWorld().dropItem(l, item); drop.setPickupDelay(Integer.MAX_VALUE); if (randomVector) { drop.setVelocity(vector); } Bukkit.getScheduler() .scheduleSyncDelayedTask( plugin, new Runnable() { @Override public void run() { drop.remove(); } }, tempoToRemove * 20); }
@Override public PostCastAction castSpell(Player player, SpellCastState state, float power, String[] args) { if (state == SpellCastState.NORMAL) { if (projectileClass != null) { Projectile projectile = player.launchProjectile(projectileClass); playSpellEffects(EffectPosition.PROJECTILE, projectile); playTrackingLinePatterns( EffectPosition.DYNAMIC_CASTER_PROJECTILE_LINE, player.getLocation(), projectile.getLocation(), player, projectile); projectile.setBounce(false); MagicSpells.getVolatileCodeHandler().setGravity(projectile, projectileHasGravity); if (velocity > 0) { projectile.setVelocity(player.getLocation().getDirection().multiply(velocity)); } if (horizSpread > 0 || vertSpread > 0) { Vector v = projectile.getVelocity(); v.add( new Vector( (random.nextDouble() - .5) * horizSpread, (random.nextDouble() - .5) * vertSpread, (random.nextDouble() - .5) * horizSpread)); projectile.setVelocity(v); } if (applySpellPowerToVelocity) { projectile.setVelocity(projectile.getVelocity().multiply(power)); } projectile.setMetadata( METADATA_KEY, new FixedMetadataValue(MagicSpells.plugin, "ProjectileSpell_" + internalName)); projectiles.put( projectile, new ProjectileInfo( player, power, (effectInterval > 0 ? new RegularProjectileMonitor(projectile) : null))); playSpellEffects(EffectPosition.CASTER, projectile); } else if (projectileItem != null) { Item item = player.getWorld().dropItem(player.getEyeLocation(), projectileItem.clone()); MagicSpells.getVolatileCodeHandler().setGravity(item, projectileHasGravity); Vector v = player.getLocation().getDirection().multiply(velocity > 0 ? velocity : 1); if (horizSpread > 0 || vertSpread > 0) { v.add( new Vector( (random.nextDouble() - .5) * horizSpread, (random.nextDouble() - .5) * vertSpread, (random.nextDouble() - .5) * horizSpread)); } if (applySpellPowerToVelocity) { v.multiply(power); } item.setVelocity(v); item.setPickupDelay(10); itemProjectiles.put( item, new ProjectileInfo(player, power, new ItemProjectileMonitor(item))); playSpellEffects(EffectPosition.CASTER, item); } } return PostCastAction.HANDLE_NORMALLY; }
@Override public void run() { try { while (this.plugin.buffer.size() > 0) { final Item item = this.plugin.buffer.pollFirstEntry().getValue(); if (item.isValid()) { final Location cauldronLoc = item.getLocation().getBlock().getLocation().clone(); if (this.plugin.magicBenches.contains(cauldronLoc)) { // So now we act ! final ItemStack itemStack = item.getItemStack(); if (itemStack.getEnchantments().size() != 0) { final Result res = this.plugin.randomizer.randomize(itemStack); // The itemStack/item is now modified byte data = 0; // Wool color float ratio = 1f; // Volume & pitch of thunder sound switch (res) { case CLEAN: data = 15; // Black ratio = 0.2f; break; case LOSS: data = 14; // Red ratio = 0.4f; break; case NONE: data = 0; // White ratio = 0.6f; break; case BOOST: data = 4; // Yellow ratio = 0.8f; break; case OVERBOOST: data = 5; // Green ratio = 1f; break; } this.plugin.magicBenches.remove(cauldronLoc); cauldronLoc .getWorld() .playSound(cauldronLoc, Sound.AMBIENCE_THUNDER, ratio, ratio * 2f); cauldronLoc.subtract(0, 1, 0); // Is now Egg location cauldronLoc.getWorld().playEffect(item.getLocation(), Effect.ENDER_SIGNAL, 0); if (cauldronLoc.getBlock().getType() != Material.DRAGON_EGG) { // Prevent possible cheat : if the player remove the egg before this happen, we // remove every enchants // As the interact event is cancelled in ME_Listener, this should never happen. for (final Enchantment e : itemStack.getEnchantments().keySet()) { itemStack.removeEnchantment(e); } cauldronLoc.getWorld().playSound(cauldronLoc, Sound.ENDERDRAGON_DEATH, 1.0f, 1.5f); } cauldronLoc.getBlock().setType(Material.AIR); // Delete the Egg this.plugin.fakeWool( cauldronLoc, data, this.plugin.getNearbyPlayers(item, 10, 5, 10)); // Wool color effect } } } if (item.isValid()) { item.setPickupDelay(0); } } } catch (final Exception e) { e.printStackTrace(); } }