Fair enough, and thank you for taking a look! Here's your mini-mod; it makes resonator MRMs (and only resonator MRMs) mirror themselves when installed on the left side of a ship.
(I'd be inclined to suggest, as a possible quick & simple fix, adding a WeaponAPI.getOriginalSpec() method that, when someone calls ensureClonedSpec(), retains a reference to an original unmodified copy. Then use that when assembling the tooltip. ...But, well. I don't know what the actual code there looks like, and perhaps that's not actually quick or simple or even a relevant idea in the first place. Best of luck!)
Thank you, I really appreciate that! And, that's an excellent suggestion, I was caught up in making the tooltip render the mirrored weapon, but this is *way* simpler. Did it in about 5 minutes and verified that it works using your test mod

(Can I just say, this is super cool? I mean, I've seen this before and I think we've talked about some of the details, but it's just so neat that this is even possible and that it works so cleanly!)
I have a mod that adds combat effects for hyperstorms. I add a bunch of nebulae to the combat map, and then add a script that, periodically, checks for nearby ships, does some math, and based on the results, either does or doesnt add another script that spawns a mine with NONE colission class, no targetting indicator, nigh infinite hp, and deletes/spawns another mine of this type every 0.1 seconds, placing every mine in the direction of the source of a EMP arc that will try to hit the ship in a few seconds. The idea is that this adds a threat in the direction of the EMP arc, provoking the AI into raising shields and blocking the arc.
The AI reacts to this pretty decently, however, when in combat, the ships tend to neglect the mine that has 2k energy damage and 6.5k EMP damage sitting right behind it in favor of raising its shield against a kite 700 Su away. On top of that, the AI seems to think they can either hit or avoid the mine, and thus phased ships unphase to use EMP emitter, ships use flares, or phase skimmer to run away. I'm not against them using movement to get away, since the EMP doesnt hit them if they're outside of it's range, but I'd like to make them have a higher priority in blocking the mine, as well as not use PD systems on something they literally cannot hit (why does EMP emitter try to hit things with NONE colission class?).
Honestly, this is just a "how it works is how it works" kind of situation - I don't know the answers to your questions offhand. My *guess* would be that CollsionClass.NONE is what's making the mine not register as a threat shields-wise but this is something you could test. It's entirely possible - likely, even - that CollisionClass.NONE mines are just not a thing the AI knows how to deal with, and it's not likely to learn unless I end up needing this sort of thing for vanilla.
On top of that, it just seems iffy that the AI doesn't even try to avoid the storming nebulae. Any ideas on how to make the ships avoid the nebulae?
Fleets used to do that, but now that it's a thing, they "go slow" instead. Take a look at some unused code in TacticalModule.updateAvoidList() to see how that was done.
Also, on that note, I know I'm using internal classes (I've casted CombatNebulaAPI to the internal class A, and I've used A's getNebulaAt() method to get Cloud), but, is ther eany awy to get the radius of a nebula cloud? I'm currently just approximating the average with flat unchanged values, but I'd like more accurate measurements.
There's no concept of a "radius", a nebula is a bunch of tiles that overlap to create the illusion of something smoother. Just in general, if you're doing this sort of stuff, you're pretty much on your own and I generally discourage it because it'll break horribly with every release. I'd much rather get API requests that make modding better for everyone than a bunch of mods using internals.
I also want to know if I can replace the nebula texture at all-I want to make hyperclouds generate with, well, the hypercloud texture.
You can use MissionDefinitionAPI.setNebulaTex() and .setNebulaMapTex().
A few questions about this class as well:
What is "tileHasNebula()"? What is the tile in this context? What kind of values would I have to give to actually get a true value?
(See: the bit about nebulas being tiles-based, and the bit about being on your own.)
I'm really curious about "chargeNearbyClouds()" and "dumpFlux()". You don't have to answer, but, are these used? If not, what were they gonna be used for??
IIRC waaaaay back nebulas used to be created when ships vented flux - it was never actually fleshed out and it was, not to put too fine a point on it, not good.
And finally: How would I go about rendering terrain effects in combat?
Let's say I want to render a magnetic field (and storm) in combat, heavily zoomed in, focused on where the playerfleet is. Is it possible to render the effect in combat, animation and all? If so, what's the first steps to doing that? I'm really (never done it before) unfamiliar with like, rendering, and animations, and most types of combat graphics, so I'm pretty clueless here. The most I know to do is get the spriteAPI, and use addLayeredRenderingPlugin to render /something/, but NOT how to animate it.
Same goes for slipstreams, as that's another thing I'd want to render.
You're on the right track here! You want a layered rendering plugin and then, well, just a bunch of OpenGL code rendering whatever you're rendering. For stuff like magnetic fields, take a look at the terrain plugin to see how it does its rendering.
For slipstreams, I would not recommend doing it in combat, performance would suffer. You'd want something different and much more performant that gets the basic feeling across.
(@Liral: ahh, I'm not sure. And it's a bit much for me to really dive into right now, unfortunately!)

(Sorry! There's only so much deep-dive digging I can reasonably do, especially when it's to do with stuff that's not in the API and is being used in complicated ways and isn't easy for me to reproduce etc etc etc. If I know something offhand or something jumps out, I'm happy to answer, but if I don't, this kind of thing can get inordinately time-consuming.)