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

hello and thank you to anyone who reads this.
im trying to make a containeritem, it seems it does not work the same in this version.
just to be clear, i do not want to create a gui, i want to create an item which returns to the player inventory or stays in crafting grid after a craft is preformed.
much like the old equivalent exchange philosopher stone, or the juicer from many other mods. and i would like to change damage on craft.

i tried passing hasContainerItem and i could not figure out what i did wrong. (im not great at java and the last time i made a mod was 1.10.2, my mod was not released)

here is base code before i tried properly setting up the constructors (if i do anything else, the class throws errors)

 

Spoiler

image.thumb.png.9cdabe992ca088b30b24b93dfb38e8a5.png

raw code

public class UTOContainerItem extends Item
{
    //TODO: make it so i can change all attributes of an item aswell as add tooltips to items in 1 line of code in the init class.
    public UTOContainerItem
            (Properties properties) {
        super(properties);
    }

    @Override
    public void addInformation(ItemStack stack, @Nullable World worldIn, List<ITextComponent> tooltip, ITooltipFlag flagIn) {
        super.addInformation(stack, worldIn, tooltip, flagIn);
    }

    @Override
    public boolean hasEffect(ItemStack stack) {
        return true;
    }

    @Override
    public boolean hasContainerItem(ItemStack stack) {
        return true;
    }
}

 

  • Author

when i return null and craft an item, i crash (of course)
when i try to return ItemInit.MYITEM, or when i try to return (this) the code is not functional.

so i tried returning itemStack
this allows the crafting to work without crashing but the item is still used up.


    @Override
    public ItemStack getContainerItem(ItemStack itemStack) {
        return itemStack;
    }


this bit of code is the only thing my tiny brain has gotten to work. (by work i mean it didn't crash)

i tried returning a specific item, tried passing the itemstack in the constructor, i tried a few different things. 

 

should i be passing getContainerItem in the init class instead?

 

@Override
    public ItemStack getContainerItem(ItemStack itemStack) {
        return ItemInit.uto_generic_eye;
    }//when i try this, its all errored

when i try to pass a specific item, it errors and becomes unusable.

im finding it hard to find information on this topic, could i maybe find this in the energy api or something?

@Override
    public ItemStack getContainerItem(ItemStack itemStack) {
        return ItemInit.uto_generic_eye;
    }//when i try this, its all errored

This will never work because it is asking for an itemstack, I think you will need to return a damaged itemstack here

 

 

  • Author

thanks ill do that, i thought i sent this earlier. that totally fixed my issues btw thanks @diesieben07 

@poopoodice i understood that, i was just testing things. 

 

i ended up looking to make sure the item was a container item then if it is i make it one by returning itemstack. 
it was the easiest and most simplistic way to do it.

the issue is fixed now.

 

public class UTOContainerItem extends Item
{
    //TODO: make RepairItemRecipe much more elaborate
    public UTOContainerItem
            (Properties properties) { super(properties); }

    @Override
    public boolean hasEffect(ItemStack stack){return true;}

    @Override
    public void setDamage(ItemStack stack, int damage){}

    @Override
    public boolean isRepairable(ItemStack stack) {
        return super.isRepairable(stack);
    }

    @Override
    public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) {
        return super.getIsRepairable(toRepair, repair);
    }

    @Override
    public boolean hasContainerItem(ItemStack stack){return true;}

    @Override
    public ItemStack getContainerItem(ItemStack itemStack)
    {
        if (!hasContainerItem(itemStack))
        {
            return ItemStack.EMPTY;
        }
        return new ItemStack(getItem());
    }
}

 

59 minutes ago, reapersremorse said:

if (!hasContainerItem(itemStack))

You don't need to do this.

1) getContainerItem is only called if hasContainerItem returns true

2) Its your own god damn item and you already always return true...

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

  • Author
9 minutes ago, Draco18s said:

You don't need to do this.

1) getContainerItem is only called if hasContainerItem returns true

2) Its your own god damn item and you already always return true...

i plan to make a more advanced constructor in the future, one where when i initialize items. i can choose container item as a property. doing this now just means i shouldn't have to do it in the future. unless i have to change it. 

Point 1 still remains relevant. You don't need to check again.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

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.