aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/bartworks/API/BioObjectAdder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bartworks/API/BioObjectAdder.java')
-rw-r--r--src/main/java/bartworks/API/BioObjectAdder.java196
1 files changed, 196 insertions, 0 deletions
diff --git a/src/main/java/bartworks/API/BioObjectAdder.java b/src/main/java/bartworks/API/BioObjectAdder.java
new file mode 100644
index 0000000000..d82124ac57
--- /dev/null
+++ b/src/main/java/bartworks/API/BioObjectAdder.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) 2018-2020 bartimaeusnek Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+ * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial
+ * portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+package bartworks.API;
+
+import static gregtech.api.enums.Mods.Gendustry;
+import static gregtech.api.recipe.RecipeMaps.centrifugeRecipes;
+import static gregtech.api.util.GTRecipeBuilder.SECONDS;
+
+import java.awt.Color;
+
+import net.minecraft.item.EnumRarity;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+
+import bartworks.util.BioCulture;
+import bartworks.util.BioDNA;
+import bartworks.util.BioData;
+import bartworks.util.BioPlasmid;
+import gregtech.api.enums.FluidState;
+import gregtech.api.enums.GTValues;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.TierEU;
+import gregtech.api.fluid.GTFluidFactory;
+import gregtech.api.util.GTUtility;
+
+public final class BioObjectAdder {
+
+ /**
+ * @param color the color of the Culture
+ * @param name the name of the Culture
+ * @param plasmid the cultures plasmid, get it from createAndRegisterBioPlasmid
+ * @param dna the cultures dna, get it from createAndRegisterBioDNA
+ * @param breedable if the culture can be inserted into the BacterialVat
+ * @param rarity visual
+ * @return
+ */
+ public static BioCulture createAndRegisterBioCulture(Color color, String name, BioPlasmid plasmid, BioDNA dna,
+ EnumRarity rarity, boolean breedable) {
+ if (BioCulture.BIO_CULTURE_ARRAY_LIST.size() > 1)
+ return BioCulture.createAndRegisterBioCulture(color, name, plasmid, dna, rarity, breedable);
+ new Exception(
+ "Too Early to register a BioCulture! You MUST run this either after:bartworks OR in the init Phase!")
+ .printStackTrace();
+ return null;
+ }
+
+ /**
+ * rarity inherits from dna
+ *
+ * @param color the color of the Culture
+ * @param name the name of the Culture
+ * @param plasmid the cultures plasmid, get it from createAndRegisterBioPlasmid
+ * @param dna the cultures dna, get it from createAndRegisterBioDNA
+ * @param breedable if the culture can be inserted into the BacterialVat
+ * @return
+ */
+ public static BioCulture createAndRegisterBioCulture(Color color, String name, BioPlasmid plasmid, BioDNA dna,
+ boolean breedable) {
+ if (BioCulture.BIO_CULTURE_ARRAY_LIST.size() > 1)
+ return BioCulture.createAndRegisterBioCulture(color, name, plasmid, dna, breedable);
+ new Exception(
+ "Too Early to register a BioCulture! You MUST run this either after:bartworks OR in the init Phase!")
+ .printStackTrace();
+ return null;
+ }
+
+ /**
+ * unspecific Biodata that can be converted into DNA and Plasmid with the propper methodes
+ *
+ * @param aName the name of the Biodata
+ * @param rarity visual only
+ * @param chance the chanche to extract this BioData
+ * @param tier the tier of this BioData 0=HV, 1=EV etc.
+ * @return
+ */
+ public static BioData createAndRegisterBioData(String aName, EnumRarity rarity, int chance, int tier) {
+ if (BioData.BIO_DATA_ARRAY_LIST.size() > 1)
+ return BioData.createAndRegisterBioData(aName, rarity, chance, tier);
+ new Exception("Too Early to register a BioData! You MUST run this either after:bartworks OR in the init Phase!")
+ .printStackTrace();
+ return null;
+ }
+
+ /**
+ * Default Constructor for HV Tier DNA with 75% extraction rate
+ *
+ * @param aName Name of the DNA String
+ * @param rarity visual
+ * @return
+ */
+ public static BioDNA createAndRegisterBioDNA(String aName, EnumRarity rarity) {
+ if (BioData.BIO_DATA_ARRAY_LIST.size() > 1) return BioDNA.createAndRegisterBioDNA(aName, rarity);
+ new Exception("Too Early to register a BioData! You MUST run this either after:bartworks OR in the init Phase!")
+ .printStackTrace();
+ return null;
+ }
+
+ /**
+ * Default Constructor for HV Tier Plasmid with 75% extraction rate
+ *
+ * @param aName Name of the Plasmid
+ * @param rarity visual
+ * @return
+ */
+ public static BioPlasmid createAndRegisterBioPlasmid(String aName, EnumRarity rarity) {
+ if (BioData.BIO_DATA_ARRAY_LIST.size() > 1) return BioPlasmid.createAndRegisterBioPlasmid(aName, rarity);
+ new Exception("Too Early to register a BioData! You MUST run this either after:bartworks OR in the init Phase!")
+ .printStackTrace();
+ return null;
+ }
+
+ /**
+ * @param aName Name of the DNA String
+ * @param rarity visual
+ * @param chance chanche of extracting
+ * @param tier tier needed to extract 0=HV, 1=EV etc.
+ * @return
+ */
+ public static BioDNA createAndRegisterBioDNA(String aName, EnumRarity rarity, int chance, int tier) {
+ if (BioData.BIO_DATA_ARRAY_LIST.size() > 1) return BioDNA.createAndRegisterBioDNA(aName, rarity, chance, tier);
+ new Exception("Too Early to register a BioData! You MUST run this either after:bartworks OR in the init Phase!")
+ .printStackTrace();
+ return null;
+ }
+
+ /**
+ * @param aName Name of the Plasmid
+ * @param rarity visual
+ * @param chance chanche of extracting
+ * @param tier tier needed to extract 0=HV, 1=EV etc.
+ * @return
+ */
+ public static BioPlasmid createAndRegisterBioPlasmid(String aName, EnumRarity rarity, int chance, int tier) {
+ if (BioData.BIO_DATA_ARRAY_LIST.size() > 1)
+ return BioPlasmid.createAndRegisterBioPlasmid(aName, rarity, chance, tier);
+ new Exception("Too Early to register a BioData! You MUST run this either after:bartworks OR in the init Phase!")
+ .printStackTrace();
+ return null;
+ }
+
+ /**
+ * @param voltageTier (i.e. 6 for LuV, 7 for ZPM, only intresting for LuV+)
+ * @return the propper Bacteria Tier (at least 0)
+ */
+ public static int getBacteriaTierFromVoltageTier(int voltageTier) {
+ return Math.max(voltageTier - 6, 0);
+ }
+
+ /**
+ * If you get NPE's related to BioCultures (most likely because of Load Order or creating BioCultures after the
+ * postinit Phase) execute this.
+ */
+ public static void regenerateBioFluids() {
+ FluidStack dnaFluid = Gendustry.isModLoaded() ? FluidRegistry.getFluidStack("liquiddna", 100)
+ : Materials.Biomass.getFluid(100L);
+ for (BioCulture B : BioCulture.BIO_CULTURE_ARRAY_LIST) {
+ if (B.getFluidNotSet()) {
+ B.setFluid(
+ GTFluidFactory.builder(
+ B.getName()
+ .replace(" ", "")
+ .toLowerCase() + "fluid")
+ .withTextureName("molten.autogenerated")
+ .withColorRGBA(
+ new short[] { (short) B.getColor()
+ .getRed(),
+ (short) B.getColor()
+ .getBlue(),
+ (short) B.getColor()
+ .getGreen() })
+ .withStateAndTemperature(FluidState.LIQUID, 300)
+ .buildAndRegister()
+ .asFluid());
+
+ GTValues.RA.stdBuilder()
+ .itemInputs(GTUtility.getIntegratedCircuit(10))
+ .fluidInputs(new FluidStack(B.getFluid(), 1000))
+ .fluidOutputs(dnaFluid)
+ .duration(25 * SECONDS)
+ .eut(TierEU.RECIPE_MV)
+ .addTo(centrifugeRecipes);
+ }
+ }
+ }
+}