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

    • Wintersky20
      Modifying / Replacing Vanilla Blocks (1.16.X)

      By Wintersky20 · Posted just now

      You have a point , but I want to change the entire tile , for input and output in to the blocks Thanks a lot for the replay ,, but I solve it  
    • Wintersky20
      Modifying / Replacing Vanilla Blocks (1.16.X)

      By Wintersky20 · Posted 3 minutes ago

      Thanks a lot , it's working perfectly
    • kiou.23
      Modifying / Replacing Vanilla Blocks (1.16.X)

      By kiou.23 · Posted 4 minutes ago

      If all you want is to change the screen, not the block itself, you can create your own ContainerScreen, and than bind that to the vanilla Containers
    • Mark74
      I don't know how forge works

      By Mark74 · Posted 6 minutes ago

      Yes i did
    • cadbane86140
      Minecraft: Splegg Mini-Game #2!

      By cadbane86140 · Posted 10 minutes ago

      Hello There! Today is the first of many final Hive Videos, as you guys know the hive is closing on April 15th so what that means for content on the channel is that we are gonna be pumping out a bunch of hive mini-games! Today we play splegg! It's always a fun time playing this and there are so many hilarious moments in this video that I know you guys are gonna love! I hope you all enjoy this video and if you did don't forget to like and sub for more!  
  • Topics

    • Wintersky20
      5
      Modifying / Replacing Vanilla Blocks (1.16.X)

      By Wintersky20
      Started 1 hour ago

    • Mark74
      5
      I don't know how forge works

      By Mark74
      Started 1 hour ago

    • cadbane86140
      0
      Minecraft: Splegg Mini-Game #2!

      By cadbane86140
      Started 10 minutes ago

    • Piticri
      0
      Square Letters

      By Piticri
      Started 11 minutes ago

    • BlakeRowsGood
      0
      Forge Installer Not Opening

      By BlakeRowsGood
      Started 14 minutes ago

  • Who's Online (See full list)

    • Wintersky20
    • larsgerrits
    • kiou.23
    • Mark74
    • Piticri
    • cadbane86140
    • CookieLukas
    • BlakeRowsGood
    • Cheezy Amuzus
    • FlashHUN
    • Jason_Whittaker
  • 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