diff options
author | bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com> | 2019-10-29 15:57:53 +0100 |
---|---|---|
committer | bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com> | 2019-10-29 15:57:53 +0100 |
commit | 930944f5f0cee1bca1241e0bc179edcbe265d3bb (patch) | |
tree | ebefd9d362a2e9e4e3ecfee937761fa6e24e5f77 /src/main | |
parent | 26579069b0d2b033c70311231d7572a022c5d307 (diff) | |
download | GT5-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')
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; + } } |