BiomeTweaker

BiomeTweaker

13M Downloads

BoP Generation: What am I doing wrong?

WACriminalG2 opened this issue ยท 11 comments

commented

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)

commented

Have you checked your log to verify your script is executing properly?

commented

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"
>
}

commented

Move your script file to the scripts folder and leave the config alone.

commented

Yes

commented

I can do that, but what's the best way to ensure a certain load order? Just number them 000, 001, etc?

commented

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?

commented

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

commented

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.

commented

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.

commented

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.

commented

I dunno if this actually fixed the issue so much as worked around it, but I ended up just using biome replacement universally instead of removing anything from generation. Gonna close the issue.