diff --git a/src/main/java/gtPlusPlus/core/item/ModItems.java b/src/main/java/gtPlusPlus/core/item/ModItems.java index 49a22bc8a89..25e5a7dc2a6 100644 --- a/src/main/java/gtPlusPlus/core/item/ModItems.java +++ b/src/main/java/gtPlusPlus/core/item/ModItems.java @@ -691,6 +691,7 @@ public static void init() { toolGregtechPump.registerPumpType(1, "Advanced Hand Pump", 32000, 1); toolGregtechPump.registerPumpType(2, "Super Hand Pump", 128000, 2); toolGregtechPump.registerPumpType(3, "Ultimate Hand Pump", 512000, 3); + toolGregtechPump.registerPumpType(4, "Expandable Hand Pump", 0, 4); // Xp Fluids - Dev if (!FluidRegistry.isFluidRegistered("mobessence")) { diff --git a/src/main/java/gtPlusPlus/core/item/tool/misc/ItemGregtechPump.java b/src/main/java/gtPlusPlus/core/item/tool/misc/ItemGregtechPump.java index f6533dad8e6..bab4eac684d 100644 --- a/src/main/java/gtPlusPlus/core/item/tool/misc/ItemGregtechPump.java +++ b/src/main/java/gtPlusPlus/core/item/tool/misc/ItemGregtechPump.java @@ -25,12 +25,8 @@ import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidContainerItem; -import net.minecraftforge.fluids.IFluidHandler; -import net.minecraftforge.fluids.IFluidTank; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; @@ -95,11 +91,8 @@ public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, Entity private final HashMap mIconMap = new LinkedHashMap<>(); private final HashMap rarity = new LinkedHashMap<>(); - private final HashMap itemName = new LinkedHashMap<>(); - private final HashMap hasEffect = new LinkedHashMap<>(); public final HashMap mElectricStats = new LinkedHashMap<>(); - public final HashMap mBurnValues = new LinkedHashMap<>(); public void registerPumpType(final int aID, final String aPumpName, final int aEuMax, final int aTier) { ModItems.toolGregtechPump.registerItem( @@ -107,10 +100,12 @@ public void registerPumpType(final int aID, final String aPumpName, final int aE aPumpName, // Name aEuMax, // Eu Storage (short) aTier, // Tier/ Tooltip - aTier <= 0 ? EnumRarity.common - : aTier == 1 ? EnumRarity.uncommon - : aTier == 2 ? EnumRarity.rare : aTier == 3 ? EnumRarity.epic : EnumRarity.common, // Rarity - false // Effect? + switch (aTier) { + case 0 -> EnumRarity.common; + case 1 -> EnumRarity.uncommon; + case 2 -> EnumRarity.rare; + default -> EnumRarity.epic; + } // Rarity ); } @@ -134,18 +129,8 @@ public ItemGregtechPump(final String unlocalizedName, final CreativeTabs creativ } } - public void registerItem(final int id, final String localizedName, final long euStorage, final int tier) { - this.registerItem(id, localizedName, euStorage, (short) tier, EnumRarity.common, false); - } - - public void registerItem(final int id, final String localizedName, final long euStorage, final int tier, - final int burnTime) { - this.registerItem(id, localizedName, euStorage, (short) tier, EnumRarity.common, false); - this.setBurnValue(id, burnTime); - } - public void registerItem(final int id, final String localizedName, final long euStorage, final short tier, - final EnumRarity regRarity, final boolean Effect) { + final EnumRarity regRarity) { this.addItem( id, localizedName, @@ -153,8 +138,6 @@ public void registerItem(final int id, final String localizedName, final long eu if (euStorage > 0 && tier > 0) this.setElectricStats(this.mOffset + id, euStorage, GTValues.V[tier], tier, -3L, true); this.rarity.put(id, regRarity); - this.itemName.put(id, localizedName); - this.hasEffect.put(id, Effect); } @Override @@ -167,15 +150,6 @@ public EnumRarity getRarity(final ItemStack par1ItemStack) { return EnumRarity.common; } - @Override - public boolean hasEffect(final ItemStack par1ItemStack, final int pass) { - int h = getCorrectMetaForItemstack(par1ItemStack); - if (this.hasEffect.get(h) != null) { - return this.hasEffect.get(h); - } - return false; - } - @SuppressWarnings({ "unchecked" }) @Override public void addInformation(final ItemStack aStack, final EntityPlayer aPlayer, List aList, final boolean aF3_H) { @@ -185,21 +159,19 @@ public void addInformation(final ItemStack aStack, final EntityPlayer aPlayer, L GTLanguageManager .getTranslation("gtplusplus." + this.getUnlocalizedName(aStack) + "." + aOffsetMeta + ".tooltip")); - if (aOffsetMeta <= 3) { - FluidStack f = getFluid(aStack); - aList.add(StatCollector.translateToLocal("item.itemGregtechPump.tooltip.0")); - aList.add(StatCollector.translateToLocal("item.itemGregtechPump.tooltip.1")); - aList.add(EnumChatFormatting.DARK_GRAY + StatCollector.translateToLocal("item.itemGregtechPump.tooltip.2")); - aList.add( - EnumChatFormatting.BLUE + (f != null ? f.getLocalizedName() - : StatCollector.translateToLocal("item.itemGregtechPump.tooltip.3"))); - aList.add( - EnumChatFormatting.BLUE + (f != null ? "" + f.amount : "" + 0) - + "L" - + " / " - + formatNumbers(getCapacity(aStack)) - + "L"); - } + FluidStack f = getFluid(aStack); + aList.add(StatCollector.translateToLocal("item.itemGregtechPump.tooltip.0")); + aList.add(StatCollector.translateToLocal("item.itemGregtechPump.tooltip.1")); + aList.add(EnumChatFormatting.DARK_GRAY + StatCollector.translateToLocal("item.itemGregtechPump.tooltip.2")); + aList.add( + EnumChatFormatting.BLUE + (f != null ? f.getLocalizedName() + : StatCollector.translateToLocal("item.itemGregtechPump.tooltip.3"))); + aList.add( + EnumChatFormatting.BLUE + (f != null ? "" + formatNumbers(f.amount) : "" + 0) + + "L" + + " / " + + formatNumbers(getCapacity(aStack)) + + "L"); final Long[] tStats = this.getElectricStats(aStack); if (tStats != null) { @@ -455,25 +427,6 @@ public final IElectricItemManager getManager(final ItemStack aStack) { return this; } // We are our own Manager - /** - * Sets the Furnace Burn Value for the Item. - * - * @param aMetaValue the Meta Value of the Item you want to set it to. [0 - 32765] - * @param aValue 200 = 1 Burn Process = 500 EU, max = 32767 (that is 81917.5 EU) - * @return the Item itself for convenience in constructing. - */ - public final ItemGregtechPump setBurnValue(final int aMetaValue, final int aValue) { - if ((aMetaValue < 0) || (aValue < 0)) { - return this; - } - if (aValue == 0) { - this.mBurnValues.remove((short) aMetaValue); - } else { - this.mBurnValues.put((short) aMetaValue, aValue > Short.MAX_VALUE ? Short.MAX_VALUE : (short) aValue); - } - return this; - } - /** * @param aMetaValue the Meta Value of the Item you want to set it to. [0 - 32765] * @param aMaxCharge Maximum Charge. (if this is == 0 it will remove the Electric Behavior) @@ -543,7 +496,7 @@ public final IIcon getIconFromDamage(final int aMetaData) { return mIconMap.get(0); } else { int newMeta = aMetaData - this.mOffset; - newMeta = (Math.max(0, Math.min(3, newMeta))); + newMeta = (Math.max(0, Math.min(4, newMeta))); return mIconMap.get(newMeta); } } @@ -570,21 +523,11 @@ public final Long[] getElectricStats(final ItemStack aStack) { return this.mElectricStats.get((short) aStack.getItemDamage()); } - @Override - public int getItemEnchantability() { - return 0; - } - @Override public boolean isBookEnchantable(final ItemStack aStack, final ItemStack aBook) { return false; } - @Override - public boolean getIsRepairable(final ItemStack aStack, final ItemStack aMaterial) { - return false; - } - /** * Adds a special Item Behaviour to the Item. *

@@ -608,11 +551,10 @@ public final ItemGregtechPump addItemBehavior(final int aMetaValue, /** * This adds a Custom Item to the ending Range. * - * @param aID The Id of the assigned Item [0 - mItemAmount] (The MetaData gets auto-shifted by +mOffset) - * @param aEnglish The Default Localized Name of the created Item - * @param aToolTip The Default ToolTip of the created Item, you can also insert null for having no ToolTip - * @param aFoodBehavior The Food Value of this Item. Can be null aswell. Just a convenience thing. - * @param aRandomData The OreDict Names you want to give the Item. Also used for TC Aspects and some other things. + * @param aID The Id of the assigned Item [0 - mItemAmount] (The MetaData gets auto-shifted by +mOffset) + * @param aEnglish The Default Localized Name of the created Item + * @param aToolTip The Default ToolTip of the created Item, you can also insert null for having no ToolTip + * @param aRandomData The OreDict Names you want to give the Item. Also used for TC Aspects and some other things. * @return An ItemStack containing the newly created Item. */ @SuppressWarnings("unchecked") @@ -686,9 +628,7 @@ public final ItemStack addItem(final int aID, final String aEnglish, String aToo @Override public String getItemStackDisplayName(final ItemStack aStack) { int keyValue = (getCorrectMetaForItemstack(aStack)); - if (keyValue < 0 || keyValue > 3) { - keyValue = 0; - } + keyValue = GTUtility.clamp(keyValue, 0, 4); return GTLanguageManager .getTranslation("gtplusplus." + this.getUnlocalizedName(aStack) + "." + keyValue + ".name"); } @@ -717,9 +657,7 @@ public void emptyStoredFluid(ItemStack aStack) { } public void storeFluid(ItemStack aStack, FluidStack aFluid) { - if (aFluid == null) { - return; - } else { + if (aFluid != null) { String fluidname = aFluid.getFluid() .getName(); int amount = aFluid.amount; @@ -767,7 +705,8 @@ public int getCapacity(ItemStack container) { .getInteger("mCapacity"); } int aMeta = this.getCorrectMetaForItemstack(container); - return aMeta == 0 ? 2000 : aMeta == 1 ? 8000 : aMeta == 2 ? 32000 : 128000; + + return 2000 * (int) Math.pow(4, aMeta); } public int fill(ItemStack container, FluidStack resource) { @@ -861,36 +800,24 @@ public FluidStack drain(ItemStack container, int maxDrain, boolean doDrain) { && container.getTagCompound() .getBoolean("mInit")) { - String aStored; - int aStoredAmount = 0; FluidStack aStoredFluid = getFluid(container); - - if (aStoredFluid != null) { - aStored = aStoredFluid.getFluid() - .getName(); - aStoredAmount = aStoredFluid.amount; - } - // We cannot drain this if it's empty. - else if (aStoredFluid == null) { + if (aStoredFluid == null) { + // We cannot drain this if it's empty. return null; } + int aStoredAmount = aStoredFluid.amount; + if (maxDrain >= aStoredAmount) { emptyStoredFluid(container); return aStoredFluid; } else { // Handle Partial removal int amountRemaining = (aStoredAmount - maxDrain); - if (amountRemaining == 0) { - emptyStoredFluid(container); - } else { - FluidStack newAmount = FluidUtils.getFluidStack(aStoredFluid, amountRemaining); - FluidStack drained = FluidUtils.getFluidStack(aStoredFluid, maxDrain); - if (newAmount != null && drained != null) { - storeFluid(container, newAmount); - return drained; - } - } + FluidStack newAmount = FluidUtils.getFluidStack(aStoredFluid, amountRemaining); + FluidStack drained = FluidUtils.getFluidStack(aStoredFluid, maxDrain); + storeFluid(container, newAmount); + return drained; } } return null; @@ -914,8 +841,11 @@ public void initNBT(ItemStack aStack) { aNewNBT.setBoolean("mInit", true); aNewNBT.setString("mFluid", "@@@@@"); aNewNBT.setInteger("mFluidAmount", 0); - int aCapacity = (aMeta == 0 ? 2000 : (aMeta == 1 ? 8000 : (aMeta == 2 ? 32000 : 128000))); - aNewNBT.setInteger("mCapacity", aCapacity); + if (!aNewNBT.hasKey("capacityInit")) { + int aCapacity = 2000 * (int) Math.pow(4, aMeta); + aNewNBT.setInteger("mCapacity", aCapacity); + aNewNBT.setBoolean("capacityInit", true); + } aStack.setTagCompound(aNewNBT); } } @@ -934,19 +864,11 @@ public boolean tryDrainTile(ItemStack aStack, World aWorld, EntityPlayer aPlayer return false; } else { int aTier = (aStack.getItemDamage() - 1000); - int removal; - if (aTier == 0) { - removal = 0; - } else if (aTier == 1) { - removal = 32; - } else if (aTier == 2) { - removal = 128; - } else if (aTier == 3) { - removal = 512; - } else { - removal = 8; + int removal = 0; + if (aTier != 0) { + removal = 8 * (int) Math.pow(4, aTier); } - if (!canUse(aStack, removal) && aTier > 0) { + if (!canUse(aStack, removal) && aTier > 0 && aTier < 4) { PlayerUtils.messagePlayer(aPlayer, "Not enough power."); Logger.INFO("No Power"); return false; @@ -967,17 +889,12 @@ public boolean tryDrainTile(ItemStack aStack, World aWorld, EntityPlayer aPlayer didDrain = true; } } else { - didDrain = aTier == 0; + didDrain = aTier == 0 || aTier == 4; } if (didDrain) { if ((tTileEntity instanceof IGregTechTileEntity)) { - return this.drainTankGT(tTileEntity, aStack, aWorld, aPlayer, aX, aY, aZ); - } - // Try support Standard Fluid Tanks too (May disable if dupes appear again) - else if ((tTileEntity instanceof IFluidTank || tTileEntity instanceof IFluidHandler)) { - // return this.drainIFluidTank(tTileEntity, aStack, aWorld, aPlayer, aX, aY, aZ); - return false; + return this.drainTankGT(tTileEntity, aStack, aWorld, aPlayer); } } } @@ -986,58 +903,11 @@ else if ((tTileEntity instanceof IFluidTank || tTileEntity instanceof IFluidHand return false; } - /* - * Vanilla IFluidTank - */ - - public boolean drainIFluidTank(TileEntity tTileEntity, ItemStack aStack, World aWorld, EntityPlayer aPlayer, int aX, - int aY, int aZ) { - if (tTileEntity == null) { - Logger.INFO("Invalid Tile, somehow."); - return false; - } - if ((tTileEntity instanceof IFluidTank || tTileEntity instanceof IFluidHandler)) { - if (this.getFluid(aStack) == null - || (this.getFluid(aStack) != null && this.getFluid(aStack).amount < this.getCapacity(aStack))) { - Logger.INFO("Trying to find Stored Fluid - Behaviour Class."); - FluidStack aStored = getStoredFluidOfVanillaTank(tTileEntity); - if (aStored != null) { - int mAmountInserted = fill(aStack, aStored); - FluidStack newStackRemainingInTank; - if (mAmountInserted > 0) { - if (mAmountInserted == aStored.amount) { - newStackRemainingInTank = null; - } else { - newStackRemainingInTank = FluidUtils - .getFluidStack(aStored, (aStored.amount - mAmountInserted)); - } - boolean b = setStoredFluidOfVanillaTank(tTileEntity, newStackRemainingInTank); - Logger.INFO("Cleared Tank? " + b + " | mAmountInserted: " + mAmountInserted); - Logger.INFO("Returning " + b + " - drainTankVanilla."); - if (b) { - PlayerUtils.messagePlayer( - aPlayer, - "Drained " + mAmountInserted + "L of " + aStored.getLocalizedName() + "."); - } - return b; - } - } else { - Logger.INFO("Found no valid Fluidstack - drainTankVanilla."); - } - } else { - Logger.INFO("Pump is full."); - } - } - Logger.INFO("Could not drain vanilla tank."); - return false; - } - /* * GT Tanks */ - public boolean drainTankGT(TileEntity tTileEntity, ItemStack aStack, World aWorld, EntityPlayer aPlayer, int aX, - int aY, int aZ) { + public boolean drainTankGT(TileEntity tTileEntity, ItemStack aStack, World aWorld, EntityPlayer aPlayer) { if (tTileEntity == null) { return false; } @@ -1090,127 +960,6 @@ public boolean drainTankGT(TileEntity tTileEntity, ItemStack aStack, World aWorl return false; } - /* - * Vanilla Tanks - */ - - public FluidStack getStoredFluidOfVanillaTank(TileEntity aTileEntity) { - if (aTileEntity == null) { - return null; - } else if ((aTileEntity instanceof IFluidTank || aTileEntity instanceof IFluidHandler)) { - if (aTileEntity instanceof IFluidTank) { - return getStoredFluidOfVanillaTank((IFluidTank) aTileEntity); - } else { - return getStoredFluidOfVanillaTank((IFluidHandler) aTileEntity); - } - } else { - return null; - } - } - - public FluidStack getStoredFluidOfVanillaTank(IFluidTank aTileEntity) { - FluidStack f = aTileEntity.getFluid(); - Logger.INFO( - "Returning Fluid stack from tile. Found: " - + (f != null ? f.getLocalizedName() + " - " + f.amount + "L" : "Nothing")); - return f; - } - - public FluidStack getStoredFluidOfVanillaTank(IFluidHandler aTileEntity) { - if (aTileEntity instanceof IFluidTank) { - return getStoredFluidOfVanillaTank((IFluidTank) aTileEntity); - } - FluidStack f; - ArrayList m = new ArrayList<>(); - for (int i = 0; i < 6; i++) { - m.add(aTileEntity.getTankInfo(ForgeDirection.getOrientation(i))); - } - if (m.get(0) != null && m.get(0)[0] != null && m.get(0)[0].fluid != null) { - return m.get(0)[0].fluid; - } else { - return null; - } - } - - public boolean setStoredFluidOfVanillaTank(TileEntity aTileEntity, FluidStack aSetFluid) { - Logger.INFO("Trying to clear Tile's tank. - Behaviour Class. [1]"); - - if (aTileEntity == null) { - return false; - } else if ((aTileEntity instanceof IFluidTank || aTileEntity instanceof IFluidHandler)) { - if (aTileEntity instanceof IFluidTank) { - Logger.INFO("Tile Was instanceof IFluidTank."); - FluidStack f = ((IFluidTank) aTileEntity).getFluid(); - if (aSetFluid == null) { - aSetFluid = f; - aSetFluid.amount = f.amount; - } - int toDrain = (f.amount - aSetFluid.amount); - FluidStack newStack; - if (toDrain <= 0) { - newStack = f; - } else { - newStack = ((IFluidTank) aTileEntity).drain(toDrain, true); - } - - if (newStack.isFluidEqual(aSetFluid) && newStack.amount == aSetFluid.amount) { - Logger.INFO("Removed fluid from vanilla IFluidTank successfully."); - return true; - } else { - Logger.INFO("Failed trying to remove fluid from vanilla IFluidTank."); - return false; - } - } else { - - // Rewrite Fluid handling for Vanilla type tanks - if (!(aTileEntity instanceof IFluidHandler)) { - Logger.INFO("Tile Was not an instance of IFluidHandler."); - return false; - } - - IFluidHandler aTank = (IFluidHandler) aTileEntity; - FluidStack aTankContents = null; - FluidTankInfo[] a1 = aTank.getTankInfo(ForgeDirection.UNKNOWN); - if (a1 != null) { - if (a1[0] != null) { - aTankContents = a1[0].fluid; - Logger.INFO( - "Found Fluid in Tank. " + aTankContents.getLocalizedName() + " - " + aTankContents.amount); - } - } - if (aSetFluid == null) { - Logger.INFO("Setting fluid to tank contents, as we're going to empty it totally."); - aSetFluid = aTankContents.copy(); - } else { - Logger.INFO("Setting fluid to tank contents, as we're going to empty it totally."); - } - Logger.INFO( - "Tile Was instance of IFluidHandler. Trying to Drain " + aSetFluid.getLocalizedName() - + " - " - + aSetFluid.amount); - - if (a1 == null || aTankContents == null) { - Logger.INFO("Tank is empty."); - return false; - } - // Found some Fluid in the tank - else { - FluidStack aDrainedStack = aTank.drain(ForgeDirection.UNKNOWN, aSetFluid, true); - if (aDrainedStack.isFluidStackIdentical(aSetFluid)) { - Logger.INFO("Drained!"); - return true; - } else { - Logger.INFO("Partially Drained! This is probably an error."); - return true; - } - } - } - } else { - Logger.INFO("Bad Tank Tile to drain."); - return false; - } - } - /* * GT Tanks */ @@ -1235,18 +984,6 @@ public FluidStack getStoredFluidOfGTMachine(IGregTechTileEntity aTileEntity) { public FluidStack getStoredFluidOfGTMachine(MTEBasicTank aTileEntity) { FluidStack f = aTileEntity.mFluid; - // Let's see if this machine has output fluid too - /* - * if (f == null) { Logger.INFO("Could not find any input fluid, checking output if possible."); if (aTileEntity - * instanceof GT_MetaTileEntity_BasicMachine) { GT_MetaTileEntity_BasicMachine g = - * (GT_MetaTileEntity_BasicMachine) aTileEntity; - * Logger.INFO("Tile is a Basic Machine of some sort - "+g.mNEIName); if (g != null) { f = g.mOutputFluid; if (f - * != null) { Logger.INFO("Found output fluid! "+f.getLocalizedName()); } else { - * Logger.INFO("Did not find anything!"); f = g.getFluid(); if (f != null) { - * Logger.INFO("Found fluid! "+f.getLocalizedName()); } else { Logger.INFO("Did not find anything!"); f = - * g.getFluid(); } } } } } - */ - Logger.INFO( "Returning Fluid stack from tile. Found: " + (f != null ? f.getLocalizedName() + " - " + f.amount + "L" : "Nothing")); @@ -1272,12 +1009,6 @@ public boolean setStoredFluidOfGTMachine(IGregTechTileEntity aTileEntity, FluidS public boolean setStoredFluidOfGTMachine(MTEBasicTank aTileEntity, FluidStack aSetFluid) { try { - - // Try Handle Outputs First - /* - * if (aTileEntity.setDrainableStack(aSetFluid) != null) { return true; } - */ - aTileEntity.mFluid = aSetFluid; boolean b = aTileEntity.mFluid == aSetFluid; Logger.INFO("Trying to set Tile's tank. - Behaviour Class. [3] " + b); @@ -1296,7 +1027,7 @@ public int getCorrectMetaForItemstack(ItemStack aStack) { return 0; } else { int newMeta = aStack.getItemDamage() - this.mOffset; - newMeta = (Math.max(0, Math.min(3, newMeta))); + newMeta = (Math.max(0, Math.min(4, newMeta))); return newMeta; } } diff --git a/src/main/java/gtPlusPlus/core/recipe/RecipesGregTech.java b/src/main/java/gtPlusPlus/core/recipe/RecipesGregTech.java index adc335c72cb..ffac299ae2f 100644 --- a/src/main/java/gtPlusPlus/core/recipe/RecipesGregTech.java +++ b/src/main/java/gtPlusPlus/core/recipe/RecipesGregTech.java @@ -44,9 +44,13 @@ import static gtPlusPlus.api.recipe.GTPPRecipeMaps.thermalBoilerRecipes; import static gtPlusPlus.core.material.MaterialsAlloy.TITANSTEEL; +import java.util.Arrays; +import java.util.List; + import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; @@ -116,6 +120,7 @@ private static void execute() { chemplantRecipes(); alloySmelterRecipes(); thermalBoilerRecipes(); + craftingTableRecipes(); /* * Special Recipe handlers @@ -562,6 +567,26 @@ private static void assemblyLineRecipes() { .eut(TierEU.RECIPE_UHV / 2) .duration(1 * MINUTES) .addTo(AssemblyLine); + + // Expandable Hand Pump + RA.stdBuilder() + .metadata(RESEARCH_ITEM, ItemUtils.simpleMetaStack(ModItems.itemGenericToken, 4, 1)) + .metadata(RESEARCH_TIME, 30 * MINUTES) + .itemInputs( + ItemList.Electric_Pump_LuV.get(4), + ItemList.Electric_Motor_LuV.get(4), + GregtechItemList.VOLUMETRIC_FLASK_32k.get(4), + MaterialsAlloy.LAFIUM.getScrew(16), + WerkstoffLoader.LuVTierMaterial.get(OrePrefixes.ring, 8), + WerkstoffLoader.LuVTierMaterial.get(OrePrefixes.stick, 16), + Materials.Osmiridium.getPlates(32)) + .fluidInputs( + MaterialsAlloy.HELICOPTER.getFluidStack(144 * 32), + MaterialsAlloy.INDALLOY_140.getFluidStack(144 * 64)) + .itemOutputs(ItemUtils.simpleMetaStack(ModItems.toolGregtechPump, 1004, 1)) + .eut(TierEU.RECIPE_LuV) + .duration(30 * SECONDS) + .addTo(AssemblyLine); } private static void laserEngraverRecipes() { @@ -1880,4 +1905,36 @@ private static void cyclotronRecipes() { .addTo(cyclotronRecipes); } + + private static void craftingTableRecipes() { + + List tankList = Arrays.asList( + ItemList.Super_Tank_LV, + ItemList.Super_Tank_MV, + ItemList.Super_Tank_HV, + ItemList.Super_Tank_EV, + ItemList.Super_Tank_IV, + ItemList.Quantum_Tank_LV, + ItemList.Quantum_Tank_MV, + ItemList.Quantum_Tank_HV, + ItemList.Quantum_Tank_EV, + ItemList.Quantum_Tank_IV); + + for (int i = 0; i < 10; i++) { + ItemStack tank = tankList.get(i) + .get(1); + ItemStack handPump = ItemUtils.simpleMetaStack(ModItems.toolGregtechPump, 1004, 1); + ItemStack pumpWithNBT = handPump.copy(); + NBTTagCompound nbt = new NBTTagCompound(); + int capacity = i == 9 ? Integer.MAX_VALUE : 4_000_000 * (int) Math.pow(2, i); + nbt.setInteger("mMeta", 4); + nbt.setBoolean("mInit", true); + nbt.setString("mFluid", "@@@@@"); + nbt.setInteger("mFluidAmount", 0); + nbt.setInteger("mCapacity", capacity); + nbt.setBoolean("capacityInit", true); + pumpWithNBT.setTagCompound(nbt); + GTModHandler.addShapelessCraftingRecipe(pumpWithNBT, new Object[] { handPump, tank }); + } + } } diff --git a/src/main/resources/assets/miscutils/textures/items/MU-metatool.01/4.png b/src/main/resources/assets/miscutils/textures/items/MU-metatool.01/4.png new file mode 100644 index 00000000000..0cd00c493c2 Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/items/MU-metatool.01/4.png differ