Issues with Using Forge RotationHelper
I've been looking into one of our goals - to switch DD from using its own block rotation code to using the functions that Forge introduced. Unfortunately, I've come across some problems with this.
Forge supports block rotation through a method in the Block class which require a World instance and the location of the block to be rotated. DD can't use that method - we need to be able to rotate blocks without accessing them through a World, and more importantly, we need to apply rotations without block updates occurring. Forge would force us to cause block updates. The underlying methods that provide the metadata for a block's rotation are private static, meaning they're not accessible to us by normal means. Using trickery to access those methods would add additional overhead to an important operation in importing dungeons, and it would add complexity for something that should be simple.
That leaves us two choices, as far as I can tell. We could drop our goal of switching out of DD's rotation code. We don't have proper support for beds, it seems, so we would have to add that and we would be missing even more blocks for MC 1.7. Forge already implements everything.
Alternatively, we could copy RotationHelper from Forge and modify it to suit our needs. That presents its own issue, though. Forge has its own license that we must abide by. It states that we are allowed to modify Forge as we want. We can redistribute Forge, in whole or in part, with modifications, under the conditions that we must provide access to the source code of our modified version and that it must remain under Forge's license. I believe this means that our modified RotationHelper would have to be under Forge's license. Providing access to the source code wouldn't be an issue, but we'd have to make sure that we document that a specific class in DD is under a different license. That could be a little complicated for us.
So, what do we do?