1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Sergeo, 14 дек 2020.

  1. Автор темы
    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());
                }
            }
    
        }
    }
     
  2. NoooobKa

    NoooobKa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
  3. Автор темы
    Sergeo

    Sergeo Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Solomka
    Можешь скинуть примерный код? Я просто немного не могу понять
     
  4. NoooobKa

    NoooobKa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Код:
        @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();
            }
        }
    Попробуй так, должно получится
     
  5. Автор темы
    Sergeo

    Sergeo Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Solomka
    Еще проблема... У меня не крафтится сам предмет ._.. Вроде в коде все верно.
    еще проблема... когда стеляю из лука fireball появляется, но не стреляет
     
    Последнее редактирование: 14 дек 2020

Поделиться этой страницей