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.

Featured Replies

Posted

I'm trying to understand how to do custom crafting GUIs. I have a custom method for my crafting block and I can make things happen when it's activated but I can't figure out how crafting inventories work. Is there a guide somewhere that I am missing? I know that it has changed from 1.12 which used to use the openGui() method, but I'm not sure how the updated system works.

  • Author
1 minute ago, DragonITA said:

Try to see Vanilla code

I've looked at the onBlockActivated method in the vanilla crafting table, but i'm not sure how much of it applies and what changes I need to make. So far, I've copy/pasted the onBlockActivated() method into my block's class, as well as the getContainer() method and ITextComponent field since they are both needed for onBlockActivated, and it almost recreated the vanilla crafting table but whenever I click on the block the inventory closes instantly. Progress, but not quite where I need to be.

 

My current tasks are:

-figure out how to keep the crafting GUI from closing instantly when it is opened

-figure out how to create a new crafting GUI rather than the pre-existing crafting table

  • Author
5 minutes ago, MyRedAlien43 said:

NetworkHooks.openGui

 

Thanks! I'm looking at the method now and I'll see if I can figure it out.

  • Author

Okay, so far this is what I have (this method is inside the class for the crafting block I am making):

 

https://pastebin.com/gVhDNaFr

 

The result is that nothing happens when I click on the block. Not really surprising, but I'm not sure where to go from here.

  • Author
2 minutes ago, MyRedAlien43 said:

You need to link the container and the screen (aka Gui) Using a method in ScreenManager using a method that i cant remember

gimmi a sec to go look in ScreenManager

  • Author

Okay, ScreenManager has openScreen, getScreenFactory, getFactory, and registerFactory. There's also createScreen. I'm not sure which one you are referring to, I can't quite understand what they do well enough to see which one links the container and the screen

1 minute ago, Beep said:

Okay, ScreenManager has openScreen, getScreenFactory, getFactory, and registerFactory. There's also createScreen. I'm not sure which one you are referring to, I can't quite understand what they do well enough to see which one links the container and the screen

Its registerFactory

  • Author
3 minutes ago, MyRedAlien43 said:

Its registerFactory

looking at the method, I'm not quite sure how to use it, I'll be honest. I can figure out that exampleMethod(int a, Object b) needs an int and an object as an input, but I'm not sure what registerFactory(ContainerType<? extends M> type, ScreenManager.IScreenFactory<M, U> factory) requires, or how to decipher it. I'm not that knowledgeable with Java unfortunately. 

  • Author
Just now, Ugdhar said:

Have you tried searching the forums here for "registerFactory" and see what results you get? :)

I have, and so far I've got that it needs to be called in FMLClientSetupEvent in my main method, which is definitely something I needed to know but not quite what I was looking for. 
Also, I understand that the inputs are ContainerType<? extends M> type and ScreenManager.IScreenFactory<M, U> factory, but I don't know how to make a new ContainerType or IScreenFactory. Most questions based around that method seem to be asking things at a level I am not at. I'm still looking but I'm not understanding it so far

10 minutes ago, Beep said:

I have, and so far I've got that it needs to be called in FMLClientSetupEvent in my main method, which is definitely something I needed to know but not quite what I was looking for. 
Also, I understand that the inputs are ContainerType<? extends M> type and ScreenManager.IScreenFactory<M, U> factory, but I don't know how to make a new ContainerType or IScreenFactory. Most questions based around that method seem to be asking things at a level I am not at. I'm still looking but I'm not understanding it so far

An IScreenFactory basically requires a reference to the screen class constructor (e.g. ScreenClass::new), and you can look in ContainerType to see how you make one

Edited by MyRedAlien43

  • Author
18 minutes ago, MyRedAlien43 said:

An IScreenFactory basically requires a reference to the screen class constructor (e.g. ScreenClass::new), and you can look in ContainerType to see how you make one

I really appreciate your help. Honestly, I think I'm just not good enough at Java to be able to figure a lot of this out. I think the best option for me right now is to stick to making new crafting recipes, as it will get the job done for now. I'll either have to wait until I understand java better, or until someone makes a comprehensive guide for people like me

This is a great source of examples for different subjects. There is code and readme for each of the examples.

 

https://github.com/TheGreyGhost/MinecraftByExample

 

You will probably want to look through the "Containers (Inventories)" examples. Links to the examples can be found by scrolling down the readme file.

 

Happy coding! 

Edited by WuestMan
grammer

14 hours ago, Beep said:

I've looked at the onBlockActivated method in the vanilla crafting table, but i'm not sure how much of it applies and what changes I need to make. So far, I've copy/pasted the onBlockActivated() method into my block's class, as well as the getContainer() method and ITextComponent field since they are both needed for onBlockActivated, and it almost recreated the vanilla crafting table but whenever I click on the block the inventory closes instantly. Progress, but not quite where I need to be.

 

My current tasks are:

-figure out how to keep the crafting GUI from closing instantly when it is opened

-figure out how to create a new crafting GUI rather than the pre-existing crafting table

 

See/read this:

On 11/29/2019 at 10:06 AM, diesieben07 said:

Anything that can produce a PNG. I can recommend GIMP as a free software.

 

There are a few parts to a GUI:

  • A Screen class (use your IDE to look at Minecraft's ones)
  • It's texture (Minecraft's ones are in assets/minecraft/textures, again use your IDE)
  • If you need an inventory in the GUI as well:
    • A Container class
    • Your Screen needs to be a ContainerScreen.
    • You need to register your screen with ScreenManager.
    • You need to open your screen using NetworkHooks.openGui on the server.

 

New in Modding? == Still learning!

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.