Jump to content

[1.10.2] Ticking an inventory inside an item?


AnZaNaMa

Recommended Posts

So, I've been following this tutorial on making an item have an inventory. I've completed it and got it all working and such, but now I want to be able to access the inventory from the item in its onUpdate method. Basically, I'm making a handheld "generator" that you put fuel in and while it's in your inventory, it ticks and burns up fuel to put power into the player holding it (via nbt). I'm not sure how I can gain access to the inventory/container from the item that holds it. Sorry if any of this doesn't make sense. I've been up all night modding :P

 

Tutorial: https://github.com/coolAlias/Forge_Tutorials/blob/master/InventoryItemTutorial.java

Item Class: https://github.com/AnZaNaMa/EverythingInBetween/blob/master/src/main/java/com/anzanama/everythinginbetween/Common/item/ItemPersonalGenerator.java

Custom Inventory Class: https://github.com/AnZaNaMa/EverythingInBetween/blob/master/src/main/java/com/anzanama/everythinginbetween/Common/Inventory/InventoryPersonalGenerator.java

Custom Container Class: https://github.com/AnZaNaMa/EverythingInBetween/blob/master/src/main/java/com/anzanama/everythinginbetween/Common/Container/ContainerPersonalGenerator.java

- Just because things are the way they are doesn't mean they can't be the way you want them to be. Unless they're aspen trees. You can tell they're aspens 'cause the way they are.

Link to comment
Share on other sites

You csnt access the items container as a new onstance is created every time, same with the inventory h9wever you can access the nbt.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

is this really the only way to do it? it seems very....wrong

 

also, the fact that any time I change an itemstack by using NBT directly, I have to manually change the NBT to reflect those changes is very finnicky.

- Just because things are the way they are doesn't mean they can't be the way you want them to be. Unless they're aspen trees. You can tell they're aspens 'cause the way they are.

Link to comment
Share on other sites

Yes it is the only way as items dont have a "TE" to work with you must handle it directly through nbt

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

Why do this only from the inventory? Why not just start it from the inventory, and handle everything in the item itself?

When you put something in the container, make it turn a boolean in the held item from "empty" = true, to "empty" = false; There, that states if it has something in it. If you never made a custom slot, (not sure if this is still an issue in 1.10.2, only did this back in 1.7.10) you can put any item inside, which would be bad. (Remember to cast the item to your own item to get access to the boolean, from the container)

 

So: you know how long the fuel lasts, and you know if the item has fuel or not. Every tick, countdown the lifetime left of the fuel, in the item's onUpdate, or a derivative method, and make it output energy.

 

If it runs out of energy, or everything that can use the energy is full, make it stop in it's tracks, and be "frozen" until it is refilled, or can output again. (Unless you want it to keep going nevertheless)

 

Also previously known as eAndPi.

"Pi, is there a station coming up where we can board your train of thought?" -Kronnn

Published Mods: Underworld

Handy links: Vic_'s Forge events Own WIP Tutorials.

Link to comment
Share on other sites

I am using whatever vanilla's furnace fuel slot is, so that's not really a problem.

I have it to the point where it burns fuel perfectly, but I'm realizing that the GUI is only updating when I open it. How can I make it constantly update as long as it's open?

- Just because things are the way they are doesn't mean they can't be the way you want them to be. Unless they're aspen trees. You can tell they're aspens 'cause the way they are.

Link to comment
Share on other sites

You should a Capability to store an

IItemHandler

inventory instead of using the old-style

IInventory

loaded from and saved to the

ItemStack

's compound tag. This will store the inventory contents as objects and only write to NBT when the

ItemStack

is being saved.

 

The Bit Bag from Chisels and Bits uses

IItemHandler

for its inventory, you can see its implementation here and here.

 

I have a vanilla-style chest that uses

IItemHandler

here (all related classes are in the same repository).

 

I have some custom capabilities here: API, implementation

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

I'm too tired to understand anything i'm looking at right now. I'll look into this tomorrow. thanks!

- Just because things are the way they are doesn't mean they can't be the way you want them to be. Unless they're aspen trees. You can tell they're aspens 'cause the way they are.

Link to comment
Share on other sites

Not sure if this would help, but I have a monster spawner that needs to keep track of time till the next spawn even if it's chunk isn't loaded. I get the system time when the chunk is loaded and compare it with the next time the chunk gets loaded.

 

You realize that in SSP the game can be paused, right? If you were to stand on the spawner, hit escape, and walk away for a few hours, as soon as you resumed paying, you'd get a dozen spawns immediately.

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.

Link to comment
Share on other sites

Something something something getTotalWorldTime() something something...

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.

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.