It might also be worth mentioning, since it's somewhat related to this topic, CommandBlocks and non-CommandBlocks cannot be combined in the same rule.
Technically, that's not quite true. To be more precise, you can't combine CommandBlocks and non-CommandBlocks in the same rule variant. It's perfectly okay for a single rule to have both CommandBlock and non-CommandBlock variants, so long as each variant is exclusively one or the other. It's also fine to mix CommandBlock and non-CommandBlock variants in a rule variant group. I'm only putting this here for completeness, in a spoiler so as not to muddle the main issue.
Note, too, there's another Ruins special block type, teBlock (tile entity block), that can serve as a fully-functional Minecraft command block. Because it's not a Ruins CommandBlock, it can be a sneaky way of putting blocks of all kinds in the same rule/variant. It will even support the RUINSTRIGGER directive! There is one subtle difference, though, between CommandBlocks and teBlock command blocks--only with CommandBlocks, Ruins attempts to rotate any horizontally-relative coordinate specifications (i.e., with tildes in both the X and Z positions) appearing in the command according to the entire structure's rotation. If you need rotated relative coordinates in your template, you've got to use CommandBlock, but if you find such rotation unnecessary, undesirable, or unsuccessful (there are situations in which it doesn't get things right), teBlock might be an alternative to consider. Again, a potentially confusing footnote, but here for completeness.
@Everyone: Okay I see now. I knew about the possibility of spawning random block choices, as a comma separated list, I missed the entries of CommandBlock before the RUINSTRIGGER for multiple entries and just didn't manage to put 2 and 2 together with Gillymoth's reply.
I see snippets of information about all the functions you guys are talking about as I search the thread looking for the answer to my specific problem/s but usually can't correlate it back to something that makes sense.
So thanks for all the clarification and I apologize for repeating myself.
I see snippets of information about all the functions you guys are talking about as I search the thread looking for the answer to my specific problem/s but usually can't correlate it back to something that makes sense.
I'd try to write up a "how-to" document for reference, but I'm wrong WAY too often.
There is a ton of ready to play third-party content for Ruins, altogether at least a thousand structures that can be dropped into a folder and explored. Below are just a few examples:
@proxwarrior33: Ruins won't consider spawn locations below Y=8, so your superflat world just has to be at least 9 layers deep. The top layer must also be something Ruins structures can spawn on, based on your templates' acceptable/unacceptable target blocks.
The default superflat preset "Classic Flat" is only 4 layers deep. To change it, press the Customize button when you select Superflat, then on the next screen press the Presets button, then on the top of the next screen replace the "2" in the text box with a "7" (so it now reads "3;minecraft:bedrock,7*minecraft:dirt,minecraft:grass;1;village"). Press Use Preset, then Done, then Create New World. That gives you 9 layers: 1 bedrock + 7 dirt + 1 grass.
Keep in mind if a template's embed_into_distance is the same or greater than the world's depth, any structures it spawns will be truncated at Y=0 and may allow players access to The Void. Scary!
EDIT: Since I'm a stickler for completeness, I have to add the Y=8 lower limit does not apply to the nether dimension (or, to be specific, any dimension with a WorldProvider derived from net.minecraft.world.WorldProviderHell, if there are any mods out there that create new nether-like dimensions).
Just finished redesigning the entrance to my sliding catacombs, after finishing my latest build of this female warrior statue, realizing it would be an excellent replacement for a simple entrance on one of my catacombs. I'm about ready for another content upload, having been doing another layer of detail on many things, as well as adding a few new structures such as this statue.
Just finished redesigning the entrance to my sliding catacombs, after finishing my latest build of this female warrior statue, realizing it would be an excellent replacement for a simple entrance on one of my catacombs. I'm about ready for another content upload, having been doing another layer of detail on many things, as well as adding a few new structures such as this statue.
Impressive! Especially so that the figure faces on the diagonal -- very different from the typical approach.
Thanks! Spent all of yesterday and today making a second one in another pose, this time she's sitting on a greek/roman temple, it also opens into catacombs, and I made another staircase for it with more of an open vaulted shape.
Here's a working instance of some 1.12 spawner rules, note that earlier versions of minecraft had slightly different syntax for a lot of commands.
rule15=0,100,MobSpawner:Creeper
rule8=0,100,MobSpawner:Skeleton,MobSpawner:Zombie
These rules use the mob names from minecraft itself, and the wiki should list them.
Clearing out rooms after filling in all the air blocks is kind of an art form. Either make the air into water and sponge it out, or stand in the center of each room and /fill replace, or some combination of things. Just make sure by the end of it there is material/air in all the right places, and use the above to speed up the process.
I went over some of these details on a previous page, let me find that. My post on it was 3 pages back, you might have missed it, so I'll print it here: One final note, when using commands, go into /gamemode 3 (spectator mode) to move through solid blocks, and to find air pockets that need to be filled in.
One also has to block off all the open windows and skylights to keep the water from pouring inside, but the rule is to be replaced with something like wool after the water's functionality is no longer required:
also consider where water is supposed to be used in the structure as a final block, as this will overwrite those blocks. Use another color of wool to move the water to a safe block and switch it back when done.
--------------------
Alternatively, the water can be "spilled over" the top of the structure, but this will leave a lot of air pockets which would leave exposed undercuts in the materials filling in the foundation.
/fill ~xradius yceiling ~zradius ~-xradius yceiling ~-zradius water 0 replace air
Then set the corresponding rule in the file to preserveBlock. Note that there can be blocks outside the build area in the X and Z directions, but extra blocks above the build (spaced up to 100 blocks higher with air layers in between) will be incorporated into the structure as extra layers. The build area is determined by a ring of wool (or a block not used in the build) directly under the bottom layer of the structure, the ring is the layer that is broken (in a corner) when it saves the template file.
I can't seem to find a place to download the version for 1.12.2. Is it not out yet?
It's not been officially released, no. The version posted on CurseForge is Ruins 16.9 for Minecraft 1.12.1 as of 16 Sep 2017. It should still work with the current Minecraft 1.12.2, though. For now, if you want/need a later version, you'll have to pull the source code down from GitHub and build it yourself.
Aside from being updated for later Minecraft/Forge releases and a number of bug fixes--most notably getting biomesToSpawnIn to work--there are only a few new features since 16.9: the rotation mappings file was retired, minimum and maximum distances from spawn can be specified, and the block info stick tool can be disabled.
It's not been officially released, no. The version posted on CurseForge is Ruins 16.9 for Minecraft 1.12.1 as of 16 Sep 2017. It should still work with the current Minecraft 1.12.2, though. For now, if you want/need a later version, you'll have to pull the source code down from GitHub and build it yourself.
Aside from being updated for later Minecraft/Forge releases and a number of bug fixes--most notably getting biomesToSpawnIn to work--there are only a few new features since 16.9: the rotation mappings file was retired, minimum and maximum distances from spawn can be specified, and the block info stick tool can be disabled.
Would there be anywhere I could find tips on how to "pull the source code down from GitHub and build it (myself)"? I mean, it sounds like fun and all, but I have no idea where to start on something like that. I did a Google search and found:
Would there be anywhere I could find tips on how to "pull the source code down from GitHub and build it (myself)"?
I was afraid somebody was going to ask that. It's not terribly difficult, but the instructions depend somewhat on which operating system you're using and what tools you've already got installed. Here's an attempt--cross your fingers--at guiding you through the set up of a rudimentary Ruins development environment, sufficient for building your own mod file:
1) Download the Forge MDK (Mod Development Kit) from the link on page https://files.minecraftforge.net/maven/net/minecraftforge/forge/index_1.12.2.html . You want to click on the Mdk icon in the Download Latest box. This takes you to an ad page; after a few seconds, a Skip button should appear in the upper right corner. Click that to begin downloading the MDK. It's a ZIP file--when the download's complete, extract (unzip) it to your disk. This is your new Ruins development area.
2) Open a command line window and navigate to your new Ruins development area. Execute the command gradlew setupDecompWorkspace in that directory. It takes a few minutes to complete. If all goes well, you'll be rewarded with a scroll of cryptic log messages, eventually ending with a cheerful proclamation of "BUILD SUCCESSFUL."
3) Look for a directory in your development area named src. In there is a subdirectory named main. Delete main.
4) Download the Ruins source code from GitHub: https://github.com/AtomicStryker/atomicstrykers-minecraft-mods . Make sure Branch: 1.12.2 is selected in the upper(ish) left dropdown list, then click the Clone or download button in the upper right, then Download ZIP. When it's finished downloading, extract it to your disk. Inside that directory (atomicstrykers-minecraft-mods-1.12.2) is a subdirectory Ruins, which has a subdirectory src, and inside that is a subdirectory main. Copy main into your development area's src directory, replacing the one you deleted in step 3.
5) Return to the command line window in your development area and execute the command gradlew build . After a bit of churn, you'll hopefully get another "BUILD SUCCESSFUL" message. Congratulations! You just built a mod. The JAR file appears in the build directory's libs subdirectory and is named modid-1.0.jar . Delete the Ruins-1.12.jar file in your Minecraft client or server mod directory and put your new modid-1.0.jar (you can rename it if you like) there instead.
Hopefully that helps some. If you're actually going to do some development, modify the code and whatnot, there are a few extra steps and refinements, but this should be enough to allow you to just build the latest version.
I'm also curious what is involved with the rotation mappings file being retired.
The rotation_mappings.txt file is no longer used and has been deleted. See the last paragraph of post #4179 (and a couple subsequent posts) in this thread. Ruins should now be able to handle block rotation--even for non-vanilla blocks--without special instructions. It's magic!
In case you're wondering why I don't just post the final JAR file and save you the trouble of building it yourself--I'm not the mod author, and I don't think it appropriate for me to distribute unauthorized releases. Also, folks should be wary of JARs from strangers, anyway. Especially when those strangers are rabbits.
The rotation_mappings.txt file is no longer used and has been deleted. See the last paragraph of post #4179 (and a couple subsequent posts) in this thread. Ruins should now be able to handle block rotation--even for non-vanilla blocks--without special instructions. It's magic!
That's pretty impressive, given how even for Vanilla blocks, Minecraft isn't particularly consistent in its numbering scheme for NSEWUD. So ... is there an explanation "in layman's terms" for how it does it? Or is it just so complex that we're better off just calling it "magic" and being done with it?
In any case, that's a pretty nice improvement.
@AtomicStryker:
Awesome! Thank you! I have updated my 12.1 "adventure" structures to reflect the change, by setting a new "spawnMinDistance" field for some of the weirder structures and bigger dungeons I'd rather spawn further out from the player spawn point.
So...is there an explanation "in layman's terms" for how it does it? Or is it just so complex that we're better off just calling it "magic" and being done with it?
I wish I could say it required some profoundly prodigious programming prestidigitation, but in fact it's pretty simple. You're right blocks have a variety of different ways to express their orientation, some of which don't directly involve metadata values at all (e.g., floor skulls). What's more, new block types added by mods can be arbitrarily creative in that regard. It's just not feasible to try to handle every possible special situation.
However, as complex as a block's internal representation of its orientation may be to the outside world, every block is obliged to know how to rotate itself, namely via a mere call to its withRotation() method (and, in the case of an associated tile entity, the analogous rotate() method). By calling those methods instead of trying to juggle raw data values, Ruins needn't know or care about the gruesome details of how a particular block does what it does behind the scenes.
There is a catch. There's always a catch. While blocks are obliged to know how to rotate themselves--and all vanilla blocks certainly do--it's up to individual mod authors whether or not to meet that obligation for any new block types they add. Most blocks do, I suspect, but some don't (e.g., Botania's mana spreader, maybe?). They should; otherwise, the blocks won't work properly in Minecraft's native structure system, either. As a result, you may occasionally encounter mod blocks that don't rotate correctly, or at all. If it's any consolation, even the old rotation_mappings.txt likely wouldn't have helped in these situations...it requires special code added to Ruins to handle each anomalous case. That would be unfortunate. It's much more fun to muster an unruly mob armed with torches and pitchforks to pressure such intransigents into conforming with established principles. Who's with me?
EDIT: I confirmed Botania's mana spreader is indeed an example of a block that won't rotate correctly. (Note: Most, if not all, other Botania blocks--such as walls and stairs made from new materials--do support rotation. I just know the mana spreader does not.) If your Ruins structure template contains such problematic blocks, you'll probably want to disable rotation. As mentioned above, the same problem applies to structures loaded even by a vanilla Minecraft structure block; this isn't a Ruins issue.
EDIT: ...but not for long. The next release of Botania adds support for rotating structures containing mana spreaders. Yay!
EDIT: I confirmed Botania's mana spreader is indeed an example of a block that won't rotate correctly. (Note: Most, if not all, other Botania blocks--such as walls and stairs made from new materials--do support rotation. I just know the mana spreader does not.) If your Ruins structure template contains such problematic blocks, you'll probably want to disable rotation. As mentioned above, the same problem applies to structures loaded even by a vanilla Minecraft structure block; this isn't a Ruins issue.
Thanks for the explanation! I had no idea about that particular functionality built into the blocks.
Regarding prevent-rotation: I already have to do that with a few of my templates anyway, even without vanilla rotation. There's a peculiarity involving double doors: any time I have a structure that has double doors, if the template is rotated 90 or 270 degrees, the doors will open strangely, hinged in the middle rather than on the sides. As near as I can tell, this isn't a problem with Minecraft's block-rotation handling, but simply a consequence of how the blocks are placed in the world -- and how Minecraft "adjusts" doors once placed, if you put another door next to it. I suspect there might be some work-around if I only put one of the doors into the structure normally, and then used a Command Block to place the other, but I'm not quite sure how that'd work. (I suppose I need to actually experiment with it to find out.)
The other reason would be for paintings: thanks to changes in how paintings are handled, I can now use Command Blocks to place paintings in buildings, but I have to specify the facing. (It used to be that paintings had to be placed with SPECIFIC X/Y/Z coordinates, but since the entities got revamped, now RELATIVE X/Y/Z coordinates can be used. Hence, I can have a CB that fires off with RUINSTRIGGER to place a painting in or above or below its own location. If there isn't a wall there to support it, however, it'll pop off and be bobbing around when I explore the spawned building. So, I prevent-rotation on such structures to make sure the wall is still there where I expect it to be. )
It might also be worth mentioning, since it's somewhat related to this topic, CommandBlocks and non-CommandBlocks cannot be combined in the same rule.
Technically, that's not quite true. To be more precise, you can't combine CommandBlocks and non-CommandBlocks in the same rule variant. It's perfectly okay for a single rule to have both CommandBlock and non-CommandBlock variants, so long as each variant is exclusively one or the other. It's also fine to mix CommandBlock and non-CommandBlock variants in a rule variant group. I'm only putting this here for completeness, in a spoiler so as not to muddle the main issue.
Note, too, there's another Ruins special block type, teBlock (tile entity block), that can serve as a fully-functional Minecraft command block. Because it's not a Ruins CommandBlock, it can be a sneaky way of putting blocks of all kinds in the same rule/variant. It will even support the RUINSTRIGGER directive! There is one subtle difference, though, between CommandBlocks and teBlock command blocks--only with CommandBlocks, Ruins attempts to rotate any horizontally-relative coordinate specifications (i.e., with tildes in both the X and Z positions) appearing in the command according to the entire structure's rotation. If you need rotated relative coordinates in your template, you've got to use CommandBlock, but if you find such rotation unnecessary, undesirable, or unsuccessful (there are situations in which it doesn't get things right), teBlock might be an alternative to consider. Again, a potentially confusing footnote, but here for completeness.
@Everyone: Okay I see now. I knew about the possibility of spawning random block choices, as a comma separated list, I missed the entries of CommandBlock before the RUINSTRIGGER for multiple entries and just didn't manage to put 2 and 2 together with Gillymoth's reply.
I see snippets of information about all the functions you guys are talking about as I search the thread looking for the answer to my specific problem/s but usually can't correlate it back to something that makes sense.
So thanks for all the clarification and I apologize for repeating myself.
I'd try to write up a "how-to" document for reference, but I'm wrong WAY too often.
--- Jordan's & Kujaku10's UNOFFICIAL Custom Templates:
Greywolf's Minecraft Ruins (MC versions 1.7.10-1.12.2; requires AtomicStryker's "Ruins" mod)
Latest Updates: v1.7 (May 2018) * v1.8 (Jun 2016) * v1.9 (Sep 2016) * v1.10 (Jan 2017) * v1.11 (Apr 2018) * v1.12.* (Dec 2018)
If it's a collaborative effort among the forum then it's not so bad. Need a good place on the forums for how-to's and tutorials though.
@QuarterAnimal
You know some days i am surprised you haven't proven Turing completeness of Ruins templates yet
Thank you for providing such lovely support to the users xD
There is a ton of ready to play third-party content for Ruins, altogether at least a thousand structures that can be dropped into a folder and explored. Below are just a few examples:
Gillymoth Structures for Ruins <<< Folder containing my Structure-sets for Ruins mod.
@proxwarrior33: Ruins won't consider spawn locations below Y=8, so your superflat world just has to be at least 9 layers deep. The top layer must also be something Ruins structures can spawn on, based on your templates' acceptable/unacceptable target blocks.
The default superflat preset "Classic Flat" is only 4 layers deep. To change it, press the Customize button when you select Superflat, then on the next screen press the Presets button, then on the top of the next screen replace the "2" in the text box with a "7" (so it now reads "3;minecraft:bedrock,7*minecraft:dirt,minecraft:grass;1;village"). Press Use Preset, then Done, then Create New World. That gives you 9 layers: 1 bedrock + 7 dirt + 1 grass.
Keep in mind if a template's embed_into_distance is the same or greater than the world's depth, any structures it spawns will be truncated at Y=0 and may allow players access to The Void. Scary!
EDIT: Since I'm a stickler for completeness, I have to add the Y=8 lower limit does not apply to the nether dimension (or, to be specific, any dimension with a WorldProvider derived from net.minecraft.world.WorldProviderHell, if there are any mods out there that create new nether-like dimensions).
Just finished redesigning the entrance to my sliding catacombs, after finishing my latest build of this female warrior statue, realizing it would be an excellent replacement for a simple entrance on one of my catacombs. I'm about ready for another content upload, having been doing another layer of detail on many things, as well as adding a few new structures such as this statue.
Gillymoth Structures for Ruins <<< Folder containing my Structure-sets for Ruins mod.
Impressive! Especially so that the figure faces on the diagonal -- very different from the typical approach.
--- Jordan's & Kujaku10's UNOFFICIAL Custom Templates:
Greywolf's Minecraft Ruins (MC versions 1.7.10-1.12.2; requires AtomicStryker's "Ruins" mod)
Latest Updates: v1.7 (May 2018) * v1.8 (Jun 2016) * v1.9 (Sep 2016) * v1.10 (Jan 2017) * v1.11 (Apr 2018) * v1.12.* (Dec 2018)
Thanks! Spent all of yesterday and today making a second one in another pose, this time she's sitting on a greek/roman temple, it also opens into catacombs, and I made another staircase for it with more of an open vaulted shape.
Gillymoth Structures for Ruins <<< Folder containing my Structure-sets for Ruins mod.
Here's a working instance of some 1.12 spawner rules, note that earlier versions of minecraft had slightly different syntax for a lot of commands.
rule15=0,100,MobSpawner:Creeper
rule8=0,100,MobSpawner:Skeleton,MobSpawner:Zombie
These rules use the mob names from minecraft itself, and the wiki should list them.
Clearing out rooms after filling in all the air blocks is kind of an art form. Either make the air into water and sponge it out, or stand in the center of each room and /fill replace, or some combination of things. Just make sure by the end of it there is material/air in all the right places, and use the above to speed up the process.
I went over some of these details on a previous page, let me find that. My post on it was 3 pages back, you might have missed it, so I'll print it here: One final note, when using commands, go into /gamemode 3 (spectator mode) to move through solid blocks, and to find air pockets that need to be filled in.
Gillymoth Structures for Ruins <<< Folder containing my Structure-sets for Ruins mod.
I can't seem to find a place to download the version for 1.12.2. Is it not out yet?
It's not been officially released, no. The version posted on CurseForge is Ruins 16.9 for Minecraft 1.12.1 as of 16 Sep 2017. It should still work with the current Minecraft 1.12.2, though. For now, if you want/need a later version, you'll have to pull the source code down from GitHub and build it yourself.
Aside from being updated for later Minecraft/Forge releases and a number of bug fixes--most notably getting biomesToSpawnIn to work--there are only a few new features since 16.9: the rotation mappings file was retired, minimum and maximum distances from spawn can be specified, and the block info stick tool can be disabled.
Would there be anywhere I could find tips on how to "pull the source code down from GitHub and build it (myself)"? I mean, it sounds like fun and all, but I have no idea where to start on something like that. I did a Google search and found:
https://github.com/AtomicStryker/atomicstrykers-minecraft-mods/tree/1.12.2/Ruins
I'm guessing something in here is what I should be looking for?
I'd like to try out those minimum-maximum distance settings. I'm also curious what is involved with the rotation mappings file being retired.
--- Jordan's & Kujaku10's UNOFFICIAL Custom Templates:
Greywolf's Minecraft Ruins (MC versions 1.7.10-1.12.2; requires AtomicStryker's "Ruins" mod)
Latest Updates: v1.7 (May 2018) * v1.8 (Jun 2016) * v1.9 (Sep 2016) * v1.10 (Jan 2017) * v1.11 (Apr 2018) * v1.12.* (Dec 2018)
I was afraid somebody was going to ask that. It's not terribly difficult, but the instructions depend somewhat on which operating system you're using and what tools you've already got installed. Here's an attempt--cross your fingers--at guiding you through the set up of a rudimentary Ruins development environment, sufficient for building your own mod file:
1) Download the Forge MDK (Mod Development Kit) from the link on page https://files.minecraftforge.net/maven/net/minecraftforge/forge/index_1.12.2.html . You want to click on the Mdk icon in the Download Latest box. This takes you to an ad page; after a few seconds, a Skip button should appear in the upper right corner. Click that to begin downloading the MDK. It's a ZIP file--when the download's complete, extract (unzip) it to your disk. This is your new Ruins development area.
2) Open a command line window and navigate to your new Ruins development area. Execute the command gradlew setupDecompWorkspace in that directory. It takes a few minutes to complete. If all goes well, you'll be rewarded with a scroll of cryptic log messages, eventually ending with a cheerful proclamation of "BUILD SUCCESSFUL."
3) Look for a directory in your development area named src. In there is a subdirectory named main. Delete main.
4) Download the Ruins source code from GitHub: https://github.com/AtomicStryker/atomicstrykers-minecraft-mods . Make sure Branch: 1.12.2 is selected in the upper(ish) left dropdown list, then click the Clone or download button in the upper right, then Download ZIP. When it's finished downloading, extract it to your disk. Inside that directory (atomicstrykers-minecraft-mods-1.12.2) is a subdirectory Ruins, which has a subdirectory src, and inside that is a subdirectory main. Copy main into your development area's src directory, replacing the one you deleted in step 3.
5) Return to the command line window in your development area and execute the command gradlew build . After a bit of churn, you'll hopefully get another "BUILD SUCCESSFUL" message. Congratulations! You just built a mod. The JAR file appears in the build directory's libs subdirectory and is named modid-1.0.jar . Delete the Ruins-1.12.jar file in your Minecraft client or server mod directory and put your new modid-1.0.jar (you can rename it if you like) there instead.
Hopefully that helps some. If you're actually going to do some development, modify the code and whatnot, there are a few extra steps and refinements, but this should be enough to allow you to just build the latest version.
The rotation_mappings.txt file is no longer used and has been deleted. See the last paragraph of post #4179 (and a couple subsequent posts) in this thread. Ruins should now be able to handle block rotation--even for non-vanilla blocks--without special instructions. It's magic!
In case you're wondering why I don't just post the final JAR file and save you the trouble of building it yourself--I'm not the mod author, and I don't think it appropriate for me to distribute unauthorized releases. Also, folks should be wary of JARs from strangers, anyway. Especially when those strangers are rabbits.
Wait, so you mean that credit card scraper you built in isn't safe? But I've been using that ._.
I'll build and upload v17.0 when i get home
EDIT: and done
That's pretty impressive, given how even for Vanilla blocks, Minecraft isn't particularly consistent in its numbering scheme for NSEWUD. So ... is there an explanation "in layman's terms" for how it does it? Or is it just so complex that we're better off just calling it "magic" and being done with it?
In any case, that's a pretty nice improvement.
@AtomicStryker:
Awesome! Thank you! I have updated my 12.1 "adventure" structures to reflect the change, by setting a new "spawnMinDistance" field for some of the weirder structures and bigger dungeons I'd rather spawn further out from the player spawn point.
--- Jordan's & Kujaku10's UNOFFICIAL Custom Templates:
Greywolf's Minecraft Ruins (MC versions 1.7.10-1.12.2; requires AtomicStryker's "Ruins" mod)
Latest Updates: v1.7 (May 2018) * v1.8 (Jun 2016) * v1.9 (Sep 2016) * v1.10 (Jan 2017) * v1.11 (Apr 2018) * v1.12.* (Dec 2018)
I wish I could say it required some profoundly prodigious programming prestidigitation, but in fact it's pretty simple. You're right blocks have a variety of different ways to express their orientation, some of which don't directly involve metadata values at all (e.g., floor skulls). What's more, new block types added by mods can be arbitrarily creative in that regard. It's just not feasible to try to handle every possible special situation.
However, as complex as a block's internal representation of its orientation may be to the outside world, every block is obliged to know how to rotate itself, namely via a mere call to its withRotation() method (and, in the case of an associated tile entity, the analogous rotate() method). By calling those methods instead of trying to juggle raw data values, Ruins needn't know or care about the gruesome details of how a particular block does what it does behind the scenes.
There is a catch. There's always a catch. While blocks are obliged to know how to rotate themselves--and all vanilla blocks certainly do--it's up to individual mod authors whether or not to meet that obligation for any new block types they add. Most blocks do, I suspect, but some don't (e.g., Botania's mana spreader, maybe?). They should; otherwise, the blocks won't work properly in Minecraft's native structure system, either. As a result, you may occasionally encounter mod blocks that don't rotate correctly, or at all. If it's any consolation, even the old rotation_mappings.txt likely wouldn't have helped in these situations...it requires special code added to Ruins to handle each anomalous case. That would be unfortunate. It's much more fun to muster an unruly mob armed with torches and pitchforks to pressure such intransigents into conforming with established principles. Who's with me?
EDIT: I confirmed Botania's mana spreader is indeed an example of a block that won't rotate correctly. (Note: Most, if not all, other Botania blocks--such as walls and stairs made from new materials--do support rotation. I just know the mana spreader does not.) If your Ruins structure template contains such problematic blocks, you'll probably want to disable rotation. As mentioned above, the same problem applies to structures loaded even by a vanilla Minecraft structure block; this isn't a Ruins issue.
EDIT: ...but not for long. The next release of Botania adds support for rotating structures containing mana spreaders. Yay!
Thanks for the explanation! I had no idea about that particular functionality built into the blocks.
Regarding prevent-rotation: I already have to do that with a few of my templates anyway, even without vanilla rotation. There's a peculiarity involving double doors: any time I have a structure that has double doors, if the template is rotated 90 or 270 degrees, the doors will open strangely, hinged in the middle rather than on the sides. As near as I can tell, this isn't a problem with Minecraft's block-rotation handling, but simply a consequence of how the blocks are placed in the world -- and how Minecraft "adjusts" doors once placed, if you put another door next to it. I suspect there might be some work-around if I only put one of the doors into the structure normally, and then used a Command Block to place the other, but I'm not quite sure how that'd work. (I suppose I need to actually experiment with it to find out.)
The other reason would be for paintings: thanks to changes in how paintings are handled, I can now use Command Blocks to place paintings in buildings, but I have to specify the facing. (It used to be that paintings had to be placed with SPECIFIC X/Y/Z coordinates, but since the entities got revamped, now RELATIVE X/Y/Z coordinates can be used. Hence, I can have a CB that fires off with RUINSTRIGGER to place a painting in or above or below its own location. If there isn't a wall there to support it, however, it'll pop off and be bobbing around when I explore the spawned building. So, I prevent-rotation on such structures to make sure the wall is still there where I expect it to be. )
--- Jordan's & Kujaku10's UNOFFICIAL Custom Templates:
Greywolf's Minecraft Ruins (MC versions 1.7.10-1.12.2; requires AtomicStryker's "Ruins" mod)
Latest Updates: v1.7 (May 2018) * v1.8 (Jun 2016) * v1.9 (Sep 2016) * v1.10 (Jan 2017) * v1.11 (Apr 2018) * v1.12.* (Dec 2018)