BiomeTweaker

BiomeTweaker

13M Downloads

Tweaker.setScriptStage("BIOME_REGISTRY") throws error

RiverC opened this issue ยท 14 comments

commented

Based on the recommendation from the wiki I tried this:

Tweaker.setScriptStage("BIOME_REGISTRY")
Tweaker.createBiome("larch_forest", "minecraft:birch_forest")
larchForest = forBiomes("biometweaker:larch_forest")
larchForest.addDicType("LARCH_TREES")

However, it fails. Here's the what I got:

Environment info:

[22:55:07] [main/INFO] [FML/]: Forge Mod Loader version 14.23.1.2560 for Minecraft 1.12.2 loading
[22:55:07] [main/INFO] [FML/]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_25, running on Windows 10:amd64:10.0, installed at C:\Program Files (x86)\Minecraft\runtime\jre-x64\1.8.0_25

I'm using the latest IVToolkit + RecurrentComplex with the latest Forestry. Other than that it's just BiomeTweaker (latest) and BiomeTweakerCore (latest.) If you need specific version numbers I can provide.

Error log:

[22:55:18] [main/INFO] [biometweaker/biometweaker]: Beginning script parsing...
[22:55:18] [main/ERROR] [SuperScript/biometweaker]: Failed to execute script command: me.superckl.biometweaker.script.command.misc.ScriptCommandSetScriptStage@cce1aeb
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: java.lang.IllegalArgumentException: No enum constant me.superckl.api.superscript.ApplicationStage.BIOME_REGISTRY
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at java.lang.Enum.valueOf(Enum.java:238)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at me.superckl.api.superscript.ApplicationStage.valueOf(ApplicationStage.java:5)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at me.superckl.biometweaker.script.command.misc.ScriptCommandSetScriptStage.perform(ScriptCommandSetScriptStage.java:20)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at me.superckl.api.superscript.script.command.BasicScriptCommandManager.addCommand(BasicScriptCommandManager.java:33)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at me.superckl.api.superscript.script.command.BasicScriptCommandManager.addCommand(BasicScriptCommandManager.java:24)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at me.superckl.biometweaker.BiomeTweaker.addCommand(BiomeTweaker.java:383)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at me.superckl.biometweaker.script.object.TweakerScriptObject.addCommand(TweakerScriptObject.java:11)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at me.superckl.api.superscript.script.object.ScriptObject.handleCall(ScriptObject.java:47)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at me.superckl.api.superscript.script.ScriptHandler.parse(ScriptHandler.java:64)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at me.superckl.api.superscript.script.ScriptParser.parseScriptFile(ScriptParser.java:49)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at me.superckl.biometweaker.BiomeTweaker.parseScript(BiomeTweaker.java:178)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at me.superckl.biometweaker.BiomeTweaker.parseScripts(BiomeTweaker.java:160)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at me.superckl.biometweaker.BiomeTweaker.onPreInit(BiomeTweaker.java:134)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at java.lang.reflect.Method.invoke(Method.java:483)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:606)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at java.lang.reflect.Method.invoke(Method.java:483)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at com.google.common.eventbus.EventBus.post(EventBus.java:217)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:253)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:231)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at java.lang.reflect.Method.invoke(Method.java:483)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at com.google.common.eventbus.EventBus.post(EventBus.java:217)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:148)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:602)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:270)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:466)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:377)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at net.minecraft.client.main.Main.main(SourceFile:123)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at java.lang.reflect.Method.invoke(Method.java:483)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
[22:55:18] [main/INFO] [STDERR/biometweaker]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:addCommand:36]: 	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
[22:55:18] [main/INFO] [biometweaker/biometweaker]: Finished script parsing.
[22:55:18] [main/DEBUG] [biometweaker/biometweaker]: Script parsing took 21ms.
[22:55:18] [main/DEBUG] [FML/biometweaker]: Bar Step: BiomeTweaker PreInitialization - Parsing scripts took 0.022s

It looks like although the wiki recommends to use that stage, it's not part of the enumeration and thus can't be used. Been fooling around with crafting variant biomes with biometweaker and recurrent complex, would be nice to see this working. I'll be trying a few other things, but I wanted to let you know that the advice from the wiki SEEMS to cause an error.

Thanks!

commented

Please provide the version number for BiomeTweaker.

commented

Please update the 1.12 version of the mod on Curse. The important fixes to activate the new BIOME REGISTRY phase is not there yet.

commented

@superckl
3.1.306

commented

That script stage was added in 3.1.309. Use that version from the build server.

commented

Thanks a lot! One further question - are comments allowed in the scripts, and if so, what is the mark used to indicate them.

commented

Yes, the escape character is the pound sign

#This is a comment

commented

where is this build server? Maybe the latest version fixes my issue

edit: never mind, I found it :)
http://jenkins.superckl.me/job/BiomeTweaker%201.12/lastStableBuild/

commented

Something more, using the latest from the build server (3.1.311)

Here is my script

