[SPIGOT-7887] ProjectileHitEvent fires twice for Fireballs Created: 28/Aug/24  Updated: 25/Dec/24  Resolved: 28/Aug/24

Status: Resolved
Project: Spigot
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: FullPotato Assignee: Unassigned
Resolution: Fixed Votes: 0
Labels: bug, spigot
Environment:

Debian GNU/Linux 11 (bullseye) x86_64 5.10.0-23-amd64 

Intel i5-6600K (4) @ 3.900GHz


Attachments: File SamplePlugin.jar     File spigot-bug-clip.mp4    
Version: This server is running CraftBukkit version 4300-Spigot-a759b62-7070de8 (MC: 1.21.1) (Implementing API version 1.21.1-R0.1-SNAPSHOT)
Guidelines Read: Yes

 Description   

Upon hitting an entity or a block, a Fireball will fire two instances of ProjectileHitEvent on the same tick. This includes small fireballs, wither skulls, and likely every other subinterface.

This behavior is not exhibited with non-fireball projectiles such as arrows.

 

import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.plugin.java.JavaPlugin;

public final class SamplePlugin extends JavaPlugin implements Listener {
    @Override
    public void onEnable() {
        this.getServer().getPluginManager().registerEvents(this, this);
    }
    @EventHandler(ignoreCancelled = true)
    private void onSkullHit(final ProjectileHitEvent event) {
        if (event.getHitEntity() != null) {
            Bukkit.broadcastMessage(event.getEntityType().toString() + " hit an entity at " + event.getEntity().getWorld().getFullTime());
        }
        if (event.getHitBlock() != null) {
            Bukkit.broadcastMessage(event.getEntityType().toString() + " hit a block at " + event.getEntity().getWorld().getFullTime());
        }
    }
}

Expected Output:

[12:43:19] [Server thread/INFO]: ARROW hit an entity at 6541
[12:43:20] [Server thread/INFO]: SMALL_FIREBALL hit a block at 6550
[12:43:25] [Server thread/INFO]: ARROW hit a block at 6654
[12:43:25] [Server thread/INFO]: SMALL_FIREBALL hit an entity at 6655

Actual Output:

[12:43:19] [Server thread/INFO]: ARROW hit an entity at 6541
[12:43:20] [Server thread/INFO]: SMALL_FIREBALL hit a block at 6550
[12:43:20] [Server thread/INFO]: SMALL_FIREBALL hit a block at 6550
[12:43:25] [Server thread/INFO]: ARROW hit a block at 6654
[12:43:25] [Server thread/INFO]: SMALL_FIREBALL hit an entity at 6655
[12:43:25] [Server thread/INFO]: SMALL_FIREBALL hit an entity at 6655

 


Generated at Sat Dec 13 13:43:27 UTC 2025 using Jira 10.3.13#10030013-sha1:56dd970ae30ebfeda3a697d25be1f6388b68a422.