Jump to content

[1.8] [Solved] Help making portable crafting table


Landstryder

Recommended Posts

I'm trying to add an item that acts as a portable crafting table and opens when held and right mouse is clicked. It almost works, the interface opens for about 1/10 of a second then closes. Eventually I want to get it to open a different GUI if shift is held but would like to get this part of it working first. If anyone could point out where I've gone wrong would be much appreciated.

 

public class ItemMatrix extends Item
{
    public ItemMatrix()
        {
            super();
            setMaxDamage(0);
            setMaxStackSize(1);
            setCreativeTab(Symbology.symbologyTab);
            setUnlocalizedName("rune_matrix");
        }

    public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn)
    {

        playerIn.displayGui(new BlockWorkbench.InterfaceCraftingTable(worldIn, playerIn.getPosition()));
        return itemStackIn;
    }
}

Link to comment
Share on other sites

Apparently part of the craft table code checks to make sure there is actually a crafting table block in the world at the position called. Overriding that makes it work. Thanks Saxon564.

 

 

public class ItemMatrix extends Item
{
    public ItemMatrix()
        {
            super();
            setMaxDamage(0);
            setMaxStackSize(1);
            setCreativeTab(Symbology.symbologyTab);
            setUnlocalizedName("rune_matrix");
        }

    public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn)
    {
        playerIn.displayGui(new ItemMatrix.InterfaceCraftingTable(worldIn, playerIn.getPosition()));
        return itemStackIn;
    }
    
    public static class InterfaceCraftingTable extends BlockWorkbench.InterfaceCraftingTable implements IInteractionObject
    {
        private final World world;
        private final BlockPos position;

        public InterfaceCraftingTable(World worldIn, BlockPos pos)
        {
        	super(worldIn, pos);
            this.world = worldIn;
            this.position = pos;
        }

        @Override
        public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn)
        {
            return new ContainerMatrixCrafter(playerInventory, this.world, this.position);
        }
    }
}

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



×
×
  • Create New...

Important Information

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