Latest update on that: you should be able to detect when stuff explodes. No callback for it, but you can query the state of the engine every frame and figure it out based on that (I.E., is the projectile still in play? If so, does its didDamage() method return true? If so, what did it do damage to?)
That's cool; can we just check didDamage() or is that going to return true for any projectile ID whose explosion lasts for more than one frame? What about beams?
Just wondering how we're going to populate our event table and compare it with the game's internal one; that sounds like it'd get pretty expensive if we have to do a for-each check for every single projectile vs. every table entry. If an explosion lasts multiple frames, we'll have to exclude it from the table on future frames and do a fair amount of table maintenance, too.
Sorry if any of that sounds stupid in Java terms, just trying to work out what we'll be looking at here in terms of finding out which projectiles haven't had a unique event yet. Might be cheaper to simply have a function that gets called for any projectile if it has a name value other than null when it detonates and let the end-user define that code in the .proj, like how it's handled for .systems.