闪电箭,但闪电确实会在

Lightning Arrow but the lightning does spawn in

所以我得到了某人的这个代码,他说它可以工作我很感激(仍然是)但似乎代码在某种程度上不起作用

这是我的主文件

package me.Pixel;

import java.util.ArrayList;
import java.util.List;

import org.bukkit.entity.Arrow;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityShootBowEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener {

    public Main plugin;
    public List<String> spells = new ArrayList<String>();
    public getTargets getTargets = new getTargets();

    @Override
    public void onEnable() {
        plugin = this;
        getCommand("bow").setExecutor(new BowCommand());
    }

    @EventHandler
    public void onEntityShootBow(EntityShootBowEvent event) {
       if(event.getProjectile() instanceof Arrow) {
            Arrow arrow = (Arrow) event.getProjectile();
            new LightningShot(arrow).runTaskTimer(this, 0, 1);
        }
    }
}

这是我的 LightningShot 文件

package me.Pixel;

import org.bukkit.entity.Arrow;
import org.bukkit.scheduler.BukkitRunnable;

public class LightningShot extends BukkitRunnable {

    private Arrow arrow;
    private int tick = 1;

    public LightningShot(Arrow arrow) {
        this.arrow = arrow;
    }

    @Override
    public void run() {
        if (arrow == null || arrow.isOnGround() || tick++ > 20 * 10) {
            this.cancel();
        } else {
            arrow.getWorld().strikeLightning(arrow.getLocation());
        }
    }
}

要清楚 This is what i want it to look like 但是从弓箭出来的箭不是雪球。 我希望你们能帮助我。太棒了。

您似乎还没有注册您的侦听器。即使侦听器是您的主要 class 您仍然需要在您的 onEnable 方法中注册它:

this.getServer().getPluginManager().registerEvents(this, this);

然后代码将按预期在箭头位置产生闪电(我测试了代码)。