Java 雷击事件处理

Java 雷击事件处理,java,events,minecraft,bukkit,Java,Events,Minecraft,Bukkit,我想弄清楚,每当我扔鸡蛋时,如何让闪电击中。我的代码没有给我任何错误,但控制台是。消息仍然会弹出,但闪电不会 package me.sanfrinsisco; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.pla

我想弄清楚,每当我扔鸡蛋时,如何让闪电击中。我的代码没有给我任何错误,但控制台是。消息仍然会弹出,但闪电不会

package me.sanfrinsisco;

import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerEggThrowEvent;
import net.md_5.bungee.api.ChatColor;

public class PlayerListener implements Listener {

    public PlayerListener(EventHandling plugin) {
        plugin.getServer().getPluginManager().registerEvents(this, plugin);
    }

    @EventHandler
    public void onPickup(PlayerEggThrowEvent e) {
        Player player = e.getPlayer();

        player.sendMessage(ChatColor.DARK_BLUE + "You have summoned lightning");

        e.setHatchingType(EntityType.LIGHTNING);
        e.setNumHatches((byte) 1);
        e.setHatching(true);
    }
}
这是我在控制台中遇到的错误

[19:37:58 ERROR]: Could not pass event PlayerEggThrowEvent to EventHandling v1.0
org.bukkit.event.EventException: null
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at net.minecraft.server.v1_12_R1.EntityEgg.a(EntityEgg.java:51) [spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at net.minecraft.server.v1_12_R1.EntityProjectile.B_(EntityProjectile.java:167) [spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at net.minecraft.server.v1_12_R1.World.entityJoinedWorld(World.java:1633) [spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at net.minecraft.server.v1_12_R1.World.h(World.java:1603) [spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at net.minecraft.server.v1_12_R1.World.tickEntities(World.java:1437) [spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at net.minecraft.server.v1_12_R1.WorldServer.tickEntities(WorldServer.java:665) [spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:817) [spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.lang.IllegalArgumentException: Can't spawn that entity type from an egg!
        at org.bukkit.event.player.PlayerEggThrowEvent.setHatchingType(PlayerEggThrowEvent.java:70) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        at me.sanfrinsisco.PlayerListener.onPickup(PlayerListener.java:22) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.12.2.jar:git-Spigot-3d850ec-f46ccd7]
        ... 14 more
>

正如前面所说的,你不能用卵孵化闪电。但是,我们可以使用世界和位置实现相同的效果:

@EventHandler
public void onProjectileHit(PlayerEggThrowEvent event) {
    Egg egg = event.getEgg();
    egg.getWorld().strikeLightningEffect(egg.getLocation());
    event.setHatching(false);
}
如果使用
删除效果
,闪电不会点亮任何东西,如果使用
删除效果
,则会点亮任何东西

在未来,考虑通过堆栈跟踪/错误,他们不是你的敌人,实际上是相反的!p>

这与您的问题无关,但是考虑将您的聊天色导入改为BukKeD,而不是使用BungEcRod,除非您使用BungEcOrd,否则这可能导致最终的未来问题。

<代码>:JavaLang.ILLalalAgMuMutExtExc:不能从一个卵子生成该实体类型!<代码>-看起来你不能设置卵直接孵化闪电,所以不能从卵本身孵化闪电。我将把它的位置存储在一个整数中,并在那个特定的位置生成lightning。我很确定如何去制造闪电,我已经到处找了。我也做了如下修改:“@EventHandler public void onPickup(playeregthrowevent e,Egg Egg){Player Player=e.getPlayer();e.setHatching(false);Location eggloc=Egg.getLocation();Player.sendMessage(ChatColor.DARK_BLUE+“You have called lightning”);}由于某种原因,我无法格式化注释中的代码。