Simplify acquisition of grains of infinity. #740
No reviewers
Labels
No labels
Area-Assets
Area-Backend
Area-Conduits
Area-Datapacks
Area-Lang
Area-Mod Compat
Area-Parity
Area-Rendering
Good first issue
MC-1.19.2
MC-1.20.1
MC-1.20.4
MC-1.20.6
MC-1.21
MC-1.21.1
Modtoberfest
P-0-High
P-1-Medium
P-2-Low
Status-Awaiting Response
Status-Behind-Flag
Status-Blocked
Status-Cannot Reproduce
Status-Duplicate
Status-Help Wanted
Status-Incomplete Report
Status-Invalid
Status-Needs LTS Backport
Status-Needs Updating
Status-Stale
Status-To Implement
Status-Triage
Status-Wontfix
Status-Wontmerge
Type-Backport
Type-Bug
Type-Documentation
Type-Enhancement
Type-Question
Type-RFC
Type-Suggestion
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Team-EnderIO/EnderIO#740
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/simpler-grains"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Description
We've been discussing this a lot internally and had a good amount of feedback expressing frustration with the current means of acquiring grains of infinity (and coal dust). As such, this PR trivializes the process.
(In addition, the cobblestone recipe has been split into a normal cobblestone recipe, and a mossy variant that has a chance to produce a vine as a byproduct - this recipe is up for change still)
Breaking Changes
This changes the early game of Ender IO - but nothing that can be considered "breaking" as far as code goes.
Checklist
30% for the SAG mill recipe feels a bit high. Deep slate isn't exactly rare, and throwing a stack or ten in to get more grains than you could ever use is so easy it invalidates any other method.
It's a bit evil, but assuming eio machines still capture their owner, the SAG mill could count how often a player has executed that recipe and use that to reduce the chance. Reducing the change by 33% (relative) for every 5 grains produced (0-4 30%, 5-9 20%, 10-14 14%, 15-20 9%, ...) could work.
Also, as blocks of deep slate are not infinite (indestructible), firecrafting should destroy them. (Or at least turn them into their cobble version, to prevent firemining. Mmmh, firemining could be interesting...maybe have a chance to mine the block with a chance to drop grains when the fire is extinguished by water? This is as close to real-life firemining as I can think of.)
Yeah that is fair, I'll look to reduce it to something likely in the ballpark of 5-15%. I don't think the reduction by player is something I'd be keen to explore.
This is a great idea, I think transforming it into standard cobblestone afterwards provides consistency with the SAG Mill recipe grinding the void out of the stone. Firemining also sounds like a cool idea - but I'd probably defer that to another issue/PR for future evaluation :)
Thanks for the feedback!
The chance of obtaining grains of infinity from sag milling is lowered from 30% to 12% and burning deepslate will now convert the block below the fire to cobblestone afterwards.
We'll need a better way to show this in JEI, but I think in the interests of playtesting this - we can leave that for now.
This is unrelated to the PR, but for simplicity's sake:
I just had a look at the handler out of curiosity, and it looks a bit wasteful. (Also very much as I remember it, so this probably is my fault.)
I'd suggest a couple of changes:
65f3b09b23/enderio-base/src/main/java/com/enderio/base/common/handler/FireCraftingHandler.java (L70-L88)into a getMatchingRecipe() methodif (getMatchingRecipe() != null) { ...} return;insideif (isFire) {spawnInfinityDrops(...)with aif (getMatchingRecipe() instanceof FireCraftingRecipe matchingRecipe) {(orif ((FireCraftingRecipe matchingRecipe = getMatchingRecipe()) != null) {)// Grab useful fields.stuff inside the two if blocks just above where it's needed. Sadly this means duplicating it, but this is not an event to be picky---NeighborNotifyEvents are fired very often.if (FIRE_TRACKER.isEmpty() && !isFire) {now has no benefit anymore.And then ignore the complicated description above and look at what I cobbled up in a text editor: https://gist.github.com/HenryLoenwind/e276c7f437120011f1c84175496c531d
I think this would greatly reduce the time spent in this event handler.
Yeah I was thinking that when I was looking at the file again - I think I'll log this as an issue and we can handle this down the line. Thanks again!