aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod
diff options
context:
space:
mode:
authorSteelux <70096037+Steelux8@users.noreply.github.com>2022-12-22 18:20:15 +0000
committerGitHub <noreply@github.com>2022-12-22 19:20:15 +0100
commita5a444ebc4a2488ca850b3cf3eae3659a81659e2 (patch)
treee28ee42aed46a02c1ab7bc9f07dbe201bdd999f4 /src/main/java/gtPlusPlus/xmod
parent44be046709c7e997698992973f9a28b897d5a24c (diff)
downloadGT5-Unofficial-a5a444ebc4a2488ca850b3cf3eae3659a81659e2.tar.gz
GT5-Unofficial-a5a444ebc4a2488ca850b3cf3eae3659a81659e2.tar.bz2
GT5-Unofficial-a5a444ebc4a2488ca850b3cf3eae3659a81659e2.zip
Add the Quantum Force Transformer (Endgame Chemline Skipper) (#399)
* First Code Implementation * First Textures Implementation * Texture Name Fixes * spotlessApply (#400) Co-authored-by: Steelux <70096037+Steelux8@users.noreply.github.com> Co-authored-by: GitHub GTNH Actions <> * Controller ID Fix * spotlessApply (#401) Co-authored-by: Steelux <70096037+Steelux8@users.noreply.github.com> Co-authored-by: GitHub GTNH Actions <> * Reworked Recipe Map, Started Rework on recipes * spotless * fix recipe to actually use eternal singularity, make sure we can have a null fluid output * add new blocks and some new textures * Spotless apply for branch Chem_Line_Skipper for #399 (#406) * fix material localization (#395) * fix material localization * spotlessApply * Revert the Nerf to Algae Farm Casing Cost (#397) - Changed the Algae Farm casing tier to the low tier it was supposed to be at, this time at MV and with no dirt. The casing is shared with the TGS, which was the reason for the nerf, but the controller can gate that multi; - Adjusted the controller recipe for the Farm to also be MV. * Fix Amount of Infinite Mutation Catalyst Output (#398) - Changed output from 1 to 5 catalysts, to match the input of 5 carriers. * Fix Sterile Farm Casing Recipe (No Tumbaga Pipe) (#402) * fix frame box and block cant localized (#404) * fix double plate and long rod cant localized (#405) * fix double plate and long rod cant localized * sa * spotlessApply Co-authored-by: iouter <62897714+iouter@users.noreply.github.com> Co-authored-by: Steelux <70096037+Steelux8@users.noreply.github.com> Co-authored-by: GitHub GTNH Actions <> * First Changes to Add Chemplant Catalysts * Spotless apply for branch Chem_Line_Skipper for #399 (#407) * fix material localization (#395) * fix material localization * spotlessApply * Revert the Nerf to Algae Farm Casing Cost (#397) - Changed the Algae Farm casing tier to the low tier it was supposed to be at, this time at MV and with no dirt. The casing is shared with the TGS, which was the reason for the nerf, but the controller can gate that multi; - Adjusted the controller recipe for the Farm to also be MV. * Fix Amount of Infinite Mutation Catalyst Output (#398) - Changed output from 1 to 5 catalysts, to match the input of 5 carriers. * Fix Sterile Farm Casing Recipe (No Tumbaga Pipe) (#402) * fix frame box and block cant localized (#404) * fix double plate and long rod cant localized (#405) * fix double plate and long rod cant localized * sa * spotlessApply Co-authored-by: iouter <62897714+iouter@users.noreply.github.com> Co-authored-by: Steelux <70096037+Steelux8@users.noreply.github.com> Co-authored-by: GitHub GTNH Actions <> * Multi Forms with Catalyst Housing and Recipes in NEI * spotless * Remove Mufflers and Pollution * New textures and make new casing to be used in the multi * Make a working recipe check, add a Fluid only output mode * Do not allow the ME Input Bus bug again. fixing it early * replace the current glass with a new one a real texture needs to be made * fix catalysts being able to be used in the input bus and fix recipes not start from a second input bus * Spotless apply for branch Chem_Line_Skipper for #399 (#412) * fix material localization (#395) * fix material localization * spotlessApply * Revert the Nerf to Algae Farm Casing Cost (#397) - Changed the Algae Farm casing tier to the low tier it was supposed to be at, this time at MV and with no dirt. The casing is shared with the TGS, which was the reason for the nerf, but the controller can gate that multi; - Adjusted the controller recipe for the Farm to also be MV. * Fix Amount of Infinite Mutation Catalyst Output (#398) - Changed output from 1 to 5 catalysts, to match the input of 5 carriers. * Fix Sterile Farm Casing Recipe (No Tumbaga Pipe) (#402) * fix frame box and block cant localized (#404) * fix double plate and long rod cant localized (#405) * fix double plate and long rod cant localized * sa * Update chemplant manual for TPV (#409) * Update chemplant manual for TPV * update BS Co-authored-by: Martin Robertz <dream-master@gmx.net> * fix crop manager log spam (#408) * Recipe fixes 2022/10/25 (#410) * Remove reflection from RTG Hatch (#411) * Fix Material Progression and Semifluid Gen Cost (#403) - Changed some materials used in GT++ material tier progression, because they require EBF coils above what is possible for the tier; - Changed fluid input on LV Semifluid Generator recipe from Bronze to Tin, since Bronze cannot be fluid extracted in LV; - Reduced the input count of items for those recipes, to bring it closer to the other generators. * spotlessApply Co-authored-by: iouter <62897714+iouter@users.noreply.github.com> Co-authored-by: Steelux <70096037+Steelux8@users.noreply.github.com> Co-authored-by: miozune <miozune@gmail.com> Co-authored-by: Martin Robertz <dream-master@gmx.net> Co-authored-by: Guinea Wheek <guineawheek@users.noreply.github.com> Co-authored-by: GitHub GTNH Actions <> * fix overclocking with 1 energy hatch * fix merging from master * allow tectech energy hatches * Update GT * NEI migration & cleanup Deprecate GTPP_Recipe_Map_Internal#sMappingsEx and delegate to GT_Recipe_Map#sMappings instead Remove recipe modification check * allow for parallel crafting in the QFT * Plasma consumption and their respective hatches * Initial Placeholders for QFT Recipes * spotless * get the fluids the correct way and make sure focusing requires neptunium * Boiler * New Plasma Recipes * Remove Unused Catalyst Code * Remove More Unused Code for Catalyst and Glass * Refactor Crafting and Focusing Tiers * spotlessApply (#441) Co-authored-by: Steelux <70096037+Steelux8@users.noreply.github.com> Co-authored-by: GitHub GTNH Actions <> * remove useless code, make the structure definition static and final. * it works. * address review * spotlessApply (#442) Co-authored-by: Steelux <70096037+Steelux8@users.noreply.github.com> Co-authored-by: GitHub GTNH Actions <> * there are no catalyst housing, no mufflers either. and no need to override more than needed * Crafting Casings Texture Update * address more reviews. also preemptive fix for constant neptunium consumption i am not doing more until tomorrow * Small cleanups * Programmed Circuit & Super Bus * I dare you use mName for shapes again. * Lower the number of fluid slots for multi mixer NEI * Updated Focusing Textures and Added Statics * Implementation of New Catalysts * Recipes for Everything * Spotless apply for branch Chem_Line_Skipper for #399 (#444) * make structure definition fields static (#443) * spotlessApply Co-authored-by: Glease <4586901+Glease@users.noreply.github.com> Co-authored-by: Steelux <70096037+Steelux8@users.noreply.github.com> Co-authored-by: GitHub GTNH Actions <> * add in a config option to change between animated and static textures * More Recipe Additions * spotless again * merge dev fixes. maybe this was it? this is hell * update how fluid mode works * update NEI * update gt dep * update gt version to the correct one. We need MUI god damnit * set animated textures on by default * BS+SA+fix * just a normal gt++ pr * Add Remaining Catalysts * FIXES * miozune request * update dependencies * add dense plates to be auto-genned * rework recipes of the QFT, make the recipe map accept it as a catalyst * add missed items to recipes * change around some recipes. fix NEI. fix some localization * do not set the recipe map for those hatches oops * hatches are pain * life a circle of pain * change the placement of the Fermium and Neptunium Hatch. add tooltip information about it * Add Kevlar recipe using bee comb Adds additional bonus and solely for kevlar * Fixed controller texture * do some fixes. updata dependencies * fix a small oopsie * wait what * Fix catalyst recipes * fix not building * quick spotless * Some tooltip fixes * Increase Fluid Input p/Tier on Recipe Tier Casings * Buff t1 costs * Increase Catalyst Costs to Near the QFT Cost * Some last bug fixes * Minimum energy hatches fix * Change last return statement * Spotless * Oil is not required in the QFT * Spotless again * prepare texture names for Sampsa * Sampsa's textures * Restore Old Unused Texture Changes * Update build.gradle * force field renderer and some fixes * forgot to make it render when working * make client side * remove uneeded things. add variables as local * fix parallels * spotless * fix parallels * quick thing to fix and prevent in the future * forgot to use the same item damage oops * fix to fluid mode. just edit the stacksize * use copyAmountUnsafe * update dependencies. fix overclocking * correct overclocking * lower amps you can use by 1/5th instead of 1/20th * Update dependencies.gradle * update BS * remove jitpack Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: BlueWeabo <76872108+BlueWeabo@users.noreply.github.com> Co-authored-by: iouter <62897714+iouter@users.noreply.github.com> Co-authored-by: miozune <miozune@gmail.com> Co-authored-by: Martin Robertz <dream-master@gmx.net> Co-authored-by: Guinea Wheek <guineawheek@users.noreply.github.com> Co-authored-by: Glease <4586901+Glease@users.noreply.github.com> Co-authored-by: Runakai1 <Runatson@gmail.com>
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod')
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java13
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/gui/GTPP_UITextures.java7
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java16
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks2.java2
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java6
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks5.java62
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtBlock.java20
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java2
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_QuantumForceTransformer.java1245
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java25
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_ChemicalSkips.java640
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java53
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechQuantumForceTransformer.java20
13 files changed, 2094 insertions, 17 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
index f3b9552800..e08cae7c00 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
@@ -267,6 +267,19 @@ public enum GregtechItemList implements GregtechItemContainer {
Casing_BlastSmelter,
Mega_AlloyBlastSmelter,
+ // Quantum Force Transformer
+ QuantumForceTransformer,
+ Casing_Coil_QuantumForceTransformer,
+ NeutronPulseManipulator,
+ CosmicFabricManipulator,
+ InfinityInfusedManipulator,
+ SpaceTimeContinuumRipper,
+ NeutronShieldingCore,
+ CosmicFabricShieldingCore,
+ InfinityInfusedShieldingCore,
+ SpaceTimeBendingCore,
+ ForceFieldGlass,
+
// Industrial Electrolyzer
Industrial_Electrolyzer,
Casing_Electrolyzer,
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/GTPP_UITextures.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/GTPP_UITextures.java
index 06a59cc52e..bd649fea76 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/GTPP_UITextures.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/GTPP_UITextures.java
@@ -9,6 +9,10 @@ import java.util.stream.IntStream;
public class GTPP_UITextures {
+ public static final UITexture OVERLAY_SLOT_COAL = UITexture.fullImage(MODID, "gui/overlay_slot/coal");
+ public static final UITexture OVERLAY_SLOT_CANISTER_DARK =
+ UITexture.fullImage(MODID, "gui/overlay_slot/canister_dark");
+
public static final AdaptableUITexture BACKGROUND_YELLOW =
AdaptableUITexture.of(MODID, "gui/background/yellow", 176, 166, 4);
@@ -26,9 +30,6 @@ public class GTPP_UITextures {
public static final UITexture BUTTON_STANDARD_BRONZE = UITexture.fullImage(MODID, "gui/button/standard_bronze");
public static final UITexture BUTTON_STANDARD_16x16 = UITexture.fullImage(MODID, "gui/button/standard_16x16");
- public static final UITexture OVERLAY_SLOT_COAL = UITexture.fullImage(MODID, "gui/overlay_slot/coal");
- public static final UITexture OVERLAY_SLOT_CANISTER_DARK =
- UITexture.fullImage(MODID, "gui/overlay_slot/canister_dark");
public static final UITexture OVERLAY_SLOT_WEED_EX = UITexture.fullImage(MODID, "gui/overlay_slot/weed_ex");
public static final UITexture OVERLAY_SLOT_FERTILIZER = UITexture.fullImage(MODID, "gui/overlay_slot/fertilizer");
public static final UITexture OVERLAY_SLOT_ELECTRIC_TOOL =
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java
index a788b15a95..8d1e9d597e 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java
@@ -257,7 +257,21 @@ public interface IGregtech_RecipeAdder {
int aSpecialValue);
/**
- * Adds a Recipe for the LFTRr. (up to 9 Inputs, More than 1 fluids)
+ * Adds a Recipe for the Quantum Force Smelter (up to 9 Inputs)
+ *
+ *
+ **/
+ public boolean addQuantumTransformerRecipe(
+ ItemStack[] aInput,
+ FluidStack[] aFluidInput,
+ FluidStack[] aFluidOutput,
+ ItemStack[] aOutputStack,
+ int[] aChances,
+ int aDuration,
+ int aEUt,
+ int aSpecialValue);
+
+ /** Adds a Recipe for the LFTRr. (up to 9 Inputs, More than 1 fluids)
*
* @param aInput = ItemStack[] (not null, and respects StackSize)
* @param aFluidInput = FluidStack[] (can be null, and respects StackSize)
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks2.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks2.java
index f71805784b..3c55d2fa95 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks2.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks2.java
@@ -58,7 +58,7 @@ public class GregtechMetaCasingBlocks2 extends GregtechMetaCasingBlocksAbstract
GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".9.name", "Cyclotron Coil");
GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".10.name", "Cyclotron Outer Casing");
GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".11.name", "Thermal Containment Casing");
- GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".12.name", "Autocrafter Frame");
+ GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".12.name", "Bulk Production Frame");
GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".13.name", "Cutting Factory Frame");
GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".14.name", ""); // Unused
GT_LanguageManager.addStringLocalization(
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java
index 5456aa27a2..8256f1aa64 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java
@@ -24,7 +24,8 @@ public class GregtechMetaCasingBlocks4 extends GregtechMetaCasingBlocksAbstract
GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".1.name", "Reactor Piping");
GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".2.name", "Naquadah Containment Chamber");
GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".3.name", "Tempered Arc Furnace Casing");
- GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".4.name", ""); // Unused
+ GT_LanguageManager.addStringLocalization(
+ this.getUnlocalizedName() + ".4.name", "Quantum Force Transformer Coil Casings"); // Unused
GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".5.name", ""); // Unused
GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".6.name", ""); // Unused
GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".7.name", ""); // Unused
@@ -40,6 +41,7 @@ public class GregtechMetaCasingBlocks4 extends GregtechMetaCasingBlocksAbstract
GregtechItemList.Casing_Naq_Reactor_B.set(new ItemStack(this, 1, 1));
GregtechItemList.Casing_Naq_Reactor_C.set(new ItemStack(this, 1, 2));
GregtechItemList.Casing_Industrial_Arc_Furnace.set(new ItemStack(this, 1, 3));
+ GregtechItemList.Casing_Coil_QuantumForceTransformer.set(new ItemStack(this, 1, 4));
GregtechItemList.Casing_Vacuum_Furnace.set(new ItemStack(this, 1, 10));
GregtechItemList.Casing_RocketEngine.set(new ItemStack(this, 1, 11));
}
@@ -71,7 +73,7 @@ public class GregtechMetaCasingBlocks4 extends GregtechMetaCasingBlocksAbstract
case 3:
return TexturesGtBlock.TEXTURE_METAL_PANEL_A.getIcon();
case 4:
- return Textures.BlockIcons.RENDERING_ERROR.getIcon();
+ return TexturesGtBlock.Casing_Coil_QFT.getIcon();
case 5:
return Textures.BlockIcons.RENDERING_ERROR.getIcon();
case 6:
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks5.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks5.java
index 834fb2c186..68d8349ef3 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks5.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks5.java
@@ -42,15 +42,17 @@ public class GregtechMetaCasingBlocks5 extends GregtechMetaCasingBlocksAbstract
GT_LanguageManager.addStringLocalization(
this.getUnlocalizedName() + ".6.name", "Forge Casing"); // Forge Hammer Casing
TAE.registerTexture(1, 11, new GTPP_CopiedBlockTexture(this, 6, 6));
- GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".7.name", ""); // Unused
- GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".8.name", ""); // Unused
- GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".9.name", ""); // Unused
- GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".10.name", ""); // Unused
- GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".11.name", ""); // Unused
- GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".12.name", ""); // Unused
- GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".13.name", ""); // Unused
- GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".14.name", ""); // Unused
- GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".15.name", ""); // Unused
+ GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".7.name", "Neutron Pulse Manipulator");
+ GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".8.name", "Cosmic Fabric Manipulator");
+ GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".9.name", "Infinity Infused Manipulator");
+ GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".10.name", "SpaceTime Continuum Ripper");
+ GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".11.name", "Neutron Shielding Core");
+ GT_LanguageManager.addStringLocalization(
+ this.getUnlocalizedName() + ".12.name", "Cosmic Fabric Shielding Core");
+ GT_LanguageManager.addStringLocalization(
+ this.getUnlocalizedName() + ".13.name", "Infinity Infused Shielding Core");
+ GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".14.name", "SpaceTime Bending Core");
+ GT_LanguageManager.addStringLocalization(this.getUnlocalizedName() + ".15.name", "Force Field Glass");
GregtechItemList.Casing_IsaMill_Casing.set(new ItemStack(this, 1, 0));
GregtechItemList.Casing_IsaMill_Pipe.set(new ItemStack(this, 1, 1));
@@ -59,6 +61,15 @@ public class GregtechMetaCasingBlocks5 extends GregtechMetaCasingBlocksAbstract
GregtechItemList.Casing_Sparge_Tower_Exterior.set(new ItemStack(this, 1, 4));
GregtechItemList.Casing_IndustrialAutoChisel.set(new ItemStack(this, 1, 5));
GregtechItemList.Casing_IndustrialForgeHammer.set(new ItemStack(this, 1, 6));
+ GregtechItemList.NeutronPulseManipulator.set(new ItemStack(this, 1, 7));
+ GregtechItemList.CosmicFabricManipulator.set(new ItemStack(this, 1, 8));
+ GregtechItemList.InfinityInfusedManipulator.set(new ItemStack(this, 1, 9));
+ GregtechItemList.SpaceTimeContinuumRipper.set(new ItemStack(this, 1, 10));
+ GregtechItemList.NeutronShieldingCore.set(new ItemStack(this, 1, 11));
+ GregtechItemList.CosmicFabricShieldingCore.set(new ItemStack(this, 1, 12));
+ GregtechItemList.InfinityInfusedShieldingCore.set(new ItemStack(this, 1, 13));
+ GregtechItemList.SpaceTimeBendingCore.set(new ItemStack(this, 1, 14));
+ GregtechItemList.ForceFieldGlass.set(new ItemStack(this, 1, 15));
}
@Override
@@ -83,6 +94,39 @@ public class GregtechMetaCasingBlocks5 extends GregtechMetaCasingBlocksAbstract
return TexturesGtBlock.Casing_Machine_Metal_Sheet_I.getIcon();
case 6:
return TexturesGtBlock.TEXTURE_TECH_PANEL_H.getIcon();
+ case 7:
+ if (aSide == 0 || aSide == 1) {
+ return TexturesGtBlock.Manipulator_Top.getIcon();
+ }
+ return TexturesGtBlock.NeutronPulseManipulator.getIcon();
+ case 8:
+ if (aSide == 0 || aSide == 1) {
+ return TexturesGtBlock.Manipulator_Top.getIcon();
+ }
+ return TexturesGtBlock.CosmicFabricManipulator.getIcon();
+ case 9:
+ if (aSide == 0 || aSide == 1) {
+ return TexturesGtBlock.Manipulator_Top.getIcon();
+ }
+ return TexturesGtBlock.InfinityInfusedManipulator.getIcon();
+ case 10:
+ if (aSide == 0 || aSide == 1) {
+ return TexturesGtBlock.Manipulator_Top.getIcon();
+ }
+ return TexturesGtBlock.SpaceTimeContinuumRipper.getIcon();
+ case 11:
+ return TexturesGtBlock.NeutronShieldingCore.getIcon();
+ case 12:
+ return TexturesGtBlock.CosmicFabricShieldingCore.getIcon();
+ case 13:
+ return TexturesGtBlock.InfinityInfusedShieldingCore.getIcon();
+ case 14:
+ return TexturesGtBlock.SpaceTimeBendingCore.getIcon();
+ case 15:
+ if (aSide == 0 || aSide == 1) {
+ return TexturesGtBlock.Blank.getIcon();
+ }
+ return TexturesGtBlock.ForceFieldGlass.getIcon();
}
}
return Textures.BlockIcons.RENDERING_ERROR.getIcon();
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtBlock.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtBlock.java
index d92c9fb7e1..9ee32bcaa6 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtBlock.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtBlock.java
@@ -13,6 +13,8 @@ import net.minecraft.util.ResourceLocation;
public class TexturesGtBlock {
+ private static boolean mAnimated = CORE.ConfigSwitches.enableAnimatedTextures;
+
private static AutoMap<Runnable> mCustomiconMap = new AutoMap<Runnable>();
static {
@@ -289,6 +291,24 @@ public class TexturesGtBlock {
new CustomIcon("TileEntities/MACHINE_CASING_CENTRIFUGE");
public static final CustomIcon Casing_Material_Centrifuge = Internal_Casing_Centrifuge;
+ // Quantum Force Transformer Casing
+ // spotless:off
+ private static final CustomIcon Internal_Casing_QFT = mAnimated ? new CustomIcon("TileEntities/MACHINE_CASING_QFT_COIL") : new CustomIcon("TileEntites/MACHINE_CASING_QFT_COIL");
+ public static final CustomIcon Casing_Coil_QFT = Internal_Casing_QFT;
+ public static final CustomIcon NeutronPulseManipulator = mAnimated ? new CustomIcon("NeutronPulseManipulator") : new CustomIcon("NeutronPulseManipulatorStatic");
+ public static final CustomIcon CosmicFabricManipulator = mAnimated ? new CustomIcon("CosmicFabricManipulator") : new CustomIcon("CosmicFabricManipulatorStatic");
+ public static final CustomIcon InfinityInfusedManipulator = mAnimated ? new CustomIcon("InfinityInfusedManipulator") : new CustomIcon("InfinityInfusedManipulatorStatic");
+ public static final CustomIcon SpaceTimeContinuumRipper = mAnimated ? new CustomIcon("SpaceTimeContinuumRipper") : new CustomIcon("SpaceTimeContinuumRipperStatic");
+ public static final CustomIcon Manipulator_Top = new CustomIcon("Manipulator_Top");
+ public static final CustomIcon NeutronShieldingCore = mAnimated ? new CustomIcon("NeutronShieldingCore") : new CustomIcon("NeutronShieldingCoreStatic");
+ public static final CustomIcon CosmicFabricShieldingCore = mAnimated ? new CustomIcon("CosmicFabricShieldingCore") : new CustomIcon("CosmicFabricShieldingCoreStatic");
+ public static final CustomIcon InfinityInfusedShieldingCore = mAnimated ? new CustomIcon("InfinityInfusedShieldingCore") : new CustomIcon("InfinityInfusedShieldingCoreStatic");
+ public static final CustomIcon SpaceTimeBendingCore = mAnimated ? new CustomIcon("SpaceTimeBendingCore") : new CustomIcon("SpaceTimeBendingCoreStatic");
+ public static final CustomIcon ForceFieldGlass = new CustomIcon("ForceFieldGlass");
+ public static final CustomIcon ForceField = new CustomIcon("rendering/ForceField");
+ public static final CustomIcon Blank = new CustomIcon("Blank");
+ //spotless:on
+
// MACHINE_CASING_FARM_MANAGER_STRUCTURAL
// Farm Manager Casings
private static final CustomIcon Internal_Casing_Machine_Farm_Manager =
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java
index 82631d81bf..f701b23e92 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java
@@ -141,7 +141,7 @@ public class GT4Entity_AutoCrafter extends GregtechMeta_MultiBlockBase<GT4Entity
.addSeparator()
.beginStructureBlock(3, 3, 3, true)
.addController("Front Center")
- .addCasingInfo("Autocrafter Frame", 10)
+ .addCasingInfo("Bulk Production Frame", 10)
.addInputBus("Any Casing", 1)
.addOutputBus("Any Casing", 1)
.addInputHatch("Any Casing", 1)
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_QuantumForceTransformer.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_QuantumForceTransformer.java
new file mode 100644
index 0000000000..b5fc3b6ebb
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_QuantumForceTransformer.java
@@ -0,0 +1,1245 @@
+package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
+
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static gregtech.api.enums.GT_HatchElement.*;
+import static gregtech.api.util.GT_OreDictUnificator.getAssociation;
+import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
+
+import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
+import com.gtnewhorizon.structurelib.structure.*;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.api.GregTech_API;
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.TAE;
+import gregtech.api.enums.Textures;
+import gregtech.api.interfaces.IIconContainer;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_ExtendedPowerMultiBlockBase;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus;
+import gregtech.api.objects.ItemData;
+import gregtech.api.render.TextureFactory;
+import gregtech.api.util.*;
+import gtPlusPlus.core.block.ModBlocks;
+import gtPlusPlus.core.material.ELEMENT;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import net.minecraft.block.Block;
+import net.minecraft.client.renderer.RenderBlocks;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.IBlockAccess;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+import org.apache.commons.lang3.tuple.Pair;
+import org.lwjgl.opengl.GL11;
+
+public class GregtechMetaTileEntity_QuantumForceTransformer
+ extends GT_MetaTileEntity_ExtendedPowerMultiBlockBase<GregtechMetaTileEntity_QuantumForceTransformer>
+ implements ISurvivalConstructable {
+
+ private int mCasing;
+ protected int mCraftingTier = 0;
+ protected int mFocusingTier = 0;
+ private boolean mSeparateInputBusses = false;
+ private boolean mFluidMode = false, doFermium = false, doNeptunium = false;
+ private static final Fluid mNeptunium = ELEMENT.getInstance().NEPTUNIUM.getPlasma();
+ private static final Fluid mFermium = ELEMENT.getInstance().FERMIUM.getPlasma();
+ private static final String MAIN_PIECE = "main";
+ private GT_MetaTileEntity_Hatch_Input mNeptuniumHatch;
+ private GT_MetaTileEntity_Hatch_Input mFermiumHatch;
+ private static final IStructureDefinition<GregtechMetaTileEntity_QuantumForceTransformer> STRUCTURE_DEFINITION =
+ StructureDefinition.<GregtechMetaTileEntity_QuantumForceTransformer>builder()
+ .addShape(MAIN_PIECE, new String[][] { // A - 142, B - 234, C - 177, D - 96, E - 224, H - 36, M - 21
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " BAB ",
+ " BBBBABBBB ",
+ " BAAAAAAAB ",
+ " BABBABBAB ",
+ " BA AB ",
+ " A A ",
+ " A A ",
+ " A A "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " BAB ",
+ " AAABBBAAA ",
+ " BAAAAAAAAAB ",
+ " B B ",
+ " A A ",
+ " A A ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " BAB ",
+ " AA AA ",
+ " AA AA ",
+ " BAA AAB ",
+ " B B ",
+ " A A ",
+ " A A ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " BAAAB ",
+ " AA AA ",
+ " AA AA ",
+ "BAA AAB",
+ "B B",
+ "A A",
+ "A A",
+ "A A",
+ "A A",
+ "A A"
+ },
+ {
+ " TTT ",
+ " EEE ",
+ " EEE ",
+ " EEE ",
+ " DDD ",
+ " EEE ",
+ " DDD ",
+ " EEE ",
+ " EEE ",
+ " EEE ",
+ " DDD ",
+ " BAEEEAB ",
+ " AA EEE AA ",
+ " A EEE A ",
+ "BA DDD AB",
+ "B EEE B",
+ "B DDD B",
+ " EEE ",
+ " EEE ",
+ " EEE ",
+ " Z~X "
+ },
+ {
+ " TTTTT ",
+ " ECCCE ",
+ " ECCCE ",
+ " ECCCE ",
+ " D D ",
+ " ECCCE ",
+ " D D ",
+ " ECCCE ",
+ " ECCCE ",
+ " ECCCE ",
+ " D D ",
+ " BAECCCEAB ",
+ " A ECCCE A ",
+ " A ECCCE A ",
+ "BA D D AB",
+ "B ECCCE B",
+ "B D D B",
+ "B ECCCE B",
+ " ECCCE ",
+ " ECCCE ",
+ " HHHHH "
+ },
+ {
+ " TTTTTTT ",
+ " ECCCCCE ",
+ " EC CE ",
+ " EC CE ",
+ " D D ",
+ " EC CE ",
+ " D D ",
+ " EC CE ",
+ " EC CE ",
+ " EC CE ",
+ " D D ",
+ " BAEC CEAB ",
+ " B EC CE B ",
+ "BB EC CE BB",
+ "BA D D AB",
+ "A EC CE A",
+ "A D D A",
+ "A EC CE A",
+ " EC CE ",
+ " EC CE ",
+ " HHHHHHH "
+ },
+ {
+ " TTTTTTT ",
+ " ECCCCCE ",
+ " EC CE ",
+ " EC CE ",
+ " D D ",
+ " EC CE ",
+ " D D ",
+ " EC CE ",
+ " EC CE ",
+ " EC CE ",
+ " D D ",
+ " AAEC CEAA ",
+ " A EC CE A ",
+ "AB EC CE BA",
+ "AA D D AA",
+ "A EC CE A",
+ "A D D A",
+ " EC CE ",
+ " EC CE ",
+ " EC CE ",
+ " HHHHHHH "
+ },
+ {
+ " TTTTTTT ",
+ " ECCCCCE ",
+ " EC CE ",
+ " EC CE ",
+ " D D ",
+ " EC CE ",
+ " D D ",
+ " EC CE ",
+ " EC CE ",
+ " EC CE ",
+ " D D ",
+ " BAEC CEAB ",
+ " B EC CE B ",
+ "BB EC CE BB",
+ "BA D D AB",
+ "A EC CE A",
+ "A D D A",
+ "A EC CE A",
+ " EC CE ",
+ " EC CE ",
+ " HHHHHHH "
+ },
+ {
+ " TTTTT ",
+ " ECCCE ",
+ " ECCCE ",
+ " ECCCE ",
+ " D D ",
+ " ECCCE ",
+ " D D ",
+ " ECCCE ",
+ " ECCCE ",
+ " ECCCE ",
+ " D D ",
+ " BAECCCEAB ",
+ " A ECCCE A ",
+ " A ECCCE A ",
+ "BA D D AB",
+ "B ECCCE B",
+ "B D D B",
+ "B ECCCE B",
+ " ECCCE ",
+ " ECCCE ",
+ " HHHHH "
+ },
+ {
+ " TTT ",
+ " EEE ",
+ " EEE ",
+ " EEE ",
+ " DDD ",
+ " EEE ",
+ " DDD ",
+ " EEE ",
+ " EEE ",
+ " EEE ",
+ " DDD ",
+ " BAEEEAB ",
+ " AA EEE AA ",
+ " A EEE A ",
+ "BA DDD AB",
+ "B EEE B",
+ "B DDD B",
+ " EEE ",
+ " EEE ",
+ " EEE ",
+ " HHH "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " BAAAB ",
+ " AA AA ",
+ " AA AA ",
+ "BAA AB",
+ "B B",
+ "A A",
+ "A A",
+ "A A",
+ "A A",
+ "A A"
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " BAB ",
+ " AA AA ",
+ " AA AA ",
+ " BA AB ",
+ " B B ",
+ " A A ",
+ " A A ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " BAB ",
+ " AAABBBAAA ",
+ " BAAAAAAAAAB ",
+ " B B ",
+ " A A ",
+ " A A ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " BAB ",
+ " BBBBABBBB ",
+ " BBBAAABBB ",
+ " ABBAAABBA ",
+ " A BA AB A ",
+ " A A ",
+ " A A ",
+ " A A "
+ },
+ })
+ .addElement(
+ 'A',
+ StructureUtility.ofBlocksTiered(
+ craftingTierConverter(),
+ getAllCraftingTiers(),
+ 0,
+ GregtechMetaTileEntity_QuantumForceTransformer::setCraftingTier,
+ GregtechMetaTileEntity_QuantumForceTransformer::getCraftingTier))
+ .addElement(
+ 'B',
+ StructureUtility.ofBlocksTiered(
+ focusingTierConverter(),
+ getAllFocusingTiers(),
+ 0,
+ GregtechMetaTileEntity_QuantumForceTransformer::setFocusingTier,
+ GregtechMetaTileEntity_QuantumForceTransformer::getFocusingTier))
+ .addElement('C', ofBlock(ModBlocks.blockCasings4Misc, 4))
+ .addElement('D', ofBlock(ModBlocks.blockCasings2Misc, 12))
+ .addElement('E', lazy(t -> ofBlock(t.getCasingBlock1(), t.getCasingMeta1())))
+ .addElement(
+ 'H',
+ buildHatchAdder(GregtechMetaTileEntity_QuantumForceTransformer.class)
+ .atLeast(InputBus, InputHatch, Maintenance, Energy.or(ExoticEnergy))
+ .casingIndex(TAE.getIndexFromPage(0, 10))
+ .dot(4)
+ .buildAndChain(
+ onElementPass(x -> ++x.mCasing, ofBlock(ModBlocks.blockCasings2Misc, 12))))
+ .addElement(
+ 'T',
+ buildHatchAdder(GregtechMetaTileEntity_QuantumForceTransformer.class)
+ .atLeast(OutputBus, OutputHatch, Maintenance)
+ .casingIndex(TAE.getIndexFromPage(0, 10))
+ .dot(5)
+ .buildAndChain(
+ onElementPass(x -> ++x.mCasing, ofBlock(ModBlocks.blockCasings2Misc, 12))))
+ .addElement(
+ 'Z',
+ buildHatchAdder(GregtechMetaTileEntity_QuantumForceTransformer.class)
+ .hatchClass(GT_MetaTileEntity_Hatch_Input.class)
+ .adder(GregtechMetaTileEntity_QuantumForceTransformer::addNeptuniumHatch)
+ .casingIndex(TAE.getIndexFromPage(0, 10))
+ .dot(5)
+ .buildAndChain(
+ onElementPass(x -> ++x.mCasing, ofBlock(ModBlocks.blockCasings2Misc, 12))))
+ .addElement(
+ 'X',
+ buildHatchAdder(GregtechMetaTileEntity_QuantumForceTransformer.class)
+ .hatchClass(GT_MetaTileEntity_Hatch_Input.class)
+ .adder(GregtechMetaTileEntity_QuantumForceTransformer::addFermiumHatch)
+ .casingIndex(TAE.getIndexFromPage(0, 10))
+ .dot(5)
+ .buildAndChain(
+ onElementPass(x -> ++x.mCasing, ofBlock(ModBlocks.blockCasings2Misc, 12))))
+ .build();
+
+ public GregtechMetaTileEntity_QuantumForceTransformer(
+ final int aID, final String aName, final String aNameRegional) {
+ super(aID, aName, aNameRegional);
+ }
+
+ public GregtechMetaTileEntity_QuantumForceTransformer(final String aName) {
+ super(aName);
+ }
+
+ @Override
+ public IMetaTileEntity newMetaEntity(final IGregTechTileEntity aTileEntity) {
+ return new GregtechMetaTileEntity_QuantumForceTransformer(this.mName);
+ }
+
+ @Override
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType("Quantum Force Transformer")
+ .addInfo("Controller Block for the Quantum Force Transformer")
+ .addInfo("Allows Complex chemical lines to be performed instantly in one step")
+ .addInfo("Every recipe requires a catalyst, each catalyst adds 1 parallel and lasts forever")
+ .addInfo("Accepts TecTech Energy and Laser Hatches")
+ .addInfo("All inputs go on the bottom, all outputs go on the top")
+ .addInfo("Put a circuit in the controller to specify the focused output")
+ .addInfo("Check NEI to see the order of outputs, and which circuit number you need.")
+ .addInfo("Uses FocusTier*4*sqrt(parallels) Neptunium Plasma if focusing")
+ .addInfo("Can use FocusTier*4*sqrt(parallels) Fermium Plasma for additional chance output")
+ .addInfo("This multi gets improved when all casings of some types are upgraded")
+ .addInfo("Casing functions:")
+ .addInfo("Pulse Manipulators: Recipe Tier Allowed (check NEI for the tier of each recipe)")
+ .addInfo("Shielding Cores: Focusing Tier (equal to or higher than recipe tier to allow focus)")
+ .addPollutionAmount(getPollutionPerSecond(null))
+ .addSeparator()
+ .beginStructureBlock(15, 21, 15, true)
+ .addController("Bottom Center")
+ .addCasingInfo("Bulk Production Frame", 80)
+ .addCasingInfo("Quantum Force Conductor", 177)
+ .addCasingInfo("Particle Containment Casing", 224)
+ .addCasingInfo("Neutron Pulse Manipulators", 233)
+ .addCasingInfo("Neutron Shielding Cores", 142)
+ .addInputBus("Bottom Layer", 4)
+ .addInputHatch("Bottom Layer", 4)
+ .addOutputHatch("Top Layer", 5)
+ .addOutputBus("Top Layer", 5)
+ .addEnergyHatch("Bottom Layer", 4)
+ .addMaintenanceHatch("Bottom Layer", 4)
+ .addStructureInfo("Neptunium Plasma Hatch: Left side of Controller")
+ .addStructureInfo("Fermium Plasma Hatch: Right side of Controller")
+ .toolTipFinisher(GT_Values.AuthorBlueWeabo + EnumChatFormatting.RESET + EnumChatFormatting.GREEN
+ + " + Steelux" + EnumChatFormatting.RESET + " - [GT++]");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_QuantumForceTransformer> getStructureDefinition() {
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ this.mCasing = 0;
+ if (!checkPiece(MAIN_PIECE, 7, 20, 4)) {
+ return false;
+ }
+
+ if (mMaintenanceHatches.size() != 1
+ || mOutputBusses.size() < 1
+ || mInputBusses.size() < 1
+ || mInputHatches.size() < 1
+ || mOutputHatches.size() < 1) {
+ return false;
+ }
+
+ // Makes sure that the multi can accept only 1 TT Energy Hatch OR up to 2 Normal Energy Hatches. Deform if both
+ // present or more than 1 TT Hatch.
+ if (mExoticEnergyHatches.isEmpty() && mEnergyHatches.isEmpty()) {
+ return false;
+ }
+
+ if (mExoticEnergyHatches.size() >= 1) {
+ if (!mEnergyHatches.isEmpty()) {
+ return false;
+ }
+
+ if (mExoticEnergyHatches.size() != 1) {
+ return false;
+ }
+ }
+
+ if (mEnergyHatches.size() > 2) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(MAIN_PIECE, stackSize, hintsOnly, 7, 20, 4);
+ }
+
+ @Override
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) {
+ if (mMachine) return -1;
+ return survivialBuildPiece(MAIN_PIECE, stackSize, 7, 20, 4, elementBudget, env, false, true);
+ }
+
+ public static List<Pair<Block, Integer>> getAllCraftingTiers() {
+ return new ArrayList<Pair<Block, Integer>>() {
+ {
+ add(Pair.of(ModBlocks.blockCasings5Misc, 7));
+ add(Pair.of(ModBlocks.blockCasings5Misc, 8));
+ add(Pair.of(ModBlocks.blockCasings5Misc, 9));
+ add(Pair.of(ModBlocks.blockCasings5Misc, 10));
+ }
+ };
+ }
+
+ public static List<Pair<Block, Integer>> getAllFocusingTiers() {
+ return new ArrayList<Pair<Block, Integer>>() {
+ {
+ add(Pair.of(ModBlocks.blockCasings5Misc, 11));
+ add(Pair.of(ModBlocks.blockCasings5Misc, 12));
+ add(Pair.of(ModBlocks.blockCasings5Misc, 13));
+ add(Pair.of(ModBlocks.blockCasings5Misc, 14));
+ }
+ };
+ }
+
+ public static ITierConverter<Integer> craftingTierConverter() {
+ return (block, meta) -> {
+ if (block == null) {
+ return -1;
+ } else if (block == ModBlocks.blockCasings5Misc) { // Resonance Chambers
+ switch (meta) {
+ case 7:
+ return 1;
+ case 8:
+ return 2;
+ case 9:
+ return 3;
+ case 10:
+ return 4;
+ }
+ }
+ return -1;
+ };
+ }
+
+ public static ITierConverter<Integer> focusingTierConverter() {
+ return (block, meta) -> {
+ if (block == null) {
+ return -1;
+ } else if (block == ModBlocks.blockCasings5Misc) { // Generation Coils
+ switch (meta) {
+ case 11:
+ return 1;
+ case 12:
+ return 2;
+ case 13:
+ return 3;
+ case 14:
+ return 4;
+ }
+ }
+ return -1;
+ };
+ }
+
+ private void setCraftingTier(int tier) {
+ mCraftingTier = tier;
+ }
+
+ private void setFocusingTier(int tier) {
+ mFocusingTier = tier;
+ }
+
+ private int getCraftingTier() {
+ return mCraftingTier;
+ }
+
+ private int getFocusingTier() {
+ return mFocusingTier;
+ }
+
+ public String getSound() {
+ return GregTech_API.sSoundList.get(Integer.valueOf(208));
+ }
+
+ protected IIconContainer getActiveOverlay() {
+ return TexturesGtBlock.Overlay_Machine_Controller_Advanced_Active;
+ }
+
+ protected IIconContainer getInactiveOverlay() {
+ return TexturesGtBlock.Overlay_Machine_Controller_Advanced;
+ }
+
+ protected int getCasingTextureId() {
+ return TAE.getIndexFromPage(0, 10);
+ }
+
+ @Override
+ public GT_Recipe.GT_Recipe_Map getRecipeMap() {
+ return GTPP_Recipe.GTPP_Recipe_Map.sQuantumForceTransformerRecipes;
+ }
+
+ @Override
+ public boolean isCorrectMachinePart(final ItemStack aStack) {
+ return true;
+ }
+
+ private static int mMaxParallel = 64;
+ private int mCurrentParallel = 0;
+
+ @Override
+ public boolean checkRecipe(final ItemStack aStack) {
+ mCurrentParallel = 0;
+ this.lEUt = 0;
+ this.mMaxProgresstime = 0;
+ this.mOutputItems = null;
+ this.mOutputFluids = null;
+ doFermium = false;
+ doNeptunium = false;
+ FluidStack[] tFluidList = getStoredFluids().toArray(new FluidStack[0]);
+ if (mSeparateInputBusses) {
+ ArrayList<ItemStack> tInputList = new ArrayList<ItemStack>();
+ for (GT_MetaTileEntity_Hatch_InputBus tBus : mInputBusses) {
+ for (int i = tBus.getSizeInventory() - 1; i >= 0; i--) {
+ if (tBus.getStackInSlot(i) != null) {
+ tInputList.add(tBus.getStackInSlot(i));
+ }
+ }
+ ItemStack[] tInputs = tInputList.toArray(new ItemStack[0]);
+ if (processRecipe(tInputs, tFluidList, getRecipeMap(), aStack)) return true;
+ else tInputList.clear();
+ }
+ } else {
+ ItemStack[] tInputList = getStoredInputs().toArray(new ItemStack[0]);
+ return processRecipe(tInputList, tFluidList, getRecipeMap(), aStack);
+ }
+ this.mEfficiency = 0;
+ this.mEfficiencyIncrease = 0;
+ return false;
+ }
+
+ private boolean processRecipe(
+ ItemStack[] aItemInputs, FluidStack[] aFluidInputs, GT_Recipe.GT_Recipe_Map aRecipeMap, ItemStack aStack) {
+ long tVoltage =
+ getMaxInputVoltage() / getExoticAndNormalEnergyHatchList().size();
+ long tAmps = (long) Math.floor(getMaxInputAmps() * 0.80);
+ long tTotalEUt = tVoltage * tAmps;
+ byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage));
+ GT_Recipe tRecipe = aRecipeMap
+ .findRecipe(
+ getBaseMetaTileEntity(),
+ false,
+ gregtech.api.enums.GT_Values.V[tTier],
+ aFluidInputs,
+ aItemInputs)
+ .copy();
+
+ if (tRecipe != null && tRecipe.mSpecialValue <= getCraftingTier()) {
+ ItemStack aRecipeCatalyst = null;
+ for (ItemStack tItem : tRecipe.mInputs) {
+ if (ItemUtils.isCatalyst(tItem)) {
+ aRecipeCatalyst = tItem;
+ break;
+ }
+ }
+
+ if (aRecipeCatalyst == null) {
+ return false;
+ }
+
+ int mCurrentMaxParallel = 0;
+ for (ItemStack tItem : aItemInputs) {
+ if (ItemUtils.isCatalyst(tItem) && tItem.isItemEqual(aRecipeCatalyst)) {
+ mCurrentMaxParallel += tItem.stackSize;
+ }
+
+ if (mCurrentMaxParallel >= mMaxParallel) {
+ mCurrentMaxParallel = mMaxParallel;
+ break;
+ }
+ }
+
+ if (mFermiumHatch != null) {
+ if (mFermiumHatch.getFluid() != null
+ && mFermiumHatch.getFluid().isFluidEqual(new FluidStack(mFermium, 1))) {
+ doFermium = true;
+ } else {
+ doFermium = false;
+ }
+ } else {
+ doFermium = false;
+ }
+
+ while (mCurrentParallel < mCurrentMaxParallel
+ && tRecipe.isRecipeInputEqual(true, aFluidInputs, aItemInputs)) {
+ mCurrentParallel++;
+ }
+
+ this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000);
+ this.mEfficiencyIncrease = 10000;
+
+ mMaxProgresstime = tRecipe.mDuration;
+ lEUt = -tRecipe.mEUt * mCurrentParallel;
+
+ calculateOverclockedNessMultiInternal(
+ tRecipe.mEUt * mCurrentParallel, tRecipe.mDuration, 1, tTotalEUt, false);
+
+ if (mMaxProgresstime == Integer.MAX_VALUE - 1 || lEUt == Long.MAX_VALUE - 1) return false;
+
+ if (this.lEUt > 0) {
+ this.lEUt = (-this.lEUt);
+ }
+
+ int[] tChances;
+ if (aStack == null
+ || aStack.getItemDamage() == 0
+ || mNeptuniumHatch.getFluid() == null
+ || !mNeptuniumHatch.getFluid().isFluidEqual(new FluidStack(mNeptunium, 1))) {
+ doNeptunium = false;
+ tChances = GetChanceOutputs(tRecipe, -1);
+ } else {
+ doNeptunium = true;
+ tChances = GetChanceOutputs(tRecipe, aStack.getItemDamage() - 1);
+ }
+
+ ArrayList<ItemStack> tItemOutputs = new ArrayList<ItemStack>();
+ ArrayList<FluidStack> tFluidOutputs = new ArrayList<FluidStack>();
+
+ if (mFluidMode) {
+ for (int i = 0; i < tChances.length; i++) {
+ if (getBaseMetaTileEntity().getRandomNumber(10000) < tChances[i]) {
+ ItemData data = getAssociation(tRecipe.getOutput(i));
+ Materials mat = data == null ? null : data.mMaterial.mMaterial;
+ if (i < tRecipe.mOutputs.length) {
+ if (mat != null) {
+ if (mat.getMolten(0) != null) {
+ tFluidOutputs.add(
+ mat.getMolten(tRecipe.getOutput(i).stackSize * 144 * mCurrentParallel));
+ } else if (mat.getFluid(0) != null) {
+ tFluidOutputs.add(
+ mat.getFluid(tRecipe.getOutput(i).stackSize * 1000 * mCurrentParallel));
+ } else {
+ ItemStack aItem = tRecipe.getOutput(i);
+ tItemOutputs.add(
+ GT_Utility.copyAmountUnsafe(aItem.stackSize * mCurrentParallel, aItem));
+ }
+ } else {
+ ItemStack aItem = tRecipe.getOutput(i);
+ tItemOutputs.add(
+ GT_Utility.copyAmountUnsafe(aItem.stackSize * mCurrentParallel, aItem));
+ }
+ } else {
+ FluidStack aFluid = tRecipe.getFluidOutput(i - tRecipe.mOutputs.length)
+ .copy();
+ aFluid.amount *= mCurrentParallel;
+ tFluidOutputs.add(aFluid);
+ }
+ }
+ }
+ } else {
+ for (int i = 0; i < tChances.length; i++) {
+ if (getBaseMetaTileEntity().getRandomNumber(10000) < tChances[i]) {
+ if (i < tRecipe.mOutputs.length) {
+ ItemStack aItem = tRecipe.getOutput(i).copy();
+ aItem.stackSize *= mCurrentParallel;
+ tItemOutputs.add(aItem);
+ } else {
+ FluidStack aFluid = tRecipe.getFluidOutput(i - tRecipe.mOutputs.length)
+ .copy();
+ aFluid.amount *= mCurrentParallel;
+ tFluidOutputs.add(aFluid);
+ }
+ }
+ }
+ }
+
+ mOutputItems = tItemOutputs.toArray(new ItemStack[0]);
+ mOutputFluids = tFluidOutputs.toArray(new FluidStack[0]);
+ this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime);
+ updateSlots();
+
+ return true;
+ }
+ return false;
+ }
+
+ private byte runningTick = 0;
+
+ @Override
+ public boolean onRunningTick(ItemStack aStack) {
+ if (!super.onRunningTick(aStack)) {
+ criticalStopMachine();
+ return false;
+ }
+
+ if (runningTick % 20 == 0) {
+ if (doFermium) {
+ FluidStack tFluid =
+ new FluidStack(mFermium, (int) (getFocusingTier() * 4 * Math.sqrt(mCurrentParallel)));
+ FluidStack tLiquid = mFermiumHatch.drain(tFluid.amount, true);
+ if (tLiquid == null || tLiquid.amount < tFluid.amount) {
+ doFermium = false;
+ criticalStopMachine();
+ return false;
+ }
+ }
+
+ if (doNeptunium) {
+ FluidStack tFluid =
+ new FluidStack(mNeptunium, (int) (getFocusingTier() * 4 * Math.sqrt(mCurrentParallel)));
+ FluidStack tLiquid = mNeptuniumHatch.drain(tFluid.amount, true);
+ if (tLiquid == null || tLiquid.amount < tFluid.amount) {
+ doNeptunium = false;
+ criticalStopMachine();
+ return false;
+ }
+ }
+
+ runningTick = 1;
+ } else {
+ runningTick++;
+ }
+
+ return true;
+ }
+
+ public int getMaxParallelRecipes() {
+ return 64;
+ }
+
+ public int getEuDiscountForParallelism() {
+ return 0;
+ }
+
+ @Override
+ public int getMaxEfficiency(final ItemStack aStack) {
+ return 10000;
+ }
+
+ @Override
+ public int getPollutionPerSecond(final ItemStack aStack) {
+ return 0;
+ }
+
+ @Override
+ public int getDamageToComponent(final ItemStack aStack) {
+ return 0;
+ }
+
+ public int getAmountOfOutputs() {
+ return 2;
+ }
+
+ @Override
+ public boolean explodesOnComponentBreak(final ItemStack aStack) {
+ return false;
+ }
+
+ private int[] GetChanceOutputs(GT_Recipe tRecipe, int aChanceIncreased) {
+ int difference = getFocusingTier() - tRecipe.mSpecialValue;
+ int aOutputsAmount = tRecipe.mOutputs.length + tRecipe.mFluidOutputs.length;
+ int aChancePerOutput = 10000 / aOutputsAmount;
+ int[] tChances = new int[aOutputsAmount];
+ Arrays.fill(tChances, aChancePerOutput);
+
+ switch (difference) {
+ case 0:
+ for (int i = 0; i < tChances.length; i++) {
+ if (doNeptunium) {
+ if (i == aChanceIncreased) {
+ tChances[i] = aChancePerOutput / 2 * (aOutputsAmount - 1);
+ } else {
+ tChances[i] /= 2;
+ }
+ }
+
+ if (doFermium) {
+ tChances[i] += (10000 - tChances[i]) / 4;
+ }
+ }
+ break;
+ case 1:
+ for (int i = 0; i < tChances.length; i++) {
+ if (doNeptunium) {
+ if (i == aChanceIncreased) {
+ tChances[i] = aChancePerOutput * 3 / 4 * (aOutputsAmount - 1);
+ } else {
+ tChances[i] /= 4;
+ }
+ }
+
+ if (doFermium) {
+ tChances[i] += (10000 - tChances[i]) / 3;
+ }
+ }
+ break;
+ case 2:
+ case 3:
+ for (int i = 0; i < tChances.length; i++) {
+ if (doNeptunium) {
+ if (i == aChanceIncreased) {
+ tChances[i] = 10000;
+ } else {
+ tChances[i] = 0;
+ }
+ }
+
+ if (doFermium) {
+ tChances[i] += (10000 - tChances[i]) / 2;
+ }
+ }
+ break;
+ }
+ return tChances;
+ }
+
+ @Override
+ public boolean onWireCutterRightClick(
+ byte aSide, byte aWrenchingSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ mSeparateInputBusses = !mSeparateInputBusses;
+ GT_Utility.sendChatToPlayer(
+ aPlayer, StatCollector.translateToLocal("GT5U.machines.separatebus") + " " + mSeparateInputBusses);
+ return true;
+ }
+
+ @Override
+ public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ mFluidMode = !mFluidMode;
+ GT_Utility.sendChatToPlayer(
+ aPlayer, StatCollector.translateToLocal("miscutils.machines.QFTFluidMode") + " " + mFluidMode);
+ }
+
+ public boolean addNeptuniumHatch(IGregTechTileEntity aTileEntity, short aBaseCasingIndex) {
+ if (aTileEntity == null) return false;
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity == null) return false;
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ ((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity).mRecipeMap = null;
+ mNeptuniumHatch = (GT_MetaTileEntity_Hatch_Input) aMetaTileEntity;
+ return true;
+ }
+ return false;
+ }
+
+ public boolean addFermiumHatch(IGregTechTileEntity aTileEntity, short aBaseCasingIndex) {
+ if (aTileEntity == null) return false;
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity == null) return false;
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ ((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity).mRecipeMap = null;
+ mFermiumHatch = (GT_MetaTileEntity_Hatch_Input) aMetaTileEntity;
+ return true;
+ }
+ return false;
+ }
+
+ public Block getCasingBlock1() {
+ return ModBlocks.blockCasings5Misc;
+ }
+
+ public byte getCasingMeta1() {
+ return 15;
+ }
+
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ aNBT.setBoolean("mSeparateInputBusses", mSeparateInputBusses);
+ aNBT.setBoolean("mFluidMode", mFluidMode);
+ aNBT.setBoolean("doFermium", doFermium);
+ super.saveNBTData(aNBT);
+ }
+
+ @Override
+ public void loadNBTData(NBTTagCompound aNBT) {
+ this.mSeparateInputBusses = aNBT.getBoolean("mSeparateInputBusses");
+ this.mFluidMode = aNBT.getBoolean("mFluidMode");
+ this.doFermium = aNBT.getBoolean("doFermium");
+ super.loadNBTData(aNBT);
+ }
+
+ @Override
+ public ITexture[] getTexture(
+ IGregTechTileEntity aBaseMetaTileEntity,
+ byte aSide,
+ byte aFacing,
+ byte aColorIndex,
+ boolean aActive,
+ boolean aRedstone) {
+ if (aSide == aFacing) {
+ if (aActive)
+ return new ITexture[] {
+ getCasingTexture(),
+ TextureFactory.builder()
+ .addIcon(getActiveOverlay())
+ .extFacing()
+ .build()
+ };
+ return new ITexture[] {
+ getCasingTexture(),
+ TextureFactory.builder()
+ .addIcon(getInactiveOverlay())
+ .extFacing()
+ .build()
+ };
+ }
+ return new ITexture[] {getCasingTexture()};
+ }
+
+ private ITexture getCasingTexture() {
+ return Textures.BlockIcons.getCasingTextureForId(getCasingTextureId());
+ }
+
+ @Override
+ protected void calculateOverclockedNessMultiInternal(
+ long aEUt, int aDuration, int mAmperage, long maxInputVoltage, boolean perfectOC) {
+ // 5% space for cable loss
+ long zMaxInputVoltage = maxInputVoltage / 100L * 95L;
+ long zTime = aDuration;
+ long zEUt = aEUt;
+ while (zEUt << 2 < zMaxInputVoltage) {
+ zEUt = zEUt << 2;
+ zTime = zTime >> (perfectOC ? 2 : 1);
+ if (zTime <= 0) {
+ break;
+ }
+ }
+ if (zTime <= 0) {
+ zTime = 1;
+ }
+
+ if (zTime > Integer.MAX_VALUE - 1) {
+ zTime = Integer.MAX_VALUE - 1;
+ }
+ this.lEUt = zEUt;
+ this.mMaxProgresstime = (int) zTime;
+ }
+
+ @SideOnly(Side.CLIENT)
+ private void renderForceField(
+ double x, double y, double z, int side, double minU, double maxU, double minV, double maxV) {
+ // spotless:off
+ Tessellator tes = Tessellator.instance;
+ switch (side) {
+ case 0:
+ tes.addVertexWithUV(x + 3 - 0.5, y , z + 7, maxU, maxV);
+ tes.addVertexWithUV(x + 3 - 0.5, y + 4, z + 7, maxU, minV);
+ tes.addVertexWithUV(x - 3 + 0.5, y + 4, z + 7, minU, minV);
+ tes.addVertexWithUV(x - 3 + 0.5, y , z + 7, minU, maxV);
+ tes.addVertexWithUV(x - 3 + 0.5, y , z + 7, minU, maxV);
+ tes.addVertexWithUV(x - 3 + 0.5, y + 4, z + 7, minU, minV);
+ tes.addVertexWithUV(x + 3 - 0.5, y + 4, z + 7, maxU, minV);
+ tes.addVertexWithUV(x + 3 - 0.5, y , z + 7, maxU, maxV);
+ break;
+ case 1:
+ tes.addVertexWithUV(x + 7, y , z + 4 - 0.5, maxU, maxV);
+ tes.addVertexWithUV(x + 7, y + 4, z + 4 - 0.5, maxU, minV);
+ tes.addVertexWithUV(x + 7, y + 4, z - 4 + 0.5, minU, minV);
+ tes.addVertexWithUV(x + 7, y , z - 4 + 0.5, minU, maxV);
+ tes.addVertexWithUV(x + 7, y , z - 4 + 0.5, minU, maxV);
+ tes.addVertexWithUV(x + 7, y + 4, z - 4 + 0.5, minU, minV);
+ tes.addVertexWithUV(x + 7, y + 4, z + 4 - 0.5, maxU, minV);
+ tes.addVertexWithUV(x + 7, y , z + 4 - 0.5, maxU, maxV);
+ break;
+ case 2:
+ tes.addVertexWithUV(x + 3 + 0.5, y , z - 7, maxU, maxV);
+ tes.addVertexWithUV(x + 3 + 0.5, y + 4, z - 7, maxU, minV);
+ tes.addVertexWithUV(x - 3 - 0.5, y + 4, z - 7, minU, minV);
+ tes.addVertexWithUV(x - 3 - 0.5, y , z - 7, minU, maxV);
+ tes.addVertexWithUV(x - 3 - 0.5, y , z - 7, minU, maxV);
+ tes.addVertexWithUV(x - 3 - 0.5, y + 4, z - 7, minU, minV);
+ tes.addVertexWithUV(x + 3 + 0.5, y + 4, z - 7, maxU, minV);
+ tes.addVertexWithUV(x + 3 + 0.5, y , z - 7, maxU, maxV);
+ break;
+ case 3:
+ tes.addVertexWithUV(x - 7, y , z + 4 - 0.5, maxU, maxV);
+ tes.addVertexWithUV(x - 7, y + 4, z + 4 - 0.5, maxU, minV);
+ tes.addVertexWithUV(x - 7, y + 4, z - 4 + 0.5, minU, minV);
+ tes.addVertexWithUV(x - 7, y , z - 4 + 0.5, minU, maxV);
+ tes.addVertexWithUV(x - 7, y , z - 4 + 0.5, minU, maxV);
+ tes.addVertexWithUV(x - 7, y + 4, z - 4 + 0.5, minU, minV);
+ tes.addVertexWithUV(x - 7, y + 4, z + 4 - 0.5, maxU, minV);
+ tes.addVertexWithUV(x - 7, y , z + 4 - 0.5, maxU, maxV);
+ break;
+ case 4:
+ tes.addVertexWithUV(x - 3 - 0.5, y , z + 7 , maxU, maxV);
+ tes.addVertexWithUV(x - 3 - 0.5, y + 4, z + 7 , maxU, minV);
+ tes.addVertexWithUV(x - 7 , y + 4, z + 4 + 0.5, minU, minV);
+ tes.addVertexWithUV(x - 7 , y , z + 4 + 0.5, minU, maxV);
+ tes.addVertexWithUV(x - 7 , y , z + 4 + 0.5, minU, maxV);
+ tes.addVertexWithUV(x - 7 , y + 4, z + 4 + 0.5, minU, minV);
+ tes.addVertexWithUV(x - 3 - 0.5, y + 4, z + 7 , maxU, minV);
+ tes.addVertexWithUV(x - 3 - 0.5, y , z + 7 , maxU, maxV);
+ break;
+ case 5:
+ tes.addVertexWithUV(x - 3 - 0.5, y , z - 7 , maxU, maxV);
+ tes.addVertexWithUV(x - 3 - 0.5, y + 4, z - 7 , maxU, minV);
+ tes.addVertexWithUV(x - 7 , y + 4, z - 4 - 0.5, minU, minV);
+ tes.addVertexWithUV(x - 7 , y , z - 4 - 0.5, minU, maxV);
+ tes.addVertexWithUV(x - 7 , y , z - 4 - 0.5, minU, maxV);
+ tes.addVertexWithUV(x - 7 , y + 4, z - 4 - 0.5, minU, minV);
+ tes.addVertexWithUV(x - 3 - 0.5, y + 4, z - 7 , maxU, minV);
+ tes.addVertexWithUV(x - 3 - 0.5, y , z - 7 , maxU, maxV);
+ break;
+ case 6:
+ tes.addVertexWithUV(x + 3 + 0.5, y , z + 7 , maxU, maxV);
+ tes.addVertexWithUV(x + 3 + 0.5, y + 4, z + 7 , maxU, minV);
+ tes.addVertexWithUV(x + 7 , y + 4, z + 4 + 0.5, minU, minV);
+ tes.addVertexWithUV(x + 7 , y , z + 4 + 0.5, minU, maxV);
+ tes.addVertexWithUV(x + 7 , y , z + 4 + 0.5, minU, maxV);
+ tes.addVertexWithUV(x + 7 , y + 4, z + 4 + 0.5, minU, minV);
+ tes.addVertexWithUV(x + 3 + 0.5, y + 4, z + 7 , maxU, minV);
+ tes.addVertexWithUV(x + 3 + 0.5, y , z + 7 , maxU, maxV);
+ break;
+ case 7:
+ tes.addVertexWithUV(x + 3 + 0.5, y , z - 7 , maxU, maxV);
+ tes.addVertexWithUV(x + 3 + 0.5, y + 4, z - 7 , maxU, minV);
+ tes.addVertexWithUV(x + 7 , y + 4, z - 4 - 0.5, minU, minV);
+ tes.addVertexWithUV(x + 7 , y , z - 4 - 0.5, minU, maxV);
+ tes.addVertexWithUV(x + 7 , y , z - 4 - 0.5, minU, maxV);
+ tes.addVertexWithUV(x + 7 , y + 4, z - 4 - 0.5, minU, minV);
+ tes.addVertexWithUV(x + 3 + 0.5, y + 4, z - 7 , maxU, minV);
+ tes.addVertexWithUV(x + 3 + 0.5, y , z - 7 , maxU, maxV);
+ break;
+ }
+ }
+
+ @SideOnly(Side.CLIENT)
+ @Override
+ public boolean renderInWorld(IBlockAccess aWorld, int x, int y, int z, Block block, RenderBlocks renderer) {
+ Tessellator tes = Tessellator.instance;
+ IIcon forceField = TexturesGtBlock.ForceField.getIcon();
+ if (getBaseMetaTileEntity().isActive()) {
+ double minU = forceField.getMinU();
+ double maxU = forceField.getMaxU();
+ double minV = forceField.getMinV();
+ double maxV = forceField.getMaxV();
+ double xBaseOffset = 3 * getExtendedFacing().getRelativeBackInWorld().offsetX;
+ double zBaseOffset = 3 * getExtendedFacing().getRelativeBackInWorld().offsetZ;
+ GL11.glPushMatrix();
+ GL11.glDisable(GL11.GL_CULL_FACE);
+ GL11.glDisable(GL11.GL_ALPHA_TEST);
+ GL11.glEnable(GL11.GL_BLEND);
+ tes.setColorOpaque_F(1f, 1f, 1f);
+ tes.setBrightness(15728880);
+ //Center O: 0, 0 1 ------- 8
+ //Corner 1: 7, -2 / \
+ //Corner 2: 3, -6 2 / \ 7
+ //Corner 3: -2, -6 | |
+ //Corner 4: -6, -2 | O |
+ //Corner 5: -6, 3 | |
+ //Corner 6: -2, 7 3 \ / 6
+ //Corner 7: 3, 7 \ /
+ //Corner 8: 7, 3 4 ------- 5
+ renderForceField(x + xBaseOffset + 0.5, y, z + zBaseOffset + 0.5, 0, minU, maxU, minV, maxV);
+ renderForceField(x + xBaseOffset + 0.5, y, z + zBaseOffset + 0.5, 1, minU, maxU, minV, maxV);
+ renderForceField(x + xBaseOffset + 0.5, y, z + zBaseOffset + 0.5, 2, minU, maxU, minV, maxV);
+ renderForceField(x + xBaseOffset + 0.5, y, z + zBaseOffset + 0.5, 3, minU, maxU, minV, maxV);
+ renderForceField(x + xBaseOffset + 0.5, y, z + zBaseOffset + 0.5, 4, minU, maxU, minV, maxV);
+ renderForceField(x + xBaseOffset + 0.5, y, z + zBaseOffset + 0.5, 5, minU, maxU, minV, maxV);
+ renderForceField(x + xBaseOffset + 0.5, y, z + zBaseOffset + 0.5, 6, minU, maxU, minV, maxV);
+ renderForceField(x + xBaseOffset + 0.5, y, z + zBaseOffset + 0.5, 7, minU, maxU, minV, maxV);
+ GL11.glDisable(GL11.GL_BLEND);
+ GL11.glEnable(GL11.GL_ALPHA_TEST);
+ GL11.glEnable(GL11.GL_CULL_FACE);
+ GL11.glPopMatrix();
+
+ }
+ // Needs to be false to render the controller
+ return false;
+ //spotless:on
+ }
+}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java
index 1dddc64296..52053ca90e 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java
@@ -38,11 +38,13 @@ public class RecipeGen_Plates extends RecipeGen_Base {
final ItemStack ingotStackOne = material.getIngot(1);
final ItemStack ingotStackTwo = material.getIngot(2);
final ItemStack ingotStackThree = material.getIngot(3);
+ final ItemStack ingotStackNine = material.getIngot(9);
final ItemStack shape_Mold = ItemList.Shape_Mold_Plate.get(0);
final ItemStack plate_Single = material.getPlate(1);
final ItemStack plate_SingleTwo = material.getPlate(2);
final ItemStack plate_SingleNine = material.getPlate(9);
final ItemStack plate_Double = material.getPlateDouble(1);
+ final ItemStack plate_Dense = material.getPlateDense(1);
final ItemStack block = material.getBlock(1);
Logger.WARNING("Generating Plate recipes for " + material.getLocalizedName());
@@ -132,6 +134,29 @@ public class RecipeGen_Plates extends RecipeGen_Base {
} else {
Logger.WARNING("Bender Foil Recipe: " + material.getLocalizedName() + " - Failed");
}
+
+ // Making Dense Plates
+ if (ItemUtils.checkForInvalidItems(ingotStackNine) && ItemUtils.checkForInvalidItems(plate_Dense))
+ if (addBenderRecipe(
+ ingotStackNine,
+ plate_Dense,
+ (int) Math.max(material.getMass() * 2L, 1L),
+ material.vVoltageMultiplier)) {
+ Logger.WARNING("Bender Recipe: " + material.getLocalizedName() + " - Success");
+ } else {
+ Logger.WARNING("Bender Recipe: " + material.getLocalizedName() + " - Failed");
+ }
+
+ if (ItemUtils.checkForInvalidItems(plate_SingleNine) && ItemUtils.checkForInvalidItems(plate_Dense))
+ if (addBenderRecipe(
+ plate_SingleNine,
+ plate_Double,
+ (int) Math.max(material.getMass() * 2L, 1L),
+ material.vVoltageMultiplier)) {
+ Logger.WARNING("Bender Recipe: " + material.getLocalizedName() + " - Success");
+ } else {
+ Logger.WARNING("Bender Recipe: " + material.getLocalizedName() + " - Failed");
+ }
}
public static boolean addBenderRecipe(
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_ChemicalSkips.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_ChemicalSkips.java
new file mode 100644
index 0000000000..ddbb3ccf2c
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_ChemicalSkips.java
@@ -0,0 +1,640 @@
+package gtPlusPlus.xmod.gregtech.loaders.recipe;
+
+import com.dreammaster.gthandler.GT_CoreModSupport;
+import com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader;
+import com.github.technus.tectech.recipe.TT_recipeAdder;
+import com.github.technus.tectech.thing.block.QuantumGlassBlock;
+import gregtech.api.enums.*;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.common.items.CombType;
+import gregtech.loaders.misc.GT_Bees;
+import gtPlusPlus.core.item.chemistry.GenericChem;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.material.ALLOY;
+import gtPlusPlus.core.material.ELEMENT;
+import gtPlusPlus.core.material.MISC_MATERIALS;
+import gtPlusPlus.core.recipe.common.CI;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidStack;
+
+public class RecipeLoader_ChemicalSkips {
+
+ public static void generate() {
+ createRecipes();
+ }
+
+ private static void createRecipes() {
+ quantumTransformerRecipes();
+ fusionReactorRecipes();
+ catalystRecipes();
+ tieredCasingRecipes();
+ }
+
+ // All the recipes that the QFT can do. Each recipe has a machine tier.
+ // -> Tier 1 is UEV (UEV circuits and 1 Eternal Singularity);
+ // -> Tier 2 needs new item from QFT, plus stacks of Infinity;
+ // -> Tier 3 needs new item from QFT, plus stacks of Transcendent Metal;
+ // -> Tier 4 needs new item from QFT, plus stacks of Spacetime;
+ // (Until they are created, the new items are represented by
+ // HSS-G for Tier 2, HSS-S for Tier 3 and HSS-E for Tier 4)
+
+ private static void quantumTransformerRecipes() {
+ // Platline
+ CORE.RA.addQuantumTransformerRecipe(
+ new ItemStack[] {
+ WerkstoffLoader.PTMetallicPowder.get(OrePrefixes.dust, 32),
+ ItemUtils.getSimpleStack(GenericChem.mPlatinumGroupCatalyst, 0)
+ },
+ new FluidStack[] {},
+ new FluidStack[] {},
+ new ItemStack[] {
+ Materials.Platinum.getDust(64),
+ Materials.Palladium.getDust(64),
+ Materials.Iridium.getDust(64),
+ Materials.Osmium.getDust(64),
+ WerkstoffLoader.Rhodium.get(OrePrefixes.dust, 64),
+ WerkstoffLoader.Ruthenium.get(OrePrefixes.dust, 64)
+ },
+ new int[] {1667, 1667, 1667, 1667, 1667, 1667},
+ 20 * 20,
+ (int) GT_Values.VP[8],
+ 1);
+
+ // Early Plastics
+ CORE.RA.addQuantumTransformerRecipe(
+ new ItemStack[] {
+ Materials.Carbon.getDust(64), ItemUtils.getSimpleStack(GenericChem.mPlasticPolymerCatalyst, 0)
+ },
+ new FluidStack[] {
+ Materials.Oxygen.getGas(1000 * 16),
+ Materials.Hydrogen.getGas(1000 * 16),
+ Materials.Chlorine.getGas(1000 * 16),
+ Materials.Fluorine.getGas(1000 * 16)
+ },
+ new FluidStack[] {
+ Materials.Plastic.getMolten(144 * 256),
+ Materials.PolyvinylChloride.getMolten(144 * 128),
+ Materials.Polystyrene.getMolten(144 * 64),
+ Materials.Polytetrafluoroethylene.getMolten(144 * 128),
+ Materials.Epoxid.getMolten(144 * 64),
+ Materials.Polybenzimidazole.getMolten(144 * 64)
+ },
+ null,
+ new int[] {2000, 2000, 2000, 2000, 2000, 2000},
+ 20 * 20,
+ (int) GT_Values.VP[7],
+ 1);
+
+ // Early Rubbers/Cable Materials
+ CORE.RA.addQuantumTransformerRecipe(
+ new ItemStack[] {
+ Materials.Carbon.getDust(64), ItemUtils.getSimpleStack(GenericChem.mRubberPolymerCatalyst, 0)
+ },
+ new FluidStack[] {
+ Materials.Oxygen.getGas(1000 * 16),
+ Materials.Hydrogen.getGas(1000 * 16),
+ Materials.Chlorine.getGas(1000 * 16)
+ },
+ new FluidStack[] {
+ Materials.Silicone.getMolten(144 * 64),
+ Materials.StyreneButadieneRubber.getMolten(144 * 64),
+ Materials.PolyphenyleneSulfide.getMolten(144 * 128),
+ Materials.Rubber.getMolten(144 * 256)
+ },
+ null,
+ new int[] {2500, 2500, 2500, 2500},
+ 20 * 20,
+ (int) GT_Values.VP[7],
+ 1);
+
+ // Glues and Solders
+ CORE.RA.addQuantumTransformerRecipe(
+ new ItemStack[] {
+ Materials.Carbon.getDust(32),
+ Materials.Bismuth.getDust(32),
+ ItemUtils.getSimpleStack(GenericChem.mAdhesionPromoterCatalyst, 0)
+ },
+ new FluidStack[] {Materials.Oxygen.getFluid(10000), Materials.Hydrogen.getFluid(10000)},
+ new FluidStack[] {
+ MISC_MATERIALS.ETHYL_CYANOACRYLATE.getFluidStack(1000 * 32),
+ Materials.AdvancedGlue.getFluid(1000 * 16),
+ ALLOY.INDALLOY_140.getFluidStack(144 * 64),
+ Materials.SolderingAlloy.getMolten(144 * 128)
+ },
+ new ItemStack[] {ItemList.StableAdhesive.get(1)},
+ new int[] {2000, 2000, 2000, 2000, 2000},
+ 20 * 20,
+ (int) GT_Values.VP[8],
+ 1);
+
+ // Titanium, Tungsten, Indium
+ CORE.RA.addQuantumTransformerRecipe(
+ new ItemStack[] {
+ Materials.Lead.getDust(16),
+ Materials.Bauxite.getDust(32),
+ Materials.Tungstate.getDust(16),
+ ItemUtils.getSimpleStack(GenericChem.mTitaTungstenIndiumCatalyst, 0)
+ },
+ new FluidStack[] {},
+ new FluidStack[] {},
+ new ItemStack[] {
+ Materials.Titanium.getDust(64),
+ Materials.TungstenSteel.getDust(64),
+ Materials.TungstenCarbide.getDust(64),
+ Materials.Indium.getDust(64)
+ },
+ new int[] {2500, 2500, 2500, 2500},
+ 20 * 20,
+ (int) GT_Values.VP[8],
+ 1);
+
+ // Thorium, Uranium, Plutonium
+ CORE.RA.addQuantumTransformerRecipe(
+ new ItemStack[] {
+ Materials.Thorium.getDust(32),
+ Materials.Uranium.getDust(32),
+ ItemUtils.getSimpleStack(GenericChem.mRadioactivityCatalyst, 0)
+ },
+ new FluidStack[] {},
+ new FluidStack[] {},
+ new ItemStack[] {
+ ELEMENT.getInstance().THORIUM232.getDust(64),
+ ELEMENT.getInstance().URANIUM233.getDust(64),
+ Materials.Uranium235.getDust(64),
+ ELEMENT.getInstance().PLUTONIUM238.getDust(64),
+ Materials.Plutonium.getDust(64),
+ Materials.Plutonium241.getDust(64)
+ },
+ new int[] {1667, 1667, 1667, 1667, 1667, 1667},
+ 20 * 20,
+ (int) GT_Values.VP[8],
+ 1);
+
+ // Monaline
+ CORE.RA.addQuantumTransformerRecipe(
+ new ItemStack[] {
+ Materials.Monazite.getDust(32), ItemUtils.getSimpleStack(GenericChem.mRareEarthGroupCatalyst, 0)
+ },
+ new FluidStack[] {},
+ new FluidStack[] {},
+ new ItemStack[] {
+ Materials.Cerium.getDust(64),
+ Materials.Gadolinium.getDust(64),
+ Materials.Samarium.getDust(64),
+ GT_ModHandler.getModItem("bartworks", "gt.bwMetaGenerateddust", 64L, 11000), // Hafnium
+ GT_ModHandler.getModItem("bartworks", "gt.bwMetaGenerateddust", 64L, 11007), // Zirconium
+ ItemList.SuperconductorComposite.get(1)
+ },
+ new int[] {1667, 1667, 1667, 1667, 1667, 1667},
+ 20 * 20,
+ (int) GT_Values.VP[9],
+ 2);
+
+ // Stem Cells
+ CORE.RA.addQuantumTransformerRecipe(
+ new ItemStack[] {
+ Materials.Calcium.getDust(32),
+ Materials.MeatRaw.getDust(32),
+ GT_ModHandler.getModItem("dreamcraft", "GTNHBioItems", 32, 2),
+ ItemUtils.getSimpleStack(GenericChem.mRawIntelligenceCatalyst, 0)
+ },
+ new FluidStack[] {},
+ new FluidStack[] {
+ Materials.GrowthMediumRaw.getFluid(1000 * 1024),
+ Materials.GrowthMediumSterilized.getFluid(1000 * 512)
+ },
+ new ItemStack[] {ItemList.Circuit_Chip_Stemcell.get(64)},
+ new int[] {3333, 3333, 3333},
+ 20 * 20,
+ (int) GT_Values.VP[11],
+ 3);
+
+ // Lategame Plastics (Missing Radox Polymer and Heavy Radox)
+ CORE.RA.addQuantumTransformerRecipe(
+ new ItemStack[] {
+ Materials.Carbon.getDust(64),
+ Materials.Osmium.getDust(24),
+ ItemUtils.getSimpleStack(GenericChem.mUltimatePlasticCatalyst, 0)
+ },
+ new FluidStack[] {Materials.Hydrogen.getGas(1000 * 16), Materials.Nitrogen.getGas(1000 * 16)},
+ new FluidStack[] {
+ GT_CoreModSupport.Xenoxene.getFluid(1000 * 16),
+ GT_CoreModSupport.RadoxPolymer.getMolten(144 * 64),
+ GT_CoreModSupport.RadoxHeavy.getFluid(1000 * 16),
+ MaterialsKevlar.Kevlar.getMolten(144 * 64)
+ },
+ new ItemStack[] {},
+ new int[] {2500, 2500, 2500, 2500},
+ 20 * 20,
+ (int) GT_Values.VP[11],
+ 4);
+
+ // Lategame Kevlar using Kevlar bee comb
+ CORE.RA.addQuantumTransformerRecipe(
+ new ItemStack[] {
+ GT_Bees.combs.getStackForType(CombType.KEVLAR, 24),
+ Materials.Carbon.getDust(64),
+ ItemUtils.getSimpleStack(GenericChem.mUltimatePlasticCatalyst, 0)
+ },
+ new FluidStack[] {Materials.Nitrogen.getGas(1000 * 16), Materials.Hydrogen.getGas(1000 * 16)},
+ new FluidStack[] {
+ MaterialsKevlar.PolyurethaneResin.getFluid(1000 * 32),
+ MaterialsKevlar.LiquidCrystalKevlar.getFluid(144 * 32),
+ MaterialsKevlar.Kevlar.getMolten(144 * 64)
+ },
+ new ItemStack[] {},
+ new int[] {2500, 2500, 2500, 2500},
+ 20 * 20,
+ (int) GT_Values.VP[11],
+ 4);
+
+ // Bio Cells and Mutated Solder
+ CORE.RA.addQuantumTransformerRecipe(
+ new ItemStack[] {
+ ItemList.Circuit_Chip_Stemcell.get(16),
+ Materials.InfinityCatalyst.getDust(4),
+ ItemUtils.getSimpleStack(GenericChem.mBiologicalIntelligenceCatalyst, 0)
+ },
+ new FluidStack[] {},
+ new FluidStack[] {
+ MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(144 * 128),
+ Materials.BioMediumSterilized.getFluid(1000 * 256),
+ Materials.BioMediumRaw.getFluid(1000 * 512)
+ },
+ new ItemStack[] {ItemList.Circuit_Chip_Biocell.get(64)},
+ new int[] {2500, 2500, 2500, 2500},
+ 20 * 20,
+ (int) GT_Values.VP[10],
+ 4);
+ }
+
+ private static void fusionReactorRecipes() {
+ GT_Values.RA.addFusionReactorRecipe(
+ new FluidStack[] {Materials.Radon.getPlasma(100), Materials.Nitrogen.getPlasma(100)},
+ new FluidStack[] {new FluidStack(ELEMENT.getInstance().NEPTUNIUM.getPlasma(), 100)},
+ 30 * 20,
+ (int) GT_Values.VP[8],
+ 1000000000);
+
+ GT_Values.RA.addFusionReactorRecipe(
+ new FluidStack[] {Materials.Americium.getPlasma(100), Materials.Boron.getPlasma(100)},
+ new FluidStack[] {new FluidStack(ELEMENT.getInstance().FERMIUM.getPlasma(), 100)},
+ 30 * 20,
+ (int) GT_Values.VP[8],
+ 1000000000);
+ }
+
+ private static void catalystRecipes() {
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(10),
+ CI.getEmptyCatalyst(1),
+ GT_ModHandler.getModItem("bartworks", "gt.bwMetaGenerateddust", 64L, 88),
+ Materials.Osmiridium.getDust(64),
+ Materials.Carbon.getNanite(64)
+ },
+ ELEMENT.STANDALONE.HYPOGEN.getFluidStack(1440),
+ ItemUtils.getSimpleStack(GenericChem.mPlatinumGroupCatalyst, 1),
+ 60 * 20,
+ (int) GT_Values.VP[9]);
+
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(10),
+ CI.getEmptyCatalyst(1),
+ Materials.Polybenzimidazole.getDust(64),
+ Materials.Tetrafluoroethylene.getDust(64),
+ Materials.Carbon.getNanite(64)
+ },
+ ELEMENT.STANDALONE.HYPOGEN.getFluidStack(1440),
+ ItemUtils.getSimpleStack(GenericChem.mPlasticPolymerCatalyst, 1),
+ 60 * 20,
+ (int) GT_Values.VP[9]);
+
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(10),
+ CI.getEmptyCatalyst(1),
+ Materials.Silicone.getDust(64),
+ Materials.StyreneButadieneRubber.getDust(64),
+ Materials.Carbon.getNanite(64)
+ },
+ ELEMENT.STANDALONE.HYPOGEN.getFluidStack(1440),
+ ItemUtils.getSimpleStack(GenericChem.mRubberPolymerCatalyst, 1),
+ 60 * 20,
+ (int) GT_Values.VP[9]);
+
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(10),
+ CI.getEmptyCatalyst(1),
+ ALLOY.INDALLOY_140.getDust(64),
+ MISC_MATERIALS.ETHYL_CYANOACRYLATE.getCell(64),
+ Materials.Carbon.getNanite(64)
+ },
+ ELEMENT.STANDALONE.HYPOGEN.getFluidStack(1440),
+ ItemUtils.getSimpleStack(GenericChem.mAdhesionPromoterCatalyst, 1),
+ 60 * 20,
+ (int) GT_Values.VP[9]);
+
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(10),
+ CI.getEmptyCatalyst(1),
+ Materials.TungstenSteel.getDust(64),
+ Materials.Indium.getDust(64),
+ Materials.Carbon.getNanite(64)
+ },
+ ELEMENT.STANDALONE.HYPOGEN.getFluidStack(1440),
+ ItemUtils.getSimpleStack(GenericChem.mTitaTungstenIndiumCatalyst, 1),
+ 60 * 20,
+ (int) GT_Values.VP[9]);
+
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(10),
+ CI.getEmptyCatalyst(1),
+ ELEMENT.getInstance().URANIUM235.getDust(64),
+ ELEMENT.getInstance().PLUTONIUM241.getDust(64),
+ Materials.Carbon.getNanite(64)
+ },
+ ELEMENT.STANDALONE.HYPOGEN.getFluidStack(1440),
+ ItemUtils.getSimpleStack(GenericChem.mRadioactivityCatalyst, 1),
+ 60 * 20,
+ (int) GT_Values.VP[9]);
+
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(10),
+ CI.getEmptyCatalyst(1),
+ Materials.Samarium.getDust(64),
+ Materials.Gadolinium.getDust(64),
+ Materials.Silver.getNanite(1)
+ },
+ ELEMENT.STANDALONE.HYPOGEN.getFluidStack(9216),
+ ItemUtils.getSimpleStack(GenericChem.mRareEarthGroupCatalyst, 1),
+ 60 * 20,
+ (int) GT_Values.VP[10]);
+
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(10),
+ CI.getEmptyCatalyst(1),
+ Materials.Naquadah.getDust(64),
+ Materials.Adamantium.getDust(64),
+ Materials.Silver.getNanite(1)
+ },
+ ELEMENT.STANDALONE.HYPOGEN.getFluidStack(9216),
+ ItemUtils.getSimpleStack(GenericChem.mSimpleNaquadahCatalyst, 1),
+ 60 * 20,
+ (int) GT_Values.VP[10]);
+
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(10),
+ CI.getEmptyCatalyst(1),
+ Materials.Naquadria.getDust(64),
+ Materials.Trinium.getDust(64),
+ Materials.Gold.getNanite(1)
+ },
+ Materials.SpaceTime.getMolten(9216L),
+ ItemUtils.getSimpleStack(GenericChem.mAdvancedNaquadahCatalyst, 1),
+ 60 * 20,
+ (int) GT_Values.VP[11]);
+
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(10),
+ CI.getEmptyCatalyst(1),
+ ItemList.Circuit_Chip_Stemcell.get(64),
+ Materials.Gold.getNanite(1)
+ },
+ Materials.SpaceTime.getMolten(9216L),
+ ItemUtils.getSimpleStack(GenericChem.mRawIntelligenceCatalyst, 1),
+ 60 * 20,
+ (int) GT_Values.VP[11]);
+
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(10),
+ CI.getEmptyCatalyst(1),
+ MaterialsKevlar.Kevlar.getDust(64),
+ Materials.TranscendentMetal.getNanite(1)
+ },
+ FluidUtils.getFluidStack("molten.shirabon", 92160),
+ ItemUtils.getSimpleStack(GenericChem.mUltimatePlasticCatalyst, 1),
+ 60 * 20,
+ (int) GT_Values.VP[12]);
+
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(10),
+ CI.getEmptyCatalyst(1),
+ ItemList.Circuit_Chip_Biocell.get(64),
+ Materials.TranscendentMetal.getNanite(1)
+ },
+ FluidUtils.getFluidStack("molten.shirabon", 92160),
+ ItemUtils.getSimpleStack(GenericChem.mBiologicalIntelligenceCatalyst, 1),
+ 60 * 20,
+ (int) GT_Values.VP[12]);
+ }
+
+ private static void tieredCasingRecipes() {
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ GregtechItemList.ForceFieldGlass.get(1),
+ 1024 * 30 * 20,
+ 1024,
+ (int) GT_Values.VP[7],
+ 32,
+ new ItemStack[] {
+ GregtechItemList.ForceFieldGlass.get(1),
+ Materials.Carbon.getNanite(4),
+ ItemList.Emitter_UV.get(4),
+ GT_OreDictUnificator.get(OrePrefixes.wireGt16, Materials.SuperconductorUHV, 8),
+ GregtechItemList.Laser_Lens_Special.get(1),
+ GT_ModHandler.getModItem("GoodGenerator", "advancedRadiationProtectionPlate", 2)
+ },
+ new FluidStack[] {
+ Materials.Thulium.getMolten(144 * 10),
+ Materials.ExcitedDTCC.getFluid(5000),
+ new FluidStack(ELEMENT.getInstance().NEPTUNIUM.getPlasma(), 1000 * 10),
+ new FluidStack(ELEMENT.getInstance().FERMIUM.getPlasma(), 1000 * 10)
+ },
+ GregtechItemList.NeutronPulseManipulator.get(1),
+ 60 * 20,
+ (int) GT_Values.VP[10]);
+
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ GregtechItemList.NeutronPulseManipulator.get(1),
+ 2048 * 30 * 20,
+ 2048,
+ (int) GT_Values.VP[8],
+ 32,
+ new ItemStack[] {
+ GregtechItemList.ForceFieldGlass.get(2),
+ Materials.Carbon.getNanite(8),
+ ItemList.Emitter_UEV.get(4),
+ GT_OreDictUnificator.get(OrePrefixes.wireGt16, Materials.SuperconductorUEV, 8),
+ GregtechItemList.Laser_Lens_Special.get(1),
+ GT_ModHandler.getModItem("GoodGenerator", "advancedRadiationProtectionPlate", 4),
+ ItemList.StableAdhesive.get(4)
+ },
+ new FluidStack[] {
+ Materials.Thulium.getMolten(144 * 12),
+ Materials.ExcitedDTPC.getFluid(5000),
+ new FluidStack(ELEMENT.getInstance().NEPTUNIUM.getPlasma(), 1200 * 10),
+ new FluidStack(ELEMENT.getInstance().FERMIUM.getPlasma(), 1200 * 10)
+ },
+ GregtechItemList.CosmicFabricManipulator.get(1),
+ 75 * 20,
+ (int) GT_Values.VP[11]);
+
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ GregtechItemList.CosmicFabricManipulator.get(1),
+ 4096 * 30 * 20,
+ 4096,
+ (int) GT_Values.VP[7],
+ 32,
+ new ItemStack[] {
+ GregtechItemList.ForceFieldGlass.get(4),
+ Materials.Carbon.getNanite(16),
+ ItemList.Emitter_UIV.get(4),
+ GT_OreDictUnificator.get(OrePrefixes.wireGt16, Materials.SuperconductorUIV, 8),
+ GregtechItemList.Laser_Lens_Special.get(1),
+ GT_ModHandler.getModItem("GoodGenerator", "advancedRadiationProtectionPlate", 8),
+ ItemList.SuperconductorComposite.get(4)
+ },
+ new FluidStack[] {
+ Materials.Thulium.getMolten(144 * 15),
+ Materials.ExcitedDTRC.getFluid(5000),
+ new FluidStack(ELEMENT.getInstance().NEPTUNIUM.getPlasma(), 1500 * 10),
+ new FluidStack(ELEMENT.getInstance().FERMIUM.getPlasma(), 1500 * 10)
+ },
+ GregtechItemList.InfinityInfusedManipulator.get(1),
+ 90 * 20,
+ (int) GT_Values.VP[12]);
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ GregtechItemList.InfinityInfusedManipulator.get(1),
+ 1024 * 30 * 20,
+ 1024,
+ (int) GT_Values.VP[7],
+ 32,
+ new ItemStack[] {
+ GregtechItemList.ForceFieldGlass.get(8),
+ Materials.Carbon.getNanite(32),
+ ItemList.Emitter_UMV.get(4),
+ GT_OreDictUnificator.get(OrePrefixes.wireGt16, Materials.SuperconductorUMV, 8),
+ GregtechItemList.Laser_Lens_Special.get(1),
+ GT_ModHandler.getModItem("GoodGenerator", "advancedRadiationProtectionPlate", 16),
+ ItemList.NaquadriaSupersolid.get(4)
+ },
+ new FluidStack[] {
+ Materials.Thulium.getMolten(144 * 20),
+ Materials.ExcitedDTEC.getFluid(5000),
+ new FluidStack(ELEMENT.getInstance().NEPTUNIUM.getPlasma(), 2000 * 10),
+ new FluidStack(ELEMENT.getInstance().FERMIUM.getPlasma(), 2000 * 10)
+ },
+ GregtechItemList.SpaceTimeContinuumRipper.get(1),
+ 60 * 20,
+ (int) GT_Values.VP[13]);
+
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ ItemList.Casing_AdvancedRadiationProof.get(1),
+ 1024 * 30 * 20,
+ 1024,
+ (int) GT_Values.VP[7],
+ 32,
+ new ItemStack[] {
+ ALLOY.QUANTUM.getFrameBox(1),
+ GT_OreDictUnificator.get("plateDensePreciousMetalsAlloy", 4),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Neutronium, 16),
+ ItemList.Field_Generator_UV.get(1),
+ ELEMENT.STANDALONE.CHRONOMATIC_GLASS.getScrew(16)
+ },
+ new FluidStack[] {
+ MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(144 * 10),
+ },
+ GregtechItemList.NeutronShieldingCore.get(1),
+ 60 * 20,
+ (int) GT_Values.VP[10]);
+
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ GregtechItemList.NeutronShieldingCore.get(1),
+ 2048 * 30 * 20,
+ 2048,
+ (int) GT_Values.VP[8],
+ 32,
+ new ItemStack[] {
+ ALLOY.QUANTUM.getFrameBox(2),
+ GT_OreDictUnificator.get("plateDenseEnrichedNaquadahAlloy", 4),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Infinity, 16),
+ ItemList.Field_Generator_UEV.get(1),
+ GT_OreDictUnificator.get(OrePrefixes.screw, GT_CoreModSupport.RadoxPolymer, 16),
+ ItemList.StableAdhesive.get(4)
+ },
+ new FluidStack[] {
+ MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(144 * 20),
+ },
+ GregtechItemList.CosmicFabricShieldingCore.get(1),
+ 75 * 20,
+ (int) GT_Values.VP[11]);
+
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ GregtechItemList.CosmicFabricShieldingCore.get(1),
+ 4096 * 30 * 20,
+ 4096,
+ (int) GT_Values.VP[9],
+ 32,
+ new ItemStack[] {
+ ALLOY.QUANTUM.getFrameBox(4),
+ ELEMENT.STANDALONE.HYPOGEN.getPlateDense(4),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.TranscendentMetal, 16),
+ ItemList.Field_Generator_UIV.get(1),
+ GT_OreDictUnificator.get("screwMetastableOganesson", 16),
+ ItemList.SuperconductorComposite.get(4)
+ },
+ new FluidStack[] {
+ MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(144 * 40),
+ },
+ GregtechItemList.InfinityInfusedShieldingCore.get(1),
+ 90 * 20,
+ (int) GT_Values.VP[12]);
+
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ GregtechItemList.InfinityInfusedShieldingCore.get(1),
+ 8192 * 30 * 20,
+ 8192,
+ (int) GT_Values.VP[10],
+ 32,
+ new ItemStack[] {
+ ALLOY.QUANTUM.getFrameBox(8),
+ GT_OreDictUnificator.get("plateDenseShirabon", 4),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.SpaceTime, 16),
+ ItemList.Field_Generator_UMV.get(1),
+ GT_OreDictUnificator.get(OrePrefixes.screw, Materials.Dilithium, 16),
+ ItemList.NaquadriaSupersolid.get(4)
+ },
+ new FluidStack[] {
+ MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(144 * 80),
+ },
+ GregtechItemList.SpaceTimeBendingCore.get(1),
+ 120 * 20,
+ (int) GT_Values.VP[13]);
+
+ GT_Values.RA.addAssemblerRecipe(
+ new ItemStack[] {
+ new ItemStack(QuantumGlassBlock.INSTANCE, 1),
+ ItemList.Field_Generator_ZPM.get(1),
+ ELEMENT.STANDALONE.CELESTIAL_TUNGSTEN.getLongRod(6),
+ ELEMENT.STANDALONE.CHRONOMATIC_GLASS.getPlate(6)
+ },
+ ALLOY.QUANTUM.getFluidStack(144 * 6),
+ GregtechItemList.ForceFieldGlass.get(1),
+ 10 * 20,
+ (int) GT_Values.VP[10]);
+ }
+}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java b/src/main/java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
index 8de060aedf..4c95ea4f22 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
@@ -674,6 +674,59 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder {
}
@Override
+ public boolean addQuantumTransformerRecipe(
+ ItemStack[] aInput,
+ FluidStack[] aFluidInput,
+ FluidStack[] aFluidOutput,
+ ItemStack[] aOutputStack,
+ int[] aChances,
+ int aDuration,
+ int aEUt,
+ int aSpecialValue) {
+ if (aInput == null) {
+ aInput = new ItemStack[0];
+ }
+
+ if (aFluidInput == null) {
+ aFluidInput = new FluidStack[0];
+ }
+
+ // if (aInput.length + aFluidInput.length < 1) {
+ // return false;
+ // }
+
+ if (aOutputStack == null) {
+ aOutputStack = new ItemStack[0];
+ }
+
+ if (aFluidOutput == null) {
+ aFluidOutput = new FluidStack[0];
+ }
+
+ // if (aOutputStack.length + aFluidOutput.length < 4) {
+ // return false;
+ // }
+
+ // if (aChances == null || aChances.length != aOutputStack.length + aFluidOutput.length) {
+ // return false;
+ // }
+
+ GTPP_Recipe.GTPP_Recipe_Map.sQuantumForceTransformerRecipes.add(new GT_Recipe(
+ false,
+ aInput,
+ aOutputStack,
+ null,
+ aChances,
+ aFluidInput,
+ aFluidOutput,
+ aDuration,
+ aEUt,
+ aSpecialValue));
+
+ return true;
+ }
+
+ @Override
public boolean addLFTRRecipe(
final ItemStack aInput1,
final FluidStack aInput2,
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechQuantumForceTransformer.java b/src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechQuantumForceTransformer.java
new file mode 100644
index 0000000000..f7032838ab
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechQuantumForceTransformer.java
@@ -0,0 +1,20 @@
+package gtPlusPlus.xmod.gregtech.registration.gregtech;
+
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
+import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.GregtechMetaTileEntity_QuantumForceTransformer;
+
+public class GregtechQuantumForceTransformer {
+
+ public static void run() {
+ if (gtPlusPlus.core.lib.LoadedMods.Gregtech) {
+ Logger.INFO("Gregtech5u Content | Registering Quantum Force Transformer Multiblock.");
+ if (CORE.ConfigSwitches.enableMultiblock_QuantumForceTransformer) {
+ GregtechItemList.QuantumForceTransformer.set(new GregtechMetaTileEntity_QuantumForceTransformer(
+ 31151, "quantumforcetransformer.controller.tier.single", "Quantum Force Transformer")
+ .getStackForm(1L));
+ }
+ }
+ }
+}