After restarting the game spam in the log disappears. Name of world - " world." This error occurs by accident, the month was not at all))
Do you only see these errors when you start a new world? When you do see them (and exit Minecraft), is there a RuinsPositionsFile.txt file in the world folder (saves/world, probably) and each of its DIMxxx subfolders (DIM1, DIM-1, and possibly others, depending on what other mods you're using)?
If the answers to both of these is да, then I think I know what's going on, and you can ignore these logged errors--they're annoying, but nothing bad is happening as a result. If one or more of the RuinsPositionsFile.txt files is missing, though, I'm more concerned; that's how Ruins remembers where it spawned things, and the problem is of higher priority. If you see the errors even when you play in an already existing world, I'm stumped.
Are you trying to set it to zero, perhaps? Ruins has always interpreted uniqueMinDistance=0 (the default) as meaning no unique minimum distance is specified, so it falls back to using the global templateInstancesMinDistance setting instead. Try setting uniqueMinDistance=1 and see if that works as expected. If you really want it to be zero--and I can't think of any compelling reason why zero can't be a valid setting, aside from historical convention--Ruins will have to be modified to support it. Shouldn't be difficult.
That's the only "trick" I know of. If you're not trying to set it to zero, or setting it to one doesn't have the expected result, you're onto a bigger issue.
EDIT: It's also possible, if uniqueMinDistance is non-zero but significantly less than anyRuinsMinDistance, everything is working fine; it just looks like the template setting is being ignored because other spawned structures are forcing instances further apart. There should still be cases where two instances occur close together, but depending on how many other templates you're using and how likely they spawn, such cases might be exceedingly rare. A relatively simple way to test that theory is to generate a world with your template as the only template, and see how far apart they spawn.
One trend in the latest releases of Minecraft is toward stricter JSON compliance. Ruins was changed in 17.2 to support this, as its original JSON parser was a bit dated and would choke in certain situations, such as when a text string contains a right brace. As a result, though, template files may have to be updated to work with this latest version. Namely, if a template contains a rule like this...
...otherwise, you'll get a whole slew of "unbalanced nesting" errors and the template won't load. The rule is: quotes should only be escaped if they appear inside a quoted string, where Minecraft itself requires. The 17.2 version of /parseruin generates templates accordingly. Unfortunately, this can't be relaxed to provide backward template compatibility without losing current and future functionality, since there's no reliable way to distinguish between intentionally-escaped quotes and incorrectly-escaped quotes.
Incidentally, the latest version of /parseruin also knocks out the x, y, and z attributes of teBlock JSON specifications, possibly leading to more compact rulesets, as noted by Jordan_Peacock a while back. You don't have to fix that if you don't want to--it won't cause errors--but it could mean you have more rules than you need.
Did you try a test world with all other templates removed? I did a bit of experimenting on my own, and everything seems to be working as intended. Since I'm not able to duplicate the issue, I'd have to see the template and configuration files you're using to troubleshoot any further.
It was actually a misunderstanding on my part. I thought "uniqueMinDistance" did something else, but I see my error now.
I would like to suggest a per-ruin override for "anyRuinsMinDistance". It would be useful for situations where you want ruins to be more prevalent in a specific biome.
On another note, is there anything wrong with just putting all your ruins files in generic and using "biomeTypesToSpawnIn" and "biomesToNotSpawnIn" to control spawning as opposed to breaking files up into the biome folders?
I would like to suggest a per-ruin override for "anyRuinsMinDistance". It would be useful for situations where you want ruins to be more prevalent in a specific biome.
Such a setting is problematic, for reasons that may not be immediately obvious. For one thing, the parameter would only specify how close a template can spawn near its neighbors, not how close it will spawn. If all other templates in the vicinity insist on a distance from them of, say, 64 blocks, having a minimum distance setting of 16 has no effect whatsoever. You'd have to have a group of several templates with lower override values for the setting to be meaningful...which would lead to another problem.
The way Ruins distributes instances of templates, the allowed distance between spawns is a factor in how frequently a particular template spawns at all. If there's a set of templates with lower minimum distances, you'd wind up with vast areas containing only those templates; templates with higher minimum distances would be exceedingly rare. True, one could carefully confine the effect to particular biomes, but it'd be incredibly fragile.
If this is a desired feature, I don't think it can be accomplished with just an anyRuinsMinDistance template override, not without overhauling the current Ruins worldgen code. Maybe biome-specific parameters could be a workaround.
On another note, is there anything wrong with just putting all your ruins files in generic and using "biomeTypesToSpawnIn" and "biomesToNotSpawnIn" to control spawning as opposed to breaking files up into the biome folders?
Well...no, but it'll take a bit of finessing to get right. The settings of biomesToSpawnIn, biomeTypesToSpawnIn, and biomesToNotSpawnIn have no bearing on generic spawning; if you set these in a generic template, it'll be eligible for both generic and biome-specific spawning, which probably isn't what you want. However, if you set the specific_xxx configuration settings to 100 for all biomes, generic spawning is essentially turned off, and you'll achieve the desired result.
Along those lines, a better idea might be to use the void biome folder as your template dumping ground instead of generic, since the void biome won't appear anywhere in your world unless you explicitly put it there, and you won't have to muck with configuration settings.
Thanks! One more question: has anyone messed me getting mobspawners to spawn NPC's in ruins? Or in other words, is there anyway to get the parser to read NBT data on mob spawners?
EDIT: Oh, wait...that's probably not what you asked. When I hear "parser," I think the thing what parses template files. You likely meant the /parseruin command. To parse in-world blocks as teBlocks, add block IDs to the teblocks list in the config file ruins.txt:
teblocks=mob_spawner
When changing config files for an existing world, make sure you edit the one(s) in the world's save folder, not the one in the config folder. You'll also need to restart to apply the new config settings.
So I think the NBT tag might be too long and complex for it to parse. It gets read just fine but when I test it the mob spawner doesn't even appear. Here's the NBT data it recorded and here's what the server log said when I tried to parse it.
So I think the NBT tag might be too long and complex for it to parse.
Nope. Ruins should be able to handle even brobdingnagian NBT specs like that. You found a legitimate bug. To the extent a bug can be legitimate. Thanks!
Brilliant! I wish I'd thought of that on my own. For the longest time, I've been using Command Blocks to spawn custom Mob Spawners (e.g., more than just generic "Skeleton" or "Zombie" -- with special equipment, or other specs), and it didn't occur to me that the teBlock could be used to accomplish the same thing with less fuss. (In particular, since RUINSTRIGGER Command Blocks "self-destruct" after executing, I can't simply spawn the Mob Spawner in the same location to overwrite the Command Block -- because if I do, it will be promptly overwritten after RUINSTRIGGER finishes. Oops! So instead I end up having the Command Block directly above or below the desired location for the custom Mob Spawner, and modify the target position accordingly.)
Nope. Ruins should be able to handle even brobdingnagian NBT specs like that. You found a legitimate bug. To the extent a bug can be legitimate. Thanks!
Does anyone know of a way to have RUINSTRIGGER detect the player from a greater distance ?
RUINSTRIGGER fires when a player gets within about 72 blocks; that's hardcoded. Check out post 4505 for an alternative to RUINSTRIGGER you may find more appropriate. It works in the latest version of Ruins.
Does anyone know of a way to have RUINSTRIGGER detect the player from a greater distance ?
In the particular case of a village, another possibility would be to make use of adjoining templates. In the standard Ruins.ZIP installation, in the /templateparser folder there should be a template called 143test.tml that is a good demonstration of the adjoining_template functionality, by calling the "adjtest.tml" template multiple times in relation to the heart of the 143 structure.
Unfortunately, it lacks the sort of randomization that could be achieved by doing this with Command Blocks, so a village spawned in this way will tend to spawn in a very *particular* way -- the "randomization" factor mostly dependent upon the terrain itself (i.e., some buildings might not spawn because the build routine doesn't find a "valid" build location in that particular spot -- so instead of a barn, you might just have a pool of water that prevented the construction).
This isn't necessarily proof against "KABOOM" village-spawning, if you spread out too far. I made an extreme version of my "bedrock rail" template that extends a railway north/south or east/west out to a considerable distance, and there's absolutely nothing stopping it from building well into existing (previously generated) territory. When I ran a test-server for a while, and Gillymoth was kind enough to sign on to help try things out, the extreme version of my bedrock rail ended up cutting right through Gilly's bedrock-level mining operation once it spawned, over 1000 blocks away. (Oops!)
Luckily the auto-tunnel didn't overwrite anything other than a 1x2 tunnel and came through a few blocks from the staircase up, so it added to the world, the only problem it caused was when it marked a large number of new chunks for decoration, which minecraft diligently spools up into a queue and switches over into generating them, along with any other random structures that each individual chunk gets, including vanilla trees. In extreme cases the generation creates a continuous blanket over the worldmap, and minecraft doesn't switch the decoration off until it finds a stopping place.
Anyway, when something breaks the game in some way it's good to outline the cause as closely as we can so we can avoid making more things like it and avoid putting them into the general population as well.
It is a lot of fun to make entire cities auto-generate all at once, and I've had great success especially with my swamp/river city, getting all the parts to appear as randomly and naturally as possible without making it too heavy on the decorator. On several occasions I've plotted various fibonacci-style sunflower distributions in order to make my cities look more realistic. One of the most important things is having a ton of different parts to choose from and keeping them from repeating in an obvious or artificial way.
My swamp villages would create accidental footpaths winding around and through the houses, just with careful spacing and creative part building. It still kept a good amount of water accessible for boating under and between them, while anchoring all the buildings with a solid foundation.
OK, I know I'm doing something wrong here, because clearly you all have found ways to get things to spawn consistently. I have
"templateInstancesMinDistance=256" and "anyRuinsMinDistance=64" but I'm still getting big blank spots and then a bunch of ruins spawned all on top of each other. A lot of times it's even 2-3 of the same ruin. I know it's not because they can't find a good place to spawn because the biome is relatively flat and they also have high max-leveling values (between 5 and 7). How do I stop this? it's like they're behaving like I set them up to be adjacent.
It looks like this was patched in on the github but the mod hasn't been updated yet. Did it not work?
It works, and (I presume) will be part of the Ruins 17.3 release...when there's a Ruins 17.3 release. AtomicStryker owns the mod and makes the call as to when a new release is warranted. Until then, you can always pull the latest code and build your own bleeding-edge jar, at least for template development and testing purposes.
OK, I know I'm doing something wrong here, because clearly you all have found ways to get things to spawn consistently. I have
"templateInstancesMinDistance=256" and "anyRuinsMinDistance=64" but I'm still getting big blank spots and then a bunch of ruins spawned all on top of each other. A lot of times it's even 2-3 of the same ruin. I know it's not because they can't find a good place to spawn because the biome is relatively flat and they also have high max-leveling values (between 5 and 7). How do I stop this? it's like they're behaving like I set them up to be adjacent.
First, it sure doesn't look like anyRuinsMinDistance=64 in that first picture--seems more like 0 or 1. Are you sure you're getting that value from the right configuration file? That's an easy trap to fall for, especially if you've got modded dimensions. Every dimension has its own Ruins configuration file. So, if you're working in dimension 3, for example, you want to look at the settings in world/DIM3/ruins.txt, not world/ruins.txt or config/ruins.txt.
First, it sure doesn't look like anyRuinsMinDistance=64 in that first picture--seems more like 0 or 1. Are you sure you're getting that value from the right configuration file? That's an easy trap to fall for, especially if you've got modded dimensions. Every dimension has its own Ruins configuration file. So, if you're working in dimension 3, for example, you want to look at the settings in world/DIM3/ruins.txt, not world/ruins.txt or config/ruins.txt.
Yeah it's definitely from the right folder. Here's a full copy of the settings: https://pastebin.com/PcEPPYXy . I can also provide a link to the pack it's on so you can see it in action.
Unbalanced nesting in Ruins template JG_MegaCreeper_1v12.tml, offending rule: 0,100,IInventory;minecraft:chest;minecraft:concrete_powder#4#15#1+minecraft:gunpowder#12#0#4+minecraft:spawn_egg#{EntityTag:{id:\"minecraft:creeper\"}}#0#9+minecraft:tnt#16#0#15+minecraft:tnt#16#0#20+minecraft:concrete_powder#4#13#22+minecraft:concrete_powder#4#7#26-3
Also, if possible, explain what is unbalanced nesting in this context?
I have also had the same error on the other template(K10_CastleCottage_01_1v12), I have just replaced the whole rule with a cobblestone and there were no errors. I want to know if I can actually fix this without losing any authors blocks. This is the pack I have downloaded from http://greywolf.critter.net/minecraft.htm (ADVENTURE LITE
(Adventure + NO CB))
My game crashed a couple of times and this(and then related errors after this, they al point to the ruins template) was the only error in the log. I can just remove the template, but I am curious. Thank you.
Do you only see these errors when you start a new world? When you do see them (and exit Minecraft), is there a RuinsPositionsFile.txt file in the world folder (saves/world, probably) and each of its DIMxxx subfolders (DIM1, DIM-1, and possibly others, depending on what other mods you're using)?
If the answers to both of these is да, then I think I know what's going on, and you can ignore these logged errors--they're annoying, but nothing bad is happening as a result. If one or more of the RuinsPositionsFile.txt files is missing, though, I'm more concerned; that's how Ruins remembers where it spawned things, and the problem is of higher priority. If you see the errors even when you play in an already existing world, I'm stumped.
It's set to 16.
One trend in the latest releases of Minecraft is toward stricter JSON compliance. Ruins was changed in 17.2 to support this, as its original JSON parser was a bit dated and would choke in certain situations, such as when a text string contains a right brace. As a result, though, template files may have to be updated to work with this latest version. Namely, if a template contains a rule like this...
rule1=0,100,teBlock;minecraft:flower_pot;{Item:\"minecraft:sapling\",Data:1,id:\"minecraft:flower_pot\"}-0
...it'll have to be modified to unescape the quotes (i.e., remove the backslashes), as in...
rule1=0,100,teBlock;minecraft:flower_pot;{Item:"minecraft:sapling",Data:1,id:"minecraft:flower_pot"}-0
...otherwise, you'll get a whole slew of "unbalanced nesting" errors and the template won't load. The rule is: quotes should only be escaped if they appear inside a quoted string, where Minecraft itself requires. The 17.2 version of /parseruin generates templates accordingly. Unfortunately, this can't be relaxed to provide backward template compatibility without losing current and future functionality, since there's no reliable way to distinguish between intentionally-escaped quotes and incorrectly-escaped quotes.
Incidentally, the latest version of /parseruin also knocks out the x, y, and z attributes of teBlock JSON specifications, possibly leading to more compact rulesets, as noted by Jordan_Peacock a while back. You don't have to fix that if you don't want to--it won't cause errors--but it could mean you have more rules than you need.
Did you try a test world with all other templates removed? I did a bit of experimenting on my own, and everything seems to be working as intended. Since I'm not able to duplicate the issue, I'd have to see the template and configuration files you're using to troubleshoot any further.
It was actually a misunderstanding on my part. I thought "uniqueMinDistance" did something else, but I see my error now.
I would like to suggest a per-ruin override for "anyRuinsMinDistance". It would be useful for situations where you want ruins to be more prevalent in a specific biome.
On another note, is there anything wrong with just putting all your ruins files in generic and using "biomeTypesToSpawnIn" and "biomesToNotSpawnIn" to control spawning as opposed to breaking files up into the biome folders?
Such a setting is problematic, for reasons that may not be immediately obvious. For one thing, the parameter would only specify how close a template can spawn near its neighbors, not how close it will spawn. If all other templates in the vicinity insist on a distance from them of, say, 64 blocks, having a minimum distance setting of 16 has no effect whatsoever. You'd have to have a group of several templates with lower override values for the setting to be meaningful...which would lead to another problem.
The way Ruins distributes instances of templates, the allowed distance between spawns is a factor in how frequently a particular template spawns at all. If there's a set of templates with lower minimum distances, you'd wind up with vast areas containing only those templates; templates with higher minimum distances would be exceedingly rare. True, one could carefully confine the effect to particular biomes, but it'd be incredibly fragile.
If this is a desired feature, I don't think it can be accomplished with just an anyRuinsMinDistance template override, not without overhauling the current Ruins worldgen code. Maybe biome-specific parameters could be a workaround.
Well...no, but it'll take a bit of finessing to get right. The settings of biomesToSpawnIn, biomeTypesToSpawnIn, and biomesToNotSpawnIn have no bearing on generic spawning; if you set these in a generic template, it'll be eligible for both generic and biome-specific spawning, which probably isn't what you want. However, if you set the specific_xxx configuration settings to 100 for all biomes, generic spawning is essentially turned off, and you'll achieve the desired result.
Along those lines, a better idea might be to use the void biome folder as your template dumping ground instead of generic, since the void biome won't appear anywhere in your world unless you explicitly put it there, and you won't have to muck with configuration settings.
Thanks! One more question: has anyone messed me getting mobspawners to spawn NPC's in ruins? Or in other words, is there anyway to get the parser to read NBT data on mob spawners?
You have full control of any tile entity (i.e., specify NBT data) when using a teBlock block. Roll your own mob spawner with, for example:
rule1=0,100,teBlock;mob_spawner;{SpawnPotentials:[{Entity:{id:"cave_spider"},Weight:1},{Entity:{id:"spider"},Weight:2}],SpawnCount:3,SpawnRange:2,MinSpawnDelay:100,MaxSpawnDelay:200,Delay:-1}
EDIT: Oh, wait...that's probably not what you asked. When I hear "parser," I think the thing what parses template files. You likely meant the /parseruin command. To parse in-world blocks as teBlocks, add block IDs to the teblocks list in the config file ruins.txt:
teblocks=mob_spawner
When changing config files for an existing world, make sure you edit the one(s) in the world's save folder, not the one in the config folder. You'll also need to restart to apply the new config settings.
So I think the NBT tag might be too long and complex for it to parse. It gets read just fine but when I test it the mob spawner doesn't even appear. Here's the NBT data it recorded and here's what the server log said when I tried to parse it.
Nope. Ruins should be able to handle even brobdingnagian NBT specs like that. You found a legitimate bug. To the extent a bug can be legitimate. Thanks!
EDIT: Fix submitted.
Brilliant! I wish I'd thought of that on my own. For the longest time, I've been using Command Blocks to spawn custom Mob Spawners (e.g., more than just generic "Skeleton" or "Zombie" -- with special equipment, or other specs), and it didn't occur to me that the teBlock could be used to accomplish the same thing with less fuss. (In particular, since RUINSTRIGGER Command Blocks "self-destruct" after executing, I can't simply spawn the Mob Spawner in the same location to overwrite the Command Block -- because if I do, it will be promptly overwritten after RUINSTRIGGER finishes. Oops! So instead I end up having the Command Block directly above or below the desired location for the custom Mob Spawner, and modify the target position accordingly.)
Anyway, thanks so much for the idea.
--- 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)
It looks like this was patched in on the github but the mod hasn't been updated yet. Did it not work?
RUINSTRIGGER fires when a player gets within about 72 blocks; that's hardcoded. Check out post 4505 for an alternative to RUINSTRIGGER you may find more appropriate. It works in the latest version of Ruins.
In the particular case of a village, another possibility would be to make use of adjoining templates. In the standard Ruins.ZIP installation, in the /templateparser folder there should be a template called 143test.tml that is a good demonstration of the adjoining_template functionality, by calling the "adjtest.tml" template multiple times in relation to the heart of the 143 structure.
Unfortunately, it lacks the sort of randomization that could be achieved by doing this with Command Blocks, so a village spawned in this way will tend to spawn in a very *particular* way -- the "randomization" factor mostly dependent upon the terrain itself (i.e., some buildings might not spawn because the build routine doesn't find a "valid" build location in that particular spot -- so instead of a barn, you might just have a pool of water that prevented the construction).
This isn't necessarily proof against "KABOOM" village-spawning, if you spread out too far. I made an extreme version of my "bedrock rail" template that extends a railway north/south or east/west out to a considerable distance, and there's absolutely nothing stopping it from building well into existing (previously generated) territory. When I ran a test-server for a while, and Gillymoth was kind enough to sign on to help try things out, the extreme version of my bedrock rail ended up cutting right through Gilly's bedrock-level mining operation once it spawned, over 1000 blocks away. (Oops!)
--- 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)
Luckily the auto-tunnel didn't overwrite anything other than a 1x2 tunnel and came through a few blocks from the staircase up, so it added to the world, the only problem it caused was when it marked a large number of new chunks for decoration, which minecraft diligently spools up into a queue and switches over into generating them, along with any other random structures that each individual chunk gets, including vanilla trees. In extreme cases the generation creates a continuous blanket over the worldmap, and minecraft doesn't switch the decoration off until it finds a stopping place.
Anyway, when something breaks the game in some way it's good to outline the cause as closely as we can so we can avoid making more things like it and avoid putting them into the general population as well.
It is a lot of fun to make entire cities auto-generate all at once, and I've had great success especially with my swamp/river city, getting all the parts to appear as randomly and naturally as possible without making it too heavy on the decorator. On several occasions I've plotted various fibonacci-style sunflower distributions in order to make my cities look more realistic. One of the most important things is having a ton of different parts to choose from and keeping them from repeating in an obvious or artificial way.
My swamp villages would create accidental footpaths winding around and through the houses, just with careful spacing and creative part building. It still kept a good amount of water accessible for boating under and between them, while anchoring all the buildings with a solid foundation.
Gillymoth Structures for Ruins <<< Folder containing my Structure-sets for Ruins mod.
OK, I know I'm doing something wrong here, because clearly you all have found ways to get things to spawn consistently. I have
"templateInstancesMinDistance=256" and "anyRuinsMinDistance=64" but I'm still getting big blank spots and then a bunch of ruins spawned all on top of each other. A lot of times it's even 2-3 of the same ruin. I know it's not because they can't find a good place to spawn because the biome is relatively flat and they also have high max-leveling values (between 5 and 7). How do I stop this? it's like they're behaving like I set them up to be adjacent.
It works, and (I presume) will be part of the Ruins 17.3 release...when there's a Ruins 17.3 release. AtomicStryker owns the mod and makes the call as to when a new release is warranted. Until then, you can always pull the latest code and build your own bleeding-edge jar, at least for template development and testing purposes.
First, it sure doesn't look like anyRuinsMinDistance=64 in that first picture--seems more like 0 or 1. Are you sure you're getting that value from the right configuration file? That's an easy trap to fall for, especially if you've got modded dimensions. Every dimension has its own Ruins configuration file. So, if you're working in dimension 3, for example, you want to look at the settings in world/DIM3/ruins.txt, not world/ruins.txt or config/ruins.txt.
Yeah it's definitely from the right folder. Here's a full copy of the settings: https://pastebin.com/PcEPPYXy . I can also provide a link to the pack it's on so you can see it in action.
Hello. What does this error mean?
Also, if possible, explain what is unbalanced nesting in this context?
I have also had the same error on the other template(K10_CastleCottage_01_1v12), I have just replaced the whole rule with a cobblestone and there were no errors. I want to know if I can actually fix this without losing any authors blocks. This is the pack I have downloaded from http://greywolf.critter.net/minecraft.htm (ADVENTURE LITE
(Adventure + NO CB))
My game crashed a couple of times and this(and then related errors after this, they al point to the ruins template) was the only error in the log. I can just remove the template, but I am curious. Thank you.