mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Merge pull request #1576 from 70000hp/electrolyzer-electric-boogaloo
Electrolyzer improvements part 2
This commit is contained in:
commit
9b0bd4d180
@ -1,9 +1,7 @@
|
|||||||
package com.hbm.inventory.recipes;
|
package com.hbm.inventory.recipes;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
@ -26,6 +24,7 @@ import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade;
|
|||||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||||
import com.hbm.util.ItemStackUtil;
|
import com.hbm.util.ItemStackUtil;
|
||||||
|
|
||||||
|
import com.hbm.util.Tuple.*;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
public class ElectrolyserMetalRecipes extends SerializableRecipe {
|
public class ElectrolyserMetalRecipes extends SerializableRecipe {
|
||||||
@ -133,36 +132,50 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe {
|
|||||||
new ItemStack(ModItems.powder_lithium_tiny, 3)));
|
new ItemStack(ModItems.powder_lithium_tiny, 3)));
|
||||||
|
|
||||||
for(BedrockOreType type : BedrockOreType.values()) {
|
for(BedrockOreType type : BedrockOreType.values()) {
|
||||||
|
ArrayList<Pair<Object, Integer>> productsF = new ArrayList<>();
|
||||||
|
productsF.add(new Pair<>(type.primary1,12));
|
||||||
|
productsF.add(new Pair<>(type.primary2,6));
|
||||||
|
productsF.add(new Pair<>(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type), 3));
|
||||||
|
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), makeBedrockOreProduct(productsF));
|
||||||
|
|
||||||
MaterialStack f0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(12));
|
ArrayList<Pair<Object, Integer>> productsS = new ArrayList<>();
|
||||||
MaterialStack f1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(6));
|
productsS.add(new Pair<>(type.primary1,6));
|
||||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ElectrolysisMetalRecipe(
|
productsS.add(new Pair<>(type.primary2,12));
|
||||||
f0 != null ? f0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)),
|
productsS.add(new Pair<>(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type),3));
|
||||||
f1 != null ? f1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)),
|
|
||||||
60,
|
|
||||||
f0 == null ? ItemBedrockOreNew.extract(type.primary1, 12) : new ItemStack(ModItems.dust),
|
|
||||||
f1 == null ? ItemBedrockOreNew.extract(type.primary2, 6) : new ItemStack(ModItems.dust),
|
|
||||||
ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)));
|
|
||||||
MaterialStack s0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(6));
|
|
||||||
MaterialStack s1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(12));
|
|
||||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ElectrolysisMetalRecipe(
|
|
||||||
s0 != null ? s0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)),
|
|
||||||
s1 != null ? s1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)),
|
|
||||||
60,
|
|
||||||
s0 == null ? ItemBedrockOreNew.extract(type.primary1, 6) : new ItemStack(ModItems.dust),
|
|
||||||
s1 == null ? ItemBedrockOreNew.extract(type.primary2, 12) : new ItemStack(ModItems.dust),
|
|
||||||
ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)));
|
|
||||||
|
|
||||||
MaterialStack c0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(2));
|
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), makeBedrockOreProduct(productsS));
|
||||||
MaterialStack c1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(2));
|
|
||||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new ElectrolysisMetalRecipe(
|
ArrayList<Pair<Object, Integer>> productsC = new ArrayList<>();
|
||||||
c0 != null ? c0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1, 2)),
|
productsC.add(new Pair<>(type.primary1,2));
|
||||||
c1 != null ? c1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1, 2)),
|
productsC.add(new Pair<>(type.primary2,2));
|
||||||
60,
|
|
||||||
c0 == null ? ItemBedrockOreNew.extract(type.primary1, 2) : new ItemStack(ModItems.dust),
|
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), makeBedrockOreProduct(productsC));
|
||||||
c1 == null ? ItemBedrockOreNew.extract(type.primary2, 2) : new ItemStack(ModItems.dust)));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ElectrolysisMetalRecipe makeBedrockOreProduct(ArrayList<Pair<Object, Integer>> products){
|
||||||
|
ArrayList<MaterialStack> moltenProducts = new ArrayList<>();
|
||||||
|
ArrayList<ItemStack> solidProducts = new ArrayList<>();
|
||||||
|
|
||||||
|
for(Pair<Object, Integer> product : products){
|
||||||
|
if(moltenProducts.size() < 2) {
|
||||||
|
MaterialStack melt = ItemBedrockOreNew.toFluid(product.getKey(), MaterialShapes.INGOT.q(product.getValue()));
|
||||||
|
if (melt != null) {
|
||||||
|
moltenProducts.add(melt);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
solidProducts.add(ItemBedrockOreNew.extract(product.getKey(), product.getValue()));
|
||||||
|
}
|
||||||
|
if(moltenProducts.size() == 0)
|
||||||
|
moltenProducts.add(new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(2)));
|
||||||
|
|
||||||
|
return new ElectrolysisMetalRecipe(
|
||||||
|
moltenProducts.get(0),
|
||||||
|
moltenProducts.size() > 1 ? moltenProducts.get(1) : null,
|
||||||
|
20,
|
||||||
|
solidProducts.toArray(new ItemStack[0]));
|
||||||
|
}
|
||||||
|
|
||||||
public static ElectrolysisMetalRecipe getRecipe(ItemStack stack) {
|
public static ElectrolysisMetalRecipe getRecipe(ItemStack stack) {
|
||||||
if(stack == null || stack.getItem() == null)
|
if(stack == null || stack.getItem() == null)
|
||||||
|
|||||||
@ -169,6 +169,12 @@ public class ItemBedrockOreNew extends Item {
|
|||||||
List<ItemStack> billets = OreDictionary.getOres(frame.billet(), false); if(!billets.isEmpty()) return fromList(billets, amount);
|
List<ItemStack> billets = OreDictionary.getOres(frame.billet(), false); if(!billets.isEmpty()) return fromList(billets, amount);
|
||||||
List<ItemStack> ingots = OreDictionary.getOres(frame.ingot(), false); if(!ingots.isEmpty()) return fromList(ingots, amount);
|
List<ItemStack> ingots = OreDictionary.getOres(frame.ingot(), false); if(!ingots.isEmpty()) return fromList(ingots, amount);
|
||||||
}
|
}
|
||||||
|
//Solely for recipe handling, to make the code more compact
|
||||||
|
if(o instanceof ItemStack){
|
||||||
|
ItemStack stack = (ItemStack) o;
|
||||||
|
stack.stackSize = amount;
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
return new ItemStack(ModItems.nothing);
|
return new ItemStack(ModItems.nothing);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -348,18 +348,19 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
|
|||||||
public void processMetal() {
|
public void processMetal() {
|
||||||
|
|
||||||
ElectrolysisMetalRecipe recipe = ElectrolyserMetalRecipes.getRecipe(slots[14]);
|
ElectrolysisMetalRecipe recipe = ElectrolyserMetalRecipes.getRecipe(slots[14]);
|
||||||
|
if(recipe.output1 != null)
|
||||||
|
if(leftStack == null) {
|
||||||
|
leftStack = new MaterialStack(recipe.output1.material, recipe.output1.amount);
|
||||||
|
} else {
|
||||||
|
leftStack.amount += recipe.output1.amount;
|
||||||
|
}
|
||||||
|
|
||||||
if(leftStack == null) {
|
if(recipe.output2 != null)
|
||||||
leftStack = new MaterialStack(recipe.output1.material, recipe.output1.amount);
|
if(rightStack == null ) {
|
||||||
} else {
|
rightStack = new MaterialStack(recipe.output2.material, recipe.output2.amount);
|
||||||
leftStack.amount += recipe.output1.amount;
|
} else {
|
||||||
}
|
rightStack.amount += recipe.output2.amount;
|
||||||
|
}
|
||||||
if(rightStack == null) {
|
|
||||||
rightStack = new MaterialStack(recipe.output2.material, recipe.output2.amount);
|
|
||||||
} else {
|
|
||||||
rightStack.amount += recipe.output2.amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(recipe.byproduct != null) {
|
if(recipe.byproduct != null) {
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user