GregTechCEu / GregTech-Modern

GregTech CE Unofficial for modern versions
GNU Lesser General Public License v3.0
263 stars 152 forks source link

Smelting some ore processing products doesn't follow conservation of mass #1840

Open Xefyr0 opened 2 weeks ago

Xefyr0 commented 2 weeks ago

Checked for existing issues

Tested latest version

GregTech CEu Version

1.4.0

Minecraft Version

1.20.1

Recipe Viewer Installed

EMI

Environment

Singleplayer

Cross-Mod Interaction

No

Other Installed Mods

N/a

Expected Behavior

When composing/decomposing a compound or alloy from/into elements (Say, Bronze) the amount of dust consumed as input tends to match the amount of dust returned as output. If fluids are involved, they instead follow the conversion where 1B = 1 dust.

For example, Magnetite Dust, which has the formula Fe3O4, would decompose into at maximum 3 Iron dusts and 4B of Oxygen. In an ideal world, no recipe would be more efficient at providing Iron from Magnetite at a higher ratio than 7:3.

Actual Behavior

Smelting Magnetite Dust yields 1 Iron Dust. (1:1) This is more efficient than the (presumably ideal) Electrolytic decomposition in terms of iron yield.

Steps to Reproduce

On a clean 1.20.1 instance, download EMI, GTCEu Modern, and their dependencies. Open up EMI and view the uses for Magnetite Dust. See that Iron is yielded in a 1:1 ratio with smelting, and a 7:3 ratio with electrolytic decomposition.

Additional Information

List of ores affected by this bug Hematite Goethite Cassiterite Cassiterite Sand Chalcopyrite Cobaltite Galena Garnierite Magnesite Magnetite Molybdenite Pyrite Pyrolusite Sphalerite Stibnite Tetrahedrite Yellow Limonite Bornite Chalcocite Pentlandite Malachite Granitic Mineral Sand Basaltic Mineral Sand

Xefyr0 commented 2 weeks ago

No kidding. I just reported them, and thanks for deleting their comment.

windyknight commented 2 weeks ago

Alright, so what should be the intended behavior then? Because we have 2 perspectives we can see this from, assuming we still allow these dusts to be smelted: physics, and game design.

From a physics standpoint, yes smelting does not follow conservation of mass. So for magnetite, do we make the smelting recipe 7 Fe3O4 dust (or any ore chain product since those are smeltable too) --> 3 Fe ingot? Can vanilla smelting even do that? If the ratio is within 9:1 on ingots I suppose we could make them output nuggets? Like magnetite to iron could be 3 or 4 nuggets per dust? That sounds like it would make the earlygame even grindier than it already is, though, especially since a lot of the mentioned ores are vital in the earlygame, and this would cut their yields in half, minimum.

From a game design standpoint, smelting is a tradeoff. While true, you gain more of the main material than if you decomposed it, importantly you lose everything else. This is very critical for things like sphalerite, since early on it's a key source of gallium, both from ore processing and decomposition of the dusts. And later on, some of the mentioned ores don't even make it to the dust stage of processing. Galena and sphalerite stop after the wash/bath step for indium. Chalcopyrite, tetrahedrite, bornite, and chalcocite are diverted for the platline. Gregtech progression is really built on these byproducts that you lose out on if you just smelt rather than the base metals.

Personally I don't really see it as a major problem since it's not like you can recreate the mineral dusts from constituent elements and loop them or some other OP shenanigans. Plus, I'm fairly sure these aren't the only processes that disobey mass conservation somewhat.

Xefyr0 commented 2 weeks ago

Honestly? if this is considered an issue the best way to go about improving it would probably be to keep ore blocks & raw ore smeltable the way they are currently, while any crushed/purified/impure intermediate products from ore processing would lose that smelting recipe. This is already the behavior of gem ores (e.g. Realgar) so it wouldn't be too much of a stretch. The "non-composite" ores like Copper, Iron, Aluminium, etc. would keep the current behavior and have ore processing available from the get-go since there's no electrolysis into component elements. It would thus encourage people to go out and look for those "purer" sources of their desired materials if they want to process ores and 1:1 raw ore-to-ingot isn't enough efficiency pre-electrolyzer.

As for the "Ore processing and electrolysis give valuable byproducts so there's no reason to smelt most of the time anways" point, ore processing byproducts aren't even part of the issue. You could just go through the full ore processing chain and then smelt the dust instead of electrolyzing it. That way, you can have your Gallium and your Sphalerite Dust, which then smelts into Zinc 1:1. What's more, most of the time the electrolysis of the ore dusts listed above yield byproducts that can be acquired through other means like Hydrogen, Oxygen, Sulfur, Carbon, and Basalt and Granite dust. I wouldn't want to lose out on 4 Iron ingots for 4 buckets of Oxygen, using Magnetite as an example.

There are a few exceptions, though where Electrolysis could provide by products valuable enough to easily beat out smelting: Iron (Chalcopyrite, Bornite) Arsenic (Cobaltite) Copper, Antimony, Iron (Tetrahedrite) EDIT: Sphalerite actually gives Gallium as a percent chance when electrolyzed. It's the only ore like that, though. Weird.

There are also the Indium and Platinum processing lines you mentioned, but if those purified ores are used for Indium and Platinum anyways, they're not going to be electrolyzed or smelted so it's not really evidence in favor of either viewpoint.

Xefyr0 commented 2 weeks ago

If the idea of not being able to smelt these "composite" ores after macerating them is a bit much despite gems behaving the same way, they could just smelt into some amount of nuggets instead depending on the ore's composition.