diff options
12 files changed, 205 insertions, 94 deletions
diff --git a/src/main/java/com/elisis/gtnhlanth/GTNHLanthanides.java b/src/main/java/com/elisis/gtnhlanth/GTNHLanthanides.java index ddbaa84d6e..1683ca3ea0 100644 --- a/src/main/java/com/elisis/gtnhlanth/GTNHLanthanides.java +++ b/src/main/java/com/elisis/gtnhlanth/GTNHLanthanides.java @@ -75,7 +75,9 @@ public class GTNHLanthanides { @EventHandler public static void onModLoadingComplete(FMLLoadCompleteEvent e) { + BotRecipes.removeRecipes(); RecipeLoader.removeCeriumSources(); + } } diff --git a/src/main/java/com/elisis/gtnhlanth/common/block/ShieldedAccGlass.java b/src/main/java/com/elisis/gtnhlanth/common/block/ShieldedAccGlass.java index 41bebcf170..a114cead69 100644 --- a/src/main/java/com/elisis/gtnhlanth/common/block/ShieldedAccGlass.java +++ b/src/main/java/com/elisis/gtnhlanth/common/block/ShieldedAccGlass.java @@ -3,6 +3,7 @@ package com.elisis.gtnhlanth.common.block; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.EnumCreatureType; +import net.minecraft.init.Blocks; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -54,6 +55,11 @@ public class ShieldedAccGlass extends Block { } @Override + public float getBlockHardness(World aWorld, int aX, int aY, int aZ) { + return Blocks.glass.getBlockHardness(aWorld, aX, aY, aZ); + } + + @Override @SideOnly(Side.CLIENT) public boolean shouldSideBeRendered(IBlockAccess worldClient, int xCoord, int yCoord, int zCoord, int aSide) { if (worldClient.getBlock(xCoord, yCoord, zCoord) instanceof ShieldedAccGlass) return false; diff --git a/src/main/java/com/elisis/gtnhlanth/common/item/MaskList.java b/src/main/java/com/elisis/gtnhlanth/common/item/MaskList.java index bbc2d1c18a..18423565ca 100644 --- a/src/main/java/com/elisis/gtnhlanth/common/item/MaskList.java +++ b/src/main/java/com/elisis/gtnhlanth/common/item/MaskList.java @@ -4,6 +4,7 @@ import net.minecraft.item.ItemStack; import gregtech.api.enums.Dyes; import gregtech.api.enums.ItemList; +import gregtech.api.enums.TierEU; public enum MaskList { @@ -12,53 +13,60 @@ public enum MaskList { // Use Dyes._NULL to indicate a wafer's lack of a dedicated lens instead of null, if the wafer's mask is to be // generated // Ignore last argument if using all wafers - ERROR("error", "ERROR", 0, "", null, null, 0, 0, 0, 0, null), - BLANK1("blank1", "T1 Blank", 0, "VISIBLE", null, null, 0, 0, 0, 0, null), - BLANK2("blank2", "T2 Blank", 0, "UV", null, null, 0, 0, 0, 0, null), - BLANK3("blank3", "T3 Blank", 0, "X-RAY", null, null, 0, 0, 0, 0, null), - ILC("ilc", "Integrated Logic Circuit", 100, "", BLANK1, Dyes.dyeRed, 0.5e-3f, 4e-3f, 50, 1, + ERROR("error", "ERROR", 0, "", null, null, 0, 0, 0, 0, 0, null), + BLANK1("blank1", "T1 Blank", 0, "VISIBLE", null, null, 0, 0, 0, 0, 0, null), + BLANK2("blank2", "T2 Blank", 0, "UV", null, null, 0, 0, 0, 0, 0, null), + BLANK3("blank3", "T3 Blank", 0, "X-RAY", null, null, 0, 0, 0, 0, 0, null), + ILC("ilc", "Integrated Logic Circuit", 100, "", BLANK1, Dyes.dyeRed, TierEU.RECIPE_MV, 0.5e-3f, 4e-3f, 35, 1, ItemList.Circuit_Wafer_ILC.get(1)), - RAM("ram", "Random Access Memory", 200, "", BLANK1, Dyes.dyeCyan, 2e-3f, 4e-3f, 60, 2, + RAM("ram", "Random Access Memory", 200, "", BLANK1, Dyes.dyeCyan, TierEU.RECIPE_MV, 2e-3f, 4e-3f, 40, 2, ItemList.Circuit_Wafer_Ram.get(1), ItemList.Circuit_Silicon_Wafer), - NAND("nand", "NAND", 200, "", BLANK2, Dyes._NULL, 7e-3f, 12e-3f, 50, 1, ItemList.Circuit_Wafer_NAND.get(1), - ItemList.Circuit_Silicon_Wafer), // NAND uses only Ender Pearl lens, don't ask me why - NOR("nor", "NOR", 100, "", BLANK2, Dyes._NULL, 8e-3f, 10e-3f, 50, 1, ItemList.Circuit_Wafer_NOR.get(1), - ItemList.Circuit_Silicon_Wafer, ItemList.Circuit_Silicon_Wafer2), // Same as above, but with ender eye - CPU("cpu", "Central Processing Unit", 10, "", BLANK2, Dyes.dyeWhite, 6e-3f, 12e-3f, 50, 2, + NAND("nand", "NAND", 200, "", BLANK2, Dyes._NULL, TierEU.RECIPE_HV, 7e-3f, 12e-3f, 40, 1, + ItemList.Circuit_Wafer_NAND.get(1), ItemList.Circuit_Silicon_Wafer), // NAND uses only Ender Pearl lens, don't + // ask me why + NOR("nor", "NOR", 100, "", BLANK2, Dyes._NULL, TierEU.RECIPE_LuV, 8e-3f, 10e-3f, 40, 1, + ItemList.Circuit_Wafer_NOR.get(1), ItemList.Circuit_Silicon_Wafer, ItemList.Circuit_Silicon_Wafer2), // Same as + // above, + // but with + // ender + // eye + CPU("cpu", "Central Processing Unit", 10, "", BLANK2, Dyes.dyeWhite, TierEU.RECIPE_MV, 6e-3f, 12e-3f, 45, 2, ItemList.Circuit_Wafer_CPU.get(1)), - SOC("soc", "SoC", 150, "", BLANK2, Dyes.dyeYellow, 3e-3f, 10e-3f, 50, 2, ItemList.Circuit_Wafer_SoC.get(1), - ItemList.Circuit_Silicon_Wafer, ItemList.Circuit_Silicon_Wafer2), - ASOC("asoc", "Advanced SoC", 120, "", BLANK2, Dyes.dyeGreen, 100e-3f, 200e-3f, 50, 2, + SOC("soc", "SoC", 150, "", BLANK2, Dyes.dyeYellow, TierEU.RECIPE_EV, 3e-3f, 10e-3f, 45, 2, + ItemList.Circuit_Wafer_SoC.get(1), ItemList.Circuit_Silicon_Wafer, ItemList.Circuit_Silicon_Wafer2), + ASOC("asoc", "Advanced SoC", 120, "", BLANK2, Dyes.dyeGreen, TierEU.RECIPE_EV, 100e-3f, 200e-3f, 50, 2, ItemList.Circuit_Wafer_SoC2.get(1), ItemList.Circuit_Silicon_Wafer, ItemList.Circuit_Silicon_Wafer2), - PIC("pic", "Power IC", 100, "", BLANK2, Dyes.dyeBlue, 5e-3f, 10e-3f, 50, 4, ItemList.Circuit_Wafer_PIC.get(1), - ItemList.Circuit_Silicon_Wafer), - HPIC("hpic", "High Power IC", 80, "", BLANK3, null, 100e-3f, 200e-3f, 50, 6, ItemList.Circuit_Wafer_HPIC.get(1), - ItemList.Circuit_Silicon_Wafer), // Different, made in chemical reactor. Figure out something for + PIC("pic", "Power IC", 100, "", BLANK2, Dyes.dyeBlue, TierEU.RECIPE_HV, 5e-3f, 10e-3f, 50, 4, + ItemList.Circuit_Wafer_PIC.get(1), ItemList.Circuit_Silicon_Wafer), + HPIC("hpic", "High Power IC", 80, "", BLANK3, null, TierEU.RECIPE_IV, 100e-3f, 200e-3f, 50, 6, + ItemList.Circuit_Wafer_HPIC.get(1), ItemList.Circuit_Silicon_Wafer), // Different, made in chemical reactor. + // Figure out something for // this later? - NCPU("ncpu", "NanoCPU", 60, "", BLANK2, null, 5e-3f, 10e-3f, 50, 4, ItemList.Circuit_Wafer_NanoCPU.get(1), - ItemList.Circuit_Silicon_Wafer), // Same as above - QBIT("qbit", "QBit", 50, "", BLANK2, null, 3e-3f, 10e-3f, 50, 4, ItemList.Circuit_Wafer_QuantumCPU.get(1), - ItemList.Circuit_Silicon_Wafer), // ^ - UHPIC("uhpic", "Ultra High Power IC", 60, "", BLANK3, null, 200e-3f, 400e-3f, 50, 8, + NCPU("ncpu", "NanoCPU", 60, "", BLANK2, null, TierEU.RECIPE_EV, 5e-3f, 10e-3f, 50, 4, + ItemList.Circuit_Wafer_NanoCPU.get(1), ItemList.Circuit_Silicon_Wafer), // Same as above + QBIT("qbit", "QBit", 50, "", BLANK2, null, TierEU.RECIPE_EV, 3e-3f, 10e-3f, 50, 4, + ItemList.Circuit_Wafer_QuantumCPU.get(1), ItemList.Circuit_Silicon_Wafer), // ^ + UHPIC("uhpic", "Ultra High Power IC", 60, "", BLANK3, null, TierEU.RECIPE_LuV, 200e-3f, 400e-3f, 50, 8, ItemList.Circuit_Wafer_UHPIC.get(1), ItemList.Circuit_Silicon_Wafer, ItemList.Circuit_Silicon_Wafer2), // You // get // the // gist - SSOC("ssoc", "Simple SoC", 150, "", BLANK1, Dyes.dyeOrange, 2e-3f, 4e-3f, 50, 1, + SSOC("ssoc", "Simple SoC", 150, "", BLANK1, Dyes.dyeOrange, TierEU.RECIPE_MV, 2e-3f, 4e-3f, 25, 1, ItemList.Circuit_Wafer_Simple_SoC.get(1)), - ULPIC("ulpic", "Ultra Low Power IC", 200, "", BLANK1, Dyes.dyeGreen, 2e-3f, 4e-3f, 50, 1, + ULPIC("ulpic", "Ultra Low Power IC", 200, "", BLANK1, Dyes.dyeGreen, TierEU.RECIPE_LV, 2e-3f, 4e-3f, 30, 1, ItemList.Circuit_Wafer_ULPIC.get(1)), // Can use green for this as well as asoc, given // the latter uses a different base mask - LPIC("lpic", "Low Power IC", 150, "", BLANK1, Dyes.dyeYellow, 2e-3f, 4e-3f, 50, 2, + LPIC("lpic", "Low Power IC", 150, "", BLANK1, Dyes.dyeYellow, TierEU.RECIPE_MV, 2e-3f, 4e-3f, 30, 2, ItemList.Circuit_Wafer_LPIC.get(1)), // Same as above, except for yellow - NPIC("npic", "Nano Power IC", 70, "", BLANK3, Dyes.dyeRed, 1, 100000, 50, 4, ItemList.Circuit_Wafer_NPIC.get(1), - ItemList.Circuit_Silicon_Wafer, ItemList.Circuit_Silicon_Wafer2, ItemList.Circuit_Silicon_Wafer3), // Same - PPIC("ppic", "PPIC", 50, "", BLANK3, null, 10, 15, 50, 6, ItemList.Circuit_Wafer_PPIC.get(1), + NPIC("npic", "Nano Power IC", 70, "", BLANK3, Dyes.dyeRed, TierEU.RECIPE_LuV, 1, 100000, 50, 4, + ItemList.Circuit_Wafer_NPIC.get(1), ItemList.Circuit_Silicon_Wafer, ItemList.Circuit_Silicon_Wafer2, + ItemList.Circuit_Silicon_Wafer3), // Same + PPIC("ppic", "PPIC", 50, "", BLANK3, null, TierEU.RECIPE_ZPM, 10, 15, 50, 6, ItemList.Circuit_Wafer_PPIC.get(1), ItemList.Circuit_Silicon_Wafer, ItemList.Circuit_Silicon_Wafer2, ItemList.Circuit_Silicon_Wafer3), // CR // recipe - QPIC("qpic", "QPIC", 50, "", BLANK3, Dyes.dyeBlue, 5, 9, 50, 6, ItemList.Circuit_Wafer_QPIC.get(1), - ItemList.Circuit_Silicon_Wafer, ItemList.Circuit_Silicon_Wafer2, ItemList.Circuit_Silicon_Wafer3, - ItemList.Circuit_Silicon_Wafer4); // Different base mask to PIC + QPIC("qpic", "QPIC", 50, "", BLANK3, Dyes.dyeBlue, TierEU.RECIPE_UV, 5, 9, 50, 6, + ItemList.Circuit_Wafer_QPIC.get(1), ItemList.Circuit_Silicon_Wafer, ItemList.Circuit_Silicon_Wafer2, + ItemList.Circuit_Silicon_Wafer3, ItemList.Circuit_Silicon_Wafer4); // Different base mask to PIC String name; String englishName; @@ -69,6 +77,8 @@ public enum MaskList { MaskList precursor; Dyes lensColour; + long engraverEUt; + float minEnergy; float maxEnergy; @@ -80,7 +90,7 @@ public enum MaskList { ItemList[] forbiddenWafers; MaskList(String name, String englishName, int maxDamage, String spectrum, MaskList precursor, Dyes lensColour, - float minEnergy, float maxEnergy, float minFocus, int baselineAmount, ItemStack producedItem, + long engraverEUt, float minEnergy, float maxEnergy, float minFocus, int baselineAmount, ItemStack producedItem, ItemList... forbiddenWafers) { this.name = name; this.englishName = englishName; @@ -88,6 +98,7 @@ public enum MaskList { this.maxDamage = maxDamage; this.precursor = precursor; this.lensColour = lensColour; + this.engraverEUt = engraverEUt; this.minFocus = minFocus; this.minEnergy = minEnergy; this.maxEnergy = maxEnergy; @@ -120,6 +131,10 @@ public enum MaskList { return this.lensColour; } + public long getEngraverEUt() { + return this.engraverEUt; + } + public float getMinEnergy() { return this.minEnergy; } diff --git a/src/main/java/com/elisis/gtnhlanth/common/register/LanthItemList.java b/src/main/java/com/elisis/gtnhlanth/common/register/LanthItemList.java index 1b799ac84a..2d5d976fea 100644 --- a/src/main/java/com/elisis/gtnhlanth/common/register/LanthItemList.java +++ b/src/main/java/com/elisis/gtnhlanth/common/register/LanthItemList.java @@ -75,6 +75,8 @@ public final class LanthItemList { public static final Block ANTENNA_CASING_T1 = new AntennaCasing(1); public static final Block ANTENNA_CASING_T2 = new AntennaCasing(2); + public static final Block NIOBIUM_CAVITY_CASING = new Casing("niobium_cavity"); + public static final Block FOCUS_MANIPULATION_CASING = new Casing("focus_manipulator"); public static final Block FOCUS_HOLDER = new Casing("focus_holder"); @@ -141,6 +143,8 @@ public final class LanthItemList { GameRegistry.registerBlock(ANTENNA_CASING_T2, ANTENNA_CASING_T2.getUnlocalizedName()); + GameRegistry.registerBlock(NIOBIUM_CAVITY_CASING, NIOBIUM_CAVITY_CASING.getUnlocalizedName()); + GameRegistry.registerBlock(FOCUS_MANIPULATION_CASING, FOCUS_MANIPULATION_CASING.getUnlocalizedName()); GameRegistry.registerBlock(FOCUS_HOLDER, FOCUS_HOLDER.getUnlocalizedName()); diff --git a/src/main/java/com/elisis/gtnhlanth/common/register/WerkstoffMaterialPool.java b/src/main/java/com/elisis/gtnhlanth/common/register/WerkstoffMaterialPool.java index a6e806ca86..26a3cb65e3 100644 --- a/src/main/java/com/elisis/gtnhlanth/common/register/WerkstoffMaterialPool.java +++ b/src/main/java/com/elisis/gtnhlanth/common/register/WerkstoffMaterialPool.java @@ -1993,6 +1993,17 @@ public class WerkstoffMaterialPool implements Runnable { offsetID3b + 9, TextureSet.SET_DULL); + public static final Werkstoff NitrogenPlasmaSilaneMix = new Werkstoff( + new short[] { 140, 125, 220 }, + "Silane-Nitrogen Plasma Mixture", + subscriptNumbers("SiH4/N"), + new Werkstoff.Stats(), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable() + .addCells(), + offsetID3b + 10, + TextureSet.SET_FLUID); + public static void runInit() { addSubTags(); } diff --git a/src/main/java/com/elisis/gtnhlanth/common/tileentity/LINAC.java b/src/main/java/com/elisis/gtnhlanth/common/tileentity/LINAC.java index e456813bc6..98b20becb7 100644 --- a/src/main/java/com/elisis/gtnhlanth/common/tileentity/LINAC.java +++ b/src/main/java/com/elisis/gtnhlanth/common/tileentity/LINAC.java @@ -178,15 +178,20 @@ public class LINAC extends GT_MetaTileEntity_EnhancedMultiBlockBase<LINAC> imple final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder(); tt.addMachineType("Particle Accelerator") .addInfo("Controller block for the LINAC") + .addInfo("Accelerates charged particles to higher energies") + .addInfo("Increasing length increases output energy, but decreases focus") + .addInfo("Use a lower temperature coolant to improve focus") // .addInfo("Extendable, with a minimum length of 18 blocks") .addInfo(DescTextLocalization.BLUEPRINT_INFO) .addInfo(DescTextLocalization.BEAMLINE_SCANNER_INFO) .addInfo("Valid Coolants:"); // Valid coolant list - for (Fluid fluid : BeamlineRecipeLoader.coolantMap.keySet()) { + for (String fluidName : BeamlineRecipeLoader.coolantMap.keySet()) { - tt.addInfo("- " + fluid.getLocalizedName(new FluidStack(fluid, 1))); + tt.addInfo( + "- " + FluidRegistry.getFluid(fluidName) + .getLocalizedName(null)); } @@ -334,17 +339,27 @@ public class LINAC extends GT_MetaTileEntity_EnhancedMultiBlockBase<LINAC> imple // weigh the former by the latter long voltage = this.getMaxInputVoltage(); - voltageFactor = calculateVoltageFactor(voltage); + // voltageFactor = calculateVoltageFactor(voltage); - machineEnergy = Math.max(-((60) / this.length) * voltageFactor + 60_000, 2000); // Minimum of 2000keV + // machineEnergy = Math.max(-((60) / this.length) * voltageFactor + 60_000, 2000); // Minimum of 2000keV + + machineEnergy = (float) Math.max(length / 4 * Math.pow(voltage, 1.0 / 3.0), 50); // Minimum of 50keV inputEnergy = this.getInputInformation() .getEnergy(); - outputEnergy = Math.min( - (1 + inputEnergy / Particle.getParticleFromId(outputParticle) - .maxSourceEnergy()) * machineEnergy, - 120_000); // TODO more complex calculation than just - // addition + /* + * outputEnergy = Math.min( + * (1 + inputEnergy / Particle.getParticleFromId(outputParticle) + * .maxSourceEnergy()) * machineEnergy, + * 120_000); // TODO more complex calculation than just + * // addition + */ + + outputEnergy = (float) Math.pow( + 10, + 1 + inputEnergy / Particle.getParticleFromId(outputParticle) + .maxSourceEnergy()) + * machineEnergy; inputRate = this.getInputInformation() .getRate(); @@ -359,13 +374,17 @@ public class LINAC extends GT_MetaTileEntity_EnhancedMultiBlockBase<LINAC> imple primFluid.amount -= fluidConsumed; - FluidStack fluidOutput = new FluidStack( - BeamlineRecipeLoader.coolantMap.get(primFluid.getFluid()), - fluidConsumed); + Fluid fluidOutput = BeamlineRecipeLoader.coolantMap.get( + primFluid.getFluid() + .getName()); if (Objects.isNull(fluidOutput)) return false; - this.addFluidOutputs(new FluidStack[] { fluidOutput }); + FluidStack fluidOutputStack = new FluidStack(fluidOutput, fluidConsumed); + + if (Objects.isNull(fluidOutputStack)) return false; + + this.addFluidOutputs(new FluidStack[] { fluidOutputStack }); outputAfterRecipe(); @@ -552,11 +571,12 @@ public class LINAC extends GT_MetaTileEntity_EnhancedMultiBlockBase<LINAC> imple return factor; } - private static float calculateVoltageFactor(long voltage) { - - float factor = (float) Math.pow(1.00009, -(0.1 * voltage - 114000)); - return factor; - } + /* + * private static float calculateVoltageFactor(long voltage) { + * float factor = (float) Math.pow(1.00009, -(0.1 * voltage - 114000)); + * return factor; + * } + */ @Override public String[] getStructureDescription(ItemStack arg0) { diff --git a/src/main/java/com/elisis/gtnhlanth/common/tileentity/Synchrotron.java b/src/main/java/com/elisis/gtnhlanth/common/tileentity/Synchrotron.java index 6733bc5338..ee63bc8d20 100644 --- a/src/main/java/com/elisis/gtnhlanth/common/tileentity/Synchrotron.java +++ b/src/main/java/com/elisis/gtnhlanth/common/tileentity/Synchrotron.java @@ -442,8 +442,8 @@ public class Synchrotron extends GT_MetaTileEntity_EnhancedMultiBlockBase<Synchr .addElement('k', ofBlock(GregTech_API.sBlockCasings1, 15)) // Superconducting coils .addElement('d', ofBlock(LanthItemList.COOLANT_DELIVERY_CASING, 0)) .addElement('e', buildHatchAdder(Synchrotron.class).atLeast(ImmutableMap.of(Energy, 4)).dot(6).casingIndex(CASING_INDEX).build()) - .addElement('n', ofBlock(GregTech_API.sBlockMetal5, 5)) //Niobium Blocks - .addElement('a', ofBlockAdder(Synchrotron::addAntenna, LanthItemList.ANTENNA_CASING_T1, 3)) //Antenna Casings + .addElement('n', ofBlock(LanthItemList.NIOBIUM_CAVITY_CASING, 0)) + .addElement('a', ofBlockAdder(Synchrotron::addAntenna, LanthItemList.ANTENNA_CASING_T1, 0)) //Antenna Casings .addElement('i', buildHatchAdder(Synchrotron.class).atLeast(ImmutableMap.of(InputHatch, 2)).dot(4).casingIndex(CASING_INDEX).build()) .addElement('o', buildHatchAdder(Synchrotron.class).atLeast(ImmutableMap.of(OutputHatch, 2)).dot(5).casingIndex(CASING_INDEX).build()) .addElement('v', buildHatchAdder(Synchrotron.class).hatchClass(TileHatchInputBeamline.class).casingIndex(CASING_INDEX) @@ -500,9 +500,11 @@ public class Synchrotron extends GT_MetaTileEntity_EnhancedMultiBlockBase<Synchr .addInfo("Valid Coolants:"); // Valid coolant list - for (Fluid fluid : BeamlineRecipeLoader.coolantMap.keySet()) { + for (String fluidName : BeamlineRecipeLoader.coolantMap.keySet()) { - tt.addInfo("- " + fluid.getLocalizedName(new FluidStack(fluid, 1))); + tt.addInfo( + "- " + FluidRegistry.getFluid(fluidName) + .getLocalizedName(null)); } @@ -512,7 +514,7 @@ public class Synchrotron extends GT_MetaTileEntity_EnhancedMultiBlockBase<Synchr .addController("Front middle") .addCasingInfoExactly(LanthItemList.SHIELDED_ACCELERATOR_CASING.getLocalizedName(), 676, false) .addCasingInfoExactly("Superconducting Coil Block", 90, false) - .addCasingInfoExactly("Niobium Block", 64, false) + .addCasingInfoExactly("Niobium Cavity Casing", 64, false) .addCasingInfoExactly(LanthItemList.COOLANT_DELIVERY_CASING.getLocalizedName(), 28, false) .addCasingInfoExactly("Borosilicate Glass Block (LuV+)", 16, false) .addCasingInfoExactly("Antenna Casing (must match)", 4, true) @@ -781,12 +783,17 @@ public class Synchrotron extends GT_MetaTileEntity_EnhancedMultiBlockBase<Synchr primaryFluid.amount -= CONSUMED_FLUID; - FluidStack fluidOutput = new FluidStack( - BeamlineRecipeLoader.coolantMap.get(primaryFluid.getFluid()), - CONSUMED_FLUID); + Fluid fluidOutput = BeamlineRecipeLoader.coolantMap.get( + primaryFluid.getFluid() + .getName()); + if (Objects.isNull(fluidOutput)) return false; - this.addFluidOutputs(new FluidStack[] { fluidOutput }); + FluidStack fluidOutputStack = new FluidStack(fluidOutput, CONSUMED_FLUID); + + if (Objects.isNull(fluidOutputStack)) return false; + + this.addFluidOutputs(new FluidStack[] { fluidOutputStack }); outputAfterRecipe(); diff --git a/src/main/java/com/elisis/gtnhlanth/common/tileentity/TargetChamber.java b/src/main/java/com/elisis/gtnhlanth/common/tileentity/TargetChamber.java index 1fde839173..ad696f8fd3 100644 --- a/src/main/java/com/elisis/gtnhlanth/common/tileentity/TargetChamber.java +++ b/src/main/java/com/elisis/gtnhlanth/common/tileentity/TargetChamber.java @@ -304,10 +304,12 @@ public class TargetChamber extends GT_MetaTileEntity_EnhancedMultiBlockBase<Targ if (inputParticle != tRecipe.particleId) return false; - this.mMaxProgresstime = Math.round((tRecipe.amount / inputRate * 10 * TickTime.SECOND)); // 10 seconds per - // integer multiple + this.mMaxProgresstime = Math.max(Math.round((tRecipe.amount / inputRate * 5 * TickTime.SECOND)), 1); // 5 + // seconds + // per + // integer multiple // over the rate. E.g., 100a, 10r - // would equal 100 seconds + // would equal 50 seconds if (this.mMaxProgresstime == Integer.MAX_VALUE - 1 && this.mEUt == Integer.MAX_VALUE - 1) return false; mEUt = (int) -tVoltage; diff --git a/src/main/java/com/elisis/gtnhlanth/common/tileentity/recipe/beamline/BeamlineRecipeLoader.java b/src/main/java/com/elisis/gtnhlanth/common/tileentity/recipe/beamline/BeamlineRecipeLoader.java index 5b2ca7b650..2c5eef4ea0 100644 --- a/src/main/java/com/elisis/gtnhlanth/common/tileentity/recipe/beamline/BeamlineRecipeLoader.java +++ b/src/main/java/com/elisis/gtnhlanth/common/tileentity/recipe/beamline/BeamlineRecipeLoader.java @@ -22,7 +22,7 @@ import gtPlusPlus.core.material.ELEMENT; public class BeamlineRecipeLoader { - public static final HashMap<Fluid, Fluid> coolantMap = new HashMap<>(); + public static final HashMap<String, Fluid> coolantMap = new HashMap<>(); private static final ItemList[] VIABLE_WAFERS = new ItemList[] { ItemList.Circuit_Silicon_Wafer, ItemList.Circuit_Silicon_Wafer2, ItemList.Circuit_Silicon_Wafer3, ItemList.Circuit_Silicon_Wafer4, @@ -36,18 +36,21 @@ public class BeamlineRecipeLoader { coolantMap.put( Materials.LiquidNitrogen.getGas(1L) - .getFluid(), + .getFluid() + .getName(), Materials.Nitrogen.getGas(1L) .getFluid()); coolantMap.put( Materials.LiquidOxygen.getGas(1L) - .getFluid(), + .getFluid() + .getName(), Materials.Oxygen.getGas(1L) .getFluid()); - coolantMap.put(FluidRegistry.getFluid("ic2coolant"), FluidRegistry.getFluid("ic2hotcoolant")); + coolantMap.put("ic2coolant", FluidRegistry.getFluid("ic2hotcoolant")); coolantMap.put( Materials.SuperCoolant.getFluid(1L) - .getFluid(), + .getFluid() + .getName(), Materials.Water.getFluid(1L) .getFluid()); diff --git a/src/main/java/com/elisis/gtnhlanth/loader/RecipeLoader.java b/src/main/java/com/elisis/gtnhlanth/loader/RecipeLoader.java index c5e68d6a83..e568ea219c 100644 --- a/src/main/java/com/elisis/gtnhlanth/loader/RecipeLoader.java +++ b/src/main/java/com/elisis/gtnhlanth/loader/RecipeLoader.java @@ -351,6 +351,17 @@ public class RecipeLoader { .eut(TierEU.RECIPE_IV) .addTo(AssemblyLine); + // Niobium Cavity Casing + GT_Values.RA.stdBuilder() + .itemInputs( + GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Niobium, 1), + Materials.Niobium.getPlates(6)) + .fluidInputs(Materials.Helium.getGas(2000)) + .itemOutputs(new ItemStack(LanthItemList.NIOBIUM_CAVITY_CASING, 1)) + .duration(12 * GT_RecipeBuilder.SECONDS) + .eut(7680) + .addTo(assemblerRecipes); + // Focus Manipulator GT_Values.RA.stdBuilder() .fluidInputs( @@ -530,6 +541,24 @@ public class RecipeLoader { .eut(TierEU.RECIPE_EV) .addTo(multiblockChemicalReactorRecipes); + /* + * GT_Values.RA.stdBuilder() + * .fluidInputs(Materials.Nitrogen.getPlasma(4000), Materials.Silane.getFluid(2000)) + * .fluidOutputs(WerkstoffMaterialPool.NitrogenPlasmaSilaneMix.getFluidOrGas(6000)) + * .duration(20 * GT_RecipeBuilder.SECONDS) + * .eut(7680) + * .addTo(mixerNonCellRecipes); + */ + + GT_Values.RA.stdBuilder() + .fluidInputs(Materials.Nitrogen.getPlasma(4000)) + .itemInputs(Materials.Silane.getCells(2)) + .fluidOutputs(WerkstoffMaterialPool.NitrogenPlasmaSilaneMix.getFluidOrGas(6000)) + .duration(20 * GT_RecipeBuilder.SECONDS) + .eut(7680) + .noOptimize() + .addTo(mixerRecipes); + // NB: http://www.smfl.rit.edu/pdf/process/process_nitride_etch_paper.pdf // Reactive Ion Etchant GT_Values.RA.stdBuilder() @@ -558,8 +587,8 @@ public class RecipeLoader { .itemOutputs(new ItemStack(LanthItemList.maskMap.get(MaskList.BLANK1))) .outputChances(10000) .requiresCleanRoom() - .duration(12 * SECONDS) - .eut(TierEU.RECIPE_EV) + .duration(144 * SECONDS) + .eut(TierEU.RECIPE_LuV) .addTo(autoclaveRecipes); /* @@ -577,18 +606,18 @@ public class RecipeLoader { .fluidInputs(Materials.Silane.getGas(4000)) .itemOutputs(new ItemStack(LanthItemList.SUBSTRATE_PRECURSOR)) .duration(60 * GT_RecipeBuilder.SECONDS) - .eut(TierEU.RECIPE_HV) + .eut(TierEU.RECIPE_LuV) .requiresCleanRoom() .addTo(autoclaveRecipes); // Now to deposit nitride GT_Values.RA.stdBuilder() - .itemInputs(new ItemStack(LanthItemList.SUBSTRATE_PRECURSOR), Materials.Silane.getCells(2)) - .fluidInputs(Materials.Nitrogen.getPlasma(4000)) + .itemInputs(new ItemStack(LanthItemList.SUBSTRATE_PRECURSOR)) + .fluidInputs(WerkstoffMaterialPool.NitrogenPlasmaSilaneMix.getFluidOrGas(4000)) .fluidOutputs(Materials.Nitrogen.getGas(3000)) .itemOutputs(new ItemStack(LanthItemList.MASK_SUBSTRATE), Materials.Empty.getCells(2)) .duration(30 * GT_RecipeBuilder.SECONDS) - .eut(TierEU.RECIPE_EV) + .eut(TierEU.RECIPE_LuV) .specialValue(3200) .requiresCleanRoom() .addTo(blastFurnaceRecipes); @@ -606,8 +635,8 @@ public class RecipeLoader { GT_Values.RA.stdBuilder() .itemInputs(GT_Utility.copyAmount(0, lens), new ItemStack(LanthItemList.MASK_SUBSTRATE)) .itemOutputs(new ItemStack(LanthItemList.MASKED_MASK)) - .duration(60 * GT_RecipeBuilder.SECONDS) - .eut(TierEU.RECIPE_EV) + .duration(30 * GT_RecipeBuilder.SECONDS) + .eut(TierEU.RECIPE_IV) .requiresCleanRoom() .addTo(WaferEngravingRecipes); @@ -618,11 +647,11 @@ public class RecipeLoader { .fluidInputs(WerkstoffMaterialPool.FluoroformOxygenMix.getFluidOrGas(4000)) .itemOutputs(new ItemStack(LanthItemList.ETCHED_MASK_1)) .duration(60 * GT_RecipeBuilder.SECONDS) - .eut(TierEU.RECIPE_EV) + .eut(TierEU.RECIPE_LuV) .requiresCleanRoom() .addTo(autoclaveRecipes); - // Etch pt. 2 with KOH + // Etch pt. 2 with LiCl GT_Values.RA.stdBuilder() .fluidInputs(Materials.Argon.getGas(1000)) .itemInputs( @@ -630,8 +659,8 @@ public class RecipeLoader { MyMaterial.lithiumChloride.get(OrePrefixes.dust, 2), GT_ModHandler.getModItem(NewHorizonsCoreMod.ID, "item.PotassiumHydroxideDust", 4)) .itemOutputs(new ItemStack(LanthItemList.maskMap.get(MaskList.BLANK2))) - .duration(25 * GT_RecipeBuilder.SECONDS) - .eut(TierEU.RECIPE_EV) + .duration(80 * GT_RecipeBuilder.SECONDS) + .eut(TierEU.RECIPE_ZPM) .specialValue(2400) .addTo(blastFurnaceRecipes); @@ -643,8 +672,8 @@ public class RecipeLoader { Materials.Gold.getPlates(2)) .fluidInputs(Materials.Hydrogen.getGas(1000)) .itemOutputs(new ItemStack(LanthItemList.maskMap.get(MaskList.BLANK3))) - .duration(10 * GT_RecipeBuilder.SECONDS) - .eut(TierEU.RECIPE_EV) + .duration(2 * GT_RecipeBuilder.MINUTES) + .eut(TierEU.RECIPE_ZPM) .specialValue(3600) .addTo(blastFurnaceRecipes); @@ -666,9 +695,10 @@ public class RecipeLoader { .fluidInputs(Materials.Sunnarium.getMolten(1440L)) .itemOutputs(new ItemStack(LanthItemList.maskMap.get(MaskList.PPIC))) .duration(60 * GT_RecipeBuilder.SECONDS) - .eut(TierEU.RECIPE_ZPM) + .eut(mask.getEngraverEUt()) .requiresCleanRoom() - .addTo(UniversalChemical); + .addTo(UniversalChemical); // This is incredibly boring and doesn't make much sense, fix at some + // point. Maybe engrave again from precursor? } else if (mask == MaskList.HPIC) { GT_Values.RA.stdBuilder() @@ -678,7 +708,7 @@ public class RecipeLoader { .fluidInputs(Materials.VanadiumGallium.getMolten(288L)) .itemOutputs(new ItemStack(LanthItemList.maskMap.get(MaskList.HPIC))) .duration(60 * GT_RecipeBuilder.SECONDS) - .eut(TierEU.RECIPE_IV) + .eut(mask.getEngraverEUt()) .requiresCleanRoom() .addTo(UniversalChemical); @@ -691,7 +721,7 @@ public class RecipeLoader { .fluidInputs(Materials.Naquadah.getMolten(576L)) .itemOutputs(new ItemStack(LanthItemList.maskMap.get(MaskList.UHPIC))) .duration(60 * GT_RecipeBuilder.SECONDS) - .eut(TierEU.RECIPE_LuV) + .eut(mask.getEngraverEUt()) .requiresCleanRoom() .addTo(UniversalChemical); @@ -704,7 +734,7 @@ public class RecipeLoader { .fluidInputs(Materials.Glowstone.getMolten(576L)) .itemOutputs(new ItemStack(LanthItemList.maskMap.get(MaskList.NCPU))) .duration(60 * GT_RecipeBuilder.SECONDS) - .eut(TierEU.RECIPE_EV) + .eut(mask.getEngraverEUt()) .requiresCleanRoom() .addTo(UniversalChemical); @@ -717,7 +747,7 @@ public class RecipeLoader { .fluidInputs(Materials.Radon.getGas(50L)) .itemOutputs(new ItemStack(LanthItemList.maskMap.get(MaskList.QBIT))) .duration(60 * GT_RecipeBuilder.SECONDS) - .eut(TierEU.RECIPE_EV) + .eut(mask.getEngraverEUt()) .requiresCleanRoom() .addTo(UniversalChemical); @@ -726,7 +756,7 @@ public class RecipeLoader { .fluidInputs(Materials.GalliumArsenide.getMolten(288L)) .itemOutputs(new ItemStack(LanthItemList.maskMap.get(MaskList.QBIT))) .duration(45 * GT_RecipeBuilder.SECONDS) - .eut(TierEU.RECIPE_EV) + .eut(mask.getEngraverEUt()) .requiresCleanRoom() .addTo(UniversalChemical); @@ -747,7 +777,7 @@ public class RecipeLoader { .itemOutputs(new ItemStack(LanthItemList.maskMap.get(mask))) .requiresCleanRoom() .duration(120 * SECONDS) - .eut(TierEU.RECIPE_EV) + .eut(mask.getEngraverEUt()) .addTo(WaferEngravingRecipes); } else if (mask == MaskList.NOR) { @@ -759,7 +789,7 @@ public class RecipeLoader { .itemOutputs(new ItemStack(LanthItemList.maskMap.get(mask))) .requiresCleanRoom() .duration(120 * SECONDS) - .eut(TierEU.RECIPE_EV) + .eut(mask.getEngraverEUt()) .addTo(WaferEngravingRecipes); } @@ -777,7 +807,7 @@ public class RecipeLoader { .itemOutputs(new ItemStack(LanthItemList.maskMap.get(mask))) .requiresCleanRoom() .duration(120 * SECONDS) - .eut(TierEU.RECIPE_EV) + .eut(mask.getEngraverEUt()) .addTo(WaferEngravingRecipes); } @@ -1029,6 +1059,16 @@ public class RecipeLoader { .eut(450) .addTo(UniversalChemical); + // La + 6HCl = LaCl3 + 3H + GT_Values.RA.stdBuilder() + .itemInputs(Materials.Lanthanum.getDust(1), GT_Utility.getIntegratedCircuit(1)) + .fluidInputs(Materials.HydrochloricAcid.getFluid(3000)) + .itemOutputs(WerkstoffMaterialPool.LanthaniumChloride.get(OrePrefixes.dust, 4)) + .fluidOutputs(Materials.Hydrogen.getGas(3000)) + .duration(10 * SECONDS) + .eut(480) + .addTo(UniversalChemical); + // Lanthanum Oxide GT_Values.RA.stdBuilder() .fluidInputs(Materials.Water.getFluid(3000)) @@ -1063,7 +1103,7 @@ public class RecipeLoader { .fluidInputs(WerkstoffMaterialPool.BoronTrichloride.getFluidOrGas(8000)) .fluidOutputs(FluidRegistry.getFluidStack("boricacid", 1000)) .itemInputs(WerkstoffMaterialPool.LanthanumOxide.get(OrePrefixes.dust, 1)) - .itemOutputs(WerkstoffMaterialPool.LanthanumHexaboride.get(OrePrefixes.gemChipped)) + .itemOutputs(WerkstoffMaterialPool.LanthanumHexaboride.get(OrePrefixes.gemFlawless)) .duration(60 * GT_RecipeBuilder.SECONDS) .eut(TierEU.RECIPE_IV) .addTo(autoclaveRecipes); diff --git a/src/main/resources/assets/gtnhlanth/lang/en_US.lang b/src/main/resources/assets/gtnhlanth/lang/en_US.lang index 7b3568b390..b9729347d5 100644 --- a/src/main/resources/assets/gtnhlanth/lang/en_US.lang +++ b/src/main/resources/assets/gtnhlanth/lang/en_US.lang @@ -54,7 +54,7 @@ LINAC.hint.10=Dot 4: Beamline Output Hatch Synchrotron.hint.0=676x Shielded Accelerator Casing Synchrotron.hint.1=90x Superconducting Coil Block -Synchrotron.hint.2=64x Niobium Block +Synchrotron.hint.2=64x Niobium Cavity Machine Casing Synchrotron.hint.3=28x Coolant Delivery Casing Synchrotron.hint.4=16x Borosilicate Glass (LuV+) Synchrotron.hint.5=4x Antenna Casing @@ -119,6 +119,7 @@ casing.electrode.name=Electrode Casing casing.coolant_delivery.name=Coolant Delivery Casing casing.antenna_t1.name=Antenna Casing (T1) casing.antenna_t2.name=Antenna Casing (T2) +casing.niobium_cavity.name=Niobium Cavity Machine Casing casing.focus_manipulator.name=Focus Manipulator casing.focus_holder.name=Focus Holder casing.target_receptacle.name=Target Receptacle diff --git a/src/main/resources/assets/gtnhlanth/textures/blocks/casing.niobium_cavity.png b/src/main/resources/assets/gtnhlanth/textures/blocks/casing.niobium_cavity.png Binary files differnew file mode 100644 index 0000000000..bb9c93beec --- /dev/null +++ b/src/main/resources/assets/gtnhlanth/textures/blocks/casing.niobium_cavity.png |