SPIGOT-6200: Improve entity events when summon command is used

* Calls the LightningStrikeEvent for summoned lightning
* Uses the new COMMAND SpawnReason for other entities

By: Julian van den Berkmortel <julianvdberkmortel@outlook.com>
This commit is contained in:
CraftBukkit/Spigot
2021-05-09 16:33:34 +10:00
parent da56cad3fc
commit 9d5bc88891
3 changed files with 40 additions and 20 deletions

View File

@@ -214,6 +214,7 @@ import org.bukkit.event.raid.RaidStopEvent;
import org.bukkit.event.raid.RaidTriggerEvent;
import org.bukkit.event.server.ServerListPingEvent;
import org.bukkit.event.vehicle.VehicleCreateEvent;
import org.bukkit.event.weather.LightningStrikeEvent;
import org.bukkit.event.world.LootGenerateEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.InventoryView;
@@ -584,6 +585,9 @@ public class CraftEventFactory {
event = CraftEventFactory.callProjectileLaunchEvent(entity);
} else if (entity.getBukkitEntity() instanceof org.bukkit.entity.Vehicle) {
event = CraftEventFactory.callVehicleCreateEvent(entity);
} else if (entity.getBukkitEntity() instanceof org.bukkit.entity.LightningStrike) {
LightningStrikeEvent.Cause cause = (spawnReason == SpawnReason.COMMAND ? LightningStrikeEvent.Cause.COMMAND : LightningStrikeEvent.Cause.UNKNOWN);
event = CraftEventFactory.callLightningStrikeEvent((LightningStrike) entity.getBukkitEntity(), cause);
} else if (!(entity instanceof EntityPlayer)) {
event = CraftEventFactory.callEntitySpawnEvent(entity);
}
@@ -1518,6 +1522,12 @@ public class CraftEventFactory {
return event;
}
public static LightningStrikeEvent callLightningStrikeEvent(LightningStrike entity, LightningStrikeEvent.Cause cause) {
LightningStrikeEvent event = new LightningStrikeEvent(entity.getWorld(), entity, cause);
Bukkit.getPluginManager().callEvent(event);
return event;
}
/**
* Raid events
*/