Jump to content

Recommended Posts

Posted

I want to make food items which can spoil over time while in a stack. It seems logical to use the vanilla item damage/durability for the spoilage, but damaged items can't be stacked. My first instinct would be to make a subclass of ItemStack and implement my own functionality for combining damage and stack sizes, but since ItemStack is final I can't do that. Does anyone have any ideas for how I could achieve something like this? Or will it be painfully difficult/unachieveable?

 

Edit: update in post #5

Posted

A couple things:

 

1) any item stored in a chest (or other non-entityliving inventory) will not tick and thus not rot.

2) any item in an unloaded chunk (or in a player that is not connected to the server's inventory) will not tick and thus not rot.

3) how do you plan to handle combining a stack of "damage:1" meat with "damage:10" meat?

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.

Posted

1) I'm planning to create custom chest TileEntities, so I will be able to add ticking for that anyway.

2) I understand that, and I'll either introduce workarounds (instant rot when a chunk becomes re-loaded, perhaps) or just let it go.

3) Some sort of averaging process - something like how spoilage levels are combined in the game Don't Starve.

 

I know it's a big job and I might end up dropping it, but I'd like to give it a try if I can.

Posted

Hi

 

I think it shouldn't be too difficult.  Just add a few custom methods to your Item class (not the ItemStack) and Item renderer to implement the effects of rotting.  For example, instead of using the ItemStack durability bar to indicate rotting, draw a durability bar yourself when rendering the item; or alternatively change the item's appearance another way (eg its colour or a degraded texture).

 

You can work around the ticking problem by storing a timestamp in the Item NBT (or perhaps - as a Capability).

I.e. you have a master clock for the world, when an item is created, you copy the value of your master clock as "creation time".  Later, whenever you render the item or do something with it, check the clock against the saved "creation time" and calculate the amount of rotting.

 

-TGG

Posted

Since I posted, I've found a way to hijack the vanilla durability rendering without needing to use actual item durability - and made a capability to handle my decay process. The problem I'm stuck with now is how to enable combining stacks of the same item that have different levels of decay - I'd really like to be able to make that possible by some kind of averaging process. But the ability to combine stacks seems to mostly rely on

ItemStack.areItemStackTagsEqual

which checks the capabilities. So if I'm storing my decay capability then vanilla will automatically prevent stacks with different decay levels from being combined.

 

I could override all the various stack-combining methods in my inventory containers (I've already got custom containers anyway so that's easily possible), to manually check whether stacks can combine, and then update the stack capability accordingly, but that would be a lot of hassle and probably not totally reliable.

 

Another option is to somehow cheat the NBT check by making my own subclass of

NBTTagCompound

to override the

equals

method and prevent it from checking the values which I want to be irrelevant. But I'm pretty sure that overriding an

equals

method so that it tells an outright lie about whether two objects are equal is some kind of cardinal sin and will probably cause all kinds of problems I haven't thought of.

 

And even if I use one of those workarounds to make sure combining stacks is allowed, I still have the problem of how and where I combine the information from their capabilities to make the new one. It looks like

gatherCapabilities

in the

ForgeEventFactory

is the method that takes the capabilities of two stacks and combines them into one set. But that method uses the

CapabilityDispatcher

constructor which seems to always add the capabilities separately and doesn't have any ability to combine them in some other way.

 

