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
  • Open Vanilla GUI w/ item right click?
Currently Supported: 1.16.X (Latest) and 1.15.X (LTS)
Sign in to follow this  
Followers 0
GravityWolf

Open Vanilla GUI w/ item right click?

By GravityWolf, August 19, 2013 in Modder Support

  • Reply to this topic
  • Start new topic

Recommended Posts

GravityWolf    1

GravityWolf

GravityWolf    1

  • Stone Miner
  • GravityWolf
  • Members
  • 1
  • 98 posts
Posted August 19, 2013

Hello! I am trying to get an item to get items to open chests, furnaces, and crafting tables. I can't seem to get it to work. Here is the code I am trying to use:

 

public boolean onItemUse(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
    {
        if (par1World.isRemote)
        {
            return true;
        }
        else
        {
            par5EntityPlayer.displayGUIWorkbench(par2, par3, par4);
            return true;
        }
        
    }

 

I'm pretty sure it's not working cause this never gets called, but I can't put this in onItemRightClick()...anyone have any ideas?

  • Quote

Share this post


Link to post
Share on other sites

GravityWolf    1

GravityWolf

GravityWolf    1

  • Stone Miner
  • GravityWolf
  • Members
  • 1
  • 98 posts
Posted August 19, 2013

Alrighty. I got this far:

 

	@Override
 public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int x, int y, int z, int par7, float par8, float par9, float par10)
        {
  if (!par3World.isRemote)
                {
                        return true;
                }
                else
                {
                        par2EntityPlayer.displayGUIWorkbench(x, y, z);
                        return true;
                }
        }
}

 

It only works whilst right clicking on the ground, though. Any ideas?

  • Quote

Share this post


Link to post
Share on other sites

Mew    36

Mew

Mew    36

  • Dragon Slayer
  • Mew
  • Members
  • 36
  • 567 posts
Posted August 20, 2013

Alrighty. I got this far:

 

	@Override
 public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int x, int y, int z, int par7, float par8, float par9, float par10)
        {
  if (!par3World.isRemote)
                {
                        return true;
                }
                else
                {
                        par2EntityPlayer.displayGUIWorkbench(x, y, z);
                        return true;
                }
        }
}

 

It only works whilst right clicking on the ground, though. Any ideas?

 

Try using onItemRightClick() method... And also, why are you returning true in both statements? I am thinking you might want to make on e false

  • Quote

I am Mew. The Legendary Psychic. I behave oddly and am always playing practical jokes.

 

I have also found that I really love making extremely long and extremely but sometimes not so descriptive variables. Sort of like what I just did there xD

Share this post


Link to post
Share on other sites

GravityWolf    1

GravityWolf

GravityWolf    1

  • Stone Miner
  • GravityWolf
  • Members
  • 1
  • 98 posts
Posted August 20, 2013

Alrighty. I got this far:

 

	@Override
 public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int x, int y, int z, int par7, float par8, float par9, float par10)
        {
  if (!par3World.isRemote)
                {
                        return true;
                }
                else
                {
                        par2EntityPlayer.displayGUIWorkbench(x, y, z);
                        return true;
                }
        }
}

 

It only works whilst right clicking on the ground, though. Any ideas?

 

Try using onItemRightClick() method... And also, why are you returning true in both statements? I am thinking you might want to make on e false

 

This doesn't work at all:

 

public ItemStack onItemRightClick(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int x, int y, int z, int par7, float par8, float par9, float par10)
        {
  if (!par3World.isRemote)
                {
                        return null;
                }
                else
                {
                        par2EntityPlayer.displayGUIWorkbench(x, y, z);
                        return null;
                        
                }
        }
}

  • Quote

Share this post


Link to post
Share on other sites

Mew    36

Mew

Mew    36

  • Dragon Slayer
  • Mew
  • Members
  • 36
  • 567 posts
Posted August 20, 2013

No... Just.... No...... Do you even know what a null does???? IT RETURNS A NULL POINTER EXCEPTION!!!!! You should return the par1ItemStack....

  • Quote

I am Mew. The Legendary Psychic. I behave oddly and am always playing practical jokes.

 

I have also found that I really love making extremely long and extremely but sometimes not so descriptive variables. Sort of like what I just did there xD

Share this post


Link to post
Share on other sites

GravityWolf    1

GravityWolf

GravityWolf    1

  • Stone Miner
  • GravityWolf
  • Members
  • 1
  • 98 posts
Posted August 20, 2013

No... Just.... No...... Do you even know what a null does???? IT RETURNS A NULL POINTER EXCEPTION!!!!! You should return the par1ItemStack....

 

Yes, I know that, I was just testing it out. I should have changed that xD Even when I do return an ItemStack, it does...nothing.

  • Quote

Share this post


