public void shoot(Player player){ setAttackTimer(getAttackTimer() + System.currentTimeMillis() - getLastAttackTimer()); setLastAttackTimer(System.currentTimeMillis()); if(getAttackTimer() < getShootCooldown()) return; /*if (hasBullets()) { System.out.println("Tiene balas: " + Integer.parseInt(lore.get(lore.size() - 1).split(" ")[1])); youShotM8(); }*/ Snowball snowball = player.getWorld().spawn(player.getEyeLocation(), Snowball.class); snowball.setVelocity(player.getLocation().getDirection().multiply(distance())); snowball.setShooter(player); snowball.setMetadata("twd", new FixedMetadataValue(WCTWD.getInstance(), "weapon_" + getId())); // player.playSound(player.getLocation(), sound, 1, 1); particle.display(particleData, 0, 0, 0, 1, 3, player.getLocation(), 20); }
@EventHandler public void onEntityDamage(EntityDamageByEntityEvent e) { if ((e.getDamager() instanceof Arrow) && (((Arrow) e.getDamager()).getShooter() instanceof Player) && e.getDamager().getCustomName() == name) { e.setDamage(e.getDamage() + damage); if (effect != null) { ((LivingEntity) e.getEntity()).addPotionEffect(effect); } } if ((e.getDamager() instanceof Fireball) && (((Fireball) e.getDamager()).getShooter() instanceof Player) && e.getDamager().getCustomName() == name) { e.setDamage(e.getDamage() + damage); } if ((e.getDamager() instanceof Snowball) && (((Snowball) e.getDamager()).getShooter() instanceof Player) && e.getDamager().getCustomName() == name) { e.setDamage(e.getDamage() + damage); } }
@Test public void test() { final Object[] random = { // Java (byte) 127, (short) 2000, -1600000, 1L << 40, -1.5f, 13.37, "String", // Skript Color.BLACK, StructureType.RED_MUSHROOM, WeatherType.THUNDER, new Date(System.currentTimeMillis()), new Timespan(1337), new Time(12000), new Timeperiod(1000, 23000), new Experience(15), new Direction(0, Math.PI, 10), new Direction(new double[] {0, 1, 0}), new EntityType(new SimpleEntityData(HumanEntity.class), 300), new CreeperData(), new SimpleEntityData(Snowball.class), new HorseData(Variant.SKELETON_HORSE), new WolfData(), new XpOrbData(50), // Bukkit - simple classes only GameMode.ADVENTURE, Biome.EXTREME_HILLS, DamageCause.FALL, // there is also at least one variable for each class on my test server which are tested whenever the server shuts down. }; for (final Object o : random) { Classes.serialize(o); // includes a deserialisation test } }
@SuppressWarnings("deprecation") @Test public void testSnowballDamage() { dut.start(); List<Player> damagers = dut.getSortedDamagers(player); assertEquals(0, damagers.size()); Snowball snowball = mock(Snowball.class); EntityDamageByEntityEvent damageEvent = new EntityDamageByEntityEvent(snowball, player, null, 5); dut.onEntityDamageByEntity(damageEvent); damagers = dut.getSortedDamagers(player); assertEquals(0, damagers.size()); when(snowball.getShooter()).thenReturn(d1); dut.onEntityDamageByEntity(damageEvent); damagers = dut.getSortedDamagers(player); assertEquals(1, damagers.size()); assertEquals(d1, damagers.get(0)); }
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onProjectileLaunch(ProjectileLaunchEvent event) { if (!(event.getEntity().getShooter() instanceof Player)) { return; } Player player = (Player) event.getEntity().getShooter(); NormalAchievements category; if (event.getEntity() instanceof Snowball) { category = NormalAchievements.SNOWBALLS; } else if (event.getEntity() instanceof Egg) { category = NormalAchievements.EGGS; } else { return; } if (plugin.getDisabledCategorySet().contains(category.toString())) { return; } if (!shouldIncreaseBeTakenIntoAccount(player, category)) { return; } updateStatisticAndAwardAchievementsIfAvailable(player, category, 1); }
@EventHandler(priority = EventPriority.HIGHEST) void onInteract(PlayerInteractEvent e){ Player p = e.getPlayer(); if(p.getItemInHand().getType() == Material.BLAZE_ROD){ if(p.hasPermission("aos.usegun")){ if(Game.CheckArenaState()==ArenaMode.INGAME){ int AmountOfBullet=PlayersStatsboard.IleNaboi(p); if(AmountOfBullet>0){ if(e.getAction()== Action.RIGHT_CLICK_AIR||e.getAction()==Action.RIGHT_CLICK_BLOCK){ StoringData.snowballsID.put(p.launchProjectile(Snowball.class).getEntityId(),p); PlayersStatsboard.odejmijNaboje(p); } } } else{ p.sendMessage(PluginPrefixes.getPrefix()+ChatColor.RED+"Nie mozesz tego teraz uzywac!"); } } } }
@EventHandler public void onShovelClick(PlayerInteractEvent e){ if(e.getAction() == Action.RIGHT_CLICK_AIR){ if(e.getPlayer().getItemInHand().getType() == Material.IRON_BARDING){ if(GadgetManager.isImmune(e.getPlayer().getName())){ e.getPlayer().sendMessage(ChatColor.BLUE + "Hub > " + ChatColor.GRAY + "You are not playing hub games."); return; } if(DexCore.getCurrencySystem().hasEnoughGC(e.getPlayer().getUniqueId().toString(), 2)){ DexCore.getCurrencySystem().removeGC(e.getPlayer().getUniqueId().toString(), 2); e.getPlayer().launchProjectile(Snowball.class, e.getPlayer().getLocation().getDirection().multiply(2)); } } } }
@EventHandler public void projectilehit(EntityDamageByEntityEvent e){ if((e.getEntity() instanceof Player) && (e.getDamager() instanceof Snowball)){ Player hitp = (Player) e.getEntity(); if(GadgetManager.isImmune(hitp.getName())){ Snowball s = (Snowball) e.getDamager(); Player shooter = (Player) s.getShooter(); shooter.sendMessage(ChatColor.BLUE + "Hub > " + ChatColor.GRAY + "Player " + ChatColor.RED + hitp.getName() + ChatColor.GRAY + " is not playing hub games!"); return; } if(hit.contains(hitp.getName())) return; doSnowBallHit(hitp); } }
@SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.LOW) public void interact(PlayerInteractEvent event) { if (event.getPlayer().getItemInHand().getTypeId() == LetItRain.item && event.getPlayer().hasPermission("LetItRain.launcher")){ Entity snow = event.getPlayer().launchProjectile(Snowball.class); snow.setFireTicks(1000); snows.add(snow); }else if(event.getPlayer().getItemInHand().getTypeId() == LetItRain.itemZeus && event.getPlayer().hasPermission("LetItRain.zeus")){ Player player = event.getPlayer(); Location location = player.getTargetBlock((HashSet<Byte>)null, 800).getLocation(); World world = player.getWorld(); world.createExplosion(location, LetItRain.dLightningPower); world.strikeLightning(location); } }
@EventHandler private void onEntityDamageByEntityEvent( final EntityDamageByEntityEvent event) { if (!(event.getEntity() instanceof Player)) return; Player player = (Player) event.getEntity(); if (!api.getGameManager().isPlayerInGame(player)) return; Game game = api.getGameManager().getGame(player); if (event.getDamager() instanceof Snowball) { if (game.getZombies().getMembers().containsKey(player.getUniqueId())) { player.damage(1.0); if (game.getZombies().getMembers().get(player.getUniqueId()) != ZombieType.GARGANTUAR) player.setVelocity(((Snowball) event.getDamager()).getLocation().getDirection().multiply(0.5)); return; } checkCancel(event, player, null, (Projectile) event.getDamager()); } else if (event.getDamager() instanceof Player) { if (!(event.getDamager() instanceof Player)) return; checkCancel(event, player, (Player) event.getDamager(), null); } else if (event.getDamager() instanceof Projectile) { checkCancel(event, player, null, (Projectile) event.getDamager()); } }
@SuppressWarnings("deprecation") @EventHandler private void onProjectileHitEvent(final ProjectileHitEvent event) { Projectile projectile = event.getEntity(); if (!(projectile instanceof Snowball)) return; if (projectile.getShooter() instanceof Player) { Player player = (Player) projectile.getShooter(); Game game = api.getGameManager().getGame(player); if (game == null) return; if (game.getState() != GameState.PLAYING) return; PlantType type = game.getPlants().getMembers().get(player.getUniqueId()); if (type == null) return; if (type == PlantType.WINTER_MELON) { freeze(getZombies(projectile, game), game); } } }
@EventHandler public void onProjectileHit(ProjectileHitEvent event) { Entity entity = event.getEntity(); // Config float size = plugin.getConfig().getInt("Size of Explosion"); boolean damage = plugin.getConfig().getBoolean("Block Damage"); boolean fire = plugin.getConfig().getBoolean("Set Fire"); if (entity instanceof Snowball) { Snowball snowball = (Snowball) entity; Entity shooter = snowball.getShooter(); if (shooter instanceof Player) { Player player = (Player) shooter; Location sb = snowball.getLocation(); if (plugin.players.contains(player.getName())) { player.getWorld().createExplosion(sb.getX(), sb.getY(), sb.getZ(), size, fire, damage); } } } }
@EventHandler public void onSnowballHit(ProjectileHitEvent event) { if(event.getEntity() instanceof Snowball) { if(event.getHitBlock() != null && event.getHitBlock().getType() == Material.SNOW_BLOCK) { event.getHitBlock().breakNaturally(new ItemStack(Material.AIR)); } } }
@Override public void display() { new BukkitRunnable() { private int times = 0; @Override public void run() { Snowball snowball = PaintballDisplayer.this.player.launchProjectile(Snowball.class); snowball.setVelocity(snowball.getVelocity().multiply(1.5)); snowball.setMetadata("paintball-ball", new FixedMetadataValue(PaintballDisplayer.this.hub, PaintballDisplayer.this.uuid.toString())); this.times++; if (this.times == 30) { PaintballDisplayer.this.restore(); PaintballDisplayer.this.end(); HandlerList.unregisterAll(PaintballDisplayer.this); this.cancel(); } } }.runTaskTimer(this.hub, 5L, 5L); }
@EventHandler public void projectileLaunch(ProjectileLaunchEvent e) { Projectile projectile = e.getEntity(); if (projectile instanceof Snowball || projectile instanceof Egg || projectile instanceof Arrow) { if (projectile.getShooter() instanceof Player) { GamePlayer shooter = SkyWarsReloaded.getPC().getPlayer(((Player) projectile.getShooter()).getUniqueId()); String effect = shooter.getProjEffect(); if (effect != null) { if (!effect.equalsIgnoreCase("normal") && shooter.inGame()) { SkyWarsReloaded.getProjC().addProjectile(projectile, shooter.getProjEffect()); } } } } }
@EventHandler(priority = EventPriority.LOWEST) public void onInteract(PlayerInteractEvent event) { // 玩家交互物品进行射击处理 if(event.getAction() == Action.RIGHT_CLICK_AIR) { // 右键空气方块时才能射击 Player player = event.getPlayer(); ItemStack handItem = player.getInventory().getItemInMainHand(); String displayName = handItem.getItemMeta().getDisplayName(); if(displayName != null && displayName.equalsIgnoreCase("AK47")) { fireGun(player, Snowball.class, 3); } } }
@EventHandler(priority = EventPriority.LOWEST) public void onDamage(EntityDamageByEntityEvent event) { // 处理实体受伤是实体所为事件 Entity entity = event.getEntity(); Entity damager = event.getDamager(); if(damager instanceof Snowball) { Snowball snowball = (Snowball) damager; if(snowball.getShooter() instanceof Player) { event.setDamage(10d); } } }
@EventHandler public void onProjectileThrownEvent(ProjectileLaunchEvent e) { if((e.getEntity() instanceof Snowball)){ Snowball snowball = (Snowball) e.getEntity(); if(!(snowball.getShooter() instanceof Player)) return; snowballs.get(snowball.getShooter()).addSnowball(snowball); } else if (e.getEntity() instanceof Arrow) { Arrow a = (Arrow) e.getEntity(); if(!(a.getShooter() instanceof Player)) return; arrows.add(a); } return; }
@EventHandler public void onProjectileHit(ProjectileHitEvent e){ if(e.getEntity() instanceof Snowball){ snowballs.remove(e.getEntity()); } else if(e.getEntity() instanceof Arrow){ breakBlocks(e.getEntity().getLocation()); e.getEntity().remove(); } }
@EventHandler public void onSnowballThrow(PlayerInteractEvent e) { // Get the Player from the event Player player = e.getPlayer(); // If they're in a game... if (player.hasMetadata("team")) { // If they're holding the "gun"... if (e.getMaterial().name().equals("IRON_BARDING")) { // SHOOT! player.launchProjectile(Snowball.class); } } }
@EventHandler public void onCombatAxeThrow(PlayerInteractEvent event) { if (PlayerList.isPlayerPlaying(event.getPlayer().getUniqueId().toString())) { Player thrower = event.getPlayer(); if (waitingGames.containsKey(PlayerList.getPlayersGame(thrower))) { if (waitingGames.get(PlayerList.getPlayersGame(thrower))) { return; } } if (thrower.getItemInHand() != null && thrower.getItemInHand().getItemMeta() != null && thrower.getItemInHand().getItemMeta().getDisplayName() != null) { if (thrower.getItemInHand().getItemMeta().getDisplayName().equals(ChatColor.GOLD + "CombatAxe")) { Snowball sb = thrower.launchProjectile(Snowball.class); thrower.getInventory().setItemInHand(null); } } } if (event.getClickedBlock() != null && event.getClickedBlock().getState() != null) { if (event.getClickedBlock().getState() instanceof Sign) { if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { Sign sign = (Sign) event.getClickedBlock().getState(); if (SignCreator.isJoinSign(sign)) { Player player = event.getPlayer(); if (player.hasPermission("ragemode.rm.join")) { String[] args = new String[2]; args[0] = "join"; args[1] = SignCreator.getGameFromSign(sign); new PlayerJoin(player, args[0], args, PluginLoader.getInstance().getConfig()); } else { player.sendMessage(ChatColor.translateAlternateColorCodes('�', PluginLoader.getMessages().PERMISSION_MESSAGE)); } } } } } }
@Override public void launch(User user) { this.snowball = user.<Player>getPlayer().launchProjectile(Snowball.class); PacketEntityDestroy packet = new PacketEntityDestroy(snowball.getEntityId()); packet.send(user.<Player>getPlayer()); for (Player p : user.<Player>getPlayer().getWorld().getPlayers()) { packet.send(p); } Zephyr.getProjectileManager().trackProjectile(this); }
@EventHandler public void onRightClickItem(PlayerInteractEvent event){ Player p = event.getPlayer(); if(event.getItem() != null){ if(event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) { if (event.getItem().hasItemMeta()) { switch (event.getItem().getType()) { default: break; case FIREWORK_CHARGE: event.setCancelled(true); shootFirework(p); break; case FIREWORK: if(event.getItem().getItemMeta().hasDisplayName()){ if(ChatColor.stripColor(event.getItem().getItemMeta().getDisplayName()).contains("Gadget")){ event.setCancelled(true); shootFireworkRide(p); } } break; case WOOD_HOE: Snowball sb = p.launchProjectile(Snowball.class); sb.setShooter(p); sb.setVelocity(p.getLocation().getDirection().multiply(1.7)); p.playSound(p.getLocation(), Sound.IRONGOLEM_THROW, 100, 1); break; case RECORD_11: event.setCancelled(true); playMusic(p); break; } } } } }
/** * This is the shooting mechanic * @param player the player that the projectile should be spawned at * @param accuracy the accuracy of the projectile, 0 is 100% accurate * @param speed the speed the projectile will have */ public static void spawnProjectile(Player player, double accuracy, double speed, ItemList weapon){ double randX, randY, randZ; randX = Math.random()*accuracy; randY = Math.random()*accuracy; randZ = Math.random()*accuracy; Snowball bullet = player.getWorld().spawn(player.getEyeLocation(), Snowball.class); Vector velocity = new Vector().setX(randX).setY(randY).setZ(randZ); velocity.add(player.getLocation().getDirection().multiply(speed)); bullet.setVelocity(velocity); bullet.setShooter(player); bullets.put(bullet.getEntityId(), new BulletInfo(bullet, player, weapon)); }
@Override public void launchProjectile(Player player) { snowball = player.launchProjectile(Snowball.class); PacketEntityDestroy packet = new PacketEntityDestroy(snowball.getEntityId()); packet.send(player); for (Player p : player.getWorld().getPlayers()) { packet.send(p); } ProjectileHandler.getInstance().launchProjectile(this); }
@EventHandler public void onTP(ProjectileHitEvent e){ Projectile proj = e.getEntity(); if(this.getConfig().getBoolean("teleporting-snowballs") == true){ if(proj instanceof Snowball){ Snowball sb = (Snowball) proj; if(sb.getShooter() instanceof Player){ LivingEntity p = (Player) sb.getShooter(); p.teleport(sb); } } } }
@SuppressWarnings("deprecation") @Override public Snowball throwSnowball() { if (getHandle() instanceof ProjectileSource) { return PoreSnowball.of( ((ProjectileSource) getHandle()).launchProjectile( org.spongepowered.api.entity.projectile.Snowball.class ).orElse(null) ); } throw new UnsupportedOperationException("Not a ProjectileSource"); }
private void scheduleLaunches(final Plugin plugin, final Player player, long... delays) { for (long delay : delays) { plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { @Override public void run() { Snowball snowball = player.launchProjectile(Snowball.class); snowball.setMetadata("isFreeze", new FixedMetadataValue(plugin, true)); } }, delay); } }
@Override public boolean use(Player player) { Plugin plugin = Bukkit.getServer().getServicesManager().getRegistration(SkillsPlugin.class).getProvider(); Snowball snowball = player.launchProjectile(Snowball.class); snowball.setMetadata("isMagicMissile", new FixedMetadataValue(plugin, true)); return true; }
private void scheduleLaunches(final Plugin plugin, final Player player, long... delays) { for (long delay : delays) { plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { @Override public void run() { Snowball snowball = player.launchProjectile(Snowball.class); snowball.setMetadata("isIcebolt", new FixedMetadataValue(plugin, true)); } }, delay); } }
@Override public boolean use(Fight fight, Character attacking, Character defending, ItemStack weapon) { if (attacking.getMana() >= getManaCost()) { if (attacking.getPlayer().isOnline()) { Player player = attacking.getPlayer().getPlayer(); player.launchProjectile(Snowball.class); fight.setStatusTurns(attacking, StatusEffect.BURNED, 5); fight.sendMessage(ChatColor.YELLOW + (attacking.isNameHidden() ? ChatColor.MAGIC + attacking.getName() + ChatColor.RESET : attacking.getName()) + ChatColor.YELLOW + " scorched " + (defending.isNameHidden() ? ChatColor.MAGIC + defending.getName() + ChatColor.RESET : defending.getName()) + ChatColor.YELLOW + " with burning hot breath."); } return true; } else { fight.sendMessage(ChatColor.YELLOW + (attacking.isNameHidden() ? ChatColor.MAGIC + attacking.getName() + ChatColor.RESET : attacking.getName()) + ChatColor.YELLOW + " breathed a burning hot wind, but nothing happened."); } return false; }
@Override public boolean use(Fight fight, Character attacking, Character defending, ItemStack weapon) { if (attacking.getMana() >= getManaCost()) { if (attacking.getPlayer().isOnline()) { Player player = attacking.getPlayer().getPlayer(); player.launchProjectile(Snowball.class); fight.setStatusTurns(attacking, StatusEffect.FROZEN, 5); fight.sendMessage(ChatColor.YELLOW + (attacking.isNameHidden() ? ChatColor.MAGIC + attacking.getName() + ChatColor.RESET : attacking.getName()) + ChatColor.YELLOW + " breathed an ice cold wind at " + (defending.isNameHidden() ? ChatColor.MAGIC + defending.getName() + ChatColor.RESET : defending.getName()) + ChatColor.YELLOW + ", freezing them."); } return true; } else { fight.sendMessage(ChatColor.YELLOW + (attacking.isNameHidden() ? ChatColor.MAGIC + attacking.getName() + ChatColor.RESET : attacking.getName()) + ChatColor.YELLOW + " breathed an ice cold wind, but nothing happened."); } return false; }
@Override public void hit(Snowball snowball, SnowballInfo info) { super.hit(snowball, info); snowball.getWorld().createExplosion(snowball.getLocation(), snowballSize); //boom! Entity[] entList = snowball.getWorld().getChunkAt(snowball.getLocation()).getEntities(); for (Entity drop : entList) { if (drop instanceof Item) { //on explosion, nuke drops (and item frames?) in the chunk hit. //with massive multiplier TNT balls, we don't want to check the whole world //every single time. That's super wasteful. We reserve it for the high power explosives. drop.remove(); } } }
@EventHandler(priority=EventPriority.LOW) public void onSnowballHit(EntityDamageByEntityEvent event) { if (event.getDamager() instanceof org.bukkit.entity.Snowball && event.getEntity() instanceof Player) { Snowball ball = (Snowball) event.getDamager(); if (ball.getShooter() instanceof Player) { Player player = (Player) ball.getShooter(); if (isFiring.contains(player.getName())) event.setDamage(RodsTwo.getInstance().rodConfig.getInt(getPath("options.damage_per_shot"))); } } }
@EventHandler public void onPlayerInteract(PlayerInteractEvent e) { if (!(e.getAction() == Action.RIGHT_CLICK_AIR) && !(e.getAction() == Action.RIGHT_CLICK_BLOCK)) return; if (ArenaManager.getInstance().getArena(e.getPlayer()) == null) return; if (e.getItem().getType() == Material.SNOW_BALL) { e.setCancelled(true); e.setUseItemInHand(Result.DENY); e.getPlayer().launchProjectile(Snowball.class); } }
@EventHandler public void onEntityDamage(EntityDamageByEntityEvent e) { if (e.getEntity() instanceof Player && e.getDamager() instanceof Snowball) { Player p = (Player) e.getEntity(); Snowball s = (Snowball) e.getDamager(); if (!(s.getShooter() instanceof Player)) return; Player shooter = (Player) s.getShooter(); if (ArenaManager.getInstance().getArena(p) == null && ArenaManager.getInstance().getArena(shooter) == null) return; Arena a = ArenaManager.getInstance().getArena(p); if (a.getTeam(p) == a.getTeam(shooter)) return; p.damage(5.0); } }