That was my initial goal/hope. However it is unfortunately not possible using the GenLayer overriding, which I'm currently using, and which does not require my own WorldType or replacing all other WorldProviders with my own.
I might try to see if it works, or if I'm just going to break everything if I try to use my own "proxy" WorldProvider that replaces all other WorldProviders and bridges other calls to the originals except the biome fetching. No promises that it will work... For testing it, do you have example biome gen or dimension mods that you would need it to work with? I'll probably at least test it with vanilla Nether and End, BoP and ATG (which currently doesn't work) and Mystcraft.
I've made a fairly elaborate 8000x8000 world with this in GIMP using paths and layers and such, and it's mostly worked very well (as you know, I've filed some issues to the Github repository).
To that end I wrote a pair of Lua scripts for converting between GIMP palette files and PaintedBiomes configuration files that I'd like to share:
A GIMP palette file for the vanilla biomes is also included. With the above scripts, one could work as such:
Vanilla
Just download the palette file for the vanilla biomes into the palette file directory (e.g. ~/.gimp-<version>/palettes/); either restart GIMP or refresh the palette list to make it show up. These colours are hard-coded in the mod, so there's no need to touch the PaintedBiomes configuration file.
Modded
Download the palette file for the vanilla biomes like above, then edit it by adding more colours, one for each modded biome you want to use. The name of the colour should be exactly the same as the name of the biome (case-sensitive); the exact biome names can be found in the PaintedBiomes configuration file. Then, run the script gpl_to_paintedbiomes.lua (run with no arguments to see usage) to fill the configuration file with colours from the palette (black #000000 and white #FFFFFF are ignored - if you have mapped these to a biome, configure them manually). If GIMP is running, make sure to save the palette with the little save icon before converting. The script errors if there are biomes mapped to the same colour. If you already have a configuration file with custom mappings, paintedbiomes_to_gpl.lua can be used to convert it to a palette.
Dunno how many people use this mod, but maybe the above will be useful to someone one day. Using GIMP paths to make worlds like this is fairly laborious and results in extremely smooth biome borders, which can look a little weird from a dynmap perspective but looks fine from the ground.
Has anyone else made a non-trivial map with this yet? If so, what tools did you use?
i cant see any difference.. also the directory files wont generate so i had to make them.
is there a special worldtype?
Are you sure the mod is loaded correctly? (In single player, does it show up in the Mods menu, from the Mods button in the main menu?) If it installed/running properly, then the config/paintedbiomes.cfg file should be generated if it doesn't exist. And after you load (any) world, then the config/paintedbiomes/templates path/directories should be created, if they didn't yet exist (in 0.2.0, in 0.1.0 just the config/paintedbiomes directory).
Currently there is no separate WorldType. This will probably change in the future though. Because of this, the mod is currently only known to work in the vanilla Default worldtype and the BIOMESOP worldtype from Biomes O' Plenty, and only in the overworld.
Are you sure the mod is loaded correctly? (In single player, does it show up in the Mods menu, from the Mods button in the main menu?) If it installed/running properly, then the config/paintedbiomes.cfg file should be generated if it doesn't exist. And after you load (any) world, then the config/paintedbiomes/templates path/directories should be created, if they didn't yet exist (in 0.2.0, in 0.1.0 just the config/paintedbiomes directory).
Currently there is no separate WorldType. This will probably change in the future though. Because of this, the mod is currently only known to work in the vanilla Default worldtype and the BIOMESOP worldtype from Biomes O' Plenty, and only in the overworld.
Do you mean the template image resolution? I have no idea actually. But using the per-region mode you can easily cover a world of any size without running into issues with image resolution, since it will be split up in 512x512 sized sub-regions.
So did you get it to work then (in regards to your previous question)?
Amazing mod. Feature requests!
1) repeat template infinitely in x or z coordinates. That way, I don't have to have one file that is 100000x100000 pixels wide, or copy/paste the same file a thousand times with a buttload of region names in order to get a repeating pattern
Well then maybe I'll have to get back to this mod at some point
Some questions for clarification:
- When you say repeat, and based on your diagram there, do you mean just repeat the biome at the edges of the edge-most template image, or repeat the entire template? Well I guess I could add both with config options... ALL THE CONFIG OPTIONS
- Should that be configurable/togglable in each direction separately? Probably not much extra effort to do that anyway...
- Would the single template mode being repeatable suffice?
(I'm not sure how to best implement a repeating template in the region mode, ie. how to efficiently find out the last template from an arbitrary point in the world... Hmm actually, there probably wouldn't ever be a HUGE amount of region templates per world in practice, so scanning them once on world load into a data structure might work, hmm...)
Both would be useful. I guess my example wasn't the most intuitive, I was originally imagining a "repeat this image infinitely on X axis" and/or "repeat this image infinitely on Z axis" option. I forgot you already have a "make everything not defined in the images this biome-id" option, which solves north and south on my example. Either way, being able to repeat an image either direction (or both) would be very useful. I think the single template mode would probably be easiest to code (otherwise figuring out which template to use is a pain), but I'll leave that to your discretion.
Oooone more feature request (I'm putting you to work!) for down the road or if you figure out how to do it, Biome Edging (making the lines between biomes curve and blend naturally instead of aligning exactly to the chunk edge).
Thanks for all your hard work! This tool is awesome for modpack makers.
Alright, so the only remaining question for the template repeating would be, what should happen on the diagonals? I mean diagonally from the corner of the template? Let's say there is a square area covered with a template, and then that would be repeated on both axis, that would make a cross pattern, leaving the diagonals/anything beyond the corner of the template not covered. Should the template be also repeated there (from the repeated template on the axis? something else?), or should that be left for the "unpaintedAreaBiome" to fill in?
Hmm, what do you mean aligning exactly to chunk edge? Afaik I don't do anything based on full chunks, it should work on a block resolution. And since the biome is based purely on the template, I don't do any line/area manipulation/smoothing.
Yeah in the single template mode that makes sense and should be easy.
But what should happen in the region template mode... which template is repeated where, since the template coverage can be a completely arbitrary grid... Maybe I'll just not implement any template repeating in the region mode, since I can't really think of a nice and intuitive way to do it and how it should work?
Heh sorry, I have been busy with other stuff unfortunately. I might try to get the template repeating done this weekend _possibly_. But the support for other dimensions will take more time to figure out properly, so I'll either leave it to the next release, or release the template repeating as an alpha release.
Okay so I've been doing some testing and figuring out how to support other dimensions.
I now have basic support for changing the biome gen in other dimensions too. (it isn't done yet, there is a change I have to make for it to work properly...)
But here is my issue, or question to the people who use this mod:
Should I be doing anything else than assigning the biome, like I am doing now?
Because simply assigning the biome in the Nether or the End doesn't actually have any kind of effect on the generated terrain, only the biome that is saved in the world data and thus shown in the F3 debug screen, and also to what mobs can spawn etc.
But since the actual terrain generation (blocks etc.) is done in separate ChunkProvider classes, which don't care about the biome in case of the Nether and End, it doesn't change any blocks/terrain even if the biome is Forest or Desert or Ocean or whatever in the Nether or End.
Or is this enough? Some of you have mentioned using Dimensional Control, and from what I took a quick look at it, that seems to be able to change the ChunkProvider that is used. I don't really know how I would nicely handle changing the terrain generation too, since that may be dimension-specific in most cases, and generation is done on a per-chunk basis, so I can't support per-block resolution generation based on biome using multiple ChunkProviders. And mixing different ChunkProviders might get messy anyway...
I've already played around with using both Dimensional Control and your mod together, and it actually works pretty well (even though Dimensional Controls is a little rough around the edges (which is more an issue with Forge (which is more an issue with Minecraft))). I've always been of the opinion that mods should "do one thing well" instead of being "swiss army knives". You could add the ability to manipulate the chunk providers and alter terrain generation, but then the chance of unwanted collisions/incompatibility between your mod and others (like Dimensional Control) only increases.
Like you said, with Dimensional Control you can use any chunk provider, even custom ones from other mods like biomes o' plenty (or also any world chunk manager, I don't really understand the difference). Biomes don't make a difference with the Nether or End chunk providers, but that's okay because we wont use them / will be using use the overworld chunk provider when we create new dimensions. If we want those custom dimensions to look like hell or the end, we can simply customize the biome list to only include "hell" or "end" biomes.
Again, I gotta thank you for all your hard work. This mod is a game-changer.
Okay well that is kind of good to hear. I might look into the ability to specify the used ChunkProvider, but that will be optional, and I won't promise that it will actually end up in the released version, it depends on how it starts to look when I test that stuff out. Last time I looked, Dimensional Control wasn't available for 1.8, so that might be a reason to at least try to add the option to select the ChunkProvider in this mod. But in case you are using DImensional Control for other stuff, then you would just leave the ChunkProvider stuff disabled in this mod.
And about the WorldChunkManager: WorldChunkManager is the main class that deals with generating the biomes. The support I'm adding for handling any dimension will use my own WorldChunkManager wrapper, so you can't override the WorldChunkManager to something else without breaking this mod.
Well actually, it depends on when and how Dimensional Control does it... I'll have to take a look at that. But then again, I don't know if there is any need to override it if you are using Painted Biomes, since it is mainly dealing with biomes, and presumably you would be using Painted Biomes for the biome handling...? Although, is that how Dimensional Control allows customizing the used biomes? Then you might actually want to use both in some cases, if you want to have Painted Biomes do a pre-defined biome layout in part of the world, but have Dimensional Control use a pre-defined sub-set of biomes in the rest of the world...
Description
Painted Biomes allows using image templates for the biome layout.
For a detailed description and documentation, read the CurseForge project page
CurseForge project page
Downloads
All downloads are also on the CurseForge project page.
Mod packs/permissions
Source code
The source code can be found on the Github repo
My mods on CurseForge. My Github page with mods, tools and other stuff.
That was my initial goal/hope. However it is unfortunately not possible using the GenLayer overriding, which I'm currently using, and which does not require my own WorldType or replacing all other WorldProviders with my own.
I might try to see if it works, or if I'm just going to break everything if I try to use my own "proxy" WorldProvider that replaces all other WorldProviders and bridges other calls to the originals except the biome fetching. No promises that it will work... For testing it, do you have example biome gen or dimension mods that you would need it to work with? I'll probably at least test it with vanilla Nether and End, BoP and ATG (which currently doesn't work) and Mystcraft.
My mods on CurseForge. My Github page with mods, tools and other stuff.
Thanks for this useful mod!
I've made a fairly elaborate 8000x8000 world with this in GIMP using paths and layers and such, and it's mostly worked very well (as you know, I've filed some issues to the Github repository).
To that end I wrote a pair of Lua scripts for converting between GIMP palette files and PaintedBiomes configuration files that I'd like to share:
https://gist.github.com/JakobOvrum/a5bdfabce12c48e437ec
A GIMP palette file for the vanilla biomes is also included. With the above scripts, one could work as such:
Vanilla
Just download the palette file for the vanilla biomes into the palette file directory (e.g. ~/.gimp-<version>/palettes/); either restart GIMP or refresh the palette list to make it show up. These colours are hard-coded in the mod, so there's no need to touch the PaintedBiomes configuration file.
Modded
Download the palette file for the vanilla biomes like above, then edit it by adding more colours, one for each modded biome you want to use. The name of the colour should be exactly the same as the name of the biome (case-sensitive); the exact biome names can be found in the PaintedBiomes configuration file. Then, run the script gpl_to_paintedbiomes.lua (run with no arguments to see usage) to fill the configuration file with colours from the palette (black #000000 and white #FFFFFF are ignored - if you have mapped these to a biome, configure them manually). If GIMP is running, make sure to save the palette with the little save icon before converting. The script errors if there are biomes mapped to the same colour. If you already have a configuration file with custom mappings, paintedbiomes_to_gpl.lua can be used to convert it to a palette.
Dunno how many people use this mod, but maybe the above will be useful to someone one day. Using GIMP paths to make worlds like this is fairly laborious and results in extremely smooth biome borders, which can look a little weird from a dynmap perspective but looks fine from the ground.
Has anyone else made a non-trivial map with this yet? If so, what tools did you use?
I just posted a new release. It cleans up some of the code and should fix the configuration/biome id/color mapping issues.
Note that I also changed the template image directory!!
Also, regenerating the config file is recommended. Rename the old config first, so that you can then copy back the color to biome mappings.
My mods on CurseForge. My Github page with mods, tools and other stuff.
i cant see any difference.. also the directory files wont generate so i had to make them.
is there a special worldtype?
Are you sure the mod is loaded correctly? (In single player, does it show up in the Mods menu, from the Mods button in the main menu?) If it installed/running properly, then the config/paintedbiomes.cfg file should be generated if it doesn't exist. And after you load (any) world, then the config/paintedbiomes/templates path/directories should be created, if they didn't yet exist (in 0.2.0, in 0.1.0 just the config/paintedbiomes directory).
Currently there is no separate WorldType. This will probably change in the future though. Because of this, the mod is currently only known to work in the vanilla Default worldtype and the BIOMESOP worldtype from Biomes O' Plenty, and only in the overworld.
My mods on CurseForge. My Github page with mods, tools and other stuff.
whats the highest resolution it can handle?
Do you mean the template image resolution? I have no idea actually. But using the per-region mode you can easily cover a world of any size without running into issues with image resolution, since it will be split up in 512x512 sized sub-regions.
So did you get it to work then (in regards to your previous question)?
My mods on CurseForge. My Github page with mods, tools and other stuff.
Amazing mod. Feature requests!
1) repeat template infinitely in x or z coordinates. That way, I don't have to have one file that is 100000x100000 pixels wide, or copy/paste the same file a thousand times with a buttload of region names in order to get a repeating pattern
2) +1 for dimension specification. I use Dimensional Control from BloodNBones to create custom dimensions (which can use any World Provider) with a set list of biome ID's to use, and I use BiomeTweaker to create custom biomes. The goal is to do something like
Dimensional Control:
- new Dimension id 50 called "Infinite River" with biomes 80,81,82
BiomeTweaker:
- new Biome id 80 called Riverbank - Soulsand surface with obsidian underneath
- new Biome id 81 called BloodRiver - Water tinted red with Redstone underneath
- new Biome id 82 called ObsidianWasteland - Obsidian with pools of lava
Painted Biomes:
- Dimension50.png
Well then maybe I'll have to get back to this mod at some point
Some questions for clarification:
- When you say repeat, and based on your diagram there, do you mean just repeat the biome at the edges of the edge-most template image, or repeat the entire template? Well I guess I could add both with config options... ALL THE CONFIG OPTIONS
- Should that be configurable/togglable in each direction separately? Probably not much extra effort to do that anyway...
- Would the single template mode being repeatable suffice?
(I'm not sure how to best implement a repeating template in the region mode, ie. how to efficiently find out the last template from an arbitrary point in the world... Hmm actually, there probably wouldn't ever be a HUGE amount of region templates per world in practice, so scanning them once on world load into a data structure might work, hmm...)
My mods on CurseForge. My Github page with mods, tools and other stuff.
Both would be useful. I guess my example wasn't the most intuitive, I was originally imagining a "repeat this image infinitely on X axis" and/or "repeat this image infinitely on Z axis" option. I forgot you already have a "make everything not defined in the images this biome-id" option, which solves north and south on my example. Either way, being able to repeat an image either direction (or both) would be very useful. I think the single template mode would probably be easiest to code (otherwise figuring out which template to use is a pain), but I'll leave that to your discretion.
Oooone more feature request (I'm putting you to work!) for down the road or if you figure out how to do it, Biome Edging (making the lines between biomes curve and blend naturally instead of aligning exactly to the chunk edge).
Thanks for all your hard work! This tool is awesome for modpack makers.
Alright, so the only remaining question for the template repeating would be, what should happen on the diagonals? I mean diagonally from the corner of the template? Let's say there is a square area covered with a template, and then that would be repeated on both axis, that would make a cross pattern, leaving the diagonals/anything beyond the corner of the template not covered. Should the template be also repeated there (from the repeated template on the axis? something else?), or should that be left for the "unpaintedAreaBiome" to fill in?
Hmm, what do you mean aligning exactly to chunk edge? Afaik I don't do anything based on full chunks, it should work on a block resolution. And since the biome is based purely on the template, I don't do any line/area manipulation/smoothing.
My mods on CurseForge. My Github page with mods, tools and other stuff.
Corners... is a good question. I didn't think of that. How about, if both X and Z are repeated, instead of doing this
it repeats the template in every space, like this
Yeah in the single template mode that makes sense and should be easy.
But what should happen in the region template mode... which template is repeated where, since the template coverage can be a completely arbitrary grid... Maybe I'll just not implement any template repeating in the region mode, since I can't really think of a nice and intuitive way to do it and how it should work?
My mods on CurseForge. My Github page with mods, tools and other stuff.
Any luck? </pester>
Heh sorry, I have been busy with other stuff unfortunately. I might try to get the template repeating done this weekend _possibly_. But the support for other dimensions will take more time to figure out properly, so I'll either leave it to the next release, or release the template repeating as an alpha release.
My mods on CurseForge. My Github page with mods, tools and other stuff.
I come bearing gifts... I just released version 0.3.0, which adds template repeating to the single template mode.
Read the project description on CurseForge for more details.
My mods on CurseForge. My Github page with mods, tools and other stuff.
Okay so I've been doing some testing and figuring out how to support other dimensions.
I now have basic support for changing the biome gen in other dimensions too. (it isn't done yet, there is a change I have to make for it to work properly...)
But here is my issue, or question to the people who use this mod:
Should I be doing anything else than assigning the biome, like I am doing now?
Because simply assigning the biome in the Nether or the End doesn't actually have any kind of effect on the generated terrain, only the biome that is saved in the world data and thus shown in the F3 debug screen, and also to what mobs can spawn etc.
But since the actual terrain generation (blocks etc.) is done in separate ChunkProvider classes, which don't care about the biome in case of the Nether and End, it doesn't change any blocks/terrain even if the biome is Forest or Desert or Ocean or whatever in the Nether or End.
Or is this enough? Some of you have mentioned using Dimensional Control, and from what I took a quick look at it, that seems to be able to change the ChunkProvider that is used. I don't really know how I would nicely handle changing the terrain generation too, since that may be dimension-specific in most cases, and generation is done on a per-chunk basis, so I can't support per-block resolution generation based on biome using multiple ChunkProviders. And mixing different ChunkProviders might get messy anyway...
My mods on CurseForge. My Github page with mods, tools and other stuff.
I've already played around with using both Dimensional Control and your mod together, and it actually works pretty well (even though Dimensional Controls is a little rough around the edges (which is more an issue with Forge (which is more an issue with Minecraft))). I've always been of the opinion that mods should "do one thing well" instead of being "swiss army knives". You could add the ability to manipulate the chunk providers and alter terrain generation, but then the chance of unwanted collisions/incompatibility between your mod and others (like Dimensional Control) only increases.
Like you said, with Dimensional Control you can use any chunk provider, even custom ones from other mods like biomes o' plenty (or also any world chunk manager, I don't really understand the difference). Biomes don't make a difference with the Nether or End chunk providers, but that's okay because we wont use them / will be using use the overworld chunk provider when we create new dimensions. If we want those custom dimensions to look like hell or the end, we can simply customize the biome list to only include "hell" or "end" biomes.
Again, I gotta thank you for all your hard work. This mod is a game-changer.
Okay well that is kind of good to hear. I might look into the ability to specify the used ChunkProvider, but that will be optional, and I won't promise that it will actually end up in the released version, it depends on how it starts to look when I test that stuff out. Last time I looked, Dimensional Control wasn't available for 1.8, so that might be a reason to at least try to add the option to select the ChunkProvider in this mod. But in case you are using DImensional Control for other stuff, then you would just leave the ChunkProvider stuff disabled in this mod.
And about the WorldChunkManager: WorldChunkManager is the main class that deals with generating the biomes. The support I'm adding for handling any dimension will use my own WorldChunkManager wrapper, so you can't override the WorldChunkManager to something else without breaking this mod.
Well actually, it depends on when and how Dimensional Control does it... I'll have to take a look at that. But then again, I don't know if there is any need to override it if you are using Painted Biomes, since it is mainly dealing with biomes, and presumably you would be using Painted Biomes for the biome handling...? Although, is that how Dimensional Control allows customizing the used biomes? Then you might actually want to use both in some cases, if you want to have Painted Biomes do a pre-defined biome layout in part of the world, but have Dimensional Control use a pre-defined sub-set of biomes in the rest of the world...
My mods on CurseForge. My Github page with mods, tools and other stuff.