From 92238a0f3b06a80683f50dfd2d6e9164d2d0f1ab Mon Sep 17 00:00:00 2001 From: GlodBlock <1356392126@qq.com> Date: Tue, 7 Dec 2021 23:02:17 +0800 Subject: rename package --- .../java/goodgenerator/util/CharExchanger.java | 124 +++++++++++++++++ .../java/goodgenerator/util/CrackRecipeAdder.java | 78 +++++++++++ .../goodgenerator/util/DescTextLocalization.java | 17 +++ src/main/java/goodgenerator/util/ItemRefer.java | 152 +++++++++++++++++++++ src/main/java/goodgenerator/util/MaterialFix.java | 50 +++++++ .../java/goodgenerator/util/MyRecipeAdder.java | 100 ++++++++++++++ .../java/goodgenerator/util/StructureHelper.java | 112 +++++++++++++++ 7 files changed, 633 insertions(+) create mode 100644 src/main/java/goodgenerator/util/CharExchanger.java create mode 100644 src/main/java/goodgenerator/util/CrackRecipeAdder.java create mode 100644 src/main/java/goodgenerator/util/DescTextLocalization.java create mode 100644 src/main/java/goodgenerator/util/ItemRefer.java create mode 100644 src/main/java/goodgenerator/util/MaterialFix.java create mode 100644 src/main/java/goodgenerator/util/MyRecipeAdder.java create mode 100644 src/main/java/goodgenerator/util/StructureHelper.java (limited to 'src/main/java/goodgenerator/util') diff --git a/src/main/java/goodgenerator/util/CharExchanger.java b/src/main/java/goodgenerator/util/CharExchanger.java new file mode 100644 index 0000000000..e92eea548f --- /dev/null +++ b/src/main/java/goodgenerator/util/CharExchanger.java @@ -0,0 +1,124 @@ +package goodgenerator.util; + +import net.minecraft.util.EnumChatFormatting; + +public class CharExchanger { + + public static final String[] tierName = new String[] { + EnumChatFormatting.RED + "ULV" + EnumChatFormatting.RESET, + EnumChatFormatting.GRAY + "LV" + EnumChatFormatting.RESET, + EnumChatFormatting.AQUA + "MV" + EnumChatFormatting.RESET, + EnumChatFormatting.GOLD + "HV" + EnumChatFormatting.RESET, + EnumChatFormatting.DARK_PURPLE + "EV" + EnumChatFormatting.RESET, + EnumChatFormatting.DARK_BLUE + "IV" + EnumChatFormatting.RESET, + EnumChatFormatting.LIGHT_PURPLE + "LuV" + EnumChatFormatting.RESET, + EnumChatFormatting.WHITE + "ZPM" + EnumChatFormatting.RESET, + EnumChatFormatting.DARK_AQUA + "UV" + EnumChatFormatting.RESET, + EnumChatFormatting.DARK_RED + "UHV" + EnumChatFormatting.RESET, + EnumChatFormatting.GREEN + "UEV" + EnumChatFormatting.RESET, + }; + + public static char shifter(int unicode){ + return (char)unicode; + } + + public static boolean isValidCompareExpressChar(char c) { + return Character.isDigit(c) || c == '<' || c == '>' || c == '=' || c == '!'; + } + + public static boolean isValidCompareExpress(String exp) { + if (exp.length() < 2) return false; + for (char c: exp.toCharArray()) + if (!isValidCompareExpressChar(c)) return false; + char c1 = exp.charAt(0), c2 = exp.charAt(1); + String subExp = "" + c1; + if (!Character.isDigit(c2)) subExp = subExp + c2; + switch (subExp) { + case ">": + case "<": + case ">=": + case "<=": + case "==": + case "!=": + break; + default: return false; + } + if (exp.length() == subExp.length()) return false; + for (int i = subExp.length(); i < exp.length(); i ++) { + if (!Character.isDigit(exp.charAt(i))) return false; + } + return true; + } + + /** + * ">" : 1
+ * "<" : 2
+ * "==" : 13
+ * "!=" : 14
+ * ">=" : 11
+ * "<=" : 12
+ * INVALID : -1 + */ + public static int getOperator(String exp){ + char c1, c2; + int ret; + if (exp.length() < 1) return -1; + c1 = exp.charAt(0); + switch (c1) { + case '>': ret = 1;break; + case '<': ret = 2;break; + case '=': ret = 3;break; + case '!': ret = 4;break; + default: return -1; + } + if (exp.length() > 1) c2 = exp.charAt(1); + else return ret; + if (c2 == '=') { + ret += 10; + } + return ret; + } + + public static boolean compareExpression(String exp, int num) { + int op = getOperator(exp); + String NumExp = exp; + String[] opChar = new String[]{">", "<", "=", "!"}; + if (op == -1) throw new IllegalArgumentException(); + for (String re: opChar) NumExp = NumExp.replace(re, ""); + long num2 = 0; + for (char c: NumExp.toCharArray()) { + num2 *=10; + num2 += c - '0'; + } + switch (op) { + case 1: return num > num2; + case 2: return num < num2; + case 13: return num == num2; + case 14: return num != num2; + case 11: return num >= num2; + case 12: return num <= num2; + default: return false; + } + } + + public static String formatNumber(String exp) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < exp.length(); ++i) { + if (Character.isDigit(exp.charAt(i))) { + int cnt = 0, prt = i; + while (i < exp.length() && Character.isDigit(exp.charAt(i))) { + i ++; + cnt ++; + } + while (prt < exp.length() && Character.isDigit(exp.charAt(prt))) { + sb.append(exp.charAt(prt)); + prt ++; + cnt --; + if (cnt % 3 == 0 && cnt != 0) sb.append(" "); + } + } + if (i < exp.length()) sb.append(exp.charAt(i)); + } + return sb.toString(); + } +} diff --git a/src/main/java/goodgenerator/util/CrackRecipeAdder.java b/src/main/java/goodgenerator/util/CrackRecipeAdder.java new file mode 100644 index 0000000000..dacae721e9 --- /dev/null +++ b/src/main/java/goodgenerator/util/CrackRecipeAdder.java @@ -0,0 +1,78 @@ +package goodgenerator.util; + +import com.github.bartimaeusnek.bartworks.system.material.Werkstoff; +import gregtech.api.enums.GT_Values; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.util.GT_Utility; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; + +public class CrackRecipeAdder { + static float[] coe1 = {1.25f,1.2f,1.1f,0.9f,0.85f,0.8f,0.75f}; + static float[] coe2 = {1.4f,1.25f,1.2f,0.8f,0.75f,0.7f,0.65f}; + static float[] coe3 = {1.6f,1.5f,1.45f,0.7f,0.6f,0.55f,0.45f}; + public static void crackerAdder(FluidStack inputFluid, FluidStack cracker, FluidStack[] outputFluids, ItemStack outputItem, int num, int EUt, int Duration){ + + String name; + FluidStack[] actOutput = new FluidStack[num]; + name = inputFluid.getFluid().getName().replaceAll(" ",""); + + GT_Values.RA.addCrackingRecipe(1,inputFluid,cracker, FluidRegistry.getFluidStack("lightlycracked"+name,1000),(int)(Duration * 0.8),EUt); + GT_Values.RA.addCrackingRecipe(2,inputFluid,cracker, FluidRegistry.getFluidStack("moderatelycracked"+name,1000),Duration,EUt); + GT_Values.RA.addCrackingRecipe(3,inputFluid,cracker, FluidRegistry.getFluidStack("heavilycracked"+name,1000),(int)(Duration * 1.2),EUt); + + for ( int i = num - 1, j = 0; i >= 0; i --, j ++ ){ + Fluid tmp1 = outputFluids[i].getFluid(); + int tmp2 = (int)(outputFluids[i].amount * coe1[i]); + actOutput[j] = new FluidStack(tmp1, tmp2); + } + + GT_Values.RA.addUniversalDistillationRecipe(FluidRegistry.getFluidStack("lightlycracked"+name,1000),actOutput,outputItem,Duration / 2,EUt / 3); + + for ( int i = num - 1, j = 0; i >= 0; i --, j ++ ){ + Fluid tmp1 = outputFluids[i].getFluid(); + int tmp2 = (int)(outputFluids[i].amount * coe2[i]); + actOutput[j] = new FluidStack(tmp1, tmp2); + } + + GT_Values.RA.addUniversalDistillationRecipe(FluidRegistry.getFluidStack("moderatelycracked"+name,1000),actOutput,outputItem,Duration / 2,EUt / 3); + + for ( int i = num - 1, j = 0; i >= 0; i --, j ++ ){ + Fluid tmp1 = outputFluids[i].getFluid(); + int tmp2 = (int)(outputFluids[i].amount * coe3[i]); + actOutput[j] = new FluidStack(tmp1, tmp2); + } + + GT_Values.RA.addUniversalDistillationRecipe(FluidRegistry.getFluidStack("heavilycracked"+name,1000),actOutput,outputItem,Duration / 2,EUt / 3); + } + + public static void addUniversalCircuitAssemblerRecipe(ItemStack[] inputs, ItemStack output, int solders, int duration, int EUt, boolean isClean) { + GT_Values.RA.addCircuitAssemblerRecipe(inputs, Materials.SolderingAlloy.getMolten(solders), output, duration, EUt, isClean); + GT_Values.RA.addCircuitAssemblerRecipe(inputs, Materials.Tin.getMolten(solders * 2), output, duration, EUt, isClean); + GT_Values.RA.addCircuitAssemblerRecipe(inputs, Materials.Lead.getMolten(solders * 4), output, duration, EUt, isClean); + } + + public static void addUniversalAssemblerRecipe(ItemStack[] inputs, ItemStack output, int solders, int duration, int EUt, boolean isClean) { + GT_Values.RA.addAssemblerRecipe(inputs, Materials.SolderingAlloy.getMolten(solders), output, duration, EUt, isClean); + GT_Values.RA.addAssemblerRecipe(inputs, Materials.Tin.getMolten(solders * 2), output, duration, EUt, isClean); + GT_Values.RA.addAssemblerRecipe(inputs, Materials.Lead.getMolten(solders * 4), output, duration, EUt, isClean); + } + + public static void reAddBlastRecipe(Werkstoff material, int duration, int EUt, int level, boolean gas) { + ItemStack input = material.get(OrePrefixes.dust, 1); + ItemStack output = level > 1750 ? material.get(OrePrefixes.ingotHot, 1) : material.get(OrePrefixes.ingot, 1); + if (gas) { + GT_Values.RA.addBlastRecipe(input, GT_Utility.getIntegratedCircuit(11), Materials.Helium.getGas(1000), null, output, null, duration, EUt, level); + } else { + GT_Values.RA.addBlastRecipe(input, GT_Utility.getIntegratedCircuit(1), null, null, output, null, duration, EUt, level); + } + } + + public static FluidStack copyFluidWithAmount(FluidStack fluid, int amount) { + if (fluid == null || amount <= 0) return null; + return new FluidStack(fluid.getFluid(), amount); + } +} diff --git a/src/main/java/goodgenerator/util/DescTextLocalization.java b/src/main/java/goodgenerator/util/DescTextLocalization.java new file mode 100644 index 0000000000..755397a864 --- /dev/null +++ b/src/main/java/goodgenerator/util/DescTextLocalization.java @@ -0,0 +1,17 @@ +package goodgenerator.util; + +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; + +public class DescTextLocalization { + + public static final String BLUE_PRINT_INFO = "Follow the" + EnumChatFormatting.BLUE + " Structure" + EnumChatFormatting.DARK_BLUE + "Lib" + EnumChatFormatting.GRAY + " hologram projector to build the main structure."; + + public static String[] addText(String preFix, int length){ + String[] text = new String[length]; + for (int i = 0; i < length; i ++) { + text[i] = StatCollector.translateToLocal(preFix + "." + i); + } + return text; + } +} diff --git a/src/main/java/goodgenerator/util/ItemRefer.java b/src/main/java/goodgenerator/util/ItemRefer.java new file mode 100644 index 0000000000..5ffec9e7eb --- /dev/null +++ b/src/main/java/goodgenerator/util/ItemRefer.java @@ -0,0 +1,152 @@ +package goodgenerator.util; + +import gregtech.api.util.GT_Utility; +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +import static goodgenerator.loader.FuelRodLoader.*; +import static goodgenerator.loader.Loaders.*; + +public final class ItemRefer { + + public static ItemRefer NULL = getItemStack(_null_); + + public static ItemRefer Radiation_Protection_Plate = getItemStack(radiationProtectionPlate); + public static ItemRefer Wrapped_Uranium_Ingot = getItemStack(wrappedUraniumIngot); + public static ItemRefer High_Density_Uranium_Nugget = getItemStack(highDensityUraniumNugget); + public static ItemRefer High_Density_Uranium = getItemStack(highDensityUranium); + public static ItemRefer Wrapped_Thorium_Ingot = getItemStack(wrappedThoriumIngot); + public static ItemRefer High_Density_Thorium_Nugget = getItemStack(highDensityThoriumNugget); + public static ItemRefer High_Density_Thorium = getItemStack(highDensityThorium); + public static ItemRefer Wrapped_Plutonium_Ingot = getItemStack(wrappedPlutoniumIngot); + public static ItemRefer High_Density_Plutonium_Nugget = getItemStack(highDensityPlutoniumNugget); + public static ItemRefer High_Density_Plutonium = getItemStack(highDensityPlutonium); + public static ItemRefer Raw_Atomic_Separation_Catalyst = getItemStack(rawAtomicSeparationCatalyst); + public static ItemRefer Advanced_Radiation_Protection_Plate = getItemStack(advancedRadiationProtectionPlate); + public static ItemRefer Aluminum_Nitride_Dust = getItemStack(aluminumNitride); + public static ItemRefer Special_Ceramics_Dust = getItemStack(specialCeramics); + public static ItemRefer Special_Ceramics_Plate = getItemStack(specialCeramicsPlate); + public static ItemRefer Radioactive_Waste = getItemStack(radioactiveWaste); + public static ItemRefer Plastic_Case = getItemStack(plasticCase); + public static ItemRefer Quartz_Wafer = getItemStack(quartzWafer); + public static ItemRefer Micro_Heater = getItemStack(microHeater); + public static ItemRefer Quartz_Crystal_Resonator = getItemStack(quartzCrystalResonator); + public static ItemRefer Inverter = getItemStack(inverter); + public static ItemRefer Neutron_Source = getItemStack(neutronSource); + public static ItemRefer Naquadah_Mass = getItemStack(naquadahMass); + public static ItemRefer Enriched_Naquadah_Mass = getItemStack(enrichedNaquadahMass); + public static ItemRefer Naquadria_Mass = getItemStack(naquadriaMass); + public static ItemRefer Advanced_Fuel_Rod = getItemStack(advancedFuelRod); + public static ItemRefer Fuel_Rod_U_Depleted_1 = getItemStack(rodCompressedUraniumDepleted); + public static ItemRefer Fuel_Rod_U_Depleted_2 = getItemStack(rodCompressedUraniumDepleted_2); + public static ItemRefer Fuel_Rod_U_Depleted_4 = getItemStack(rodCompressedUraniumDepleted_4); + public static ItemRefer Fuel_Rod_U_1 = getItemStack(rodCompressedUranium); + public static ItemRefer Fuel_Rod_U_2 = getItemStack(rodCompressedUranium_2); + public static ItemRefer Fuel_Rod_U_4 = getItemStack(rodCompressedUranium_4); + public static ItemRefer Fuel_Rod_Pu_Depleted_1 = getItemStack(rodCompressedPlutoniumDepleted); + public static ItemRefer Fuel_Rod_Pu_Depleted_2 = getItemStack(rodCompressedPlutoniumDepleted_2); + public static ItemRefer Fuel_Rod_Pu_Depleted_4 = getItemStack(rodCompressedPlutoniumDepleted_4); + public static ItemRefer Fuel_Rod_Pu_1 = getItemStack(rodCompressedPlutonium); + public static ItemRefer Fuel_Rod_Pu_2 = getItemStack(rodCompressedPlutonium_2); + public static ItemRefer Fuel_Rod_Pu_4 = getItemStack(rodCompressedPlutonium_4); + public static ItemRefer Fluid_Storage_Core_T1 = getItemStack(fluidCore, 0); + public static ItemRefer Fluid_Storage_Core_T2 = getItemStack(fluidCore, 1); + public static ItemRefer Fluid_Storage_Core_T3 = getItemStack(fluidCore, 2); + public static ItemRefer Fluid_Storage_Core_T4 = getItemStack(fluidCore, 3); + public static ItemRefer Fluid_Storage_Core_T5 = getItemStack(fluidCore, 4); + public static ItemRefer Fluid_Storage_Core_T6 = getItemStack(fluidCore, 5); + public static ItemRefer Essentia_Upgrade_Empty = getItemStack(upgradeEssentia, 0); + public static ItemRefer Essentia_Upgrade_Air = getItemStack(upgradeEssentia, 1); + public static ItemRefer Essentia_Upgrade_Thermal = getItemStack(upgradeEssentia, 2); + public static ItemRefer Essentia_Upgrade_Unstable = getItemStack(upgradeEssentia, 3); + public static ItemRefer Essentia_Upgrade_Victus = getItemStack(upgradeEssentia, 4); + public static ItemRefer Essentia_Upgrade_Tainted = getItemStack(upgradeEssentia, 5); + public static ItemRefer Essentia_Upgrade_Mechanics = getItemStack(upgradeEssentia, 6); + public static ItemRefer Essentia_Upgrade_Spirit = getItemStack(upgradeEssentia, 7); + public static ItemRefer Essentia_Upgrade_Radiation = getItemStack(upgradeEssentia, 8); + public static ItemRefer Essentia_Upgrade_Electric = getItemStack(upgradeEssentia, 9); + + public static ItemRefer Field_Restriction_Casing = getItemStack(MAR_Casing); + public static ItemRefer Naquadah_Fuel_Refinery_Casing = getItemStack(FRF_Casings); + public static ItemRefer Field_Restriction_Coil_T1 = getItemStack(FRF_Coil_1); + public static ItemRefer Field_Restriction_Coil_T2 = getItemStack(FRF_Coil_2); + public static ItemRefer Field_Restriction_Coil_T3 = getItemStack(FRF_Coil_3); + public static ItemRefer Radiation_Proof_Steel_Frame_Box = getItemStack(radiationProtectionSteelFrame); + public static ItemRefer Field_Restriction_Glass = getItemStack(fieldRestrictingGlass); + public static ItemRefer Raw_Cylinder = getItemStack(rawCylinder); + public static ItemRefer Titanium_Plated_Cylinder = getItemStack(titaniumPlatedCylinder); + public static ItemRefer Magic_Casing = getItemStack(magicCasing); + public static ItemRefer Speeding_Pipe = getItemStack(speedingPipe); + public static ItemRefer Essentia_Cell_T1 = getItemStack(essentiaCell, 0); + public static ItemRefer Essentia_Cell_T2 = getItemStack(essentiaCell, 1); + public static ItemRefer Essentia_Cell_T3 = getItemStack(essentiaCell, 2); + public static ItemRefer Essentia_Cell_T4 = getItemStack(essentiaCell, 3); + public static ItemRefer Essentia_Hatch = getItemStack(essentiaHatch); + public static ItemRefer YOTTank_Casing = getItemStack(yottaFluidTankCasing); + public static ItemRefer YOTTank_Cell_T1 = getItemStack(yottaFluidTankCell, 0); + public static ItemRefer YOTTank_Cell_T2 = getItemStack(yottaFluidTankCell, 1); + public static ItemRefer YOTTank_Cell_T3 = getItemStack(yottaFluidTankCell, 2); + public static ItemRefer YOTTank_Cell_T4 = getItemStack(yottaFluidTankCell, 3); + public static ItemRefer YOTTank_Cell_T5 = getItemStack(yottaFluidTankCell, 4); + public static ItemRefer YOTTank_Cell_T6 = getItemStack(yottaFluidTankCell, 5); + public static ItemRefer YOTTank_Cell_T7 = getItemStack(yottaFluidTankCell, 6); + public static ItemRefer YOTTank_Cell_T8 = getItemStack(yottaFluidTankCell, 7); + public static ItemRefer YOTTank_Cell_T9 = getItemStack(yottaFluidTankCell, 8); + public static ItemRefer YOTTank_Cell_T10 = getItemStack(yottaFluidTankCell, 9); + + public static ItemRefer Large_Naquadah_Reactor = getItemStack(MAR); + public static ItemRefer Naquadah_Fuel_Refinery = getItemStack(FRF); + public static ItemRefer Universal_Chemical_Fuel_Engine = getItemStack(UCFE); + public static ItemRefer Large_Essentia_Generator = getItemStack(LEG); + public static ItemRefer YOTTank = getItemStack(YFT); + + private Item mItem = null; + private Block mBlock = null; + private ItemStack mItemStack = null; + private int mMeta = 0; + + private static ItemRefer getItemStack(ItemStack itemStack) { + if (itemStack == null) return NULL; + return new ItemRefer(itemStack); + } + + private static ItemRefer getItemStack(Item item) { + return getItemStack(item, 0); + } + + private static ItemRefer getItemStack(Item item, int meta) { + if (item == null) return NULL; + return new ItemRefer(item, meta); + } + + private static ItemRefer getItemStack(Block block) { + return getItemStack(block, 0); + } + + private static ItemRefer getItemStack(Block block, int meta) { + if (block == null) return NULL; + return new ItemRefer(block, meta); + } + + private ItemRefer(Item item, int meta) { + mItem = item; + mMeta = meta; + } + + private ItemRefer(Block block, int meta) { + mBlock = block; + mMeta = meta; + } + + private ItemRefer(ItemStack itemStack) { + mItemStack = itemStack; + } + + public ItemStack get(int amount){ + if (mItem != null ) return new ItemStack(mItem, amount, mMeta); + if (mBlock != null) return new ItemStack(mBlock, amount, mMeta); + if (mItemStack != null) return GT_Utility.copyAmount(amount, mItemStack); + return new ItemStack(_null_, amount, 0); + } +} diff --git a/src/main/java/goodgenerator/util/MaterialFix.java b/src/main/java/goodgenerator/util/MaterialFix.java new file mode 100644 index 0000000000..ad3468dd98 --- /dev/null +++ b/src/main/java/goodgenerator/util/MaterialFix.java @@ -0,0 +1,50 @@ +package goodgenerator.util; + +import com.github.bartimaeusnek.bartworks.system.material.Werkstoff; +import gregtech.api.enums.GT_Values; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.util.GT_OreDictUnificator; + +public class MaterialFix { + public static void MaterialFluidExtractionFix(Werkstoff material){ + if (material.hasItemType(OrePrefixes.ingot)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.ingot),null,material.getMolten(144),0,32,8); + if (material.hasItemType(OrePrefixes.plate)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.plate),null,material.getMolten(144),0,32,8); + if (material.hasItemType(OrePrefixes.gearGtSmall)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.gearGtSmall),null,material.getMolten(144),0,32,8); + if (material.hasItemType(OrePrefixes.stickLong)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.stickLong),null,material.getMolten(144),0,32,8); + if (material.hasItemType(OrePrefixes.spring)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.spring),null,material.getMolten(144),0,32,8); + if (material.hasItemType(OrePrefixes.stick)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.stick),null,material.getMolten(72),0,16,8); + if (material.hasItemType(OrePrefixes.itemCasing)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.itemCasing),null,material.getMolten(72),0,16,8); + if (material.hasItemType(OrePrefixes.wireGt01)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.wireGt01),null,material.getMolten(72),0,16,8); + if (material.hasItemType(OrePrefixes.cableGt01)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.cableGt01), GT_OreDictUnificator.get(OrePrefixes.dustSmall, Materials.Ash,2),material.getMolten(72),10000,16,8); + if (material.hasItemType(OrePrefixes.foil)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.foil),null,material.getMolten(36),0,8,8); + if (material.hasItemType(OrePrefixes.springSmall)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.springSmall),null,material.getMolten(36),0,8,8); + if (material.hasItemType(OrePrefixes.ring)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.ring),null,material.getMolten(36),0,8,8); + if (material.hasItemType(OrePrefixes.bolt)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.bolt),null,material.getMolten(18),0,4,8); + if (material.hasItemType(OrePrefixes.wireFine)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.wireFine),null,material.getMolten(18),0,4,8); + if (material.hasItemType(OrePrefixes.round)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.round),null,material.getMolten(16),0,4,8); + if (material.hasItemType(OrePrefixes.screw)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.screw),null,material.getMolten(16),0,4,8); + if (material.hasItemType(OrePrefixes.nugget)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.nugget),null,material.getMolten(16),0,4,8); + if (material.hasItemType(OrePrefixes.rotor)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.rotor),null,material.getMolten(612),0,136,8); + if (material.hasItemType(OrePrefixes.gearGt)) + GT_Values.RA.addFluidExtractionRecipe(material.get(OrePrefixes.gearGt),null,material.getMolten(576),0,128,8); + } +} diff --git a/src/main/java/goodgenerator/util/MyRecipeAdder.java b/src/main/java/goodgenerator/util/MyRecipeAdder.java new file mode 100644 index 0000000000..056d220275 --- /dev/null +++ b/src/main/java/goodgenerator/util/MyRecipeAdder.java @@ -0,0 +1,100 @@ +package goodgenerator.util; + +import gregtech.api.util.GT_Recipe; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; +import net.minecraftforge.fluids.FluidStack; + +import java.util.Collection; +import java.util.HashSet; + +public class MyRecipeAdder { + + public static final MyRecipeAdder instance = new MyRecipeAdder(); + + public final liquidMentalFuelMapper NqGFuels = new liquidMentalFuelMapper( + new HashSet<>(50), + "gg.recipe.naquadah_reactor", + StatCollector.translateToLocal("tile.recipe.naquadah_reactor"), + null, + "goodgenerator:textures/gui/naquadah_reactor", + 0,0,0,1,1, + StatCollector.translateToLocal("value.naquadah_reactor") + " ", + 1, + " EU/t", + false, + true + ); + + public final NaqFuelRefineMapper FRF = new NaqFuelRefineMapper( + new HashSet<>(50), + "gg.recipe.naquadah_fuel_refine_factory", + StatCollector.translateToLocal("tile.naquadah_fuel_refine_factory"), + null, + "gregtech:textures/gui/basicmachines/FusionReactor", + 6,0, 0, 1, 1, + StatCollector.translateToLocal("value.naquadah_fuel_refine_factory.0") + " ", + 1, + StatCollector.translateToLocal("value.naquadah_fuel_refine_factory.1"), + true, + true + ); + + public final NeutronActivatorMapper NA = new NeutronActivatorMapper( + new HashSet<>(150), + "gg.recipe.neutron_activator", + StatCollector.translateToLocal("tile.neutron_activator"), + null, + "goodgenerator:textures/gui/neutron_activator", + 6, 6, 0, 0, 0, + null, 0, null, + false, + false + ); + + public static class liquidMentalFuelMapper extends GT_Recipe.GT_Recipe_Map_Fuel{ + public liquidMentalFuelMapper(Collection aRecipeList, String aUnlocalizedName, String aLocalName, String aNEIName, String aNEIGUIPath, int aUsualInputCount, int aUsualOutputCount, int aMinimalInputItems, int aMinimalInputFluids, int aAmperage, String aNEISpecialValuePre, int aNEISpecialValueMultiplier, String aNEISpecialValuePost, boolean aShowVoltageAmperageInNEI, boolean aNEIAllowed){ + super(aRecipeList, aUnlocalizedName, aLocalName, aNEIName, aNEIGUIPath, aUsualInputCount, aUsualOutputCount, aMinimalInputItems, aMinimalInputFluids, aAmperage, aNEISpecialValuePre, aNEISpecialValueMultiplier, aNEISpecialValuePost, aShowVoltageAmperageInNEI, aNEIAllowed); + } + + public void addFuel(FluidStack input, FluidStack output, int EUt, int ticks){ + super.addRecipe(true, null, null, null, new FluidStack[]{input}, new FluidStack[]{output}, ticks, 0, EUt); + } + } + + public void addLiquidMentalFuel(FluidStack input, FluidStack output, int EUt, int ticks){ + NqGFuels.addFuel(input, output, EUt, ticks); + } + + public static class NaqFuelRefineMapper extends GT_Recipe.GT_Recipe_Map{ + public NaqFuelRefineMapper(Collection aRecipeList, String aUnlocalizedName, String aLocalName, String aNEIName, String aNEIGUIPath, int aUsualInputCount, int aUsualOutputCount, int aMinimalInputItems, int aMinimalInputFluids, int aAmperage, String aNEISpecialValuePre, int aNEISpecialValueMultiplier, String aNEISpecialValuePost, boolean aShowVoltageAmperageInNEI, boolean aNEIAllowed){ + super(aRecipeList, aUnlocalizedName, aLocalName, aNEIName, aNEIGUIPath, aUsualInputCount, aUsualOutputCount, aMinimalInputItems, aMinimalInputFluids, aAmperage, aNEISpecialValuePre, aNEISpecialValueMultiplier, aNEISpecialValuePost, aShowVoltageAmperageInNEI, aNEIAllowed); + } + + public void addNaqFuelRefineRecipe(FluidStack[] input1, ItemStack[] input2, FluidStack output, int EUt, int ticks, int tier){ + super.addRecipe(false, input2, null, null, input1, new FluidStack[]{output}, ticks, EUt, tier); + } + } + + public void addNaquadahFuelRefineRecipe(FluidStack[] input1, ItemStack[] input2, FluidStack output, int EUt, int ticks, int tier){ + FRF.addNaqFuelRefineRecipe(input1, input2, output, EUt, ticks, tier); + } + + public static class NeutronActivatorMapper extends GT_Recipe.GT_Recipe_Map{ + public NeutronActivatorMapper(Collection aRecipeList, String aUnlocalizedName, String aLocalName, String aNEIName, String aNEIGUIPath, int aUsualInputCount, int aUsualOutputCount, int aMinimalInputItems, int aMinimalInputFluids, int aAmperage, String aNEISpecialValuePre, int aNEISpecialValueMultiplier, String aNEISpecialValuePost, boolean aShowVoltageAmperageInNEI, boolean aNEIAllowed){ + super(aRecipeList, aUnlocalizedName, aLocalName, aNEIName, aNEIGUIPath, aUsualInputCount, aUsualOutputCount, aMinimalInputItems, aMinimalInputFluids, aAmperage, aNEISpecialValuePre, aNEISpecialValueMultiplier, aNEISpecialValuePost, aShowVoltageAmperageInNEI, aNEIAllowed); + } + + public void addNARecipe(FluidStack[] input1, ItemStack[] input2, FluidStack[] output1, ItemStack[] output2, int ticks, int special) { + super.addRecipe(false, input2, output2, null, input1, output1, ticks, 0, special); + } + } + + public void addNeutronActivatorRecipe(FluidStack[] input1, ItemStack[] input2, FluidStack[] output1, ItemStack[] output2, int ticks, int maxNKE, int minNKE) { + if (maxNKE <= 0) maxNKE = 1; + if (maxNKE >= 1100) maxNKE = 1100; + if (minNKE < 0) minNKE = 0; + if (minNKE >= maxNKE) minNKE = maxNKE - 1; + NA.addNARecipe(input1, input2, output1, output2, ticks, maxNKE * 10000 + minNKE); + } +} diff --git a/src/main/java/goodgenerator/util/StructureHelper.java b/src/main/java/goodgenerator/util/StructureHelper.java new file mode 100644 index 0000000000..e1f5b69981 --- /dev/null +++ b/src/main/java/goodgenerator/util/StructureHelper.java @@ -0,0 +1,112 @@ +package goodgenerator.util; + +import com.gtnewhorizon.structurelib.StructureLibAPI; +import com.gtnewhorizon.structurelib.structure.IStructureElement; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.metatileentity.BaseMetaPipeEntity; +import gregtech.api.metatileentity.implementations.GT_MetaPipeEntity_Frame; +import gregtech.api.util.GT_OreDictUnificator; +import net.minecraft.block.Block; +import net.minecraft.init.Items; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +import java.util.Arrays; +import java.util.function.BiConsumer; +import java.util.function.BiPredicate; +import java.util.function.Function; + +public class StructureHelper { + + public static IStructureElement addFrame(Materials aMaterials) { + return new IStructureElement() { + + private IIcon[] mIcons; + + @Override + public boolean check(T t, World world, int x, int y, int z) { + TileEntity tBlock = world.getTileEntity(x, y, z); + if (tBlock instanceof BaseMetaPipeEntity) { + BaseMetaPipeEntity tFrame = (BaseMetaPipeEntity) tBlock; + if (tFrame.isInvalidTileEntity()) return false; + if (tFrame.getMetaTileEntity() instanceof GT_MetaPipeEntity_Frame) { + return ((GT_MetaPipeEntity_Frame) tFrame.getMetaTileEntity()).mMaterial == aMaterials; + } + } + return false; + } + + @Override + public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) { + if (mIcons == null) { + mIcons = new IIcon[6]; + Arrays.fill(mIcons, aMaterials.mIconSet.mTextures[OrePrefixes.frameGt.mTextureIndex].getIcon()); + } + StructureLibAPI.hintParticleTinted(world, x, y, z, mIcons, aMaterials.mRGBa); + return true; + } + + @Override + public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) { + ItemStack tFrame = GT_OreDictUnificator.get(OrePrefixes.frameGt, aMaterials, 1); + if (tFrame.getItem() instanceof ItemBlock) { + ItemBlock tFrameStackItem = (ItemBlock) tFrame.getItem(); + return tFrameStackItem.placeBlockAt(tFrame, null, world, x, y, z, 6, 0, 0, 0, Items.feather.getDamage(tFrame)); + } + return false; + } + }; + } + + //Only support to use meta to tier + public static IStructureElement addTieredBlock(Block aBlock, BiConsumer aSetTheFuckingMeta, Function aGetTheFuckingMeta, int maxMeta) { + return addTieredBlock(aBlock, (t, i) -> { + aSetTheFuckingMeta.accept(t, i); + return true; + }, aGetTheFuckingMeta, maxMeta + ); + } + + public static IStructureElement addTieredBlock(Block aBlock, BiPredicate aSetTheFuckingMeta, Function aGetTheFuckingMeta, int maxMeta) { + + return new IStructureElement() { + @Override + public boolean check(T t, World world, int x, int y, int z) { + Block tBlock = world.getBlock(x, y, z); + if (aBlock == tBlock) { + Integer currentMeta = aGetTheFuckingMeta.apply(t); + int newMeta = tBlock.getDamageValue(world, x, y, z) + 1; + if (newMeta > maxMeta) return false; + if (currentMeta == 0) { + return aSetTheFuckingMeta.test(t, newMeta); + } else { + return currentMeta == newMeta; + } + } + return false; + } + + @Override + public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) { + StructureLibAPI.hintParticle(world, x, y, z, aBlock, getMeta(trigger)); + return true; + } + + @Override + public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) { + return world.setBlock(x, y, z, aBlock, getMeta(trigger), 3); + } + + private int getMeta(ItemStack trigger) { + int meta = trigger.stackSize; + if (meta <= 0) meta = 0; + if (meta >= maxMeta) meta = maxMeta - 1; + return meta; + } + }; + } +} -- cgit