If I send it commands to go up, the steppers rotate things up. If I tell the Z-axis to go down, nothing happens. I inverted the Z-axis in the firmware (by setting the value to true instead of false), and it did the same thing, but the other way around - it would only go down.
It sounds like your Z limit switch is stuck. The firmware will prevent the motor going further down past the limit to prevent damage. Be careful going up because if the firmware doesn't know where the bottom is, it doesn't know where the top is.
I checked my printer (an i3 clone) and the limit switches are wired as NC (normally closed). That means that the circuit opens when the switch is activated. So, if the wire (or switch) is broken, or if it is unplugged, it will behave as if the switch is activated (the behavior you are seeing).
An easy test would be to switch the x-limit and z-limit cables at the controller board. If the problem moves to the x-axis, you have found your problem. BE CAREFUL not to run the motor into the end stop and damage something since there is no limit switch to protect it.