Link to post
Share on other sites

ILuvYouCompanionCube    6

ILuvYouCompanionCube

ILuvYouCompanionCube    6

  • Creeper Killer
  • ILuvYouCompanionCube
  • Members
  • 6
  • 112 posts
Posted August 20, 2013

try taking off the if(!world.isRemote)

 

I don't think client EntityPlayers can open GUIs

  • Quote

Share this post


Link to post
Share on other sites

Mew    36

Mew

Mew    36

  • Dragon Slayer
  • Mew
  • Members
  • 36
  • 567 posts
Posted August 20, 2013

try taking off the if(!world.isRemote)

 

I don't think client EntityPlayers can open GUIs

 

No, no they can't.... No wonder I thought there was something wrong with this xD

 

Thanks for clearing my mind :D

  • Quote

I am Mew. The Legendary Psychic. I behave oddly and am always playing practical jokes.

 

I have also found that I really love making extremely long and extremely but sometimes not so descriptive variables. Sort of like what I just did there xD

Share this post


Link to post
Share on other sites

GravityWolf    1

GravityWolf

GravityWolf    1

  • Stone Miner
  • GravityWolf
  • Members
  • 1
  • 98 posts
Posted August 20, 2013

try taking off the if(!world.isRemote)

 

I don't think client EntityPlayers can open GUIs

 

Still doesn't work  :-\

  • Quote

Share this post


Link to post
Share on other sites

ILuvYouCompanionCube    6

ILuvYouCompanionCube

ILuvYouCompanionCube    6

  • Creeper Killer
  • ILuvYouCompanionCube
  • Members
  • 6
  • 112 posts
Posted August 20, 2013

Are you using onItemUse or onItemRightClick ? use both just to be safe, if it works, undo one of them to figure which one worked :P

  • Quote

Share this post


Link to post
Share on other sites

GravityWolf    1

GravityWolf

GravityWolf    1

  • Stone Miner
  • GravityWolf
  • Members
  • 1
  • 98 posts
Posted August 20, 2013

Are you using onItemUse or onItemRightClick ? use both just to be safe, if it works, undo one of them to figure which one worked :P

 

onItemUse is just when you right click a block with an item, so that's not really what I want. I am using onItemRightClick, but onItemUse did work when I tried it. Just wasn't right, though.

  • Quote

Share this post


Link to post
Share on other sites

ILuvYouCompanionCube    6

ILuvYouCompanionCube

ILuvYouCompanionCube    6

  • Creeper Killer
  • ILuvYouCompanionCube
  • Members
  • 6
  • 112 posts
Posted August 20, 2013

navigating through some the minecraft classes I've found out what was wrong.

 

you need to damage the ItemStack, so a method called tryUseItem will return true. This method is in a class called net.minecraft.item.ItemInWorldManager. If it returns false it is as if you failed on using the item. So, you have to set the item maxDamage (using the method setMaxDamage of the Item, maybe in the constructor), which is the maximum number of times you can use the item. If you don't set this, it will be zero, and tryUseItem will return false even earlier.

 

The item will break eventually, but it's just a matter of setting a very very large number if you don't want it to break soon. (Like Integer.MAX_VALUE if you want it to last reeeally long)

 

This is what you have to do:

 

public *nameOfYourConstructor*(*parameter list of your constructor*)
{
     super(*parameter list of superclass constructor*);
     *whatever else your constructor does*
     setMaxDamage(*whatever int you want*);
}

@Override
public ItemStack onItemRightClick(ItemStack par1ItemStack, World world, EntityPlayer player)
{
     if(world.isRemote)
     {
          player.displayGUIWorkbench((int)player.posX, (int)player.posY, (int)player.posZ);
          setDamage(par1ItemStack, par1ItemStack.getItemDamage() + 1);
     }
     return par1ItemStack;
}

  • Quote

Share this post


Link to post
Share on other sites

GravityWolf    1

GravityWolf

GravityWolf    1

  • Stone Miner
  • GravityWolf
  • Members
  • 1
  • 98 posts
Posted August 20, 2013

navigating through some the minecraft classes I've found out what was wrong.

 

you need to damage the ItemStack, so a method called tryUseItem will return true. This method is in a class called net.minecraft.item.ItemInWorldManager. If it returns false it is as if you failed on using the item. So, you have to set the item maxDamage (using the method setMaxDamage of the Item, maybe in the constructor), which is the maximum number of times you can use the item. If you don't set this, it will be zero, and tryUseItem will return false even earlier.

 

The item will break eventually, but it's just a matter of setting a very very large number if you don't want it to break soon. (Like Integer.MAX_VALUE if you want it to last reeeally long)

 

This is what you have to do:

 