Tweaker.setScriptStage("BIOME_REGISTRY")
Tweaker.createBiome("larch_forest", "minecraft:birch_forest")
larchForest = forBiomes("biometweaker:larch_forest")
larchForest.set("name","Larch Forest")
larchForest.addDicType("LARCH_TREES")

Here is the error I get

[13:16:58] [main/INFO] [SuperScript/]: Found 5 tweaks to apply for stage BIOME_REGISTRY. Applying...
[13:16:58] [main/WARN] [biometweaker/]: Unable to copy biome class net.minecraft.world.biome.BiomeForest! Some functionality may not be copied!
[13:16:58] [main/ERROR] [SuperScript/]: Failed to execute script command: me.superckl.biometweaker.script.command.generation.ScriptCommandAddBiome@3516b79e
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: java.lang.IllegalStateException: Unable to find field waterColor in class net.minecraft.world.biome.Biome
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at me.superckl.api.biometweaker.property.PropertyField.verifyField(PropertyField.java:56)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at me.superckl.api.biometweaker.property.PropertyField.get(PropertyField.java:34)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at me.superckl.api.biometweaker.property.Property.copy(Property.java:23)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at me.superckl.biometweaker.script.command.generation.ScriptCommandAddBiome.perform(ScriptCommandAddBiome.java:81)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at me.superckl.api.superscript.script.command.BasicScriptCommandManager.applyCommandsFor(BasicScriptCommandManager.java:50)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at me.superckl.biometweaker.common.handler.RegistryEventHandler.onBiomeRegistry(RegistryEventHandler.java:17)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_32_RegistryEventHandler_onBiomeRegistry_Register.invoke(.dynamic)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at net.minecraftforge.fml.common.eventhandler.EventBus$1.invoke(EventBus.java:143)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:179)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at net.minecraftforge.registries.GameData.fireRegistryEvents(GameData.java:746)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:603)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:270)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:466)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:377)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at net.minecraft.client.main.Main.main(SourceFile:123)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at java.lang.reflect.Method.invoke(Method.java:483)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
[13:16:58] [main/INFO] [STDERR/]: [me.superckl.api.superscript.script.command.BasicScriptCommandManager:applyCommandsFor:53]: 	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

When I run RecurrentComplex's #biome types biometweaker:larch_forest it tells me PLAINS is the only type.

Given water color is generally handled by BiomeTweakerCore, I checked and I have the most recent version from the build server - 1.0.22.

commented

There seem to be a number of things that need to wait for later. Creating a new biome requires at least two stages.
For example, this is my script for a hell-like biome for Advanced Rocketry:

Tweaker.setScriptStage("BIOME_REGISTRY")
Tweaker.createBiome("surface_hell", "minecraft:hell")
surface_hell = forBiomes("biometweaker:surface_hell")
surface_hell.set("name", "Hell Surface")
surface_hell.addDicType("HOT")
surface_hell.addDicType("DRY")
surface_hell.addDicType("NETHER")
surface_hell.set("genStrongholds", true)
surface_hell.set("lakewaterPerChunk", "0")
surface_hell.set("lakelavaPerChunk", "16")
surface_hell.set("sandPerChunk", "4")
surface_hell.set("shroomPerChunk", "4")

Tweaker.setScriptStage("POST_INIT")
surface_hell = forBiomes("biometweaker:surface_hell")
#surface_hell.inheritProperties("minecraft:hell", "topBlock", "fillerBlock", "height", "heightVariation", "temperature", "humidity", "enableRain", "enableSnow", "skyColor")


surface_hell.addDicType("HOT")
surface_hell.addDicType("DRY")
surface_hell.addDicType("NETHER")

surface_hell.addActualFillerBlock("minecraft:netherrack")
surface_hell.registerGenBlockRep(1, "minecraft:stone", "minecraft:netherrack")
surface_hell.registerGenBlockRep(1, "minecraft:water", "minecraft:lava")
surface_hell.set("liquidFillerBlock", "minecraft:lava")

surface_hell.addSpawn("net.minecraft.entity.monster.EntityBlaze", "MONSTER", 75, 4, 4)
surface_hell.addSpawn("net.minecraft.entity.monster.EntityWitherSkeleton", "MONSTER", 50, 4, 4)
surface_hell.addSpawn("net.minecraft.entity.monster.EntitySkeleton", "MONSTER", 100, 4, 4)
commented

Right, but if you observe the actual error generated, it's on createBiome, which is (regardless) done at the right time.

EDIT: As you noted there is a second error generated for adding the biome dictionary type, but it looks like it is caused by the initial failure making the biome not exist; since it is a NullPointerException.

commented

The forest biome is one that cannot be copied currently. The same biome class is used for many different things and uses internal data to distinguish the types. I'll have to add that in a future update.

commented

Ok. What biome would you suggest I use to create forest variants?

commented

There isn't really another one that will give you what you want. I'll have to expand the createBiome command a bit to be able to include data such as forest type...

commented

I have created a new issue that gets straight to the required point. Closing this.