Maybe the ability to combine differently-decayed stacks is just a lost cause. :( It's still pretty good that I've got damageable stacks at all, so perhaps I should just let it go. If anyone else has any ideas or suggestions though, please tell me!

Posted
  On 11/18/2016 at 3:00 PM, Jazzable said:

Since I posted, I've found a way to hijack the vanilla durability rendering without needing to use actual item durability - and made a capability to handle my decay process. The problem I'm stuck with now is how to enable combining stacks of the same item that have different levels of decay - I'd really like to be able to make that possible by some kind of averaging process. But the ability to combine stacks seems to mostly rely on

ItemStack.areItemStackTagsEqual

which checks the capabilities. So if I'm storing my decay capability then vanilla will automatically prevent stacks with different decay levels from being combined.

 

I could override all the various stack-combining methods in my inventory containers (I've already got custom containers anyway so that's easily possible), to manually check whether stacks can combine, and then update the stack capability accordingly, but that would be a lot of hassle and probably not totally reliable.

 

Another option is to somehow cheat the NBT check by making my own subclass of

NBTTagCompound

to override the

equals

method and prevent it from checking the values which I want to be irrelevant. But I'm pretty sure that overriding an

equals

method so that it tells an outright lie about whether two objects are equal is some kind of cardinal sin and will probably cause all kinds of problems I haven't thought of.

 

And even if I use one of those workarounds to make sure combining stacks is allowed, I still have the problem of how and where I combine the information from their capabilities to make the new one. It looks like

gatherCapabilities

in the

ForgeEventFactory

is the method that takes the capabilities of two stacks and combines them into one set. But that method uses the

CapabilityDispatcher

constructor which seems to always add the capabilities separately and doesn't have any ability to combine them in some other way.

 

Maybe the ability to combine differently-decayed stacks is just a lost cause. :( It's still pretty good that I've got damageable stacks at all, so perhaps I should just let it go. If anyone else has any ideas or suggestions though, please tell me!

You could put in a PR for slot click? Then when a slot is clicked handle averaging.

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.

Posted

Little warning: You cannot by any means extend the ItemStack class as it is final!

Posted
  On 11/18/2016 at 3:11 PM, Jazzable said:

  Quote

  Quote

PR?

Pull Request

 

I don't understand what you mean by pull request here, isn't that a github thing? :S

Forge uses github and accepts pull requests, when they deem them useful.

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.

Posted
  On 11/18/2016 at 3:10 PM, XFactHD said:

Little warning: You cannot by any means extend the ItemStack class as it is final!

 

Yes, I acknowledged this in my original post!

 

  Quote
I want to make food items which can spoil over time while in a stack. It seems logical to use the vanilla item damage/durability for the spoilage, but damaged items can't be stacked. My first instinct would be to make a subclass of ItemStack and implement my own functionality for combining damage and stack sizes, but since ItemStack is final I can't do that. Does anyone have any ideas for how I could achieve something like this? Or will it be painfully difficult/unachieveable?
Posted
  On 11/18/2016 at 3:12 PM, Animefan8888 said:
  Quote

I don't understand what you mean by pull request here, isn't that a github thing? :S

Forge uses github and accepts pull requests, when they deem them useful.

 

Ohh, so you mean suggest a change to Forge that would make it easier for me to do this?

Posted
  On 11/18/2016 at 3:14 PM, Jazzable said:

  Quote
  Quote

I don't understand what you mean by pull request here, isn't that a github thing? :S

Forge uses github and accepts pull requests, when they deem them useful.

 

Ohh, so you mean suggest a change to Forge that would make it easier for me to do this?

Not a change an addition, you will suggest the event OnSlotClickEvent or some name similar.

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.

Posted

Or you could reduce the number of stages of rot to the point that you don't mind having separate stacks. For instance, have only fresh and tainted before something turns completely into rotting flesh or its vegetable equivalent (dirt?).

 

Along the way, decide if/what will be durable for long journeys, and whether an enchantment (e.g. refrigeration) on a chest (or new device) might stop the rot.

 

And after all that, figure out if the game would still be playable. What if you go on vacation for two weeks while your baked chicken sits in a multiplayer world. Will your character starve to death the next time he logs in?

The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.

Posted

This is actually the decision I've come to! I'm going to have only three stages of spoiling, so that stacks can be combined if they're in the same stage but not if they're in different stages. As for the rate of spoiling, that'll need plenty of testing to get it calibrated right, but the aim of my mod is a harder survival game anyway. :)

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Replace rubidium with embeddium: https://www.curseforge.com/minecraft/mc-mods/embeddium/files/5681725  
    • Hm, I have no idea I have no idea which program you use, but in the console, try grep -r "\${mod_id}" src/main/resources to find the usages of this key
    • Looking for a massive discount while shopping online? With the Temu coupon code $100 off, you can unlock incredible savings on your favorite products. The exclusive acu729640 Temu coupon code is here to offer maximum benefits to all shoppers across the USA, Canada, and European countries. Whether you're a first-time buyer or a returning customer, this Temu coupon $100 off and Temu 100 off coupon code is your golden ticket to unbeatable deals. What Is The Coupon Code For Temu $100 Off? The best part about our coupon is that it's valid for everyone! Whether you're new to Temu or an existing customer, you can enjoy amazing benefits using the Temu coupon $100 off and $100 off Temu coupon. acu729640 – Get a flat $100 off instantly on your next order. acu729640 – Enjoy a $100 coupon pack with multiple use opportunities. acu729640 – Avail a $100 flat discount for new customers on their first purchase. acu729640 – Existing users can apply this code to receive an extra $100 promo discount. acu729640 – Perfect for shoppers in the USA/Canada looking to save big with a $100 coupon. Temu Coupon Code $100 Off For New Users In 2025 New to Temu? You're in luck because the Temu coupon $100 off and Temu coupon code $100 off are offering unmatched deals just for you. acu729640 – Get a flat $100 discount as a welcome gift. acu729640 – Receive a $100 coupon bundle curated specifically for new users. acu729640 – Enjoy up to $100 coupon benefits for multiple purchases. acu729640 – Benefit from free shipping to over 68 countries. acu729640 – Score an extra 30% off on any purchase as a first-time user. How To Redeem The Temu Coupon $100 Off For New Customers? To activate the Temu $100 coupon and Temu $100 off coupon code for new users, follow these easy steps: Download the Temu app or visit their official website. Create your new account using a valid email address. Browse through the wide range of products and add your favorites to the cart. At checkout, enter the coupon code acu729640. The $100 discount will be instantly applied to your total. Temu Coupon $100 Off For Existing Customers Already a Temu customer? Great! The Temu $100 coupon codes for existing users and Temu coupon $100 off for existing customers free shipping are still valid for you. acu729640 – Redeem a $100 extra discount on any existing account. acu729640 – Unlock a $100 coupon bundle usable across multiple purchases. acu729640 – Get a free gift and enjoy express shipping across the USA and Canada. acu729640 – Save an extra 30% even on discounted products. acu729640 – Take advantage of free shipping to 68 global destinations. How To Use The Temu Coupon Code $100 Off For Existing Customers? To use the Temu coupon code $100 off and Temu coupon $100 off code, follow these steps: Open the Temu app or log in to your existing account on the website. Shop your favorite items and proceed to checkout. Input the code acu729640 in the promo code box. Confirm your order and see the $100 discount applied instantly. Latest Temu Coupon $100 Off First Order Make your first order count with our powerful promo code! The Temu coupon code $100 off first order, Temu coupon code first order, and Temu coupon code $100 off first time user offer unbeatable value. acu729640 – Flat $100 discount on your first order. acu729640 – Access to a $100 Temu coupon code as a first-time buyer. acu729640 – Enjoy up to $100 in coupons for repeated use. acu729640 – Get free global shipping to 68 countries. acu729640 – Bonus 30% off any product for new users. How To Find The Temu Coupon Code $100 Off? Looking for the Temu coupon $100 off or the Temu coupon $100 off Reddit discussions? Here's how you can find verified codes: Sign up for Temu’s newsletter to get access to exclusive and verified promo codes. Follow Temu on their social media pages like Instagram, Facebook, and Twitter for real-time updates on new discounts. Trusted coupon-sharing websites also provide the latest working Temu codes, including our very own acu729640. Is Temu $100 Off Coupon Legit? Worried whether this deal is real? Yes, the Temu $100 Off Coupon Legit and Temu 100 off coupon legit status is fully confirmed. Our Temu coupon code acu729640 is 100% legitimate, tested, and verified. It’s valid for both new and existing customers, worldwide, and does not have an expiration date. How Does Temu $100 Off Coupon Work? The Temu coupon code $100 off first-time user and Temu coupon codes 100 off provide direct value through instant cart discounts. When you apply the coupon code acu729640 at checkout, the system deducts $100 from your total. Whether you're a new user or a returning one, this code adjusts automatically based on your account type and shopping cart value. How To Earn Temu $100 Coupons As A New Customer? The best way to get the Temu coupon code $100 off and 100 off Temu coupon code is by signing up as a new customer on Temu. Once your account is created, use our promo code acu729640 to unlock a $100 coupon bundle, including a first-time order bonus, repeat usage coupons, and exclusive deals for new members. What Are The Advantages Of Using The Temu Coupon $100 Off? Here are the main benefits of using our Temu coupon code 100 off and Temu coupon code $100 off: $100 discount on your first order. $100 coupon bundle for multiple uses. 70% discount on popular items. Extra 30% off for existing Temu customers. Up to 90% off on selected products. Free gift for new users. Free delivery to 68 countries. Temu $100 Discount Code And Free Gift For New And Existing Customers The Temu $100 off coupon code and $100 off Temu coupon code also come with exclusive perks. acu729640 – Get $100 discount for your first order. acu729640 – Enjoy an additional 30% off on any item. acu729640 – Receive a free gift as a new Temu user. acu729640 – Unlock up to 70% discounts on your favorite items. acu729640 – Free gift with free shipping in 68 countries, including the USA and UK. Pros And Cons Of Using The Temu Coupon Code $100 Off This Month Here are the main Temu coupon $100 off code and Temu 100 off coupon pros and cons: Pros: Massive $100 discount on your first order. Works for both new and returning users. No minimum purchase requirement. Valid across 68 countries. Includes free shipping and extra discounts. Cons: Limited availability during high demand. Cannot be combined with some other special promo campaigns. Terms And Conditions Of Using The Temu Coupon $100 Off In 2025 Here are the Temu coupon code $100 off free shipping and latest Temu coupon code $100 off terms and conditions: Coupon code acu729640 is valid worldwide. No expiration date – use it anytime. No minimum purchase required. Available for both new and existing users. Free shipping is applicable to 68 countries. Final Note: Use The Latest Temu Coupon Code $100 Off We encourage you to use the Temu coupon code $100 off to make the most of your online shopping. Apply it today to enjoy the biggest discounts and rewards on Temu. The Temu coupon $100 off is your chance to enjoy premium deals with zero hassle. Don’t miss this verified offer that saves both time and money. FAQs Of Temu $100 Off Coupon What is the Temu $100 off coupon code? The Temu $100 off coupon code is acu729640, which gives users a flat $100 discount, free shipping, and other benefits on the Temu app and website. It works globally. Can existing users use the Temu $100 coupon? Yes, existing users can also use the acu729640 code to get a $100 discount, a coupon bundle, and exclusive deals on selected items. Is the Temu $100 off coupon legit? Absolutely. Our coupon code acu729640 is 100% tested, verified, and has no expiration date. It works for both new and old users worldwide. Can I get free shipping with the Temu coupon code? Yes, the Temu $100 off coupon also includes free shipping to 68 countries, including the USA, Canada, UK, and many European nations. How do I apply the Temu coupon code $100 off? Simply enter the code acu729640 at checkout on the Temu app or website, and the discount will be automatically applied to your cart.  
    • New users at Temu receive a $100 discount on orders over $100 Use the code [aci789589] during checkout to get Temu Coupon Code $100 off For New Users. Yes, Temu offers $100 off coupon code “aci789589” for first-time users. Temu 100% Off coupon code "aci789589" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes, Temu offers $100 off coupon code “aci789589” for first-time users. You can get a$100 bonus plus 30% off any purchase at Temu with the$100 Coupon Bundle at Temu if you sign up with the referral code [aci789589] and make a first purchase of$50 or more. The Temu $100 Off coupon code (aci789589) will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes Temu offers $100 Off Coupon Code “aci789589” for First Time Users. Yes, Temu offers $100 off coupon code {aci789589} for first-time users. You can get a $100 bonus plus 100% off any purchase at Temu with the $100 Coupon Bundle if you sign up with the referral code [aci789589] and make a first purchase of $100 or more. If you are who wish to join Temu, then you should use this exclusive Temu coupon code $100 off (aci789589) and get $100 off on your purchase with Temu. You can get a $100 discount with Temu coupon code {aci789589}. This exclusive offer is for existing customers and can be used for a $100 reduction on your total purchase. Enter coupon code {aci789589} at checkout to avail of the discount. You can use the code {aci789589} to get a $100 off Temu coupon as a new customer. Apply this Temu coupon code $100 off (aci789589) to get a $100 discount on your shopping with Temu. If you’re a first-time user and looking for a Temu coupon code $100 first time user(aci789589) then using this code will give you a flat $100 Off and a 90% discount on your Temu shopping. Temu $100% Off Coupon Code "aci789589" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Temu coupon code$100off-{aci789589} Temu coupon code -{aci789589} Temu coupon code$50 off-{aci789589} Temu Coupon code [aci789589] for existing users can get up to 50% discount on product during checkout. Temu Coupon Codes for Existing Customers-aci789589 Temu values its loyal customers and offers various promo codes, including the Legit Temu Coupon Code (aci789589]) or (aci789589), which existing users can use. This ensures that repeat shoppers can also benefit from significant discounts on their purchases. Keep an eye out for special promotions and offers that are periodically available to enhance your shopping experience.
    • New users at Temu receive a $100 discount on orders over $100 Use the code [aci789589] during checkout to get Temu Coupon Code $100 off For New Users. Yes, Temu offers $100 off coupon code “aci789589” for first-time users. Temu 100% Off coupon code "aci789589" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes, Temu offers $100 off coupon code “aci789589” for first-time users. You can get a$100 bonus plus 30% off any purchase at Temu with the$100 Coupon Bundle at Temu if you sign up with the referral code [aci789589] and make a first purchase of$50 or more. The Temu $100 Off coupon code (aci789589) will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes Temu offers $100 Off Coupon Code “aci789589” for First Time Users. Yes, Temu offers $100 off coupon code {aci789589} for first-time users. You can get a $100 bonus plus 100% off any purchase at Temu with the $100 Coupon Bundle if you sign up with the referral code [aci789589] and make a first purchase of $100 or more. If you are who wish to join Temu, then you should use this exclusive Temu coupon code $100 off (aci789589) and get $100 off on your purchase with Temu. You can get a $100 discount with Temu coupon code {aci789589}. This exclusive offer is for existing customers and can be used for a $100 reduction on your total purchase. Enter coupon code {aci789589} at checkout to avail of the discount. You can use the code {aci789589} to get a $100 off Temu coupon as a new customer. Apply this Temu coupon code $100 off (aci789589) to get a $100 discount on your shopping with Temu. If you’re a first-time user and looking for a Temu coupon code $100 first time user(aci789589) then using this code will give you a flat $100 Off and a 90% discount on your Temu shopping. Temu $100% Off Coupon Code "aci789589" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Temu coupon code$100off-{aci789589} Temu coupon code -{aci789589} Temu coupon code$50 off-{aci789589} Temu Coupon code [aci789589] for existing users can get up to 50% discount on product during checkout. Temu Coupon Codes for Existing Customers-aci789589 Temu values its loyal customers and offers various promo codes, including the Legit Temu Coupon Code (aci789589]) or (aci789589), which existing users can use. This ensures that repeat shoppers can also benefit from significant discounts on their purchases. Keep an eye out for special promotions and offers that are periodically available to enhance your shopping experience.
  • Topics

×
×
  • Create New...

Important Information

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