aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/xmod/gregtech
diff options
context:
space:
mode:
authorAlkalus <draknyte1@hotmail.com>2017-09-03 18:38:44 +1000
committerAlkalus <draknyte1@hotmail.com>2017-09-03 18:38:44 +1000
commitd37252418e361dc154fa33156755ec35dfc0c331 (patch)
tree88569f17ac4f0f8d8d9d35e5de54975fddc30a04 /src/Java/gtPlusPlus/xmod/gregtech
parentfc5766c06673ed0cfec511f23fd259f511fabdac (diff)
downloadGT5-Unofficial-d37252418e361dc154fa33156755ec35dfc0c331.tar.gz
GT5-Unofficial-d37252418e361dc154fa33156755ec35dfc0c331.tar.bz2
GT5-Unofficial-d37252418e361dc154fa33156755ec35dfc0c331.zip
+ Made all Multiblocks handle their recipes different.
> They now have hard coded 20% speed bonuses over their single block counterparts and hard coded output chance bonuses. > Multiblocks no longer require cells as input or output.
Diffstat (limited to 'src/Java/gtPlusPlus/xmod/gregtech')
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCentrifuge.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialElectrolyzer.java5
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialMacerator.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialWireMill.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/recipes/MultiblockRecipeMapHandler.java170
5 files changed, 179 insertions, 5 deletions
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCentrifuge.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCentrifuge.java
index c436b7ee38..8c71ccc6fc 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCentrifuge.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCentrifuge.java
@@ -22,6 +22,7 @@ import gtPlusPlus.core.util.Utils;
import gtPlusPlus.xmod.gregtech.api.gui.GUI_MultiMachine;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock.CustomIcon;
+import gtPlusPlus.xmod.gregtech.recipes.MultiblockRecipeMapHandler;
import net.minecraft.block.Block;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
@@ -84,7 +85,7 @@ extends GregtechMeta_MultiBlockBase {
@Override
public GT_Recipe.GT_Recipe_Map getRecipeMap() {
- return GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes;
+ return MultiblockRecipeMapHandler.mMultiCentrifuge;
}
@Override
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialElectrolyzer.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialElectrolyzer.java
index 702c764441..523886578e 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialElectrolyzer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialElectrolyzer.java
@@ -20,6 +20,7 @@ import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.xmod.gregtech.api.gui.GUI_MultiMachine;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
+import gtPlusPlus.xmod.gregtech.recipes.MultiblockRecipeMapHandler;
import net.minecraft.block.Block;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
@@ -72,7 +73,7 @@ extends GregtechMeta_MultiBlockBase {
@Override
public GT_Recipe.GT_Recipe_Map getRecipeMap() {
- return GT_Recipe.GT_Recipe_Map.sElectrolyzerRecipes;
+ return MultiblockRecipeMapHandler.mMultiElectrolyzer;
}
@Override
@@ -233,7 +234,7 @@ extends GregtechMeta_MultiBlockBase {
}
}
}
- return tAmount >= 16;
+ return tAmount >= 12;
}
@Override
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialMacerator.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialMacerator.java
index 305e9a3a85..134bec0d4e 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialMacerator.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialMacerator.java
@@ -20,6 +20,7 @@ import gtPlusPlus.core.util.Utils;
import gtPlusPlus.xmod.gregtech.api.gui.GUI_MultiMachine;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
+import gtPlusPlus.xmod.gregtech.recipes.MultiblockRecipeMapHandler;
import net.minecraft.block.Block;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
@@ -71,7 +72,7 @@ extends GregtechMeta_MultiBlockBase {
@Override
public GT_Recipe.GT_Recipe_Map getRecipeMap() {
- return GT_Recipe.GT_Recipe_Map.sMaceratorRecipes;
+ return MultiblockRecipeMapHandler.mMultiMacerator;
}
/*@Override
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialWireMill.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialWireMill.java
index 5f19f4c447..833178a1ae 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialWireMill.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialWireMill.java
@@ -17,6 +17,7 @@ import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.xmod.gregtech.api.gui.GUI_MultiMachine;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
+import gtPlusPlus.xmod.gregtech.recipes.MultiblockRecipeMapHandler;
import net.minecraft.block.Block;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
@@ -65,7 +66,7 @@ extends GregtechMeta_MultiBlockBase {
@Override
public GT_Recipe.GT_Recipe_Map getRecipeMap() {
- return GT_Recipe.GT_Recipe_Map.sWiremillRecipes;
+ return MultiblockRecipeMapHandler.mMultiWireMill;
}
@Override
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/recipes/MultiblockRecipeMapHandler.java b/src/Java/gtPlusPlus/xmod/gregtech/recipes/MultiblockRecipeMapHandler.java
new file mode 100644
index 0000000000..5680951cae
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/recipes/MultiblockRecipeMapHandler.java
@@ -0,0 +1,170 @@
+package gtPlusPlus.xmod.gregtech.recipes;
+
+import static gregtech.api.enums.GT_Values.E;
+import static gregtech.api.enums.GT_Values.RES_PATH_GUI;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+
+import gregtech.api.util.CustomRecipeMap;
+import gregtech.api.util.GT_Recipe;
+import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.math.MathUtils;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidContainerRegistry;
+import net.minecraftforge.fluids.FluidStack;
+
+public class MultiblockRecipeMapHandler{
+
+ public static final CustomRecipeMap mMultiElectrolyzer = new CustomRecipeMap(new HashSet<GT_Recipe>(50), "gt.recipe.fissionfuel", "Fission Fuel Processing", null, RES_PATH_GUI + "basicmachines/FissionFuel", 0, 0, 0, 0, 1, E, 1, E, true, true);
+ public static final CustomRecipeMap mMultiCentrifuge = new CustomRecipeMap(new HashSet<GT_Recipe>(50), "gt.recipe.fissionfuel", "Fission Fuel Processing", null, RES_PATH_GUI + "basicmachines/FissionFuel", 0, 0, 0, 0, 1, E, 1, E, true, true);
+ public static final CustomRecipeMap mMultiMacerator = new CustomRecipeMap(new HashSet<GT_Recipe>(50), "gt.recipe.fissionfuel", "Fission Fuel Processing", null, RES_PATH_GUI + "basicmachines/FissionFuel", 0, 0, 0, 0, 1, E, 1, E, true, true);
+ public static final CustomRecipeMap mMultiWireMill = new CustomRecipeMap(new HashSet<GT_Recipe>(50), "gt.recipe.fissionfuel", "Fission Fuel Processing", null, RES_PATH_GUI + "basicmachines/FissionFuel", 0, 0, 0, 0, 1, E, 1, E, true, true);
+
+
+
+ public static void run() {
+
+ if(CORE.configSwitches.enableMultiblock_IndustrialElectrolyzer){
+ generateMultimachineRecipeMap(GT_Recipe.GT_Recipe_Map.sElectrolyzerRecipes, mMultiElectrolyzer);
+ }
+ if(CORE.configSwitches.enableMultiblock_IndustrialCentrifuge){
+ generateMultimachineRecipeMap(GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes, mMultiCentrifuge);
+ }
+ if(CORE.configSwitches.enableMultiblock_IndustrialMacerationStack){
+ generateMultimachineRecipeMap(GT_Recipe.GT_Recipe_Map.sMaceratorRecipes, mMultiMacerator);
+ }
+ if(CORE.configSwitches.enableMultiblock_IndustrialWireMill){
+ generateMultimachineRecipeMap(GT_Recipe.GT_Recipe_Map.sWiremillRecipes, mMultiWireMill);
+ }
+
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ public static boolean isCell(ItemStack cell) {
+ if (cell.getDisplayName().toLowerCase().contains("cell")
+ || cell.getUnlocalizedName().toLowerCase().contains("cell")
+ || FluidContainerRegistry.isFilledContainer(cell)) {
+ if (cell.getDisplayName().toLowerCase().contains("plasma")
+ || cell.getUnlocalizedName().toLowerCase().contains("plasma")) {
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean isCellEmpty(ItemStack cell){
+ if (cell.getDisplayName().toLowerCase().contains("empty")
+ || cell.getUnlocalizedName().toLowerCase().contains("empty")
+ ) {
+ return true;
+ }
+ return false;
+ }
+
+ private static ItemStack[] copyItemElements(ItemStack[] items){
+ int inputCount = 0;
+ ItemStack[] item = new ItemStack[9];
+ for (ItemStack input : items) {
+ if (!isCell(input)){
+ item[inputCount] = input;
+ inputCount++;
+ }
+ }
+ return item;
+ }
+
+ private FluidStack[] copyFluidElements(FluidStack[] fluids){
+ FluidStack fluid[] = new FluidStack[9];
+ for (int r = 0; r<fluids.length;r++){
+ fluid[r] = fluids[r];
+ }
+ return fluid;
+ }
+
+ private static FluidStack[] addRemovedCellsToArray(ItemStack[] items, FluidStack[] fluids){
+ ArrayList<FluidStack> fluidInputs = new ArrayList<FluidStack>();
+
+ for (FluidStack fluid : fluids){
+ fluidInputs.add(fluid);
+ }
+
+ for (ItemStack input : items) {
+ if (isCell(input) && !isCellEmpty(input)){
+ FluidStack cellFluid = FluidContainerRegistry.getFluidForFilledItem(input);
+ cellFluid.amount = 1000;
+ fluidInputs.add(cellFluid);
+ }
+ }
+ FluidStack[] returnArray = new FluidStack[fluidInputs.size()];
+ for (int h=0;h<fluidInputs.size();h++){
+ returnArray[h] = fluidInputs.get(h);
+ }
+ return returnArray;
+ }
+
+ private static void generateMultimachineRecipeMap(GT_Recipe_Map inputMap, CustomRecipeMap newMap) {
+ GT_Recipe_Map r = inputMap;
+ final Collection<GT_Recipe> x = r.mRecipeList;
+ for (final GT_Recipe newBo : x) {
+ ItemStack[] mInputs = copyItemElements(newBo.mInputs);
+ ItemStack[] mOutputs = copyItemElements(newBo.mOutputs);
+ FluidStack[] mFluidInputs = addRemovedCellsToArray(newBo.mInputs, newBo.mFluidInputs);
+ FluidStack[] mFluidOutputs = addRemovedCellsToArray(newBo.mOutputs, newBo.mFluidOutputs);
+ int duration = MathUtils.findPercentageOfInt(newBo.mDuration, 80);
+
+ //Change bonus chances
+ int[] outputChances = null;
+ if (newBo.mChances != null){
+ outputChances = newBo.mChances.clone();
+ for (int g=0;g<outputChances.length;g++){
+ Utils.LOG_WARNING("Output["+g+"] chance = "+outputChances[g]);
+ if (outputChances[g]<10000){
+ int temp = outputChances[g];
+ if (outputChances[g] < 8000 && outputChances[g] >= 1){
+ outputChances[g] = temp+600;
+ Utils.LOG_WARNING("Output["+g+"] chance now = "+outputChances[g]);
+ }
+ else if (outputChances[g] < 9000 && outputChances[g] >= 8000){
+ outputChances[g] = temp+200;
+ Utils.LOG_WARNING("Output["+g+"] chance now = "+outputChances[g]);
+ }
+ else if (outputChances[g] <= 9900 && outputChances[g] >= 9000){
+ outputChances[g] = temp+100;
+ Utils.LOG_WARNING("Output["+g+"] chance now = "+outputChances[g]);
+ }
+ }
+ }
+ }
+ newMap.addRecipe(true, mInputs, mOutputs, newBo.mSpecialItems, outputChances, mFluidInputs, mFluidOutputs, duration, newBo.mEUt, newBo.mSpecialValue);
+ }
+ }
+
+
+
+}