public *nameOfYourConstructor*(*parameter list of your constructor*)
{
     super(*parameter list of superclass constructor*);
     *whatever else your constructor does*
     setMaxDamage(*whatever int you want*);
}

@Override
public ItemStack onItemRightClick(ItemStack par1ItemStack, World world, EntityPlayer player)
{
     if(world.isRemote)
     {
          player.displayGUIWorkbench((int)player.posX, (int)player.posY, (int)player.posZ);
          setDamage(par1ItemStack, par1ItemStack.getItemDamage() + 1);
     }
     return par1ItemStack;
}

 

Thanks, it brings up the GUI, but now I have another problem =/

When I click on the item, it moves right back to the slot it was on previously. Any ideas?

  • Quote

Share this post


Link to post
Share on other sites

diesieben07    7691

diesieben07

diesieben07    7691

  • Reality Controller
  • diesieben07
  • Forum Team
  • 7691
  • 56325 posts
Posted August 20, 2013

You only open the GUI client-side [if (world.isRemote)].

Don't do that. If you check the side, only open it server side (world.isRemote == false).

 

Btw: I doubt you can open the Workbench GUI with this. The ContainerWorkbench requires an actual workbench block to be present at the coordinates you give it.

  • Quote

Share this post


Link to post
Share on other sites

ILuvYouCompanionCube    6

ILuvYouCompanionCube

ILuvYouCompanionCube    6

  • Creeper Killer
  • ILuvYouCompanionCube
  • Members
  • 6
  • 112 posts
Posted August 20, 2013

yeah, I think showing the GUI is one thing. But actually making it work involves some more coding. Containers and inventories and etc. I wish we had an up-to-date tutorial on that subject.

  • Quote

Share this post


Link to post
Share on other sites

hydroflame    208

hydroflame

hydroflame    208

  • World Shaper
  • hydroflame
  • Members
  • 208
  • 1511 posts
Posted August 20, 2013

ill make one later

  • Quote

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Share this post


Link to post
Share on other sites

GotoLink    381

GotoLink

GotoLink    381

  • World Shaper
  • GotoLink
  • Members
  • 381
  • 2012 posts
Posted August 21, 2013

Use a GuiHandler, player.openGui(...), then open the container and gui on corresponding side.

Of course, you'll need to override the container since you may be far from any workbench.

  • Quote

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 0
Go To Topic Listing



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • Hubmac
      The item given to the player disappears

      By Hubmac · Posted 2 minutes ago

      Ok thanks, it works. I still have a question, how can I download "ServerPlayerEntity" in my case I convert "LivingEntity" to "ServerPlayerEntity" but is there any way to get "ServerPlayerEntity" from anywhere
    • Deadlocked47
      Can't get into forge discord

      By Deadlocked47 · Posted 3 minutes ago

      So I was in the forge project discord and I use it alot to see what new mods are being made and to get Help with mods. One of my friends came over to my house and i went downstairs to get something and left my pc on. while I was downstairs, he went into my discord account and spammed shrek images and got me banned from the forge discord. Is there any way to get a ban appeal or something like that, because I like and use that discord a lot. Thank you.
    • diesieben07
      I can't download 1.16.5 forge

      By diesieben07 · Posted 5 minutes ago

      Some zip managers like to take control of the .jar file extension away from Java. Make sure you have Java installed and try running Jarfix once, then try the installer again.
    • Lil Bub Ben
      I can't download 1.16.5 forge

      By Lil Bub Ben · Posted 10 minutes ago

      I have a windows 10 and every time I download the installer it wouldn't work unless it was a windows installer. and 1.16.5 doesn't have a Win installer. can somebody help me work around this.
    • Twu
      Need help with Potion Brewing recipes

      By Twu · Posted 33 minutes ago

      Thank you so much
  • Topics

    • Hubmac
      2
      The item given to the player disappears

      By Hubmac
      Started 1 hour ago

    • Deadlocked47
      0
      Can't get into forge discord

      By Deadlocked47
      Started 3 minutes ago

    • Lil Bub Ben
      1
      I can't download 1.16.5 forge

      By Lil Bub Ben
      Started 10 minutes ago

    • Twu
      2
      Need help with Potion Brewing recipes

      By Twu
      Started 14 hours ago

    • Latobius
      3
      1.16.4 Can't connect to server, incomplete server tags.

      By Latobius
      Started 11 hours ago

  • Who's Online (See full list)

    • FREyebeans2506
    • Hubmac
    • Aviator737
    • lupicus
    • diesieben07
    • Unlucky
    • samjviana
    • Deadlocked47
    • Lil Bub Ben
    • Seika85
    • Pickle_Face5
    • czho
    • SubliminallySublime
    • Luis_ST
    • wilpito
    • Twu
    • NullDev
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • Open Vanilla GUI w/ item right click?
  • Theme

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