Помогите FireBall из лука

  • Автор темы Автор темы Sergeo
  • Дата начала Дата начала

Sergeo

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Solomka
Пишу плагин на админский лук , но это не суть дайте намек, как сделать код на выстрел fireball из лука, который был сделан в верстаке

код:
Код:
package bow.main;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.*********ventory.ItemStack;
import org.*********ventory.ShapedRecipe;
import org.*********ventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;

public class SecretBow extends JavaPlugin implements Listener {
    public void onEnable() {
        Bukkit.getPluginManager().registerEvents(this, this);
        getLogger().info("SecretBow is enable");
        getCommand("abreload").setExecutor(new BowReload(this));
        File config = new File(getDataFolder() + File.separator + "config.yml");
        if (!config.exists()) {
            getLogger().info("Creating new file config...");
            getConfig().options().copyDefaults(true);
            saveDefaultConfig();
        }
    }

    public void onDisable() {
        getLogger().info("SecretBow is disable");
    }
    
    @SuppressWarnings("unused")
    private void craft() {
    ItemStack item = new ItemStack (Material.BOW);
    ItemMeta meta = item.getItemMeta();
    meta.setDisplayName(ChatColor.DARK_RED + "Лук дьявола");
    List<String> lore = new ArrayList<String>();
    lore.add("Лук дьявола");
    meta.setLore(lore);
    meta.addEnchant(Enchantment.ARROW_DAMAGE, 20, true);
    item.setItemMeta(meta);
    NamespacedKey key = new NamespacedKey(this, "demon_bow");
    ShapedRecipe s = new ShapedRecipe(key, item);
    s.shape(new String[]{"AAA", "B B", " B "});
    s.setIngredient('A', Material.FIREBALL);
    s.setIngredient('B', Material.STICK);
    Bukkit.getServer().addRecipe(s);
    }

    @EventHandler
    public void onArrowHit(EntityDamageByEntityEvent event) {
        if (!(event.getDamager() instanceof Arrow))
            return;
        if (!(event.getEntity() instanceof Player))
            return;
        if (event.getDamager() instanceof Arrow) {
            Arrow a = (Arrow) event.getDamager();
            if (event.getDamager() instanceof Player) {
                if (!((Player) a.getShooter()).isOp() && !((Player) a.getShooter()).hasPermission("AdminBow.Use"))
                    return;
            }
            if (((Player) a.getShooter()).isOp() && ((Player) a.getShooter()).hasPermission("AdminBow.Use")) {
                Arrow a1 = (Arrow) event.getDamager();
                Player d = (Player) a1.getShooter();
                Player p = (Player) event.getEntity();
                String cmd = getConfig().getString("commands") + p.getName();
                Bukkit.dispatchCommand(Bukkit.getConsoleSender(), cmd);
                d.sendMessage(ChatColor.GRAY + "[" + ChatColor.GOLD + "AdminBow" + ChatColor.GRAY + "] "
                        + ChatColor.BLUE + "Вы успешно выполнили команду " + ChatColor.GREEN + ChatColor.GRAY + "<"
                        + "/" + cmd + ChatColor.GRAY + ">" + ChatColor.BLUE + " над игроком " + p.getName());
                p.sendMessage(ChatColor.GRAY + "[" + ChatColor.GOLD + "AdminBow" + ChatColor.GRAY + "] "
                        + "Над вами было совершенно действие " + cmd + ChatColor.GRAY + "\n[" + ChatColor.GOLD
                        + "AdminBow" + ChatColor.GRAY + "] " + " Администратором: " + d.getName());
            }
        }

    }
}
 
Код:
    @EventHandler
    public void esbe(EntityShootBowEvent e) {
       ItemStack bow = e.getBow();
        if (bow.hasItemMeta() && bow.getItemMeta().hasDisplayName() && bow.getItemMeta().getDisplayName().equalsIgnoreCase("ИМЯ ТВОЕГО ЛУКА")) {
            Entity fireball = e.getEntity().getWorld().spawn(e.getEntity().getLocation(), Fireball.class);
            e.setProjectile(fireball);
            fireball.remove();
        }
    }
Попробуй так, должно получится
 
Код:
    @EventHandler
    public void esbe(EntityShootBowEvent e) {
       ItemStack bow = e.getBow();
        if (bow.hasItemMeta() && bow.getItemMeta().hasDisplayName() && bow.getItemMeta().getDisplayName().equalsIgnoreCase("ИМЯ ТВОЕГО ЛУКА")) {
            Entity fireball = e.getEntity().getWorld().spawn(e.getEntity().getLocation(), Fireball.class);
            e.setProjectile(fireball);
            fireball.remove();
        }
    }
Попробуй так, должно получится
Еще проблема... У меня не крафтится сам предмет ._.. Вроде в коде все верно.
еще проблема... когда стеляю из лука fireball появляется, но не стреляет
 
Последнее редактирование:
Назад
Верх