Jump to content

[1.16.3] [SOLVED] Block not being registered.


Recommended Posts

Posted (edited)

Hey guys,

So, I'm using RegistryObject holder classes to register blocks, items, entities, containers, etc, and a Registration class that contains all the DeferredRegisters I need.asd
When Registration classloads ModTileEntites, it throws "java.lang.NullPointerException: Registry Object not present" error. I know this happens if I'm trying to use a RegistryObject before its created. As I've registered the DeferredRegister to the event bus, it means the registry events didn't fire yet, right? What's going on here? i used SilentGear as an example of how to handle registries, and it seems like everything is right, i can't find to understand what I'm doing wrong.
Would appreciate some enlightenment on this :D
If you also noticed a bad practice or anything like that on my code, please let me know hehe.

 

I don't know how to make spoilers work with code, so sorry for the big thread (I've finally uploaded the project to Github).

 

 

crash-2020-10-14_18.51.20-fml.txtFetching info...

Edited by IamN5
Github project link added, solved
Posted
  On 10/14/2020 at 10:00 PM, ChampionAsh5357 said:

This looks like a cluster of nonsense. But the obvious answer is that you never deferred the block usage in the registry object, even though your copy-paste code did everywhere else for you.

Expand  

Copypaste code? I've been spending hours and hours the last few days trying to understand Forge and vanilla stuff. Thanks for the offense dude, do you feel superior already? So sad to see that the community has people like this. Anyway, you can find the complete "copy-pasted project" on Github, go give it a look.

Posted
  On 10/14/2020 at 10:06 PM, diesieben07 said:

Do not split the registry objects and the DeferredRegister instance into different classes. This breaks how DeferredRegister works.

Expand  

Yeah, I was thinking about that. I did it that way for project organization purposes, I'll try changing it. Thanks!

 

  On 10/14/2020 at 10:06 PM, diesieben07 said:

Also, you almost certainly do not own n5.com. Do not use it as your package name.

Expand  

As I do not own any domain, I didn't know how the main package structure should be. I don't have a lot of experience with Java/Maven conventions. Thanks for pointing it out, I'll start my package with only the name of the mod.

Posted
  On 10/14/2020 at 10:04 PM, IamN5 said:

Thanks for the offense dude, do you feel superior already?

Expand  

Nope, never do. I just have no filter when it comes to saying anything. I apologize if I gave you any offense, but that's exactly what I see. And yes, I did look both githubs in their entirety before I made my first post.

 

Now back to the other point. Your issue is within the tile entity registry class itself. You defer execution of the builder block but then proceed to grab an instance of the blocks raw before any registry has been loaded. This is problematic as the registry isn't populated causing an NPE to be thrown. This can be rectified by deferring execution for each block registered. For reference, that's the usage of a supplier as it executes the data when it's method is called.

Posted

Are you following a tutorial of some sort? Proxies are an old pattern and there are now better ways to do what they used to do, also your use of them completely ignores the purpose of them.

This is my Forum Signature, I am currently attempting to transform it into a small guide for fixing easier issues using spoiler blocks to keep things tidy.

 

As the most common issue I feel I should put this outside the main bulk:

The only official source for Forge is https://files.minecraftforge.net, and the only site I trust for getting mods is CurseForge.

If you use any site other than these, please take a look at the StopModReposts project and install their browser extension, I would also advise running a virus scan.

 

For players asking for assistance with Forge please expand the spoiler below and read the appropriate section(s) in its/their entirety.

  Reveal hidden contents

 

Posted
  On 10/15/2020 at 7:12 AM, diesieben07 said:

This isn't true. Since the block registry is guaranteed to be the first one, it is okay to reference your block suppliers in your TE suppliers.

Expand  

Its not true indeed. Thanks diesieben07, I managed to get it working yesterday after fixing some other stuff too.

 

  On 10/15/2020 at 7:55 AM, DaemonUmbra said:

Are you following a tutorial of some sort? Proxies are an old pattern and there are now better ways to do what they used to do, also your use of them completely ignores the purpose of them.

Expand  

I was following many sources (none of them were those random youtube videos) and got a little bit confused. I thought proxies still were a thing, and why is my use ignoring the purpose of them? Thank you for the heads up

Posted

Proxies were used to separate side-specific actions so you weren't calling client-only code on the server where it wouldn't exist and would cause a crash.

Nowadays that is handled mostly by sided event handlers.

Everything you have in your proxies can be common or handled by sided event handlers.

 

Most YouTube tutorials you'll find are utter crap. They tend to be "monkey see monkey do" and don't teach anything... they just go "do this, it works" and we get people wondering why it doesn't work when their issue is basic Java skills. Yes I could rant even more about this but I'd rather not.

This is my Forum Signature, I am currently attempting to transform it into a small guide for fixing easier issues using spoiler blocks to keep things tidy.

 

As the most common issue I feel I should put this outside the main bulk:

The only official source for Forge is https://files.minecraftforge.net, and the only site I trust for getting mods is CurseForge.

If you use any site other than these, please take a look at the StopModReposts project and install their browser extension, I would also advise running a virus scan.

 

For players asking for assistance with Forge please expand the spoiler below and read the appropriate section(s) in its/their entirety.

  Reveal hidden contents

 

Posted
  On 10/15/2020 at 9:25 PM, DaemonUmbra said:

Everything you have in your proxies can be common or handled by sided event handlers.

Expand  

I realized that after a little research on the matter, thank you!

 

  On 10/15/2020 at 9:25 PM, DaemonUmbra said:

Most YouTube tutorials you'll find are utter crap. They tend to be "monkey see monkey do" and don't teach anything... they just go "do this, it works" and we get people wondering why it doesn't work when their issue is basic Java skills.

Expand  

I couldn't agree more. I use many sources to study/learn, the only one containing videos being McJty Modding as it was recommended here.

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...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

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