Jump to content
  • Home
  • Files
  • Docs
Topics
  • All Content

  • This Topic
  • This Forum

  • Advanced Search
  • Existing user? Sign In  

    Sign In



    • Not recommended on shared computers


    • Forgot your password?

  • Sign Up
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • [1.15.2] Creating crafting GUIs
Currently Supported: 1.16.X (Latest) and 1.15.X (LTS)
Sign in to follow this  
Followers 2
Beep

[1.15.2] Creating crafting GUIs

By Beep, March 22, 2020 in Modder Support

  • Reply to this topic
  • Start new topic

Recommended Posts

Beep    0

Beep

Beep    0

  • Tree Puncher
  • Beep
  • Members
  • 0
  • 9 posts
Posted March 22, 2020

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.

  • Quote

Share this post


Link to post
Share on other sites

DragonITA    12

DragonITA

DragonITA    12

  • Dragon Slayer
  • DragonITA
  • Members
  • 12
  • 552 posts
Posted March 22, 2020

Try to see Vanilla code

  • Quote

New in Modding? == Still learning!

Share this post


Link to post
Share on other sites

MyRedAlien43    0

MyRedAlien43

MyRedAlien43    0

  • Tree Puncher
  • MyRedAlien43
  • Members
  • 0
  • 37 posts
Posted March 22, 2020
NetworkHooks.openGui

 

  • Quote

Share this post


Link to post
Share on other sites

Beep    0

Beep

Beep    0

  • Tree Puncher
  • Beep
  • Members
  • 0
  • 9 posts
Posted March 22, 2020
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

  • Quote

Share this post


Link to post
Share on other sites

Beep    0

Beep

Beep    0

  • Tree Puncher
  • Beep
  • Members
  • 0
  • 9 posts
Posted March 22, 2020
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.

  • Quote

Share this post


Link to post
Share on other sites

Beep    0

Beep

Beep    0

  • Tree Puncher
  • Beep
  • Members
  • 0
  • 9 posts
Posted March 22, 2020

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.

  • Quote

Share this post


Link to post
Share on other sites

MyRedAlien43    0

MyRedAlien43

MyRedAlien43    0

  • Tree Puncher
  • MyRedAlien43
  • Members
  • 0
  • 37 posts
Posted March 22, 2020

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

  • Quote

Share this post


Link to post
Share on other sites

Beep    0

Beep

Beep    0

  • Tree Puncher
  • Beep
  • Members
  • 0
  • 9 posts
Posted March 22, 2020
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

  • Quote

Share this post


Link to post
Share on other sites

Beep    0

Beep

Beep    0

  • Tree Puncher
  • Beep
  • Members
  • 0
  • 9 posts
Posted March 22, 2020

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

  • Quote

Share this post


Link to post
Share on other sites

MyRedAlien43    0

MyRedAlien43

MyRedAlien43    0

  • Tree Puncher
  • MyRedAlien43
  • Members
  • 0
  • 37 posts
Posted March 22, 2020
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

  • Quote

Share this post


Link to post
Share on other sites

Beep    0

Beep

Beep    0

  • Tree Puncher
  • Beep
  • Members
  • 0
  • 9 posts
Posted March 22, 2020
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. 

  • Quote

Share this post


Link to post
Share on other sites

Ugdhar    232

Ugdhar

Ugdhar    232

  • World Shaper
  • Ugdhar
  • Members
  • 232
  • 2215 posts
Posted March 22, 2020
11 minutes ago, Beep said:

looking at the method, I'm not quite sure how to use it

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

  • Quote

Share this post


Link to post
Share on other sites

Beep    0

Beep

Beep    0

  • Tree Puncher
  • Beep
  • Members
  • 0
  • 9 posts
Posted March 22, 2020
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

  • Quote

Share this post


Link to post
Share on other sites

MyRedAlien43    0

MyRedAlien43

MyRedAlien43    0

  • Tree Puncher
  • MyRedAlien43
  • Members
  • 0
  • 37 posts
Posted March 22, 2020 (edited)
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 March 22, 2020 by MyRedAlien43
  • Quote

Share this post


Link to post
Share on other sites

Beep    0

Beep

Beep    0

  • Tree Puncher
  • Beep
  • Members
  • 0
  • 9 posts
Posted March 22, 2020
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

  • Quote

Share this post


Link to post
Share on other sites

WuestMan    1

WuestMan

WuestMan    1

  • Tree Puncher
  • WuestMan
  • Members
  • 1
  • 16 posts
Posted March 23, 2020 (edited)

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 March 23, 2020 by WuestMan
grammer
  • Quote

Share this post


Link to post
Share on other sites

DragonITA    12

DragonITA

DragonITA    12

  • Dragon Slayer
  • DragonITA
  • Members
  • 12
  • 552 posts
Posted March 23, 2020
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.

 

  • Quote

New in Modding? == Still learning!

Share this post


Link to post
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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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.

    • Insert image from URL
×
  • Desktop
  • Tablet
  • Phone
Sign in to follow this  
Followers 2
Go To Topic Listing



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • S-Spirit
      [1.16.4] Why recipe result calculated on server side?

      By S-Spirit · Posted 12 minutes ago

      For now it is impossible. My crating system is tricki a little. I didn't found way to represents necessary logic by JSON without losing my wishes about customisation. So I don't use recipes consept at all. But I hope at future resolve this problem and use it. In any case, I think your notification about cheating it a great point! So I will implement combinations calculation at client, but then send results to server for approve and apply into slots. Thanks.
    • diesieben07
      why is 3 in the middle of 7

      By diesieben07 · Posted 57 minutes ago

      1.12 is no longer supported on this forum. Please update to a modern version of Minecraft to receive support.
    • forgotendeath09
      why is 3 in the middle of 7

      By forgotendeath09 · Posted 1 hour ago

      when you load up forge 1.12.2 the top is displayed as 0/7, once it gets to 3/7 the bar below is in the middle; this is very wrong please consider changing this it drives me crazy every time i launch a modded world.
    • F0RZera
      have an error when trying to connect to LAN server with mods

      By F0RZera · Posted 1 hour ago

      Ok thanks
    • DeNub
      Cannot create a modded forge server for 1.16.4

      By DeNub · Posted 1 hour ago

      Its working all well now. Thank you for the support and being patient with me.
  • Topics

    • S-Spirit
      4
      [1.16.4] Why recipe result calculated on server side?

      By S-Spirit
      Started 23 hours ago

    • forgotendeath09
      1
      why is 3 in the middle of 7

      By forgotendeath09
      Started 1 hour ago

    • F0RZera
      10
      have an error when trying to connect to LAN server with mods

      By F0RZera
      Started 6 hours ago

    • DeNub
      27
      Cannot create a modded forge server for 1.16.4

      By DeNub
      Started 12 hours ago

    • BobbyLikesCake
      13
      1.16.4 Modded not loading singleplayer worlds

      By BobbyLikesCake
      Started 5 hours ago

  • Who's Online (See full list)

    • S-Spirit
    • diesieben07
    • Pinary
    • IndigoRom
    • Umpaz
    • Kreepydude
    • SeraphicKing
    • loordgek
    • OrneryHandle
    • EnergizedAB
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • [1.15.2] Creating crafting GUIs
  • Theme

Copyright © 2019 ForgeDevelopment LLC · Ads by Longitude Ads LLC Powered by Invision Community