aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/goodgenerator/util
diff options
context:
space:
mode:
authorGlodBlock <1356392126@qq.com>2021-12-07 23:02:17 +0800
committerGlodBlock <1356392126@qq.com>2021-12-07 23:02:17 +0800
commit92238a0f3b06a80683f50dfd2d6e9164d2d0f1ab (patch)
tree2d1118c74e43d5f4337266c3d64f1921c0526d42 /src/main/java/goodgenerator/util
parent06cac63657f40c489477abe923ea3f144fe6749c (diff)
downloadGT5-Unofficial-92238a0f3b06a80683f50dfd2d6e9164d2d0f1ab.tar.gz
GT5-Unofficial-92238a0f3b06a80683f50dfd2d6e9164d2d0f1ab.tar.bz2
GT5-Unofficial-92238a0f3b06a80683f50dfd2d6e9164d2d0f1ab.zip
rename package
Diffstat (limited to 'src/main/java/goodgenerator/util')
-rw-r--r--src/main/java/goodgenerator/util/CharExchanger.java124
-rw-r--r--src/main/java/goodgenerator/util/CrackRecipeAdder.java78
-rw-r--r--src/main/java/goodgenerator/util/DescTextLocalization.java17
-rw-r--r--src/main/java/goodgenerator/util/ItemRefer.java152
-rw-r--r--src/main/java/goodgenerator/util/MaterialFix.java50
-rw-r--r--src/main/java/goodgenerator/util/MyRecipeAdder.java100
-rw-r--r--src/main/java/goodgenerator/util/StructureHelper.java112
7 files changed, 633 insertions, 0 deletions
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 <BR>
+ * "<" : 2 <BR>
+ * "==" : 13 <BR>
+ * "!=" : 14 <BR>
+ * ">=" : 11 <BR>
+ * "<=" : 12 <BR>
+ * 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<GT_Recipe> 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<GT_Recipe> 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<GT_Recipe> 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 <T> IStructureElement<T> addFrame(Materials aMaterials) {
+ return new IStructureElement<T>() {
+
+ 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 <T> IStructureElement<T> addTieredBlock(Block aBlock, BiConsumer<T, Integer> aSetTheFuckingMeta, Function<T, Integer> aGetTheFuckingMeta, int maxMeta) {
+ return addTieredBlock(aBlock, (t, i) -> {
+ aSetTheFuckingMeta.accept(t, i);
+ return true;
+ }, aGetTheFuckingMeta, maxMeta
+ );
+ }
+
+ public static <T> IStructureElement<T> addTieredBlock(Block aBlock, BiPredicate<T, Integer> aSetTheFuckingMeta, Function<T, Integer> aGetTheFuckingMeta, int maxMeta) {
+
+ return new IStructureElement<T>() {
+ @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;
+ }
+ };
+ }
+}