The best simple alternative to the way it works I can think of, if we want radiation entities to be containable, is to spawn each radiation entity at the point of the explosion, then, as mentioned, fire it away from where it spawns (with setVelocity(x,y,z) or something, where x,y, and z are each a random number based on the same number that determines how far radiation can spawn from a failed reactor currently).
At that point you can simulate collision, and make the radiation stop moving after a few seconds by putting a chunk of code in EntityRadiation's onUpdate block to the effect of
Code:
if (motionX || motionY || motionZ) {
motionX *= 0.99D;
motionY *= 0.99D; Drops velocity by 1% per tick
motionZ *= 0.99D;
Block b = worldObj.getBlock(posX, posY, posZ);
if (b.isNormalCube()) {
if (b.blockHardness >= 60) { ; might need to add an extra check against a blacklist here so things like other reactor blocks explicitly don't stop the entities, also 60 hardness is arbitrary
this.setVelocity(0, 0, 0);
}
}
}
It would take a bit of trial and error to work out exactly how much velocity to apply to the radiation entity to get it to work the way it does now, but I think it's workable. Oh, and I guess the radiation would leak outside its container slightly, but whatever.
EDIT: I notice after writing this TomeWyrm described essentially exactly the same thing I did.
Another edit: A thought occurs: assuming the above would work to contain all the mess of a destroyed reactor in some kind of ultra-dangerous steel cube, what if ReC whitelisted its TileEntity blocks to work with AE spatial storage? Theoretically one could then suck that ultra-dangerous steel cube up into a spatial storage cell and then jettison it into space or whatever. I imagine Reika would not like this idea though.