BoP Generation: What am I doing wrong?
WACriminalG2 opened this issue ยท 11 comments
I'm getting a world with all the usual stuff, including biomes I meant to disable, and NOT including the Twilight Forest stuff I'm trying to add to the overworld.
Here's my script:
#First, remove all biomes
allBiomes = forAllBiomes()
allBiomes.removeBOP()#Now, define which biomes to include
vanillaBiomes = forBiomes("minecraft:beaches","minecraft:deep_ocean","minecraft:desert","minecraft:forest","minecraft:frozen_ocean","minecraft:frozen_river","minecraft:jungle","minecraft:mushroom_island","minecraft:mutated_birch_forest_hills","minecraft:mutated_forest","minecraft:mutated_ice_flats","minecraft:mutated_jungle","minecraft:mutated_mesa","minecraft:mutated_plains","minecraft:mutated_redwood_taiga","minecraft:mutated_taiga_cold","minecraft:mutated_taiga","minecraft:ocean","minecraft:plains","minecraft:redwood_taiga","minecraft:river","minecraft:savanna_rock","minecraft:savanna","minecraft:swampland","minecraft:taiga",)
bopBiomes = forBiomes("biomesoplenty:alps_foothills","biomesoplenty:alps","biomesoplenty:bamboo_forest","biomesoplenty:bayou","biomesoplenty:boreal_forest","biomesoplenty:chaparral","biomesoplenty:cherry_blossom_grove","biomesoplenty:coniferous_forest","biomesoplenty:coral_reef","biomesoplenty:crag","biomesoplenty:eucalyptus_forest","biomesoplenty:fen","biomesoplenty:flower_field","biomesoplenty:fungi_forest","biomesoplenty:glacier","biomesoplenty:grove","biomesoplenty:highland","biomesoplenty:kelp_forest","biomesoplenty:lavender_fields","biomesoplenty:lush_desert","biomesoplenty:mangrove","biomesoplenty:maple_woods","biomesoplenty:marsh","biomesoplenty:meadow","biomesoplenty:mystic_grove","biomesoplenty:oasis","biomesoplenty:ominous_woods","biomesoplenty:pasture","biomesoplenty:rainforest","biomesoplenty:redwood_forest","biomesoplenty:sacred_springs","biomesoplenty:temperate_rainforest","biomesoplenty:tropical_island","biomesoplenty:tropical_rainforest","biomesoplenty:volcanic_island","biomesoplenty:wetland","biomesoplenty:white_beach")
tfBiomes = forBiomes("twilightforest:dark_forest","twilightforest:enchanted_forest","twilightforest:twilight_clearing","twilightforest:twilight_forest","twilightforest:twilight_glacier")#Now, include them
vanillaBiomes.addToGenerationBOP("TROPICAL",10)
bopBiomes.addToGenerationBOP("TROPICAL",10)
tfBiomes.addToGenerationBOP("TROPICAL",10)
Log is here: https://pastebin.com/2Nxexw1G
Relevant section might be:
[23:55:47] [main/FATAL]: An exception occurred while loading config file BiomeTweaker.cfg. This file will be renamed to BiomeTweaker.cfg_20180721_235547.errored and a new config file will be generated.
java.lang.RuntimeException: Malformed list property "/config/BiomeTweaker/BiomeTweaker.cfg:11"
at net.minecraftforge.common.config.Configuration.load(Configuration.java:981) ~[Configuration.class:?]
at net.minecraftforge.common.config.Configuration.runConfiguration(Configuration.java:129) [Configuration.class:?]
at net.minecraftforge.common.config.Configuration.(Configuration.java:146) [Configuration.class:?]
at net.minecraftforge.common.config.Configuration.(Configuration.java:107) [Configuration.class:?]
at me.superckl.biometweaker.config.Config.(Config.java:22) [Config.class:?]
at me.superckl.biometweaker.BiomeTweaker.onPreInit(BiomeTweaker.java:107) [BiomeTweaker.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51]
at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:627) [FMLModContainer.class:?]
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51]
at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76) [guava-21.0.jar:?]
at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71) [guava-21.0.jar:?]
at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116) [guava-21.0.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:217) [guava-21.0.jar:?]
at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:218) [LoadController.class:?]
at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:196) [LoadController.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51]
at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76) [guava-21.0.jar:?]
at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71) [guava-21.0.jar:?]
at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116) [guava-21.0.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:217) [guava-21.0.jar:?]
at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:135) [LoadController.class:?]
at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:627) [Loader.class:?]
at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:246) [FMLClientHandler.class:?]
at net.minecraft.client.Minecraft.init(Minecraft.java:466) [bib.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:3927) [bib.class:?]
at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
But I don't have the experience to understand what it's telling me.
For reference, here's the entirety of my main config as well:
Configuration file
"output files" {
# If true, BiomeTweaker will generate separate files for each item when creating the status report. [default: true]
B:"Output Seperate Files"=true
}
scripting {
# A list of script files to include that are not in the scripts folder. An example script file is created along with this configuration file. [default: ]
S:"Script Files" <"BiomeSelection.cfg"
>
}
I can do that, but what's the best way to ensure a certain load order? Just number them 000, 001, etc?
LOL, well all right then. I'll give that a shot and report back. Is the script loader functionality just not working properly, or am I screwing it up?
You need to place each entry on a new line, followed by a comma if there are subsequent entries. That's Forge syntax that you just messed up
Ah, my bad. I guess I got used to writing in formats where white space didn't matter. But setting load order by numbering them in the script folder will actually work better for visualizing the process, so I'll stick to that. Got a loooooot of spawns and whatnot to tweak.
Thanks, man.
Well, I'm still getting biomes I already disabled, but at least I am now getting the Twilight Forest biomes in the overworld.
Still getting similar output in the log:
[02:41:18] [main/FATAL]: An exception occurred while loading config file BiomeTweaker.cfg. This file will be renamed to BiomeTweaker.cfg_20180722_024118.errored and a new config file will be generated.
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1948) ~[?:1.8.0_51]
at net.minecraftforge.common.config.Configuration.load(Configuration.java:985) ~[Configuration.class:?]
at net.minecraftforge.common.config.Configuration.runConfiguration(Configuration.java:129) [Configuration.class:?]
at net.minecraftforge.common.config.Configuration.(Configuration.java:146) [Configuration.class:?]
at net.minecraftforge.common.config.Configuration.(Configuration.java:107) [Configuration.class:?]
at me.superckl.biometweaker.config.Config.(Config.java:22) [Config.class:?]
at me.superckl.biometweaker.BiomeTweaker.onPreInit(BiomeTweaker.java:107) [BiomeTweaker.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51]
at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:627) [FMLModContainer.class:?]
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51]
at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76) [guava-21.0.jar:?]
at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71) [guava-21.0.jar:?]
at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116) [guava-21.0.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:217) [guava-21.0.jar:?]
at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:218) [LoadController.class:?]
at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:196) [LoadController.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51]
at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76) [guava-21.0.jar:?]
at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399) [guava-21.0.jar:?]
at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71) [guava-21.0.jar:?]
at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116) [guava-21.0.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:217) [guava-21.0.jar:?]
at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:135) [LoadController.class:?]
at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:627) [Loader.class:?]
at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:246) [FMLClientHandler.class:?]
at net.minecraft.client.Minecraft.init(Minecraft.java:466) [bib.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:3927) [bib.class:?]
at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
That's with the main config entirely in its default state, with nothing in the script loader section.
Argh, never mind. Pulled the errored version and the fresh version up side by side and somehow there's a colon I left in when I tried to revert it to default. That's likely what caused the log output.
Still flummoxed by why I'm getting Dead Forest biomes after running a removeBOP on everything and only adding back in specific stuff.