- Баллы
- 6
Приветствую! Хочу сделать предмет, который по нажатию ПКМ будет стрелять стрелами (или чем либо еще) с неба. Есть примерные наброски кода:
По сути, план состоит в том, чтобы создать стрелы на сколько-то блоков по У выше TargetBlock и задать им направление "вниз" (В коде есть два варианта). Но, во-первых, не понимаю, как задать это самое направление, а, во-вторых, хотелось бы узнать, есть ли способ создать стрелы в определенном радиусе, чтобы увеличить площадь поражения (Не знаю, как лучше объяснить, надеюсь, понятно, о чем я). Знающие люди, подскажите, пожалуйста, что делать!
PHP:
@EventHandler
public void use10(PlayerInteractEvent e) {
Player player = e.getPlayer();
World world = player.getWorld();
Arrow arrow = player.launchProjectile(Arrow.class);
ItemStack SkullBook = e.getPlayer().getInventory().getItemInMainHand();
ItemStack HoneyArmorC = e.getPlayer().getInventory().getChestplate();
if(e.getPlayer().getInventory().getItemInMainHand().getType() != Material.BOOK) return;
if(e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
if(!SkullBook.getItemMeta().hasDisplayName()) return;
if(!SkullBook.getItemMeta().getDisplayName().equals(ChatColor.GOLD + "Огненный дождь")) return;
if(e.getPlayer().getExp() == 0) return;
player.playSound(player.getLocation(), Sound.ENTITY_LIGHTNING_BOLT_THUNDER, 8, 1);
player.spawnParticle(Particle.CLOUD, player.getLocation().add(0.5D, 0.5D, 0.5D), 25 , 1.2F, 1.2F, 1.2F);
world.spawnArrow(player.getTargetBlock(null, 10).getLocation(), null, 0, 0);
arrow.teleport(player.getTargetBlock(null, 10).getLocation());
arrow.setVelocity(direction.multiply(4));
if(e.getPlayer().getInventory().getChestplate().getType() == Material.GOLDEN_CHESTPLATE && HoneyArmorC.getItemMeta().hasDisplayName() && HoneyArmorC.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиный нагрудник")) player.giveExp(+1);
}