aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorbartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com>2019-10-29 15:57:53 +0100
committerbartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com>2019-10-29 15:57:53 +0100
commit930944f5f0cee1bca1241e0bc179edcbe265d3bb (patch)
treeebefd9d362a2e9e4e3ecfee937761fa6e24e5f77 /src/main
parent26579069b0d2b033c70311231d7572a022c5d307 (diff)
downloadGT5-Unofficial-930944f5f0cee1bca1241e0bc179edcbe265d3bb.tar.gz
GT5-Unofficial-930944f5f0cee1bca1241e0bc179edcbe265d3bb.tar.bz2
GT5-Unofficial-930944f5f0cee1bca1241e0bc179edcbe265d3bb.zip
fixes
+ removed final field stuff due to a "java.lang.NoSuchMethodError" on server + fixed last remaining Platinum reverse recipes for Dreamcraft/GT Items + fixed a typo in the centrifuge recipe + added a circuit priorisation mode for the MEGA EBF + redid the CircuitAssemblyLine Structure-Check + version increase to match testing version Signed-off-by: bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com> Former-commit-id: 7037b78d15f87115e9064f712aaacd523d9784d6
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/MainMod.java22
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_BioVat.java31
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java152
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaBlastFurnace.java60
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/system/material/GT_Enhancement/PlatinumSludgeOverHaul.java57
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/util/BW_Util.java51
6 files changed, 242 insertions, 131 deletions
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/MainMod.java b/src/main/java/com/github/bartimaeusnek/bartworks/MainMod.java
index 794ccc8ac5..964dfdf7c7 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/MainMod.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/MainMod.java
@@ -220,8 +220,9 @@ public final class MainMod {
new CircuitImprintLoader().run();
if (classicMode)
new DownTierLoader().run();
- fixEnergyRequirements();
runOnServerStarted();
+ fixEnergyRequirements();
+// removeDuplicateRecipes();
}
private static void fixEnergyRequirements() {
@@ -230,7 +231,7 @@ public final class MainMod {
for (GT_Recipe recipe : map.mRecipeList){
if (recipe.mFakeRecipe)
continue maploop;
- for (int i = 0; i < 10; i++) {
+ for (int i = 0; i < VN.length; i++) {
if (recipe.mEUt == BW_Util.getTierVoltage(i)){
recipe.mEUt = BW_Util.getMachineVoltageFromTier(i);
}
@@ -518,4 +519,21 @@ public final class MainMod {
return (GT_Utility.areStacksEqual(input, new ItemStack(Blocks.tnt)) || GT_Utility.areStacksEqual(input, GT_ModHandler.getIC2Item("industrialTnt", 1L)) || GT_Utility.areStacksEqual(input, GT_ModHandler.getIC2Item("dynamite", 1L)) || GT_Utility.areStacksEqual(input, ItemList.Block_Powderbarrel.get(1L)));
}
+// private static void removeDuplicateRecipes(){
+// GT_Recipe.GT_Recipe_Map.sMappings.forEach(
+// gt_recipe_map -> {
+// HashSet<Integer> mappings = new HashSet<>();
+// HashSet<GT_Recipe> dupes = new HashSet<>();
+// gt_recipe_map.mRecipeList.forEach(
+// recipe -> {
+// if (mappings.contains(BW_Util.getRecipeHash(recipe)))
+// dupes.add(recipe);
+// mappings.add(BW_Util.getRecipeHash(recipe));
+// }
+// );
+// gt_recipe_map.mRecipeList.removeAll(dupes);
+// }
+// );
+// }
+
} \ No newline at end of file
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_BioVat.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_BioVat.java
index 1a8b555478..3902909ae6 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_BioVat.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_BioVat.java
@@ -22,12 +22,10 @@
package com.github.bartimaeusnek.bartworks.common.tileentities.multis;
-import com.github.bartimaeusnek.bartworks.API.BioVatLogicAdder;
import com.github.bartimaeusnek.bartworks.MainMod;
import com.github.bartimaeusnek.bartworks.common.configs.ConfigHandler;
import com.github.bartimaeusnek.bartworks.common.items.LabParts;
import com.github.bartimaeusnek.bartworks.common.loaders.FluidLoader;
-import com.github.bartimaeusnek.bartworks.common.loaders.ItemRegistry;
import com.github.bartimaeusnek.bartworks.common.net.RendererPacket;
import com.github.bartimaeusnek.bartworks.common.tileentities.tiered.GT_MetaTileEntity_RadioHatch;
import com.github.bartimaeusnek.bartworks.util.*;
@@ -43,8 +41,6 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockB
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
-import net.minecraft.block.Block;
-import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
@@ -57,8 +53,6 @@ import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
-import javax.annotation.Nonnegative;
-import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -318,8 +312,8 @@ public class GT_TileEntity_BioVat extends GT_MetaTileEntity_MultiBlockBase {
}
} else {
if (x == -2 && z == -2 && y == 1)
- this.mGlassTier = this.calculateGlassTier(aBaseMetaTileEntity.getBlockOffset(xDir + -2, y, zDir + z), aBaseMetaTileEntity.getMetaIDOffset(xDir + x, y, zDir + z));
- if (0 == this.mGlassTier || this.mGlassTier != this.calculateGlassTier(aBaseMetaTileEntity.getBlockOffset(xDir + x, y, zDir + z), aBaseMetaTileEntity.getMetaIDOffset(xDir + x, y, zDir + z))) {
+ this.mGlassTier = BW_Util.calculateGlassTier(aBaseMetaTileEntity.getBlockOffset(xDir + -2, y, zDir + z), aBaseMetaTileEntity.getMetaIDOffset(xDir + x, y, zDir + z));
+ if (0 == this.mGlassTier || this.mGlassTier != BW_Util.calculateGlassTier(aBaseMetaTileEntity.getBlockOffset(xDir + x, y, zDir + z), aBaseMetaTileEntity.getMetaIDOffset(xDir + x, y, zDir + z))) {
return false;
}
}
@@ -336,27 +330,6 @@ public class GT_TileEntity_BioVat extends GT_MetaTileEntity_MultiBlockBase {
return false;
}
- private byte calculateGlassTier(@Nonnull Block block, @Nonnegative Byte meta) {
-
- if (block.equals(ItemRegistry.bw_glasses[0]))
- return meta == 12 ? 5 : meta > 1 && meta < 6 ? (byte) (meta + 3) : 4;
-
- if (block.getUnlocalizedName().equals("blockAlloyGlass"))
- return 4;
-
- if (block.equals(Blocks.glass))
- return 3;
-
- for (BioVatLogicAdder.BlockMetaPair B : BioVatLogicAdder.BioVatGlass.getGlassMap().keySet())
- if (B.getBlock().equals(block) && B.getaByte().equals(meta))
- return BioVatLogicAdder.BioVatGlass.getGlassMap().get(B);
-
- if (block.getMaterial().equals(Material.glass))
- return 3;
-
- return 0;
- }
-
@Override
public int getMaxEfficiency(ItemStack itemStack) {
return 10000;
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java
index 4cee0d9ebc..39cc442a3e 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java
@@ -22,12 +22,14 @@
package com.github.bartimaeusnek.bartworks.common.tileentities.multis;
+import com.github.bartimaeusnek.bartworks.API.BioVatLogicAdder;
import com.github.bartimaeusnek.bartworks.system.material.CircuitGeneration.BW_Meta_Items;
import com.github.bartimaeusnek.bartworks.system.material.CircuitGeneration.CircuitImprintLoader;
import com.github.bartimaeusnek.bartworks.util.BWRecipes;
import com.github.bartimaeusnek.bartworks.util.BW_Util;
import com.github.bartimaeusnek.bartworks.util.ChatColorHelper;
import gregtech.api.GregTech_API;
+import gregtech.api.enums.Materials;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
@@ -37,6 +39,9 @@ import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.StatCollector;
@@ -163,79 +168,98 @@ public class GT_TileEntity_CircuitAssemblyLine extends GT_MetaTileEntity_MultiBl
public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
- int r;
- int i;
- IGregTechTileEntity tTileEntity;
- if (xDir != 0) {
- for(r = 0; r <= 7; ++r) {
- i = r * xDir;
-
- tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir, 0, i);
- if (!this.addEnergyInputToMachineList(tTileEntity, 16))
- if ((aBaseMetaTileEntity.getBlockOffset(0, 0, i) != GregTech_API.sBlockCasings3 || aBaseMetaTileEntity.getMetaIDOffset(0, 0, i) != 10) && r == 1)
- return false;
- if (!aBaseMetaTileEntity.getBlockOffset(0, -1, i).getUnlocalizedName().equals("blockAlloyGlass"))
- return false;
-
- tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(0, -2, i);
- if (!this.addMaintenanceToMachineList(tTileEntity, 16) && !this.addInputToMachineList(tTileEntity, 16))
- if (aBaseMetaTileEntity.getBlockOffset(0, -2, i) != GregTech_API.sBlockCasings2 || aBaseMetaTileEntity.getMetaIDOffset(0, -2, i) != 0)
- return false;
-
- if (i != 0 && (aBaseMetaTileEntity.getBlockOffset(xDir, -1, i) != GregTech_API.sBlockCasings2 || aBaseMetaTileEntity.getMetaIDOffset(xDir, -1, i) != 5))
- return false;
-
- if (!aBaseMetaTileEntity.getBlockOffset(xDir * 2, -1, i).getUnlocalizedName().equals("blockAlloyGlass"))
- return false;
-
- tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir * 2, -2, i);
- if (!this.addMaintenanceToMachineList(tTileEntity, 16) && !this.addInputToMachineList(tTileEntity, 16))
- if (aBaseMetaTileEntity.getBlockOffset(xDir * 2, -2, i) != GregTech_API.sBlockCasings2 || aBaseMetaTileEntity.getMetaIDOffset(xDir * 2, -2, i) != 0)
- return false;
-
- tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir, -2, i);
- if (!this.addInputToMachineList(tTileEntity, 16) && this.addOutputToMachineList(tTileEntity, 16))
- return r > 0 && this.mEnergyHatches.size() > 0;
- }
- } else {
-
- for(r = 0; r <= 7; ++r) {
- i = r * -zDir;
+ int xBase = aBaseMetaTileEntity.getXCoord() + xDir;
+ int yBase = aBaseMetaTileEntity.getYCoord();
+ int zBase = aBaseMetaTileEntity.getZCoord() + zDir;
- //top with grate and energy hatch
- tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(i, 0, zDir);
- if (!this.addEnergyInputToMachineList(tTileEntity, 16))
- if ((aBaseMetaTileEntity.getBlockOffset(i, 0, 0) != GregTech_API.sBlockCasings3 || aBaseMetaTileEntity.getMetaIDOffset(i, 0, 0) != 10) && r == 1)
- return false;
+ boolean rl = xDir == 0;
- if (!aBaseMetaTileEntity.getBlockOffset(i, -1, 0).getUnlocalizedName().equals("blockAlloyGlass"))
- return false;
+ if (rl)
+ ++zBase;
+ else
+ ++xBase;
- tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(i, -2, 0);
- if (!this.addMaintenanceToMachineList(tTileEntity, 16) && !this.addInputToMachineList(tTileEntity, 16))
- if (aBaseMetaTileEntity.getBlockOffset(i, -2, 0) != GregTech_API.sBlockCasings2 || aBaseMetaTileEntity.getMetaIDOffset(i, -2, 0) != 0)
- return false;
-
- if (i != 0 && (aBaseMetaTileEntity.getBlockOffset(i, -1, zDir) != GregTech_API.sBlockCasings2 || aBaseMetaTileEntity.getMetaIDOffset(i, -1, zDir) != 5))
- return false;
+ int length = 0;
+ while (true) {
+ IGregTechTileEntity igtte = aBaseMetaTileEntity.getIGregTechTileEntity(rl ? xBase + length : xBase - 1, yBase - 2, rl ? zBase - 1 : zBase + length);
+ if (igtte == null)
+ return false;
- if (!aBaseMetaTileEntity.getBlockOffset(i, -1, zDir * 2).getUnlocalizedName().equals("blockAlloyGlass"))
- return false;
+ if (igtte.getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_OutputBus)
+ break;
+ ++length;
- tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(i, -2, zDir * 2);
- if (!this.addMaintenanceToMachineList(tTileEntity, 16) && !this.addInputToMachineList(tTileEntity, 16))
- if (aBaseMetaTileEntity.getBlockOffset(i, -2, zDir * 2) != GregTech_API.sBlockCasings2 || aBaseMetaTileEntity.getMetaIDOffset(i, -2, zDir * 2) != 0)
- return false;
+ if (length > 7)
+ return false;
+ }
- tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(i, -2, zDir);
- if (!this.addInputToMachineList(tTileEntity, 16) && this.addOutputToMachineList(tTileEntity, 16))
- return r > 0 && this.mEnergyHatches.size() == 1;
+ if (rl)
+ zBase -= 2;
+ else
+ xBase -= 2;
+
+
+ for (int x = 0; x <= (rl ? length : 2); x++) {
+ for (int y = -2; y <= 0; y++) {
+ for (int z = 0; z <= (rl ? 2 : length); z++) {
+ if (x == 0 && y == 0 && z == 0)
+ continue;
+
+ IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntity(xBase + x, yBase + y, zBase + z);
+ Block block = aBaseMetaTileEntity.getBlock(xBase + x, yBase + y, zBase + z);
+ byte meta = aBaseMetaTileEntity.getMetaID(xBase + x, yBase + y, zBase + z);
+
+ switch (y) {
+ case -2: {
+ switch (rl ? z : x) {
+ case 0:
+ case 2: {
+ if (!this.addMaintenanceToMachineList(tTileEntity, 16) && !this.addInputToMachineList(tTileEntity, 16))
+ if (block != GregTech_API.sBlockCasings2 && meta != 0)
+ return false;
+ break;
+ }
+ case 1: {
+ if (!this.addInputToMachineList(tTileEntity, 16) && !((rl ? x : z) == length && this.addOutputToMachineList(tTileEntity, 16)))
+ return false;
+ break;
+ }
+ default:
+ break;
+ }
+ break;
+ }
+ case -1: {
+ switch (rl ? z : x) {
+ case 0:
+ case 2: {
+ if (BW_Util.calculateGlassTier(block, meta) < 4)
+ return false;
+ break;
+ }
+ case 1: {
+ if (block != GregTech_API.sBlockCasings2 || meta != 5)
+ return false;
+ break;
+ }
+ default:
+ break;
+ }
+ break;
+ }
+ case 0: {
+ if (!this.addEnergyInputToMachineList(tTileEntity, 16))
+ if (block != GregTech_API.sBlockCasings3 || meta != 10)
+ return false;
+ break;
+ }
+ }
+ }
}
}
-
- return false;
+ return this.mEnergyHatches.size() > 0 && this.mMaintenanceHatches.size() == 1;
}
@Override
@@ -304,7 +328,7 @@ public class GT_TileEntity_CircuitAssemblyLine extends GT_MetaTileEntity_MultiBl
"Circuit Assembly Line", "Size(WxHxD): (2-7)x3x3, variable length",
"Bottom: Steel Machine Casing(or 1x Maintenance or Input Hatch),",
"ULV Input Bus (Last ULV Output Bus), Steel Machine Casing",
- "Middle: Reinforced Glass, Assembling Line Casing, Reinforced Glass",
+ "Middle: EV+ Tier Glass, Assembling Line Casing, EV+ Tier Glass",
"Top: Grate Machine Casing (or Controller or 1x Energy Hatch)",
"Up to 7 repeating slices, last is Output Bus",
"Imprint this machine with a Circuit Imprint,",
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaBlastFurnace.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaBlastFurnace.java
index fc76ab719d..31cf20c428 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaBlastFurnace.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaBlastFurnace.java
@@ -35,15 +35,16 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockB
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_ElectricBlastFurnace;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.StatCollector;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
import static gregtech.api.enums.GT_Values.V;
@@ -73,6 +74,20 @@ public class GT_TileEntity_MegaBlastFurnace extends GT_MetaTileEntity_ElectricBl
return fdsc;
}
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ super.saveNBTData(aNBT);
+ aNBT.setByte("glasTier",glasTier);
+ aNBT.setByte("circuitMode",circuitMode);
+ }
+
+ @Override
+ public void loadNBTData(NBTTagCompound aNBT) {
+ super.loadNBTData(aNBT);
+ this.circuitMode = aNBT.getByte("circuitMode");
+ this.glasTier = aNBT.getByte("glasTier");
+ }
+
public boolean drainEnergyInput(long aEU) {
if (aEU <= 0)
return true;
@@ -110,16 +125,47 @@ public class GT_TileEntity_MegaBlastFurnace extends GT_MetaTileEntity_ElectricBl
// return glasTier != 8 && rVoltage > BW_Util.getTierVoltage(glasTier) ? BW_Util.getTierVoltage(glasTier) : rVoltage ;
// }
+
+ private byte circuitMode = 0;
+
+ @Override
+ public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ if (aPlayer.isSneaking()) {
+ --circuitMode;
+ if (circuitMode < 0)
+ circuitMode = 24;
+ } else {
+ ++circuitMode;
+ if (circuitMode > 24)
+ circuitMode = 0;
+ }
+
+ GT_Utility.sendChatToPlayer(aPlayer,circuitMode > 0 ? "MEBF will prioritise circuit: "+circuitMode : "Circuit prioritisation disabled.");
+ }
+
@Override
public boolean checkRecipe(ItemStack itemStack) {
+
ItemStack[] tInputs = this.getStoredInputs().toArray(new ItemStack[0]);
+
FluidStack[] tFluids = this.getStoredFluids().toArray(new FluidStack[0]);
long tVoltage = this.getMaxInputVoltage();
byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage));
-
- GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sBlastRecipes.findRecipe(this.getBaseMetaTileEntity(), false, V[tTier], tFluids, tInputs);
- if (tRecipe == null)
- return false;
+ GT_Recipe tRecipe = null;
+ if (circuitMode > 0 && Arrays.stream(tInputs).anyMatch(e -> GT_Utility.areStacksEqual(e,GT_Utility.getIntegratedCircuit(circuitMode),true))){
+ List<ItemStack> modInputs = Arrays.stream(tInputs).filter(Objects::nonNull).filter(e -> !e.getItem().equals(GT_Utility.getIntegratedCircuit(circuitMode).getItem())).collect(Collectors.toList());
+ modInputs.add(GT_Utility.getIntegratedCircuit(circuitMode));
+ tInputs = modInputs.toArray(new ItemStack[0]);
+ }
+ tRecipe = GT_Recipe.GT_Recipe_Map.sBlastRecipes.findRecipe(this.getBaseMetaTileEntity(), false, V[tTier], tFluids, tInputs);
+ if (tRecipe == null) {
+ if (circuitMode == 0)
+ return false;
+ tInputs = this.getStoredInputs().toArray(new ItemStack[0]);
+ tRecipe = GT_Recipe.GT_Recipe_Map.sBlastRecipes.findRecipe(this.getBaseMetaTileEntity(), false, V[tTier], tFluids, tInputs);
+ if (tRecipe == null)
+ return false;
+ }
ArrayList<ItemStack> outputItems = new ArrayList<ItemStack>();
ArrayList<FluidStack> outputFluids = new ArrayList<FluidStack>();
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/GT_Enhancement/PlatinumSludgeOverHaul.java b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/GT_Enhancement/PlatinumSludgeOverHaul.java
index 660cfeea16..dc7f5f3977 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/GT_Enhancement/PlatinumSludgeOverHaul.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/GT_Enhancement/PlatinumSludgeOverHaul.java
@@ -49,11 +49,12 @@ import net.minecraft.item.crafting.*;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
-import org.apache.commons.lang3.ClassUtils;
import org.apache.commons.lang3.reflect.FieldUtils;
import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
import java.util.*;
+import java.util.stream.Collectors;
import static com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader.*;
import static gregtech.api.enums.OrePrefixes.*;
@@ -108,7 +109,7 @@ public class PlatinumSludgeOverHaul {
GT_Values.RA.addBlastRecipe(PTMetallicPowder.get(dust, 3), GT_Utility.getIntegratedCircuit(1), null, null, Materials.Platinum.getNuggets(2), null, 600, 120, Materials.Platinum.mMeltingPoint);
GT_Values.RA.addChemicalRecipe(PTMetallicPowder.get(dust), GT_Utility.getIntegratedCircuit(1), AquaRegia.getFluidOrGas(1000), PTConcentrate.getFluidOrGas(1000), PTResidue.get(dustTiny), 250);
- GT_Values.RA.addCentrifugeRecipe(PTConcentrate.get(cell,2),null, AmmoniumChloride.getFluidOrGas(200), PDAmmonia.getFluidOrGas(200), PTSaltCrude.get(dustTiny, 18), PTRawPowder.get(dustTiny,2), Materials.NitrogenDioxide.getCells(1), Materials.DilutedSulfuricAcid.getCells(1), null, null, null, 1200, 30);
+ GT_Values.RA.addCentrifugeRecipe(PTConcentrate.get(cell,2),null, AmmoniumChloride.getFluidOrGas(200), PDAmmonia.getFluidOrGas(200), PTSaltCrude.get(dustTiny, 16), PTRawPowder.get(dustTiny,2), Materials.NitrogenDioxide.getCells(1), Materials.DilutedSulfuricAcid.getCells(1), null, null, null, 1200, 30);
GT_Values.RA.addMultiblockChemicalRecipe(new ItemStack[]{}, new FluidStack[]{PTConcentrate.getFluidOrGas(2000), AmmoniumChloride.getFluidOrGas(200)}, new FluidStack[]{PDAmmonia.getFluidOrGas(200), Materials.NitrogenDioxide.getGas(1000),Materials.DilutedSulfuricAcid.getFluid(1000)}, new ItemStack[]{PTSaltCrude.get(dustTiny, 16), PTRawPowder.get(dustTiny,2)}, 1200, 30);
GT_Values.RA.addSifterRecipe(PTSaltCrude.get(dust), new ItemStack[]{
PTSaltRefined.get(dust),
@@ -413,7 +414,32 @@ public class PlatinumSludgeOverHaul {
in = FieldUtils.getField(recipe.getClass(), inputItemName, true);
if (in == null)
return;
- FieldUtils.removeFinalModifier(in,true);
+
+ //directly copied from the apache commons collection, cause GTNH had problems with that particular function for some reason?
+ //this part here is NOT MIT LICENSED BUT LICSENSED UNDER THE Apache License, Version 2.0!
+ try {
+ if (Modifier.isFinal(in.getModifiers())) {
+ // Do all JREs implement Field with a private ivar called "modifiers"?
+ Field modifiersField = Field.class.getDeclaredField("modifiers");
+ boolean doForceAccess = !modifiersField.isAccessible();
+ if (doForceAccess) {
+ modifiersField.setAccessible(true);
+ }
+ try {
+ modifiersField.setInt(in, in.getModifiers() & ~Modifier.FINAL);
+ } finally {
+ if (doForceAccess) {
+ modifiersField.setAccessible(false);
+ }
+ }
+ }
+ } catch (NoSuchFieldException ignored) {
+ // The field class contains always a modifiers field
+ } catch (IllegalAccessException ignored) {
+ // The modifiers field is made accessible
+ }
+ // END OF APACHE COMMONS COLLECTION COPY
+
Object input = null;
try {
input = in.get(obj);
@@ -518,34 +544,15 @@ public class PlatinumSludgeOverHaul {
if (GameRegistry.findUniqueIdentifierFor(stack.getItem()).modId.equals(BartWorksCrossmod.MOD_ID))
return true;
- if (Block.getBlockFromItem(stack.getItem()) instanceof GT_Generic_Block && !(Block.getBlockFromItem(stack.getItem()) instanceof GT_Block_Ores_Abstract))
+ if (GameRegistry.findUniqueIdentifierFor(stack.getItem()).modId.equals("dreamcraft"))
return true;
- if (GT_Utility.areStacksEqual(ItemList.Depleted_Naquadah_1.get(1),stack,true) || GT_Utility.areStacksEqual(ItemList.Depleted_Naquadah_2.get(1),stack,true) || GT_Utility.areStacksEqual(ItemList.Depleted_Naquadah_4.get(1),stack,true))
- return true;
-
-
- if (GT_Utility.areStacksEqual(ItemList.Tool_Lighter_Platinum_Empty.get(1),stack,true) || GT_Utility.areStacksEqual(ItemList.Tool_Lighter_Platinum_Used.get(1),stack,true) || GT_Utility.areStacksEqual(ItemList.Tool_Lighter_Platinum_Full.get(1),stack,true))
+ if (Block.getBlockFromItem(stack.getItem()) instanceof GT_Generic_Block && !(Block.getBlockFromItem(stack.getItem()) instanceof GT_Block_Ores_Abstract))
return true;
- if (GT_Utility.areStacksEqual(ItemList.Emitter_EV.get(1),stack,true))
+ if (Arrays.stream(ItemList.values()).filter(ItemList::hasBeenSet).anyMatch(e -> !BW_Util.checkStackAndPrefix(stack) && GT_Utility.areStacksEqual(e.get(1), stack, true)))
return true;
- try {
- ItemList gtnhItemListItems = ItemList.valueOf("Large_Fluid_Cell_TungstenSteel");
- if (GT_Utility.areStacksEqual(gtnhItemListItems.get(1), stack, true))
- return true;
- gtnhItemListItems = ItemList.valueOf("Depleted_MNq_1");
- if (GT_Utility.areStacksEqual(gtnhItemListItems.get(1), stack, true))
- return true;
- gtnhItemListItems = ItemList.valueOf("Depleted_MNq_2");
- if (GT_Utility.areStacksEqual(gtnhItemListItems.get(1), stack, true))
- return true;
- gtnhItemListItems = ItemList.valueOf("Depleted_MNq_4");
- if (GT_Utility.areStacksEqual(gtnhItemListItems.get(1), stack, true))
- return true;
- } catch (IllegalArgumentException ignored) {}
-
if (stack.getItem() instanceof GT_Generic_Item) {
if (!BW_Util.checkStackAndPrefix(stack))
return false;
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/util/BW_Util.java b/src/main/java/com/github/bartimaeusnek/bartworks/util/BW_Util.java
index 19d180e31d..1a34c11359 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/util/BW_Util.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/util/BW_Util.java
@@ -23,6 +23,7 @@
package com.github.bartimaeusnek.bartworks.util;
import com.github.bartimaeusnek.bartworks.API.BioVatLogicAdder;
+import com.github.bartimaeusnek.bartworks.common.loaders.ItemRegistry;
import gregtech.api.enums.Materials;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy;
@@ -34,17 +35,17 @@ import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.item.EnumRarity;
+import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
import javax.annotation.Nonnegative;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
+import javax.annotation.Nonnull;
+import java.util.*;
import static gregtech.api.enums.GT_Values.V;
@@ -213,6 +214,27 @@ public class BW_Util {
return itemStack != null && GT_OreDictUnificator.getAssociation(itemStack) != null && GT_OreDictUnificator.getAssociation(itemStack).mPrefix != null && GT_OreDictUnificator.getAssociation(itemStack).mMaterial != null && GT_OreDictUnificator.getAssociation(itemStack).mMaterial.mMaterial != null;
}
+// public static int getRecipeHash(GT_Recipe recipe) {
+// int mInputItemsRawHash = Arrays.stream(recipe.mInputs).filter(Objects::nonNull).mapToInt(e ->
+// Objects.hash(Item.getIdFromItem(e.getItem()),e.getItemDamage(), e.getTagCompound())
+// ).hashCode();
+// int mInputFluidRawHash = Arrays.stream(recipe.mFluidInputs).filter(Objects::nonNull).mapToInt(e ->
+// Objects.hash(e.getFluidID(),e.amount,e.tag)
+// ).hashCode();
+// int mOutputItemRawHash = Arrays.stream(recipe.mOutputs).filter(Objects::nonNull).mapToInt(e ->
+// Objects.hash(Item.getIdFromItem(e.getItem()),e.getItemDamage(), e.getTagCompound())
+// ).hashCode();
+// int mOutputFluidRawHash = Arrays.stream(recipe.mFluidOutputs).filter(Objects::nonNull).mapToInt(e ->
+// Objects.hash(e.getFluidID(),e.amount,e.tag)
+// ).hashCode();
+// int mChancesRawHash = Arrays.hashCode(recipe.mChances);
+// int others = Objects.hash(recipe.mEUt,recipe.mSpecialValue,recipe.mDuration);
+// int specialItem = Objects.hash(recipe.mSpecialItems instanceof ItemStack ?
+// ((ItemStack) (recipe.mSpecialItems)).getItem() : recipe.mSpecialItems instanceof Item ? recipe.mSpecialItems : 0 ,
+// recipe.mSpecialItems instanceof ItemStack ? ((ItemStack) (recipe.mSpecialItems)).getItemDamage() : 0);
+// return Objects.hash(mInputItemsRawHash,mInputFluidRawHash,mOutputItemRawHash,mOutputFluidRawHash,mChancesRawHash,others,specialItem);
+// }
+
public static int getMachineVoltageFromTier(int tier) {
return (int) (30 * Math.pow(4, (tier - 1)));
}
@@ -482,4 +504,25 @@ public class BW_Util {
default: return -1;
}
}
+
+ public static byte calculateGlassTier(@Nonnull Block block, @Nonnegative byte meta) {
+
+ if (block.equals(ItemRegistry.bw_glasses[0]))
+ return meta == 12 ? 5 : meta > 1 && meta < 6 ? (byte) (meta + 3) : 4;
+
+ if (block.getUnlocalizedName().equals("blockAlloyGlass"))
+ return 4;
+
+ if (block.equals(Blocks.glass))
+ return 3;
+
+ for (BioVatLogicAdder.BlockMetaPair B : BioVatLogicAdder.BioVatGlass.getGlassMap().keySet())
+ if (B.getBlock().equals(block) && B.getaByte().equals(meta))
+ return BioVatLogicAdder.BioVatGlass.getGlassMap().get(B);
+
+ if (block.getMaterial().equals(Material.glass))
+ return 3;
+
+ return 0;
+ }
}