diff options
author | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2018-07-18 04:47:48 +1000 |
---|---|---|
committer | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2018-07-18 04:47:48 +1000 |
commit | 243346fb454cfeb1a9313ef907243a8a39af8849 (patch) | |
tree | a2ae0511623403daf62e0d8ad73009531ff57d0e /src/Java | |
parent | 4da4a060bde0c9cc41142da5ba77b20e9fc4cb88 (diff) | |
download | GT5-Unofficial-243346fb454cfeb1a9313ef907243a8a39af8849.tar.gz GT5-Unofficial-243346fb454cfeb1a9313ef907243a8a39af8849.tar.bz2 GT5-Unofficial-243346fb454cfeb1a9313ef907243a8a39af8849.zip |
+ Added Circuit Assembler mode to the Large Auto Crafter (LAC)
+ Added ability for Assembler recipes to use OreDictionary.
% Changed recipe for Project Table, LAC Controller & Casings to now use TungstenSteel instead of Stainless Steel.
% Changed recipe for all PSS Redox Cells.
Diffstat (limited to 'src/Java')
5 files changed, 184 insertions, 35 deletions
diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java index e4f6f0de89..6b50dc688a 100644 --- a/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java +++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java @@ -620,7 +620,7 @@ public class RECIPES_GREGTECH { FluidUtils.getFluidStack("molten.tantalum", 144 * 4), ItemUtils.simpleMetaStack(ModItems.itemHalfCompleteCasings, 1, 8), 32, 120); addAR(ItemUtils.simpleMetaStack(ModItems.itemHalfCompleteCasings, 1, 1), - ItemUtils.getItemStackOfAmountFromOreDict("plateLead", 4), FluidUtils.getFluidStack("oxygen", 1000), + ItemUtils.getItemStackOfAmountFromOreDict("plateDenseLead", 4), FluidUtils.getFluidStack("oxygen", 16000), ItemUtils.getSimpleStack(GregtechItemList.Casing_Vanadium_Redox.get(1), 1), 64, 240); //Tier 2-6 @@ -632,23 +632,23 @@ public class RECIPES_GREGTECH { ItemStack T6 = GregtechItemList.Casing_Vanadium_Redox_MAX.get(1); addAR(T1, - ItemUtils.getItemStackOfAmountFromOreDict("plateStainlessSteel", 4), - FluidUtils.getFluidStack("nitrogen", 2000), + ItemUtils.getItemStackOfAmountFromOreDict("plateDenseStainlessSteel", 2), + FluidUtils.getFluidStack("nitrogen", 16000), T2, 120, 2000); addAR(T2, - ItemUtils.getItemStackOfAmountFromOreDict("plateTitanium", 4), - FluidUtils.getFluidStack("helium", 2000), + ItemUtils.getItemStackOfAmountFromOreDict("plateDenseTitanium", 2), + FluidUtils.getFluidStack("helium", 8000), T3, 250, 8000); addAR(T3, - ItemUtils.getItemStackOfAmountFromOreDict("plateTungsten", 4), + ItemUtils.getItemStackOfAmountFromOreDict("plateDenseTungsten", 2), FluidUtils.getFluidStack("argon", 4000), T4, 500, 32000); addAR(T4, - ItemUtils.getItemStackOfAmountFromOreDict("plateTungstenSteel", 4), + ItemUtils.getItemStackOfAmountFromOreDict("plateDenseTungstenSteel", 2), FluidUtils.getFluidStack("radon", 4000), T5, 1000, 128000); addAR(T5, - ItemUtils.getItemStackOfAmountFromOreDict("plateAlloyIridium", 4), + ItemUtils.getItemStackOfAmountFromOreDict("plateAlloyIridium", 9), FluidUtils.getFluidStack("molten.krypton", 500), T6, 2000, 512000); diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java index dbcb49d359..13b24b100d 100644 --- a/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java +++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java @@ -1130,21 +1130,21 @@ public class RECIPES_Machines { if (CORE.ConfigSwitches.enableMultiblock_LargeAutoCrafter){ RecipeUtils.recipeBuilder( - "plateStainlessSteel", CI.craftingToolHammer_Hard, "plateStainlessSteel", - "plateStellite", "frameGtStainlessSteel", "plateStellite", - "plateStainlessSteel", CI.craftingToolWrench, "plateStainlessSteel", + "plateTungstenSteel", CI.craftingToolHammer_Hard, "plateTungstenSteel", + "plateStellite", ItemList.Block_IridiumTungstensteel.get(1), "plateStellite", + "plateTungstenSteel", CI.craftingToolWrench, "plateTungstenSteel", GregtechItemList.Casing_Autocrafter.get(Casing_Amount)); RecipeUtils.recipeBuilder( - "plateStainlessSteel",CI.sensor_EV,"plateStainlessSteel", - "wireFineOsmium",GregtechItemList.Gregtech_Computer_Cube.get(1), "wireFineOsmium", - "plateStainlessSteel",CI.emitter_EV,"plateStainlessSteel", + "plateTungstenSteel", ItemUtils.getSimpleStack(ModItems.itemCircuitLFTR),"plateTungstenSteel", + CI.emitter_IV,GregtechItemList.Gregtech_Computer_Cube.get(1), CI.sensor_IV, + "plateTungstenSteel", "cableGt08Osmium","plateTungstenSteel", GregtechItemList.GT4_Multi_Crafter.get(1)); RecipeUtils.recipeBuilder( - "plateStainlessSteel",CI.craftingToolSolderingIron,"plateStainlessSteel", - CI.robotArm_ULV, ItemList.Casing_SolidSteel.get(1), CI.robotArm_ULV, - "plateStainlessSteel",CI.emitter_ULV,"plateStainlessSteel", + "plateTungstenSteel",CI.craftingToolSolderingIron,"plateStainlessSteel", + CI.robotArm_EV, ItemList.Casing_SolidSteel.get(1), CI.robotArm_EV, + "plateStainlessSteel",CI.emitter_EV,"plateTungstenSteel", ItemUtils.getSimpleStack(ModBlocks.blockProjectTable)); } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java b/src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java index 38e27c9bb2..c442e4f7d4 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java @@ -160,4 +160,9 @@ public interface IGregtech_RecipeAdder { public boolean addAdvancedFreezerRecipe(ItemStack[] aInputs, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, ItemStack[] aOutputs, int[] aChances, int aDuration, int aEUtick, int aSpecial); + + public boolean addAssemblerRecipeWithOreDict(Object aInput1, int aAmount1, Object aInput2, int aAmount2, ItemStack aOutput, int a1, int a2); + public boolean addAssemblerRecipeWithOreDict(Object aInput1, int aAmount1, Object aInput2, int aAmount2, FluidStack aInputFluid, ItemStack aOutput, int a1, int a2); + + } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java index 9406fa5589..6fb37f2041 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java @@ -1,5 +1,6 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; @@ -16,6 +17,7 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBus; import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Recipe.GT_Recipe_Map; import gregtech.api.util.GT_Utility; import gtPlusPlus.api.objects.Logger; @@ -25,6 +27,7 @@ import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.minecraft.NBTUtils; import gtPlusPlus.core.util.minecraft.PlayerUtils; +import gtPlusPlus.core.util.reflect.ReflectionUtils; import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase; import gtPlusPlus.xmod.gregtech.common.helpers.CraftingHelper; import gtPlusPlus.xmod.gregtech.common.helpers.autocrafter.AC_Helper_Utils; @@ -40,7 +43,7 @@ public class GT4Entity_AutoCrafter extends GregtechMeta_MultiBlockBase { public CraftingHelper mInventoryCrafter; public static enum MODE { - CRAFTING("DISASSEMBLY", "ASSEMBLY"), ASSEMBLY("CRAFTING", "DISASSEMBLY"), DISASSEMBLY("ASSEMBLY", "CRAFTING"); + CRAFTING("CIRCUIT", "ASSEMBLY"), ASSEMBLY("CRAFTING", "DISASSEMBLY"), DISASSEMBLY("ASSEMBLY", "CIRCUIT"), CIRCUIT("DISASSEMBLY", "CRAFTING"); private final String lastMode; private final String nextMode; @@ -78,7 +81,8 @@ public class GT4Entity_AutoCrafter extends GregtechMeta_MultiBlockBase { @Override public String getMachineType() { - return "Assembler, Disassembler, Autocrafter"; + String sType = "Assembler, Disassembler, "+(CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK ? "Circuit Assembler, " : "")+"Autocrafter"; + return sType; } @Override @@ -123,7 +127,7 @@ public class GT4Entity_AutoCrafter extends GregtechMeta_MultiBlockBase { @Override public String[] getDescription() { return new String[] { "Highly Advanced Autocrafter", "Right Click with a Screwdriver to change mode", - "This Machine Can Craft, Assemble or Disassemble", + "This Machine Can Autocraft, Assemble, Disassemble or Circuit Assemble", "200% faster than using single block machines of the same voltage", "Processes two items per voltage tier", "--------------------------------------", "Insert a Memory stick into the GUI", "to automate a crafting table recipe", @@ -197,20 +201,63 @@ public class GT4Entity_AutoCrafter extends GregtechMeta_MultiBlockBase { } @Override - public GT_Recipe.GT_Recipe_Map getRecipeMap() { + public GT_Recipe.GT_Recipe_Map getRecipeMap() { + if (this.mMachineMode == MODE.ASSEMBLY) { + return GT_Recipe.GT_Recipe_Map.sAssemblerRecipes; + } + else if (this.mMachineMode == MODE.CIRCUIT) { + GT_Recipe_Map r; + try { + Field f = ReflectionUtils.getField(GT_Recipe.GT_Recipe_Map.class, "sCircuitAssemblerRecipes"); + if (f != null) { + r = (GT_Recipe_Map) f.get(null); + if (r != null) { + return r; + } + } + } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) { + } + } return GT_Recipe.GT_Recipe_Map.sAssemblerRecipes; } + private boolean isModernGT = true; + @Override - public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) { - mMachineMode = mMachineMode.nextMode(); - if (mMachineMode == MODE.CRAFTING) { - PlayerUtils.messagePlayer(aPlayer, "You are now running the Auto-Crafter in mode: §dAuto-Crafting"); - } else if (mMachineMode == MODE.ASSEMBLY) { - PlayerUtils.messagePlayer(aPlayer, "You are now running the Auto-Crafter in mode: §aAssembly"); - } else { - PlayerUtils.messagePlayer(aPlayer, "You are now running the Auto-Crafter in mode: §cDisassembly"); + public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) { + if (isModernGT && !CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) { + isModernGT = false; } + //5.09 support + if (isModernGT) { + mMachineMode = mMachineMode.nextMode(); + if (mMachineMode == MODE.CRAFTING) { + PlayerUtils.messagePlayer(aPlayer, "Running the Auto-Crafter in mode: §dAuto-Crafting"); + } else if (mMachineMode == MODE.ASSEMBLY) { + PlayerUtils.messagePlayer(aPlayer, "Running the Auto-Crafter in mode: §aAssembly"); + } else if (mMachineMode == MODE.DISASSEMBLY) { + PlayerUtils.messagePlayer(aPlayer, "Running the Auto-Crafter in mode: §cDisassembly"); + } else { + PlayerUtils.messagePlayer(aPlayer, "Running the Auto-Crafter in mode: §eCircuit Assembly"); + } + } + //5.08 support + else { + if (mMachineMode.nextMode() == MODE.CIRCUIT) { + mMachineMode = MODE.CRAFTING; + } + else { + mMachineMode = mMachineMode.nextMode(); + } + + if (mMachineMode == MODE.CRAFTING) { + PlayerUtils.messagePlayer(aPlayer, "You are now running the Auto-Crafter in mode: §dAuto-Crafting"); + } else if (mMachineMode == MODE.ASSEMBLY) { + PlayerUtils.messagePlayer(aPlayer, "You are now running the Auto-Crafter in mode: §aAssembly"); + } else { + PlayerUtils.messagePlayer(aPlayer, "You are now running the Auto-Crafter in mode: §cDisassembly"); + } + } super.onScrewdriverRightClick(aSide, aPlayer, aX, aY, aZ); } @@ -444,8 +491,8 @@ public class GT4Entity_AutoCrafter extends GregtechMeta_MultiBlockBase { if (mMachineMode == MODE.DISASSEMBLY) { tMode = "§cDisassembly"; tSpecialText = "" + (60 + 12 * this.mTier) + "% chance to recover disassembled parts."; - } else if (mMachineMode == MODE.ASSEMBLY) { - tMode = "§aAssembly"; + } else if (mMachineMode == MODE.ASSEMBLY || mMachineMode == MODE.CIRCUIT) { + tMode = mMachineMode == MODE.ASSEMBLY ? "§aAssembly" : "§eCircuit Assembly"; if (mLastRecipeToBuffer != null && mLastRecipeToBuffer.mOutputs[0].getDisplayName() != null) { tSpecialText = "Currently processing: " + mLastRecipeToBuffer.mOutputs[0].getDisplayName(); } else { diff --git a/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java b/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java index f0cdc61a68..66f08034eb 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java @@ -2,22 +2,23 @@ package gtPlusPlus.xmod.gregtech.recipes; import static gtPlusPlus.core.lib.CORE.GTNH; +import java.util.List; + import net.minecraft.item.ItemStack; import gregtech.api.GregTech_API; +import gregtech.api.enums.GT_Values; import gregtech.api.enums.Materials; import gregtech.api.util.CustomRecipeMap; -import gregtech.api.util.GT_Recipe; import gregtech.api.util.Recipe_GT; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.data.ArrayUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; -import gtPlusPlus.core.util.minecraft.RecipeUtils; import gtPlusPlus.xmod.gregtech.api.interfaces.internal.IGregtech_RecipeAdder; import gtPlusPlus.xmod.gregtech.recipes.machines.RECIPEHANDLER_MatterFabricator; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.oredict.OreDictionary; public class GregtechRecipeAdder implements IGregtech_RecipeAdder { @@ -376,7 +377,7 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder { + aInput[das].stackSize); } } - + ArrayUtils.removeNulls(aInput); if (aInput.length <= 1) { return false; @@ -551,6 +552,102 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder { } + public boolean addAssemblerRecipeWithOreDict(Object aInput1, int aAmount1, Object aInput2, int aAmount2, ItemStack aOutput, int a1, int a2) { + if (aInput1 instanceof String || aInput2 instanceof String) { + int mCompleted = 0; + if (aInput1 instanceof String && aInput2 instanceof String) { + List<ItemStack> x = OreDictionary.getOres((String) aInput1, false); + List<ItemStack> x1 = OreDictionary.getOres((String) aInput2, false); + if (x != null && x.size() > 0 && x1 != null && x1.size() > 0) { + for (ItemStack r : x) { + r.stackSize = aAmount1; + for (ItemStack r1 : x1) { + r1.stackSize = aAmount2; + if (GT_Values.RA.addAssemblerRecipe(r, r1, aOutput, a1, a2)) { + mCompleted++; + } + } + } + } + } + else if (aInput1 instanceof String) { + List<ItemStack> x = OreDictionary.getOres((String) aInput1, false); + if (x != null && x.size() > 0) { + for (ItemStack r : x) { + r.stackSize = aAmount1; + if (GT_Values.RA.addAssemblerRecipe(r, (ItemStack) aInput2, aOutput, a1, a2)) { + mCompleted++; + } + } + } + + } + else { + List<ItemStack> x = OreDictionary.getOres((String) aInput2, false); + if (x != null && x.size() > 0) { + for (ItemStack r : x) { + r.stackSize = aAmount1; + if (GT_Values.RA.addAssemblerRecipe((ItemStack) aInput1, r, aOutput, a1, a2)) { + mCompleted++; + } + } + } + } + return mCompleted > 0; + } + else { + return GT_Values.RA.addAssemblerRecipe((ItemStack) aInput1, (ItemStack) aInput2, aOutput, a1, a2); + } + } + + public boolean addAssemblerRecipeWithOreDict(Object aInput1, int aAmount1, Object aInput2, int aAmount2, FluidStack aInputFluid, ItemStack aOutput, int a1, int a2) { + if (aInput1 instanceof String || aInput2 instanceof String) { + int mCompleted = 0; + if (aInput1 instanceof String && aInput2 instanceof String) { + List<ItemStack> x = OreDictionary.getOres((String) aInput1, false); + List<ItemStack> x1 = OreDictionary.getOres((String) aInput2, false); + if (x != null && x.size() > 0 && x1 != null && x1.size() > 0) { + for (ItemStack r : x) { + r.stackSize = aAmount1; + for (ItemStack r1 : x1) { + r1.stackSize = aAmount2; + if (GT_Values.RA.addAssemblerRecipe(r, r1, aInputFluid, aOutput, a1, a2)) { + mCompleted++; + } + } + } + } + } + else if (aInput1 instanceof String) { + List<ItemStack> x = OreDictionary.getOres((String) aInput1, false); + if (x != null && x.size() > 0) { + for (ItemStack r : x) { + r.stackSize = aAmount1; + if (GT_Values.RA.addAssemblerRecipe(r, (ItemStack) aInput2, aInputFluid, aOutput, a1, a2)) { + mCompleted++; + } + } + } + + } + else { + List<ItemStack> x = OreDictionary.getOres((String) aInput2, false); + if (x != null && x.size() > 0) { + for (ItemStack r : x) { + r.stackSize = aAmount1; + if (GT_Values.RA.addAssemblerRecipe((ItemStack) aInput1, r, aInputFluid, aOutput, a1, a2)) { + mCompleted++; + } + } + } + } + return mCompleted > 0; + } + else { + return GT_Values.RA.addAssemblerRecipe((ItemStack) aInput1, (ItemStack) aInput2, aInputFluid, aOutput, a1, a2); + } + } + |