Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[1.16.5] ExceptionInInitializerError when registering custom Biome with custom SurfaceBuilder

Featured Replies

Posted

I am currently creating a custom dimension with custom biome.
Since the dimension has no real surface that has to be created, i have used the default surfacebuilder (from vanilla), until now.
but now i have created my own surfacebuilder for the biome. but now i get an error when registering the biome.

this is the log:

latest.log

this is the registration class of my biome
this is my biome
and this my surfacebuilder

 

 

Edited by Luis_ST

There's a little error that sneaks by here that explains the issue: 'Caused by: java.lang.NullPointerException: Registry Object not present: industry:default_deepslate'.

You statically held an instance of a registry object and classloaded the associated object before registry events have passed. Surface builders are registered after biomes after all. Instead, wrap the instance in a supplier. This should be done for all registry objects including the Features. Just make sure to remember to register the configured data during common setup.

At some point, I suggest moving to JSON as your biome could be fully declared within there.

  • Author
8 hours ago, ChampionAsh5357 said:

Instead, wrap the instance in a supplier.

like that:?

	public static final RegistryObject<SurfaceBuilder<SurfaceBuilderConfig>> DEFAULT_DEEPSLATE = SURFACE_BUILDERS.register("default_deepslate", 
			DefaultDeepslateSurfaceBuilder::new);

 

8 hours ago, ChampionAsh5357 said:

Just make sure to remember to register the configured data during common setup.

how exactly, is there a class/method i have to use.
I currently use the vanilla registry because I have not found anything from forge for the registration
 

8 hours ago, ChampionAsh5357 said:

At some point, I suggest moving to JSON as your biome could be fully declared within there.

I will think about this, but I will probably not move the biome to json because I hate json

7 hours ago, Luis_ST said:

like that:?

The ConfiguredSurfaceBuilder when being passed into the biome.

7 hours ago, Luis_ST said:

I currently use the vanilla registry because I have not found anything from forge for the registration

Call the vanilla registry event within common setup. That's when these objects should be registered anyways.

  • Author
52 minutes ago, ChampionAsh5357 said:

The ConfiguredSurfaceBuilder when being passed into the biome.

thanks that fixed the problem

53 minutes ago, ChampionAsh5357 said:

Call the vanilla registry event within common setup. That's when these objects should be registered anyways.

I'll change that later, but thanks for your help

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.