Jump to content

[1.12.1] How do i add custom models to my items


dragonwhisper92

Recommended Posts

3 minutes ago, diesieben07 said:

I don't understand how to fix this so any help would be great

 

3 minutes ago, diesieben07 said:

Which ones specifically and how do i fix? 

 

 

5 minutes ago, diesieben07 said:
  • You still have references to client-only classes in common code (ModelRegistryEvent in RegistryHandler).

why is this an issue, (copied of a tutorial so still not 100% on how to fix this issue)

 

6 minutes ago, diesieben07 said:
  • You never register any models. Your item does call CommonProxy::registerItemRenderer, but that method is empty.

That would be correct i haven't actually got to adding my custom models yet was wondering if theirs a tutorial somewhere?

Link to comment
Share on other sites

5 minutes ago, diesieben07 said:

Please clarify what you don't understand about this. Just throwing your hands up and crying "help" is not helpful.

i guess what i dont understand is why using common proxy is so diffrent from @sidedproxy and i dont understand how to change my code as ive only ever done it this way

 

7 minutes ago, diesieben07 said:

Because common classes are loaded on both client and server (physical sides, learn about sides in the documentation). If such a common class now has a reference to a client-only class the server will try to load that client-only class and fail, because the class is client-only (i.e. not present on the server). This is why @SidedProxy exists.

is this similar to the problem above

 

7 minutes ago, diesieben07 said:

You call ModelLoader.setCustomModelResourceLocation, that's it for basic models. I do not know of a tutorial.

Hmm ok ill look into this thanks

 

 

P.S sorry for asking so many question have a decent background in programming it just takes me a long time to get used to new frameworks and the such

Link to comment
Share on other sites

26 minutes ago, diesieben07 said:

The two are not mutually exclusive (in fact you are using both currently). The point is that @SidedProxy is designed to switch between a server implementation and a client implementation. There is nothing "common" here. If you have code that needs to be ran on both sides on startup, that's what your main mod class is for. The a client proxy for client-only code and a server-proxy for server-only code. Then so that you can interact with both in a uniform way they both implement an interface simply called Proxy.

hmm okay do you have an example mod  i could see that shows how i should set it up?

 

26 minutes ago, diesieben07 said:

No, the problem above is mostly a code-style issue. This one will actually make a server crash.

ah okay so one is just like hey this is just stupidly long way and makes it harder to read and the other just wont run at all, if that is the case, what should i do to fix this

"you  still have references to client-only classes in common code (ModelRegistryEvent in RegistryHandler)"

Link to comment
Share on other sites

1 minute ago, diesieben07 said:

If you need an example mod for "an interface and two classes that implement it" you need to go back to Java basics. There is nothing special here, just polymorphism.

yeah Ill definitely need too haven't worked with java in a long time i'm forgetting allot

 

3 minutes ago, diesieben07 said:

You must only reference client-only classes from other client-only classes, such as your client proxy.

Hmmm okay

Link to comment
Share on other sites

The "common" proxy thing is something that set in many modders' psyche early on and honestly I continue to perpetuate it although as diesieben07 rightly mentions it is a misleading way to implement things.

 

The confusion occurred because in many modding situations the sided concerns are mostly related to the client-only stuff rather than the server side stuff. However, the annotation was intended to also have a server side so some early modder came up with an example that used inheritance where the server proxy only contained common stuff and the client inherited from that and extended it with the client-side stuff. Everyone else copied from that person and this scheme has been used by lots of people since.

 

I should probably update my tutorials and example mods accordingly. It's just that very few people seem to run into cases where they have server-only stuff to manage and so lumping server as "common" has worked for most.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

15 hours ago, jabelar said:

The "common" proxy thing is something that set in many modders' psyche early on and honestly I continue to perpetuate it although as diesieben07 rightly mentions it is a misleading way to implement things.

 

The confusion occurred because in many modding situations the sided concerns are mostly related to the client-only stuff rather than the server side stuff. However, the annotation was intended to also have a server side so some early modder came up with an example that used inheritance where the server proxy only contained common stuff and the client inherited from that and extended it with the client-side stuff. Everyone else copied from that person and this scheme has been used by lots of people since.

 

I should probably update my tutorials and example mods accordingly. It's just that very few people seem to run into cases where they have server-only stuff to manage and so lumping server as "common" has worked for most.

Hmm okay i didnt realise thats where it came from thats interesting, thanks, also if you could link your tutorials that would be great

Link to comment
Share on other sites

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hey folks. I am working on a custom "Mecha" entity (extended from LivingEntity) that the player builds up from blocks that should get modular stats depending on the used blocks. e.g. depending on what will be used for the legs, the entity will have a different jump strength. However, something unexpected is happening when trying to override a few of LivingEntity's functions and using my new own "Mecha" specific fields: instead of their actual instance-specific value, the default value is used (0f for a float, null for an object...) This is especially strange as when executing with the same entity from a point in the code specific to the mecha entity, the correct value is used. Here are some code snippets to better illustrate what I mean: /* The main Mecha class, cut down for brevity */ public class Mecha extends LivingEntity { protected float jumpMultiplier; //somewhere later during the code when spawning the entity, jumpMultiplier is set to something like 1.5f //changing the access to public didn't help @Override //Overridden from LivingEntity, this function is only used in the jumpFromGround() function, used in the aiStep() function, used in the LivingEntity tick() function protected float getJumpPower() { //something is wrong with this function //for some reason I can't correctly access the fields and methods from the instanciated entity when I am in one of those overridden protected functions. this is very annoying LogUtils.getLogger().info(String.valueOf(this.jumpMultiplier))) //will print 0f return this.jumpMultiplier * super.getJumpPower(); } //The code above does not operate properly. Written as is, the entity will not jump, and adding debug logs shows that when executing the code, the value of this.jumpMultiplier is 0f //in contrast, it will be the correct value when done here: @Override public void tick() { super.tick(); //inherited LivingEntity logic //Custom logic LogUtils.getLogger().info(String.valueOf(this.jumpMultiplier))) //will print 1.5f } } My actual code is slightly different, as the jumpMuliplier is stored in another object (so I am calling "this.legModule.getJumpPower()" instead of the float), but even using a simple float exactly like in the code above didn't help. When running my usual code, the object I try to use is found to be null instead, leading to a crash from a nullPointerException. Here is the stacktrace of said crash: The full code can be viewed here. I have found a workaround in the case of jump strength, but have already found the same problem for another parameter I want to do, and I do not understand why the code is behaving as such, and I would very much like to be able to override those methods as intended - they seemed to work just fine like that for vanilla mobs... Any clues as to what may be happening here?
    • Please delete post. Had not noticed the newest edition for 1.20.6 which resolves the issue.
    • https://paste.ee/p/GTgAV Here's my debug log, I'm on 1.18.2 with forge 40.2.4 and I just want to get it to work!! I cant find any mod names in the error part and I would like some help from the pros!! I have 203 mods at the moment.
    • In 1.20.6 any potion brewed in the brewing stand disappears upon completion.
    • My game crashes whenever I click on Singleplayer then it crashes after the "Saving world". I'm playing on fabric 1.20.1 on forge for the easy instance loading. My game is using 12GB of RAM, I tried deleting the options.txt, and also renaming the saves file but neither worked. Here's the crash report link: https://mclo.gs/qByOqVK
  • Topics

×
×
  • Create New...

Important Information

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