This...is amazing. Too bad it doesn't get much attention.
I'm happy to hear that! I think it's actually been slowly gaining attention for the next JamPacked competition. I believe BT is in Iskandar's Attonement: Sins of the Past and also JadedCat's AG2. I've also been working closely with another JamPacked pack author to add a lot of useful features to BTs scripting environment. It's really cool to see other people using something you've created in their creations.
Would it be possible to achieve the same effect any other way? *firgured out a way to do with with CoFH
-Next, I'm removing grass and snow layers from the ice plains. icePlains.removeDecoration("GRASS") doesn't seem to be working for me, any idea as to why? and how might I remove the snow? I've already tried "SNOW" and "SNOW_LAYERS" using the removeDecoration command *removing grass appears to be working in the latest update
-Lastly, I'm trying to use "treesPerChunk" and "flowersPerChunk" on a BoP biome. On the wiki it states "You must set the application stage to "INIT" or earlier for this to have any effect" so I've tried to use the Tweaker object:
-Lastly, I'm trying to use "treesPerChunk" and "flowersPerChunk" on a BoP biome. On the wiki it states "You must set the application stage to "INIT" or earlier for this to have any effect" so I've tried to use the Tweaker object:
Tweaker.setStage("PRE_INIT")
Tweaker.set(58, "treesPerChunk", 2)
Tweaker.set(58, "flowersPerChunk", 6)
I must be doing something wrong as the console spits out
[07:49:54] [main/ERROR] [BiomeTweakerCore]: Failed to find meaning in command set(58, "treesPerChunk", 2). It will be ignored.
[07:49:54] [main/ERROR] [BiomeTweakerCore]: Failed to find meaning in command set(58, "flowersPerChunk", 6). It will be ignored.
What would be the proper way to use this command?
[/quote]
I have not tried yet, but thinking it works something like...
Tweaker is just to set the stage, but still need to specify the biomes group.
I am curious if it would accept the XXXPerChunk types from Biomes O Plenty.
Would it be possible to achieve the same effect any other way? *firgured out a way to do with with CoFH
-Next, I'm removing grass and snow layers from the ice plains. icePlains.removeDecoration("GRASS") doesn't seem to be working for me, any idea as to why? and how might I remove the snow? I've already tried "SNOW" and "SNOW_LAYERS" using the removeDecoration command *removing grass appears to be working in the latest update
-Lastly, I'm trying to use "treesPerChunk" and "flowersPerChunk" on a BoP biome. On the wiki it states "You must set the application stage to "INIT" or earlier for this to have any effect" so I've tried to use the Tweaker object:
I am not sure how exactly to use Biometweaker to keep certain biomes. This is with Biomes O Plenty as well.
Removing too many biomes does cause a crash. If you remove all biomes of a given type, division by zero occurs. There's really no way I can fix this unless I use some ASM to edit the way Minecraft grabs biomes, which I might add to v1.0.
Would setting the genWeight to 0 for those biomes? Like... EverythingButThese.set("genWeight", 0)
*goes to try it*
Crashes still. Sigh. :/
Yeah, 0 gen weights for everything causes a crash as well. Fixing this would require a biome to default to, which may also be removed, so we need another one, which may also be removed, so we.... You see the problem here... We would need to overhaul a section of the generation code.
If you want to remove biomes in such large quantities, BiomeTweaker doesn't offer what you want :/
How does a working biomes mod like ExtrabiomesXL (Biomes O Plenty configs is broken in comparison in 1.7.10) do it then when disabling large amount of biomes and disabling vanilla? I always got the impression that Minecraft's Biomes Manager compiles an array/dictionary of biomes, and then places a biome base of seed world generation.
Does Biome Tweaker attempt to remove completely from the Biomes Manager, hence why the crashes? Instead of re-writing Minecraft's world generation, maybe add an a recursive blacklist before/during the biome placement of world generation.
As in... TheseBiomes.remove() would really mean 'Add these biomes to the blacklist array, and get world gen to do a if check against it before placement'. That way, those biomes are still active in the background, but just not added to the world.
Actually, I am sure biomes mods have/has done this in their code. Would explain how for example can disable a magical grove biome from Thaumcraft or whatever from being placed during world generation, yet able to 'terraform' a biome into one or flux tainted. In turn, explains why settings the Biome Ids to zero in their configs crashes the client even if they are set to disabled/false.
How does a working biomes mod like ExtrabiomesXL (Biomes O Plenty configs is broken in comparison in 1.7.10) do it then when disabling large amount of biomes and disabling vanilla? I always got the impression that Minecraft's Biomes Manager compiles an array/dictionary of biomes, and then places a biome base of seed world generation.
Does Biome Tweaker attempt to remove completely from the Biomes Manager, hence why the crashes? Instead of re-writing Minecraft's world generation, maybe add an a recursive blacklist before/during the biome placement of world generation.
As in... TheseBiomes.remove() would really mean 'Add these biomes to the blacklist array, and get world gen to do a if check against it before placement'. That way, those biomes are still active in the background, but just not added to the world.
Actually, I am sure biomes mods have/has done this in their code. Would explain how for example can disable a magical grove biome from Thaumcraft or whatever from being placed during world generation, yet able to 'terraform' a biome into one or flux tainted. In turn, explains why settings the Biome Ids to zero in their configs crashes the client even if they are set to disabled/false.
I hope that make sense. >.>
The key thing is ExtraBiomesXL does not use vanilla generation. It overrides it so that it can do such heavy biome list modification.
In Forge, ideally, biomes exist in three places:
* First, all registered biomes must exist in the BiomeGenBase array located in BiomeGenBase. This is how references to biomes are retrieved, and addition to this array is done in the constructor of BiomeGenBase. This is why conflicting biome ids don't always crash, just overwrite each other.
* Second, all registered biomes should exist in Forge's BiomeDictionary. This is a common way for mods to identify what types a biome is. Useful for, say, a mod that need to react differently in a wet biome versus a dry biome.
* Third, any biomes that are not hard-coded into generation (e.g. oceans, mutated, edge, etc...) must be registered in Forge's BiomeManager to appear in vanilla generation. This is what The GenLayerBiome consults to get a list of viable biomes for the four types WARM, COOL, ICY, and DESERT. These types are independent of the BiomeDictionary types.
BiomeTweaker removes biomes from the third place, so that they do not appear in generation. They are still "registered" in the BiomeGenBase array.
When you remove too many biomes, what may happen is the biome list for a particular type is emptied. When Vanilla Minecraft generation then attempts to get a random biome for that type, it can't. There aren't any. And it throws a fit. Those biomes are still registered, but they are not viable for generation.
Yes, this is hard-coded into Vanilla generation. No, it's not an easy fix. No, I don't think such a thing belongs in BiomeTweaker. No, I most likely will not "fix" this.
Then we just need to make sure there is one biome of each type left for the world gen to use? Or use removeDicType to remove the type of the biomes your removing if there will be none left after?
Then we just need to make sure there is one biome of each type left for the world gen to use? Or use removeDicType to remove the type of the biomes your removing if there will be none left after?
You need to ensure there is at least one of each left, yes. Dictionary types are independent of BiomeManage types, so removing them won't do anything.
Hello, I am having problems with the remove decorations command. I can't seem to remove lakes from my custom biome. I am using this command: Void.removeDecoration("LAKE"). It doesn't seem to do anything.
Hello, I am having problems with the remove decorations command. I can't seem to remove lakes from my custom biome. I am using this command: Void.removeDecoration("LAKE"). It doesn't seem to do anything.
I'm going to need to see your full script and a full log. I would also appreciate it if you could use the issue tracker for reporting issues:
HI, first of all thank you for releasing this awesome mod! It gives modpackers and server howners great possibility of customization
I will use it extensively on my server
I have a request for future versions: can you implement a way to change sky and fog colors?
Happy to hear it!
As for your request, from what I know sky and fog color are handled on a per-world basis or are computed from a biome's temperature and humidity. It's a bit outside the scope of BiomeTweaker, but I will look into it.
Thank you for your to look if my suggestion is doable
I've seen other mods change sky color on a per biome base (thaumcraft and bop for example), but I have no idea how they do that.
Anyway if it's doable it's good, if it's not I'll live anyway
On a different subject, I need some clarification on a couple of functions:
- the "create" function. In the wiki it's written "This must be called before any other command if you are using biome ids that do not already exist." This means I can also use a biome id that is already taken? If I do what will happen? The new biome I have created will overvrite the other one with the same id , or will they both generate in the world?
-the "xxxPerChunk". I see that i can use this to generate trees, flower, etc in biomes. What I don't understand is how do the mod decide which kind of trees (or flowers) to generate? Is the decision based on humidity/temperature?
Can I use this command to generate trees/flowers/grass from other mods? If so how?
-the "removeDecoration". What's the difference between "SAND" and "SAND_PASS2"? What does "CUSTOM" remove?
- is there a way to make a biome generate only in oceans? Like mushroom islands, or Bop kelp forest
- The create function will override the reference to it in the main BiomeGenBase array, but no where else. If it was registered in the BiomeManager, BiomeDictionary, or somewhere in a mod, that reference will remain. You will have no way to retrieve the previous biome in BiomeTweaker once you override it.
- What trees/flowers/etc is generated per "xxxPerChunk" is decided entirely by the biome. Biomes provide a random tree generator of their choice when asked. BiomeTweaker has no control over exactly what is generated.
- "SAND" is sand, and "SAND_PASS2" is gravel. "CUSTOM" is used by mods to indicate a custom decoration, though I've never seen a mod actually use it.
- No. That's too specific of a request for BiomeTweaker to handle.
This...is amazing. Too bad it doesn't get much attention.
"I can't believe this, I lost five diamonds. Now I only have 78 left."
*Uninstalls minecraft
I'm happy to hear that! I think it's actually been slowly gaining attention for the next JamPacked competition. I believe BT is in Iskandar's Attonement: Sins of the Past and also JadedCat's AG2. I've also been working closely with another JamPacked pack author to add a lot of useful features to BTs scripting environment. It's really cool to see other people using something you've created in their creations.
Wondering if anyone could offer me some advice:
-Firstly, I'm trying to make ice plains spikes much, much more common. I've tried the following with no luck, I suspect because it's a sub biome?icePlainsSpikes = forBiomes(140)icePlainsSpikes.set("genWeight", 1*) *I've tried inserting numbers like 0.9, 1, 100, 9999Would it be possible to achieve the same effect any other way?*firgured out a way to do with with CoFH-Next, I'm removing grass and snow layers from the ice plains.
icePlains.removeDecoration("GRASS") doesn't seem to be working for me, any idea as to why?and how might I remove the snow? I've already tried "SNOW" and "SNOW_LAYERS" using the removeDecoration command *removing grass appears to be working in the latest update-Lastly, I'm trying to use "treesPerChunk" and "flowersPerChunk" on a BoP biome. On the wiki it states "You must set the application stage to "INIT" or earlier for this to have any effect" so I've tried to use the Tweaker object:
Tweaker.setStage("PRE_INIT")
Tweaker.set(58, "treesPerChunk", 2)
Tweaker.set(58, "flowersPerChunk", 6)
I must be doing something wrong as the console spits out
[07:49:54] [main/ERROR] [BiomeTweakerCore]: Failed to find meaning in command set(58, "treesPerChunk", 2). It will be ignored.
[07:49:54] [main/ERROR] [BiomeTweakerCore]: Failed to find meaning in command set(58, "flowersPerChunk", 6). It will be ignored.
What would be the proper way to use this command?
I have not tried yet, but thinking it works something like...
Tweaker is just to set the stage, but still need to specify the biomes group.
I am curious if it would accept the XXXPerChunk types from Biomes O Plenty.
The way you are using the Tweaker object should work. Are you using the latest version?
What morticiamellian said will work and is what you should be doing. The Tweaker object is just a way to quickly add a tweak to one biome.
At the moment trying to remove most biomes and keep certain ones, yet keeps crashing the client if I use remove command.
DeadlandsBiomes = forBiomes(7, 16, 25, 26, 37, 52, 53, 54, 95, 106)
OceanBiomes = forBiomes(0, 10, 24, 99, 100)
NetherBiomes = forBiomes(8, 115, 116, 117, 118, 119, 120)
EverythingButDeadlands = forAllBiomesExcept(DeadlandsBiomes, OceanBiomes, NetherBiomes)
EverythingButDeadlands.remove()
I am not sure how exactly to use Biometweaker to keep certain biomes. This is with Biomes O Plenty as well.
Removing too many biomes does cause a crash. If you remove all biomes of a given type, division by zero occurs. There's really no way I can fix this unless I use some ASM to edit the way Minecraft grabs biomes, which I might add to v1.0.
Would setting the genWeight to 0 for those biomes? Like... EverythingButThese.set("genWeight", 0)
*goes to try it*
Crashes still. Sigh. :/
Yeah, 0 gen weights for everything causes a crash as well. Fixing this would require a biome to default to, which may also be removed, so we need another one, which may also be removed, so we.... You see the problem here... We would need to overhaul a section of the generation code.
If you want to remove biomes in such large quantities, BiomeTweaker doesn't offer what you want :/
How does a working biomes mod like ExtrabiomesXL (Biomes O Plenty configs is broken in comparison in 1.7.10) do it then when disabling large amount of biomes and disabling vanilla? I always got the impression that Minecraft's Biomes Manager compiles an array/dictionary of biomes, and then places a biome base of seed world generation.
Does Biome Tweaker attempt to remove completely from the Biomes Manager, hence why the crashes? Instead of re-writing Minecraft's world generation, maybe add an a recursive blacklist before/during the biome placement of world generation.
As in... TheseBiomes.remove() would really mean 'Add these biomes to the blacklist array, and get world gen to do a if check against it before placement'. That way, those biomes are still active in the background, but just not added to the world.
Actually, I am sure biomes mods have/has done this in their code. Would explain how for example can disable a magical grove biome from Thaumcraft or whatever from being placed during world generation, yet able to 'terraform' a biome into one or flux tainted. In turn, explains why settings the Biome Ids to zero in their configs crashes the client even if they are set to disabled/false.
I hope that make sense. >.>
The key thing is ExtraBiomesXL does not use vanilla generation. It overrides it so that it can do such heavy biome list modification.
In Forge, ideally, biomes exist in three places:
* First, all registered biomes must exist in the BiomeGenBase array located in BiomeGenBase. This is how references to biomes are retrieved, and addition to this array is done in the constructor of BiomeGenBase. This is why conflicting biome ids don't always crash, just overwrite each other.
* Second, all registered biomes should exist in Forge's BiomeDictionary. This is a common way for mods to identify what types a biome is. Useful for, say, a mod that need to react differently in a wet biome versus a dry biome.
* Third, any biomes that are not hard-coded into generation (e.g. oceans, mutated, edge, etc...) must be registered in Forge's BiomeManager to appear in vanilla generation. This is what The GenLayerBiome consults to get a list of viable biomes for the four types WARM, COOL, ICY, and DESERT. These types are independent of the BiomeDictionary types.
BiomeTweaker removes biomes from the third place, so that they do not appear in generation. They are still "registered" in the BiomeGenBase array.
When you remove too many biomes, what may happen is the biome list for a particular type is emptied. When Vanilla Minecraft generation then attempts to get a random biome for that type, it can't. There aren't any. And it throws a fit. Those biomes are still registered, but they are not viable for generation.
Yes, this is hard-coded into Vanilla generation. No, it's not an easy fix. No, I don't think such a thing belongs in BiomeTweaker. No, I most likely will not "fix" this.
Then we just need to make sure there is one biome of each type left for the world gen to use? Or use removeDicType to remove the type of the biomes your removing if there will be none left after?
You need to ensure there is at least one of each left, yes. Dictionary types are independent of BiomeManage types, so removing them won't do anything.
Hello, I am having problems with the remove decorations command. I can't seem to remove lakes from my custom biome. I am using this command: Void.removeDecoration("LAKE"). It doesn't seem to do anything.
I'm going to need to see your full script and a full log. I would also appreciate it if you could use the issue tracker for reporting issues:
https://github.com/superckl/BiomeTweaker/issues
Alright, done. I posted the full script and a screenshot of the world generated on the the issue tracker.
Happy to hear it!
As for your request, from what I know sky and fog color are handled on a per-world basis or are computed from a biome's temperature and humidity. It's a bit outside the scope of BiomeTweaker, but I will look into it.
I'm just a bit confused on how you remove biomes. Could you give an example of how I would remove the Plains biome?
Sure, just add this to one of your scripts:
plains = forBiomes(1)
plains.remove()
Make sure you include the script file in the "includes" section of the config file.
- The create function will override the reference to it in the main BiomeGenBase array, but no where else. If it was registered in the BiomeManager, BiomeDictionary, or somewhere in a mod, that reference will remain. You will have no way to retrieve the previous biome in BiomeTweaker once you override it.
- What trees/flowers/etc is generated per "xxxPerChunk" is decided entirely by the biome. Biomes provide a random tree generator of their choice when asked. BiomeTweaker has no control over exactly what is generated.
- "SAND" is sand, and "SAND_PASS2" is gravel. "CUSTOM" is used by mods to indicate a custom decoration, though I've never seen a mod actually use it.
- No. That's too specific of a request for BiomeTweaker to handle.