@xorange: I think you're on the right track. As a potential workaround, remove all nonexistent biome names from every template's biomesToSpawnIn list and see if that gets you past the first bunch of "problem loading the file" errors. Unfortunately, there's no guarantee that'll work, but it's the best you can do without changing the mod's code. There's a pretty good chance it will, though.
Technical details: Whether this workaround is successful or not depends on the IDs (integers) assigned to the three unnamed biomes, relative to all named biomes. If their ID values are higher than any biome listed in a template's biomesToSpawnIn list--and they probably are--it'll find a matching name before it ever encounters the problematic unnamed biomes, since the biome registry is scanned in ID order. Crisis averted! When the list contains a nonexistent biome name, however, the mod has to scan the entire registry before it knows that name can simply be ignored...thus one of the unnamed biomes will inevitably be hit, triggering the error. If removing nonexistent biome names from biomesToSpawnIn lists doesn't work, you'll have to either additionally remove any biomes with higher ID values from the lists, or reassign biome IDs. Yuck.
Don't worry about the three "error when loading the null ruins" errors; that just means it can't process folders associated with the unnamed biomes. Think of them more as warnings than errors, since there's no adverse effect on the functioning of Ruins.
Well, it does mean you won't be able to designate structures specific to these unnamed biomes, whatever they are. Ruins doesn't support unnamed biomes. My guess is generic ruins are still eligible to spawn in them, however. I can't be certain; I'm afraid I'm not familiar with the Arcana RPG mod.
Incidentally, the coral reef and kelp forest biomes come from Biomes O' Plenty; I presume you're using that mod. Oceanic abyss was also a BoP biome, but removed around the time the vanilla deep ocean biome was added. It looks like ocean oil field is added by a mod called BuildCraft. Ordinarily, having nonexistent biome names on biomesToSpawnIn lists (because you're not using certain other mods) isn't a problem--they'll just be ignored. The unnamed biomes, though, are causing the trouble, as AtomicStryker said.
@xorange, if by chance the only templates that cause this are in the "Generic" folder in the mods/resources/ruins filepath, then a solution would be to pick up one of the extra sets of templates, as the extra sets have extensive content in specific biomes, enough that the content in the generic folder could be omitted. This is just a guess though, but the above filepath in the 1.7 version of Ruins would give access to the structure content so you could find any correlations with which folders a structure originates in that also runs into the null biome name from the mod you mentioned.
The problematic templates (in the default set) are actually located in the ocean & jungle folders. It doesn't seem to be a path related issue (though I did initially investigate that), but that's a very good alternative solution for me to keep in mind!
@xorange: I think you're on the right track. As a potential workaround, remove all nonexistent biome names from every template's biomesToSpawnIn list and see if that gets you past the first bunch of "problem loading the file" errors. Unfortunately, there's no guarantee that'll work, but it's the best you can do without changing the mod's code. There's a pretty good chance it will, though.
So far so good! Using this method I've resolved the issues with those 6 templates from the default set. Now I'm just down to those last three warnings, which, as you suggested, I won't worry about.
Now I'm going to embark on loading up some other sets, such as Gillymoth's, and see how that goes.
Technical details: Whether this workaround is successful or not depends on the IDs (integers) assigned to the three unnamed biomes, relative to all named biomes. If their ID values are higher than any biome listed in a template's biomesToSpawnIn list--and they probably are--it'll find a matching name before it ever encounters the problematic unnamed biomes, since the biome registry is scanned in ID order. Crisis averted! When the list contains a nonexistent biome name, however, the mod has to scan the entire registry before it knows that name can simply be ignored...thus one of the unnamed biomes will inevitably be hit, triggering the error. If removing nonexistent biome names from biomesToSpawnIn lists doesn't work, you'll have to either additionally remove any biomes with higher ID values from the lists, or reassign biome IDs. Yuck.
Incidentally, the coral reef and kelp forest biomes come from Biomes O' Plenty; I presume you're using that mod. Oceanic abyss was also a BoP biome, but removed around the time the vanilla deep ocean biome was added. It looks like ocean oil field is added by a mod called BuildCraft. Ordinarily, having nonexistent biome names on biomesToSpawnIn lists (because you're not using certain other mods) isn't a problem--they'll just be ignored. The unnamed biomes, though, are causing the trouble, as AtomicStryker said.
Thanks for the details! That's very interesting. I see exactly what you're saying.
So, for the record (and in case it helps), here's Arcana RPG's config file:
So there is a list of biome's, and I can even change IDs. However, as far as I understand it, the mod seems to be creating biomes that it isn't giving names to, thus also not putting in the config file. I can't manipulate the IDs because they're not in the config, and I can't give them names because I can't modify the mod's code.
The way Ruins is behaving makes perfect sense. Arcana adds a lot of content to our modpack, so I plan on keeping it. I wish it weren't causing an issue. It looks like my only option is to continue manually managing the biomesToSpawnIn entry in each template that uses it. That's actually really not that bad as long as it keeps working. Being that Arcana has the biome ID's set at the upper end of the range, I'm hopeful that the unnamed biomes are something like 247, 248, & 249.
Is there any way I can inventory biomes? Maybe a mod that generates a report? I'm curious about those mystery biomes.
I am indeed using Biomes O' Plenty. I believe I'm also using a few other mods that create new biomes as well. I'm probably lucky I'm not having more issues than this. lol
In case anyone is curious (or it's pertinent), here's our full mod-list for this pack:
Animals+
Arcana RPG
Baby Animals Model Swapper
Baby Mobs
Backpacks
Better Achievements
Biomes O’ Plenty
Blocklings
Cooking for Blockheads
DefaultMobPack (For Familiars API)
Doggy Style
DrZhark’s Mo’Creatures Mod
Dungeon Pack
Dynamic Lights
Dynamic Surroundings
Elemental Witches Mod
Emotes
Enchanting Plus
Ender Zoo
Exotic Birds
Extended_Villages
ExtendedFamPack (For Familiars API)
Extra Golems
Familiars API
FastCraft
FloatingRuins
Hats
HatStand (For Hats Mod)
Headcrumbs
Inventory Pets
JourneyMap
Just a Few Fish
Loot Bags
Loot++
LotsOMobs
Lucky Block
Malisis’ Doors
MobDismemberment
Morph
MrCrayfish’s Furniture Mod
Natura (WorldGen companion to Tinkers’ Construct)
Nether Ores
Not Enough Items
ObsTrophies
Pam’s Harvest the Nether
Pam’s HarvestCraft
Pam’s Simple Recipes
Pandora’s Box
Plant Mega Pack
Platforms
Pokeball
Primitive Mobs
Project Zulu
Recurrent Complex
Reptile Mod
Roguelike Dungeons
Rope Bridge
Rotten Flesh to Leather
Ruins
Sophisticated Wolves
Sound Filters
Special Mobs
Spiral Lucky Blocks (Add-on to Lucky Blocks mod)
Streams
Tinkers’ Construct
Torched
Treecapitator
Waila
CaveBiomes
Core Mods/APIs/Librarys/Dependencies, etc.
Bookshelf (For Enchanting Plus)
bspkrsCore (For FloatingRuins and Treecapitator)
CodeChicken Core (For Not Enough Items)
CoFH Core (For Nether Ores)
Farseek (API for Streams)
Grim3212 Core (For Pokeball)
iChunUtil (For iChun’s mods: Hats, Morph, Mob Dismemberment, etc.)
IvToolkit (For Recurrent Complex and Pandora’s Box)
Mantle (For Natura and Tinkers’ Construct)
MalisisCore (For Malisis’ Doors)
ObsCore (For ObsTrophies)
ShetiPhian Core (For Platforms)
TextureGeneratorLib (For CaveBiomes)
WTFCore (For CaveBiomes)
It's probably worth noting that I did of course test this issue with Ruins extensively (i.e. without all other mods loaded, with some of the mods loaded), and can duplicate the issue with only Ruins and Arcana RPG installed.
For what it's worth, I love Ruins! I think this is an awesome mod, and if I run into an insurmountable incompatibility with another mod, the other one will have to go. My goal in troubleshooting this issue has been very specifically to ensure that I'm able to get the most out of Ruins.
Is there any way I can inventory biomes? Maybe a mod that generates a report? I'm curious about those mystery biomes.
Welp, I found the Anti ID Conflict mod, which revealed this about the Arcana RPG biomes:
250 is Occupied by null (com.gibby.dungeon.gen.BiomeSunset)
251 is Occupied by Crystallium Spikes (com.gibby.dungeon.gen.BiomeCrystal)
252 is Occupied by null (com.gibby.dungeon.gen.BiomeSunset)
253 is Occupied by Crystallium Plains (com.gibby.dungeon.gen.BiomeCrystalliumPlains)
254 is Occupied by Midight (com.gibby.dungeon.gen.BiomeMidnight)
255 is Occupied by null (com.gibby.dungeon.gen.BiomeSunset)
Sigh. Looks like a silly mistake to me.
On the bright side, I've confirmed the IDs of the null biomes.
(Incidentally, also found some BoP biome IDs that were in conflict with Lots o Mobs, which I was able to resolve.)
@xorange: Just to be on the safe side, then, I'd change the biome ID assignments in the Arcana RPG config file so that the three unnamed biomes (apparently Sunset_Biome_Id, Montane_Biome_Id, and Herobrine_Dungeon_Biome_Id) are higher than all the rest. Unless you're making templates specifically for Arcana biomes, though, it doesn't really matter.
@xorange: Just to be on the safe side, then, I'd change the biome ID assignments in the Arcana RPG config file so that the three unnamed biomes (apparently Sunset_Biome_Id, Montane_Biome_Id, and Herobrine_Dungeon_Biome_Id) are higher than all the rest. Unless you're making templates specifically for Arcana biomes, though, it doesn't really matter.
Is there a wiki/repository/tutorial guide of information on how to edit the template files? I found the template rules and Gilly's uh..tips and tricks?
I've tried searching the thread multiple times and I looked into reverse engineering Gilly's templates in order to use the adjacent_template function. but I'm not getting anywhere. From the information within the Ruins mod it doesn't say anything about using command blocks. I'm not familiar with command block usage so I don't know what Gilly's are doing or how to adapt the code to what I want it to do. Let alone Gilly's templates going like, 5 templates deep on the RUINSTRIGGERS let alone how many instances of the trigger there are in a single template.
I even tried manually going though each page. But is it just me or are the forums running incredibly slow today? Anyways, using: "adjacent_template=plains/ThaylarPlainsHouse1" results in a big fat nothing.
Also, does the preserve_plants function do anything? I tried both 1 and 0 and got plants in my structures either way. is there an inverse to the "preserveBlock" function? Or the forcing of air within a specific interior of a template.
Thanks.
PS: Thanks Gilly for the tips on blending the template into the landscape. I got them nearly seemless considering how big they are.
That's almost certainly not what you want, but it'll get you closer. You'll have to adjust the three values that follow the template name to get the desired result. The first and third values (15 and 17, in this case) specify where, horizontally, the adjoining structure is placed relative to this one (+15 is 15 blocks east, +17 is 17 blocks south). The second value is a bit trickier--it's the maximum number of blocks the adjoining structure's vertical (up/down) position can differ from this one's (16 means up to 16 blocks higher or lower). The second value should never be negative. An optional fourth value is allowed:
The fourth value is the percentage chance the adjoining structure will spawn--in this example, 50%. If no chance is specified, the default is 100%.
There is no preserve_plants parameter; if you try setting a nonexistent parameter, it'll be silently ignored (just as adjacent_template was ignored). There was such a parameter at one time, but it's long since been removed. Plants are always preserved in the latest (Minecraft 1.12) version of Ruins. However, the concept of "preserved" only (by default) applies to rule0, a special air block that won't overwrite plants, webs, snow layers, water and ice (if preserve_water=1), or lava (if preserve_lava=1), intended primarily for surrounding exterior space. No other rules (again, by default) respect preserved blocks, so you simply need to create a separate "forced air" rule for your interior space:
I don't know why but it doesn't get me anything. Does the template that is being called on need to have some sort of a tag? I've got 5 wells and no adjacent house, other than where it naturally spawned on the ground in the bottom of the image.
I copied and pasted your line, then I tried a few different x/z coordinates and changing the chance to ;100.0 but no dice. Here is the header part of the Well template that is calling for an adjacent template:
I'll have to try the forcing air trick again. I filled a tower with sand using worldedit replacing all the air, then specified that rule as "air". I'll try it again tomorrow with "preserveBlock" instead as it naturally fell down to the 4th or 5th rule.
... As a potential workaround, remove all nonexistent biome names from every template's biomesToSpawnIn list...
Welp, despite working perfectly, that got old fast. I loaded in Jordan_Peacock's Adventure templates, wherein he included a LOT of biomes that don't exist in my world, which was turning into a huge amount of work. I got tired of manually finding & removing them pretty quick. I actually just ended up modifying the Ruins FileHandler class to dodge the last three biomes in the biome array. Being that I was able to stick those null biomes at the end of the array, it worked exactly as intended.
@Thaylar: It looks like you're manually spawning the wells while flying around in creative mode. The problem could be as simple as Ruins not being able to find a suitable build location for the adjoining house when the wells are so far (namely, more than 16 blocks) above the ground. I'm guessing you're spawning wells with a command like:
/testruin plains/ThaylarWell
Try instead using the slightly different command while flying to force the well onto the ground:
/testruin plains/ThaylarWell ~ _ ~
Just to be clear, those last six characters are space, tilde, space, underscore, space, tilde. The well should spawn on the ground beneath you, and hopefully a house will spawn nearby. "~ _ ~" means use your current X and Z coordinates, and Ruins gets to pick Y (usually ground level). If that works, there's nothing wrong with your templates, and they should naturally spawn just fine.
When you manually spawn a structure (the well, in this case), Ruins ignores any constraints imposed by that template, such as acceptable/unacceptable target blocks, max leveling, and allowable overhang. However, any adjoining templates do observe their own specified constraints, and will not spawn if those constraints are not met. Because you have allowable_overhang=0 for both wells and houses, neither can naturally spawn up in the air. You'll only get a sky house if you spawn it directly, not via an adjoining template reference.
@QuarterAnimal: Ah okay. I had experimented with my flawed scientific method but had also checked many naturally spawning wells.
Okay, I finally got it working on a hit or miss basis for natural spawns. More miss on the fact it spawns the Well in uh...less than ideal places. I figured out that any distance closer than 15 and it won't spawn. I am assuming the templates are colliding? I do have rather large pyramids everything is sitting on.
How does ruins decide which block in the adjoining template is going to be the spawn point?
Welp, despite working perfectly, that got old fast. I loaded in Jordan_Peacock's Adventure templates, wherein he included a LOT of biomes that don't exist in my world, which was turning into a huge amount of work. I got tired of manually finding & removing them pretty quick. I actually just ended up modifying the Ruins FileHandler class to dodge the last three biomes in the biome array. Being that I was able to stick those null biomes at the end of the array, it worked exactly as intended.
The best I can offer there is that if I could get a list of biomes you DO use, and which version of MC/Ruins you're using (1.7.10, 1.8, etc.), I could work on going through and making a version of the templates with a trimmed-down biomesToSpawnIn list. (Oh yeah, and it'd also help if I could find out whether you'd want the Command Block templates or for some reason you need all Command Blocks excluded. That was an issue a while back, hence my splitting of my templates into "CB" and "NOCB" versions. The "peaceful"/"adventure" split is because some folks just want a few decorative elements added to the landscape -- no monster spawners or traps.)
Under normal circumstances, there's no harm in listing nonexistent biomes (in any given modpack installation), so I err on the side of inclusion. Any time my friends set up a new modpack server, if there's some new biome I hadn't encountered before, I try to "populate" it by adding that biome name to whatever templates seem appropriate, since we don't go with the "generic" biome templates. This is the first I've ever heard of that causing a problem.
The best I can offer there is that if I could get a list of biomes you DO use, and which version of MC/Ruins you're using (1.7.10, 1.8, etc.), I could work on going through and making a version of the templates with a trimmed-down biomesToSpawnIn list. (Oh yeah, and it'd also help if I could find out whether you'd want the Command Block templates or for some reason you need all Command Blocks excluded. That was an issue a while back, hence my splitting of my templates into "CB" and "NOCB" versions. The "peaceful"/"adventure" split is because some folks just want a few decorative elements added to the landscape -- no monster spawners or traps.)
Under normal circumstances, there's no harm in listing nonexistent biomes (in any given modpack installation), so I err on the side of inclusion. Any time my friends set up a new modpack server, if there's some new biome I hadn't encountered before, I try to "populate" it by adding that biome name to whatever templates seem appropriate, since we don't go with the "generic" biome templates. This is the first I've ever heard of that causing a problem.
Thank you so much, Jordan! That's extremely helpful of you and I appreciate it. However, I don't think it's necessary.
I'm currently using 1.7.10 Adventure NOCB and I'm really liking this set.
Other than a couple minor odd issues, I think I've hacked it all into cooperation. haha
It totally makes sense to err on the side of inclusion, and indeed it shouldn't ever cause a problem, if things are functioning properly.
What we found is that there's a bug in the Arcana RPG mod that results in three biomes with no proper names.
When it comes to Ruins' functionality, this causes any templates with nonexistent biomes to not load properly.
My understanding is that as it traverses the biome array looking for each one, it hits the null biomes and freaks out, as intended.
I think I know what's wrong with Arcana RPG, but it's not open source, and modifying it would be somewhat cumbersome as far as I can tell.
On the bright side, its config allows me to assign IDs to the biomes, so I just stuck them at the end of the list.
I then just modified the Ruins FileHandler so that it stops looking for biomes right before the end of the array.
It seems to be working! No more errors when a template has a nonexistent biome in its list, and all templates seem to be loading. Confirmed via RuinsPositionsFile.txt and a good deal of TPing.
I have yet to modify your templates by hand to match my available biomes, but between your default biomesToSpawnIn lists (as they match my biomes), Ruins' generics and more, and quite a few structures being created by Recurrent Complex, our world is pretty active with a lot to do!
I'll probably sit down this week and tweak the biomesToSpawnIn lists a bit.
Again, thank you! If I do need any help I'll let you know.
What causes incomplete template rendering? Seems to be completely hit or miss. I probably did /testruin a combined 30 times of this template with 4 command blocks all spawning the same house, or a different house on a flattened piece of grass to ensure no terrain generating issues. It wouldn't be a problem if it failed to generate a template due to the rules and the command block disappeared (which also happens in natural generation), but the command block remaining means the commands stalled out? It seems to be completely random as to which of the 4 houses will spawn, but I can't have command blocks littering the world.
I was trying to experiment with custom village generation, but I couldn't seem to get this working hence the above template of four command blocks running one command rather than one command block running four commands.
On a side note, those house templates are 9kb a piece. Which I think is reasonable? It doesn't seem to have any problem generating 300+ kb templates across the landscape naturally, but I'm not calling for those to generate on command and maybe that's the difference. And it does work, there's a failed natural generation attempt and a completely successful natural generation (the only one that has ever completed all 4 houses).
Are both of these issues related to the same problem? On another side note, I've loaded Gillymoth's ruins and the adobe villages all spawn in just fine, maybe a bit too much which is only intended as a statement of it seems to work, just not for me.
And thanks for all the help so far, I've figured out more from the help I've gotten and from combing through the rules file a couple more times. Realized all 30 of my templates need rebuilding as I get over zealous thinking everything is golden just let them all spawn naturally and realize I missed something. But I'm really diggin' what I've got so far. Included an image of the Savanna build set for fun.
in the above spoilered text, every reference to ruinstrigger/testruin should be preceeded by the text for the commandblock, since the format of the rule is a list of blocks separated by a comma, and every commandblock holds exactly one command.
Also, in the /testruin command, the optional fourth argument after the X, Y, and Z, can be listed a number from 0 to 3 corresponding to the rotation of the ruin being "tested", which is useful in some circumstances.
Lastly, welcome to the Ruins forum, it's good for Ruins to have additional sets of content.
Also, in the /testruin command, the optional fourth argument after the X, Y, and Z, can be listed a number from 0 to 3 corresponding to the rotation of the ruin being "tested", which is useful in some circumstances.
@Gillymoth: sorry, bad copy and paste habits. What do you mean by rotation? Something similar to load order? I assume it requires a leading tilda like the other arguments?
Just to be clear, I'm a moron and had an error but fixed it, and now this works 3/3 times I tried it:
# Created by Ruins mod version 16.9 Ingame Parser # authoring Player: Thaylar
The first house will generate if I don't include a second command, but as soon as there is a comma and/or second command it fails to do anything. So I don't know what I'm doing wrong with the above. Although I did notice the command block spawns where I am instead of 10 x 10 blocks away. I guess I assumed the template spawn location would be the origin with the goal to simulate the above template that does work but allowing it more easily spawn in uneven terrain.
@Thaylar: "Rotation" in this case refers to a feature in Ruins wherein a template may be randomly spawned into the world either as-is, or else rotated 90, 180, or 270 degrees from its original orientation as specified in the template. When you spawn a template into the world via /testruin, this random factor is not employed, but you can optionally specify a rotation.
Example:
For illustrative purposes, let's imagine a template, called "Cabin01," which is basically a simple box house with a door that would normally open on the south side.
/testruin Cabin01 ~25 _ ~25 0
^^^ Should spawn "Cabin01" 25 spaces south and 25 spaces east from the point where this command was executed. Because of the "_" in the middle position (Y), it will be spawned at "ground level" rather than at a specific elevation. The "0" at the end indicates the default rotation -- and since that's the default, you'd get the same result if you simply left out the zero.
/testruin Cabin01 ~10 ~0 ~0 1
^^^ This should spawn "Cabin01" 10 spaces to the east of the place where the command was executed, at exactly the same elevation, regardless of where ground level is. The "1" means that it will be "rotated" 90 degrees, so the door will be facing the WEST. Any blocks with facing rules will be "rotated" 90 degrees, using the cross-reference provided in the "rotation mappings" file that's in the Ruins folder. So, if this house had stairs for a rooftop, then each one of those stair blocks will be replaced with the corresponding facing block that's rotated 90 degrees to the right, so it will still match up normally when the ENTIRE HOUSE is built at a 90 degree rotation. Hence, it's important for the Rotation_Mappings file to have information on things such as ladders, vines, doors, trap doors, furnaces, pumpkins, stairs, dispensers, signs, logs, bone blocks, hay blocks -- anything that, in game, will appear differently depending upon which way you're facing when you place it.
If the house was built using blocks added by mods that aren't covered in the rotation_mappings file, they will still appear at their normal "rotation," because Ruins isn't smart enough to know that they're "supposed" to be changed in any way.
/testruin Cabin01 ~ ~ ~ 2
^^^ This should spawn "Cabin01" right on top of wherever the command was executed. (In the case of a Command Block execution, it would likely overwrite that space.) The "2" at the end corresponds to rotating the template 180 degrees before spawning. So, although our imaginary template normally has a door opening on the south side, this will cause the blocks to be arranged in a way that the door will be on the NORTH side.
Note: Although they're covered by rotation_mappings, double doors do not always appear as intended when in a template that has been "rotated." This is because each block is "placed" by Ruins one at a time, and Minecraft meddles with door facing when placing doors. Buildings with double doors frequently have a problem with "reversed" doors (hinged in the middle!) when the template is rotated 90 degrees. For this reason, whenever I have a structure with double doors, I will typically PREVENT randomized rotation of the structure when it spawns in the world.
The list of blocks tells Ruins to spawn a single random choice from the list. This randomization makes the rule list and by extension /testruin a very powerful part of Ruins.
Everything after the ,0,100 in the above is a separate block, each spaced in the listing by a comma.
In your example, your first block was listed as CommandBlock, but after the comma, the second block was listed only as "ruinstrigger", which is a directive read by Ruins that is applied to the commandblock.
The words "CommandBlock" must be the first thing after any comma that needs that block to be a command block, as "ruinstrigger" is not a block.
So in the problem you listed, put "CommandBlock" in front of the instances of "ruinstrigger/testruin" that don't have it.
@xorange: I think you're on the right track. As a potential workaround, remove all nonexistent biome names from every template's biomesToSpawnIn list and see if that gets you past the first bunch of "problem loading the file" errors. Unfortunately, there's no guarantee that'll work, but it's the best you can do without changing the mod's code. There's a pretty good chance it will, though.
Technical details: Whether this workaround is successful or not depends on the IDs (integers) assigned to the three unnamed biomes, relative to all named biomes. If their ID values are higher than any biome listed in a template's biomesToSpawnIn list--and they probably are--it'll find a matching name before it ever encounters the problematic unnamed biomes, since the biome registry is scanned in ID order. Crisis averted! When the list contains a nonexistent biome name, however, the mod has to scan the entire registry before it knows that name can simply be ignored...thus one of the unnamed biomes will inevitably be hit, triggering the error. If removing nonexistent biome names from biomesToSpawnIn lists doesn't work, you'll have to either additionally remove any biomes with higher ID values from the lists, or reassign biome IDs. Yuck.
Don't worry about the three "error when loading the null ruins" errors; that just means it can't process folders associated with the unnamed biomes. Think of them more as warnings than errors, since there's no adverse effect on the functioning of Ruins.
Well, it does mean you won't be able to designate structures specific to these unnamed biomes, whatever they are. Ruins doesn't support unnamed biomes. My guess is generic ruins are still eligible to spawn in them, however. I can't be certain; I'm afraid I'm not familiar with the Arcana RPG mod.
Incidentally, the coral reef and kelp forest biomes come from Biomes O' Plenty; I presume you're using that mod. Oceanic abyss was also a BoP biome, but removed around the time the vanilla deep ocean biome was added. It looks like ocean oil field is added by a mod called BuildCraft. Ordinarily, having nonexistent biome names on biomesToSpawnIn lists (because you're not using certain other mods) isn't a problem--they'll just be ignored. The unnamed biomes, though, are causing the trouble, as AtomicStryker said.
Thanks for your help!
The problematic templates (in the default set) are actually located in the ocean & jungle folders. It doesn't seem to be a path related issue (though I did initially investigate that), but that's a very good alternative solution for me to keep in mind!
That's something I've been looking for! Thanks, I'll look through your old posts!
So far so good! Using this method I've resolved the issues with those 6 templates from the default set. Now I'm just down to those last three warnings, which, as you suggested, I won't worry about.
Now I'm going to embark on loading up some other sets, such as Gillymoth's, and see how that goes.
Thanks for the details! That's very interesting. I see exactly what you're saying.
So, for the record (and in case it helps), here's Arcana RPG's config file:
So there is a list of biome's, and I can even change IDs. However, as far as I understand it, the mod seems to be creating biomes that it isn't giving names to, thus also not putting in the config file. I can't manipulate the IDs because they're not in the config, and I can't give them names because I can't modify the mod's code.
The way Ruins is behaving makes perfect sense. Arcana adds a lot of content to our modpack, so I plan on keeping it. I wish it weren't causing an issue. It looks like my only option is to continue manually managing the biomesToSpawnIn entry in each template that uses it. That's actually really not that bad as long as it keeps working. Being that Arcana has the biome ID's set at the upper end of the range, I'm hopeful that the unnamed biomes are something like 247, 248, & 249.
Is there any way I can inventory biomes? Maybe a mod that generates a report? I'm curious about those mystery biomes.
I am indeed using Biomes O' Plenty. I believe I'm also using a few other mods that create new biomes as well. I'm probably lucky I'm not having more issues than this. lol
In case anyone is curious (or it's pertinent), here's our full mod-list for this pack:
It's probably worth noting that I did of course test this issue with Ruins extensively (i.e. without all other mods loaded, with some of the mods loaded), and can duplicate the issue with only Ruins and Arcana RPG installed.
For what it's worth, I love Ruins! I think this is an awesome mod, and if I run into an insurmountable incompatibility with another mod, the other one will have to go. My goal in troubleshooting this issue has been very specifically to ensure that I'm able to get the most out of Ruins.
I appreciate everyone's help!
Welp, I found the Anti ID Conflict mod, which revealed this about the Arcana RPG biomes:
Sigh. Looks like a silly mistake to me.
On the bright side, I've confirmed the IDs of the null biomes.
(Incidentally, also found some BoP biome IDs that were in conflict with Lots o Mobs, which I was able to resolve.)
@xorange: Just to be on the safe side, then, I'd change the biome ID assignments in the Arcana RPG config file so that the three unnamed biomes (apparently Sunset_Biome_Id, Montane_Biome_Id, and Herobrine_Dungeon_Biome_Id) are higher than all the rest. Unless you're making templates specifically for Arcana biomes, though, it doesn't really matter.
Certainly couldn't hurt! Done!
Is there a wiki/repository/tutorial guide of information on how to edit the template files? I found the template rules and Gilly's uh..tips and tricks?
I've tried searching the thread multiple times and I looked into reverse engineering Gilly's templates in order to use the adjacent_template function. but I'm not getting anywhere. From the information within the Ruins mod it doesn't say anything about using command blocks. I'm not familiar with command block usage so I don't know what Gilly's are doing or how to adapt the code to what I want it to do. Let alone Gilly's templates going like, 5 templates deep on the RUINSTRIGGERS let alone how many instances of the trigger there are in a single template.
I even tried manually going though each page. But is it just me or are the forums running incredibly slow today? Anyways, using: "adjacent_template=plains/ThaylarPlainsHouse1" results in a big fat nothing.
Also, does the preserve_plants function do anything? I tried both 1 and 0 and got plants in my structures either way. is there an inverse to the "preserveBlock" function? Or the forcing of air within a specific interior of a template.
Thanks.
PS: Thanks Gilly for the tips on blending the template into the landscape. I got them nearly seemless considering how big they are.
@Thaylar: Instead of "adjacent_template=plains/ThaylarPlainsHouse1", try:
That's almost certainly not what you want, but it'll get you closer. You'll have to adjust the three values that follow the template name to get the desired result. The first and third values (15 and 17, in this case) specify where, horizontally, the adjoining structure is placed relative to this one (+15 is 15 blocks east, +17 is 17 blocks south). The second value is a bit trickier--it's the maximum number of blocks the adjoining structure's vertical (up/down) position can differ from this one's (16 means up to 16 blocks higher or lower). The second value should never be negative. An optional fourth value is allowed:
The fourth value is the percentage chance the adjoining structure will spawn--in this example, 50%. If no chance is specified, the default is 100%.
There is no preserve_plants parameter; if you try setting a nonexistent parameter, it'll be silently ignored (just as adjacent_template was ignored). There was such a parameter at one time, but it's long since been removed. Plants are always preserved in the latest (Minecraft 1.12) version of Ruins. However, the concept of "preserved" only (by default) applies to rule0, a special air block that won't overwrite plants, webs, snow layers, water and ice (if preserve_water=1), or lava (if preserve_lava=1), intended primarily for surrounding exterior space. No other rules (again, by default) respect preserved blocks, so you simply need to create a separate "forced air" rule for your interior space:
@QuarterAnimal, Thanks for the information and for helping. (I forgot to include the x;y;z;% in my original post)
I don't know why but it doesn't get me anything. Does the template that is being called on need to have some sort of a tag? I've got 5 wells and no adjacent house, other than where it naturally spawned on the ground in the bottom of the image.
I copied and pasted your line, then I tried a few different x/z coordinates and changing the chance to ;100.0 but no dice. Here is the header part of the Well template that is calling for an adjacent template:
weight=1
embed_into_distance=8
acceptable_target_blocks=
unacceptable_target_blocks=flowing_water,water,flowing_lava,lava
dimensions=16,7,7
allowable_overhang=0
max_leveling=2
leveling_buffer=0
preserve_water=0
preserve_lava=0
adjoining_template=plains/ThaylarPlainsHouse1;30;16;30
House template that is being called on:
weight=1
embed_into_distance=6
acceptable_target_blocks=
unacceptable_target_blocks=flowing_water,water,flowing_lava,lava
dimensions=22,23,31
allowable_overhang=0
max_leveling=2
leveling_buffer=-1
preserve_water=0
preserve_lava=0
I'll have to try the forcing air trick again. I filled a tower with sand using worldedit replacing all the air, then specified that rule as "air". I'll try it again tomorrow with "preserveBlock" instead as it naturally fell down to the 4th or 5th rule.
Welp, despite working perfectly, that got old fast. I loaded in Jordan_Peacock's Adventure templates, wherein he included a LOT of biomes that don't exist in my world, which was turning into a huge amount of work. I got tired of manually finding & removing them pretty quick. I actually just ended up modifying the Ruins FileHandler class to dodge the last three biomes in the biome array. Being that I was able to stick those null biomes at the end of the array, it worked exactly as intended.
@Thaylar: It looks like you're manually spawning the wells while flying around in creative mode. The problem could be as simple as Ruins not being able to find a suitable build location for the adjoining house when the wells are so far (namely, more than 16 blocks) above the ground. I'm guessing you're spawning wells with a command like:
Try instead using the slightly different command while flying to force the well onto the ground:
Just to be clear, those last six characters are space, tilde, space, underscore, space, tilde. The well should spawn on the ground beneath you, and hopefully a house will spawn nearby. "~ _ ~" means use your current X and Z coordinates, and Ruins gets to pick Y (usually ground level). If that works, there's nothing wrong with your templates, and they should naturally spawn just fine.
When you manually spawn a structure (the well, in this case), Ruins ignores any constraints imposed by that template, such as acceptable/unacceptable target blocks, max leveling, and allowable overhang. However, any adjoining templates do observe their own specified constraints, and will not spawn if those constraints are not met. Because you have allowable_overhang=0 for both wells and houses, neither can naturally spawn up in the air. You'll only get a sky house if you spawn it directly, not via an adjoining template reference.
@QuarterAnimal: Ah okay. I had experimented with my flawed scientific method but had also checked many naturally spawning wells.
Okay, I finally got it working on a hit or miss basis for natural spawns. More miss on the fact it spawns the Well in uh...less than ideal places. I figured out that any distance closer than 15 and it won't spawn. I am assuming the templates are colliding? I do have rather large pyramids everything is sitting on.
How does ruins decide which block in the adjoining template is going to be the spawn point?
The best I can offer there is that if I could get a list of biomes you DO use, and which version of MC/Ruins you're using (1.7.10, 1.8, etc.), I could work on going through and making a version of the templates with a trimmed-down biomesToSpawnIn list. (Oh yeah, and it'd also help if I could find out whether you'd want the Command Block templates or for some reason you need all Command Blocks excluded. That was an issue a while back, hence my splitting of my templates into "CB" and "NOCB" versions. The "peaceful"/"adventure" split is because some folks just want a few decorative elements added to the landscape -- no monster spawners or traps.)
Under normal circumstances, there's no harm in listing nonexistent biomes (in any given modpack installation), so I err on the side of inclusion. Any time my friends set up a new modpack server, if there's some new biome I hadn't encountered before, I try to "populate" it by adding that biome name to whatever templates seem appropriate, since we don't go with the "generic" biome templates. This is the first I've ever heard of that causing a problem.
--- 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)
Thank you so much, Jordan! That's extremely helpful of you and I appreciate it. However, I don't think it's necessary.
I'm currently using 1.7.10 Adventure NOCB and I'm really liking this set.
Other than a couple minor odd issues, I think I've hacked it all into cooperation. haha
It totally makes sense to err on the side of inclusion, and indeed it shouldn't ever cause a problem, if things are functioning properly.
What we found is that there's a bug in the Arcana RPG mod that results in three biomes with no proper names.
When it comes to Ruins' functionality, this causes any templates with nonexistent biomes to not load properly.
My understanding is that as it traverses the biome array looking for each one, it hits the null biomes and freaks out, as intended.
I think I know what's wrong with Arcana RPG, but it's not open source, and modifying it would be somewhat cumbersome as far as I can tell.
On the bright side, its config allows me to assign IDs to the biomes, so I just stuck them at the end of the list.
I then just modified the Ruins FileHandler so that it stops looking for biomes right before the end of the array.
It seems to be working! No more errors when a template has a nonexistent biome in its list, and all templates seem to be loading. Confirmed via RuinsPositionsFile.txt and a good deal of TPing.
I have yet to modify your templates by hand to match my available biomes, but between your default biomesToSpawnIn lists (as they match my biomes), Ruins' generics and more, and quite a few structures being created by Recurrent Complex, our world is pretty active with a lot to do!
I'll probably sit down this week and tweak the biomesToSpawnIn lists a bit.
Again, thank you! If I do need any help I'll let you know.
What causes incomplete template rendering? Seems to be completely hit or miss. I probably did /testruin a combined 30 times of this template with 4 command blocks all spawning the same house, or a different house on a flattened piece of grass to ensure no terrain generating issues. It wouldn't be a problem if it failed to generate a template due to the rules and the command block disappeared (which also happens in natural generation), but the command block remaining means the commands stalled out? It seems to be completely random as to which of the 4 houses will spawn, but I can't have command blocks littering the world.
I was trying to experiment with custom village generation, but I couldn't seem to get this working hence the above template of four command blocks running one command rather than one command block running four commands.
This command block line works:
rule1=0,100,CommandBlock:RUINSTRIGGER /testruin thaylar/ThaylarHGenE ~10 ~ ~10:@
Neither of these work for me (space after the comma being the difference) although the command block disappears so it is doing something:
rule1=0,100,CommandBlock:RUINSTRIGGER /testruin thaylar/ThaylarHGenE ~10 ~ ~10:@, RUINSTRIGGER /testruin thaylar/ThaylarHGenE ~-10 ~ ~-10:@
rule1=0,100,CommandBlock:RUINSTRIGGER /testruin thaylar/ThaylarHGenE ~10 ~ ~10:@,RUINSTRIGGER /testruin thaylar/ThaylarHGenE ~-10 ~ ~-10:@
On a side note, those house templates are 9kb a piece. Which I think is reasonable? It doesn't seem to have any problem generating 300+ kb templates across the landscape naturally, but I'm not calling for those to generate on command and maybe that's the difference. And it does work, there's a failed natural generation attempt and a completely successful natural generation (the only one that has ever completed all 4 houses).
Are both of these issues related to the same problem? On another side note, I've loaded Gillymoth's ruins and the adobe villages all spawn in just fine, maybe a bit too much which is only intended as a statement of it seems to work, just not for me.
And thanks for all the help so far, I've figured out more from the help I've gotten and from combing through the rules file a couple more times. Realized all 30 of my templates need rebuilding as I get over zealous thinking everything is golden just let them all spawn naturally and realize I missed something. But I'm really diggin' what I've got so far. Included an image of the Savanna build set for fun.
in the above spoilered text, every reference to ruinstrigger/testruin should be preceeded by the text for the commandblock, since the format of the rule is a list of blocks separated by a comma, and every commandblock holds exactly one command.
Also, in the /testruin command, the optional fourth argument after the X, Y, and Z, can be listed a number from 0 to 3 corresponding to the rotation of the ruin being "tested", which is useful in some circumstances.
Lastly, welcome to the Ruins forum, it's good for Ruins to have additional sets of content.
Gillymoth Structures for Ruins <<< Folder containing my Structure-sets for Ruins mod.
@Gillymoth: sorry, bad copy and paste habits. What do you mean by rotation? Something similar to load order? I assume it requires a leading tilda like the other arguments?
Just to be clear, I'm a moron and had an error but fixed it, and now this works 3/3 times I tried it:
# Created by Ruins mod version 16.9 Ingame Parser
# authoring Player: Thaylar
weight=1
embed_into_distance=0
acceptable_target_blocks=
unacceptable_target_blocks=flowing_water,water,flowing_lava,lava
dimensions=1,31,30
allowable_overhang=0
max_leveling=10
leveling_buffer=-1
preserve_water=0
preserve_lava=0
preventRotation=1
rule1=0,100,minecraft:preserveBlock
rule2=0,100,CommandBlock:RUINSTRIGGER /testruin thaylar/thaylarhgenE ~0 ~ ~0:@
rule3=0,100,CommandBlock:RUINSTRIGGER /testruin thaylar/thaylarhgenS ~0 ~ ~0:@
rule4=0,100,CommandBlock:RUINSTRIGGER /testruin thaylar/thaylarhgenW ~0 ~ ~0:@
rule5=0,100,CommandBlock:RUINSTRIGGER /testruin thaylar/thaylarhgenN ~0 ~ ~0:@
layer
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1
endlayer
This on the other hand, regardless of if I have a space after the comma or not, does not work 100% of the time:
# Created by Ruins mod version 16.9 Ingame Parser
# authoring Player: Thaylar
weight=1
embed_into_distance=0
acceptable_target_blocks=
unacceptable_target_blocks=flowing_water,water,flowing_lava,lava
dimensions=1,1,1
allowable_overhang=0
max_leveling=2
leveling_buffer=0
preserve_water=0
preserve_lava=0
preserve_rotation=1
rule1=0,100,CommandBlock:RUINSTRIGGER /testruin thaylar/thaylarhgenE ~10 ~ ~10:@, RUINSTRIGGER /testruin thaylar/thaylarhgenE ~-10 ~ ~-10:@
layer
1
endlayer
The first house will generate if I don't include a second command, but as soon as there is a comma and/or second command it fails to do anything. So I don't know what I'm doing wrong with the above. Although I did notice the command block spawns where I am instead of 10 x 10 blocks away. I guess I assumed the template spawn location would be the origin with the goal to simulate the above template that does work but allowing it more easily spawn in uneven terrain.
@Thaylar: "Rotation" in this case refers to a feature in Ruins wherein a template may be randomly spawned into the world either as-is, or else rotated 90, 180, or 270 degrees from its original orientation as specified in the template. When you spawn a template into the world via /testruin, this random factor is not employed, but you can optionally specify a rotation.
Example:
For illustrative purposes, let's imagine a template, called "Cabin01," which is basically a simple box house with a door that would normally open on the south side.
/testruin Cabin01 ~25 _ ~25 0
^^^ Should spawn "Cabin01" 25 spaces south and 25 spaces east from the point where this command was executed. Because of the "_" in the middle position (Y), it will be spawned at "ground level" rather than at a specific elevation. The "0" at the end indicates the default rotation -- and since that's the default, you'd get the same result if you simply left out the zero.
/testruin Cabin01 ~10 ~0 ~0 1
^^^ This should spawn "Cabin01" 10 spaces to the east of the place where the command was executed, at exactly the same elevation, regardless of where ground level is. The "1" means that it will be "rotated" 90 degrees, so the door will be facing the WEST. Any blocks with facing rules will be "rotated" 90 degrees, using the cross-reference provided in the "rotation mappings" file that's in the Ruins folder. So, if this house had stairs for a rooftop, then each one of those stair blocks will be replaced with the corresponding facing block that's rotated 90 degrees to the right, so it will still match up normally when the ENTIRE HOUSE is built at a 90 degree rotation. Hence, it's important for the Rotation_Mappings file to have information on things such as ladders, vines, doors, trap doors, furnaces, pumpkins, stairs, dispensers, signs, logs, bone blocks, hay blocks -- anything that, in game, will appear differently depending upon which way you're facing when you place it.
If the house was built using blocks added by mods that aren't covered in the rotation_mappings file, they will still appear at their normal "rotation," because Ruins isn't smart enough to know that they're "supposed" to be changed in any way.
/testruin Cabin01 ~ ~ ~ 2
^^^ This should spawn "Cabin01" right on top of wherever the command was executed. (In the case of a Command Block execution, it would likely overwrite that space.) The "2" at the end corresponds to rotating the template 180 degrees before spawning. So, although our imaginary template normally has a door opening on the south side, this will cause the blocks to be arranged in a way that the door will be on the NORTH side.
Note: Although they're covered by rotation_mappings, double doors do not always appear as intended when in a template that has been "rotated." This is because each block is "placed" by Ruins one at a time, and Minecraft meddles with door facing when placing doors. Buildings with double doors frequently have a problem with "reversed" doors (hinged in the middle!) when the template is rotated 90 degrees. For this reason, whenever I have a structure with double doors, I will typically PREVENT randomized rotation of the structure when it spawns in the world.
--- 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)
@Thaylar, seeing as you posted the problem you are having a second time, Ill repeat what I said in the above post, trying to be as clear as possible:
A rule consists of a potential list of blocks, like this:
rule1=0,100,sponge-0,diamond_ore-0,lapis_block-0,gold_block-0,emerald_block-0,iron_block-0,coal_block-0,gold_ore-0,redstone_ore-0,lapis_ore-0,emerald_ore-0,lapis_block-0,gold_block-0,gold_ore-0,redstone_ore-0,lapis_ore-0,emerald_ore-0
The list of blocks tells Ruins to spawn a single random choice from the list. This randomization makes the rule list and by extension /testruin a very powerful part of Ruins.
Everything after the ,0,100 in the above is a separate block, each spaced in the listing by a comma.
In your example, your first block was listed as CommandBlock, but after the comma, the second block was listed only as "ruinstrigger", which is a directive read by Ruins that is applied to the commandblock.
The words "CommandBlock" must be the first thing after any comma that needs that block to be a command block, as "ruinstrigger" is not a block.
So in the problem you listed, put "CommandBlock" in front of the instances of "ruinstrigger/testruin" that don't have it.
Gillymoth Structures for Ruins <<< Folder containing my Structure-sets for Ruins mod.
Or, to be absolutely clear on the syntax:
--- 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)