aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/forestry/bees/registry
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2022-01-23 17:41:06 +0000
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2022-01-23 17:41:06 +0000
commit43be31d2ac5c8d390579edd4faa5817e91fc4b1a (patch)
tree00ad2ecf627fd461e88e4e3067877c93ef4f0909 /src/main/java/gtPlusPlus/xmod/forestry/bees/registry
parent0af6401544c94989f3913c9ea6638a304f7596ef (diff)
downloadGT5-Unofficial-43be31d2ac5c8d390579edd4faa5817e91fc4b1a.tar.gz
GT5-Unofficial-43be31d2ac5c8d390579edd4faa5817e91fc4b1a.tar.bz2
GT5-Unofficial-43be31d2ac5c8d390579edd4faa5817e91fc4b1a.zip
Added framework for custom bees.
Boosted drops of Dragon Metal from Chaos Dragons. Fixed https://github.com/GTNewHorizons/GT-New-Horizons-Modpack/issues/9556.
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/forestry/bees/registry')
-rw-r--r--src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_AlleleBeeSpecies.java40
-rw-r--r--src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_BeeDefinition.java191
-rw-r--r--src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_Bee_Mutation.java80
-rw-r--r--src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_Bees.java14
-rw-r--r--src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_BranchDefinition.java37
5 files changed, 196 insertions, 166 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_AlleleBeeSpecies.java b/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_AlleleBeeSpecies.java
new file mode 100644
index 0000000000..222b1215eb
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_AlleleBeeSpecies.java
@@ -0,0 +1,40 @@
+package gtPlusPlus.xmod.forestry.bees.registry;
+
+import forestry.api.apiculture.EnumBeeChromosome;
+import forestry.api.apiculture.IAlleleBeeSpeciesCustom;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IClassification;
+import forestry.apiculture.genetics.alleles.AlleleBeeSpecies;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+
+public class GTPP_AlleleBeeSpecies extends AlleleBeeSpecies {
+
+ public GTPP_AlleleBeeSpecies(String uid, boolean dominant, String unlocalizedName, String authority, String unlocalizedDescription, IClassification branch, String binomial, int primaryColor, int secondaryColor) {
+ super(uid, unlocalizedName, authority, unlocalizedDescription, dominant, branch, binomial, primaryColor, secondaryColor);
+ AlleleManager.alleleRegistry.registerAllele(this, EnumBeeChromosome.SPECIES);
+ }
+
+ @Override
+ public IAlleleBeeSpeciesCustom addProduct(ItemStack product, Float chance) {
+ if (product == null || product.getItem() == null) {
+ product = new ItemStack(Items.boat);
+ }
+ if (chance <= 0.0f || chance > 1.0f) {
+ chance = 0.1f;
+ }
+ return super.addProduct(product, chance);
+ }
+
+ @Override
+ public IAlleleBeeSpeciesCustom addSpecialty(ItemStack specialty, Float chance) {
+ if (specialty == null || specialty.getItem() == null) {
+ specialty = new ItemStack(Items.boat);
+ }
+ if (chance <= 0.0f || chance > 1.0f) {
+ chance = 0.1f;
+ }
+ return super.addSpecialty(specialty, chance);
+ }
+
+}
diff --git a/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_BeeDefinition.java b/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_BeeDefinition.java
index ca11b00cff..7fcf4bf98f 100644
--- a/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_BeeDefinition.java
+++ b/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_BeeDefinition.java
@@ -2,20 +2,14 @@ package gtPlusPlus.xmod.forestry.bees.registry;
import static forestry.api.apiculture.EnumBeeChromosome.*;
import static forestry.api.core.EnumHumidity.ARID;
-import static forestry.api.core.EnumHumidity.DAMP;
-import static forestry.api.core.EnumTemperature.*;
-import java.awt.Color;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Locale;
import java.util.function.Consumer;
-import org.apache.commons.lang3.reflect.FieldUtils;
import org.apache.commons.lang3.text.WordUtils;
-import cpw.mods.fml.common.Loader;
-import cpw.mods.fml.common.registry.GameRegistry;
import forestry.api.apiculture.*;
import forestry.api.core.EnumHumidity;
import forestry.api.core.EnumTemperature;
@@ -23,166 +17,82 @@ import forestry.api.genetics.*;
import forestry.apiculture.genetics.*;
import forestry.apiculture.genetics.alleles.AlleleEffect;
import forestry.core.genetics.alleles.AlleleHelper;
-import forestry.core.genetics.alleles.EnumAllele.*;
-import gregtech.api.GregTech_API;
+import forestry.core.genetics.alleles.EnumAllele.Lifespan;
+import forestry.core.genetics.alleles.EnumAllele.Tolerance;
import gregtech.api.enums.GT_Values;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_ModHandler;
-import gregtech.common.bees.GT_AlleleBeeSpecies;
-import gregtech.common.bees.GT_Bee_Mutation;
import gregtech.common.items.CombType;
-import gregtech.loaders.misc.GT_BeeDefinition;
-import gregtech.loaders.misc.GT_BranchDefinition;
+import gregtech.loaders.misc.GT_Bees;
+import gtPlusPlus.core.material.ELEMENT.STANDALONE;
+import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import gtPlusPlus.xmod.forestry.bees.handler.GTPP_CombType;
import net.minecraft.item.ItemStack;
+import net.minecraftforge.common.BiomeDictionary.Type;
public enum GTPP_BeeDefinition implements IBeeDefinition {
- DIVIDED(GT_BranchDefinition.THAUMIC, "Unstable", true, new Color(0xF0F0F0), new Color(0xDCDCDC),
- beeSpecies -> {
- beeSpecies.addProduct(GT_ModHandler.getModItem("ExtraBees", "honeyComb", 1, 61), 0.20f);
- beeSpecies.addSpecialty(GTPP_Bees.combs.getStackForType(CombType.DIVIDED), 0.125f);
- beeSpecies.setHumidity(EnumHumidity.NORMAL);
- beeSpecies.setTemperature(EnumTemperature.NORMAL);
- beeSpecies.setHasEffect();
- },
- template -> {
- AlleleHelper.instance.set(template, SPEED, Speed.SLOWER);
- AlleleHelper.instance.set(template, LIFESPAN, Lifespan.SHORT);
- AlleleHelper.instance.set(template, FLOWERING, Flowering.SLOW);
- AlleleHelper.instance.set(template, NOCTURNAL, true);
- },
- dis -> {
- IBeeMutationCustom tMutation = dis.registerMutation(DIAMOND, IRON, 3);
- if (Loader.isModLoaded("ExtraUtilities"))
- tMutation.requireResource(GameRegistry.findBlock("ExtraUtilities", "decorativeBlock1"), 5);
- }
- ),
- NEUTRONIUM(GT_BranchDefinition.RADIOACTIVE, "Neutronium", false, new Color(0xFFF0F0), new Color(0xFAFAFA),
- beeSpecies -> {
- beeSpecies.addProduct(GTPP_Bees.combs.getStackForType(CombType.NEUTRONIUM), 0.0001f);
- beeSpecies.setHumidity(DAMP);
- beeSpecies.setTemperature(HELLISH);
- beeSpecies.setHasEffect();
- },
- template -> {
- AlleleHelper.instance.set(template, SPEED, Speed.SLOWEST);
- AlleleHelper.instance.set(template, LIFESPAN, Lifespan.LONGEST);
- AlleleHelper.instance.set(template, NOCTURNAL, true);
- },
- dis -> {
- IMutationCustom tMutation = dis.registerMutation(NAQUADRIA, AMERICIUM, 1, 2).setIsSecret();
- tMutation.requireResource(GregTech_API.sBlockMetal5, 2);
- }
- ),
- DRAGONESSENCE(GT_BranchDefinition.HEE, "Dragonessence", true, new Color(0xFFA12B), new Color(0x911ECE),
+ DRAGONBLOOD(GTPP_BranchDefinition.LEGENDARY, "Dragon Blood", true, Utils.rgbtoHexValue(220, 20, 20), Utils.rgbtoHexValue(20, 20, 20),
beeSpecies -> {
beeSpecies.addProduct(GT_ModHandler.getModItem(GT_Values.MOD_ID_FR, "beeCombs", 1, 8), 0.30f);
- beeSpecies.addSpecialty(GTPP_Bees.combs.getStackForType(CombType.DRAGONESSENCE), 0.10f);
+ beeSpecies.addSpecialty(GTPP_Bees.combs.getStackForType(GTPP_CombType.DRAGONBLOOD), 0.10f);
beeSpecies.setHumidity(ARID);
beeSpecies.setTemperature(EnumTemperature.NORMAL);
beeSpecies.setHasEffect();
},
template -> {
AlleleHelper.instance.set(template, LIFESPAN, Lifespan.LONGER);
- AlleleHelper.instance.set(template, EFFECT, AlleleEffect.effectBeatific);
+ AlleleHelper.instance.set(template, EFFECT, AlleleEffect.effectAggressive);
AlleleHelper.instance.set(template, TEMPERATURE_TOLERANCE, Tolerance.BOTH_3);
AlleleHelper.instance.set(template, HUMIDITY_TOLERANCE, Tolerance.BOTH_3);
},
dis -> {
- IBeeMutationCustom tMutation = dis.registerMutation(GT_BeeDefinition.ECTOPLASMA, GT_BeeDefinition.ARCANESHARDS, 4);
+ IBeeMutationCustom tMutation = dis.registerMutation("DRAGONESSENCE", "NEUTRONIUM", 2);
tMutation.restrictHumidity(ARID);
- if (Loader.isModLoaded("HardcoreEnderExpansion"))
- tMutation.requireResource(GameRegistry.findBlock("HardcoreEnderExpansion", "essence_altar"), 1);
- tMutation.addMutationCondition(new GTPP_Bees.DimensionMutationCondition(1, "End"));//End Dim
+ tMutation.requireResource(STANDALONE.DRAGON_METAL.getBlock(), 1);
+ tMutation.addMutationCondition(new GT_Bees.DimensionMutationCondition(1, "End"));//End Dim
}
),
- TRINIUM(GT_BranchDefinition.SPACE, "Trinium", false, new Color(0xB0E0E6), new Color(0xC8C8D2),
+ FORCE(GTPP_BranchDefinition.LEGENDARY, "Force", true, Utils.rgbtoHexValue(250, 250, 20), Utils.rgbtoHexValue(200, 200, 5),
beeSpecies -> {
- beeSpecies.addProduct(GTPP_Bees.combs.getStackForType(CombType.TRINIUM), 0.75f);
- beeSpecies.addSpecialty(GTPP_Bees.combs.getStackForType(CombType.QUANTIUM), 0.10f);
+ beeSpecies.addProduct(GT_Bees.combs.getStackForType(CombType.STONE), 0.30f);
+ beeSpecies.addProduct(GT_Bees.combs.getStackForType(CombType.SALT), 0.15f);
+ beeSpecies.addSpecialty(GTPP_Bees.combs.getStackForType(GTPP_CombType.FORCE), 0.10f);
beeSpecies.setHumidity(EnumHumidity.NORMAL);
- beeSpecies.setTemperature(COLD);
- beeSpecies.setNocturnal();
- beeSpecies.setHasEffect();
- },
- template -> AlleleHelper.instance.set(template, SPEED, GTPP_Bees.speedBlinding),
- new Consumer<GTPP_BeeDefinition>() {
- @Override
- public void accept(GTPP_BeeDefinition dis) {
- IBeeMutationCustom tMutation = dis.registerMutation(ENCELADUS, IRIDIUM, 4);
- tMutation.requireResource(GregTech_API.sBlockMetal4, 9);
- tMutation.addMutationCondition(new GTPP_Bees.DimensionMutationCondition(41, "Enceladus"));//Enceladus Dim
- }
- }
- ),
-
- //Infinity Line
- COSMICNEUTRONIUM(GT_BranchDefinition.PLANET, "CosmicNeutronium", false, new Color(0x484848), new Color(0x323232),
- beeSpecies -> {
- beeSpecies.addProduct(GTPP_Bees.combs.getStackForType(CombType.COSMICNEUTRONIUM), 0.25f);
- beeSpecies.setHumidity(DAMP);
- beeSpecies.setTemperature(ICY);
- beeSpecies.setNocturnal();
- beeSpecies.setHasEffect();
- },
- template -> AlleleHelper.instance.set(template, LIFESPAN, Lifespan.SHORTEST),
- dis -> {
- IBeeMutationCustom tMutation = dis.registerMutation(NEUTRONIUM, BARNARDAF, 7, 10);
- if (Loader.isModLoaded("Avaritia"))
- tMutation.requireResource(GameRegistry.findBlock("Avaritia", "Resource_Block"), 0);
- }
- ),
- INFINITYCATALYST(GT_BranchDefinition.PLANET, "InfinityCatalyst", false, new Color(0xFFFFFF), new Color(0xFFFFFF),
- beeSpecies -> {
- beeSpecies.addProduct(GTPP_Bees.combs.getStackForType(CombType.INFINITYCATALYST), 0.0000005f);
- beeSpecies.setHumidity(DAMP);
- beeSpecies.setTemperature(HELLISH);
- beeSpecies.setNocturnal();
+ beeSpecies.setTemperature(EnumTemperature.HOT);
beeSpecies.setHasEffect();
},
template -> {
- AlleleHelper.instance.set(template, LIFESPAN, Lifespan.SHORTEST);
- AlleleHelper.instance.set(template, EFFECT, getEffect(EXTRABEES, "blindness"));
+ AlleleHelper.instance.set(template, LIFESPAN, Lifespan.NORMAL);
+ AlleleHelper.instance.set(template, EFFECT, AlleleEffect.effectAggressive);
+ AlleleHelper.instance.set(template, TEMPERATURE_TOLERANCE, Tolerance.BOTH_1);
+ AlleleHelper.instance.set(template, HUMIDITY_TOLERANCE, Tolerance.BOTH_1);
},
dis -> {
- IMutationCustom tMutation = dis.registerMutation(DOB, COSMICNEUTRONIUM, 3, 10).setIsSecret();
- if (Loader.isModLoaded("Avaritia"))
- tMutation.requireResource(GameRegistry.findBlock("Avaritia", "Resource_Block"), 1);
- }
- ),
- INFINITY(GT_BranchDefinition.PLANET, "Infinity", false, new Color(0xFFFFFF), new Color(0xFFFFFF),
- beeSpecies -> {
- beeSpecies.addProduct(GTPP_Bees.combs.getStackForType(CombType.INFINITY), 0.00000005f);
- beeSpecies.setHumidity(EnumHumidity.NORMAL);
- beeSpecies.setTemperature(ICY);
- beeSpecies.setNocturnal();
- beeSpecies.setHasEffect();
- },
- template -> AlleleHelper.instance.set(template, LIFESPAN, Lifespan.SHORTEST),
- dis -> {
- IBeeMutationCustom tMutation = dis.registerMutation(INFINITYCATALYST, COSMICNEUTRONIUM, 1, 100);
- if (Loader.isModLoaded("avaritiaddons"))
- tMutation.requireResource(GameRegistry.findBlock("avaritiaddons", "InfinityChest"), 0);
+ IBeeMutationCustom tMutation = dis.registerMutation("STEEL", "GOLD", 10);
+ tMutation.restrictHumidity(ARID);
+ tMutation.restrictBiomeType(Type.HOT);
}
),
+
;
- private final GT_BranchDefinition branch;
- private final GT_AlleleBeeSpecies species;
- private final Consumer<GT_AlleleBeeSpecies> mSpeciesProperties;
+ private final GTPP_BranchDefinition branch;
+ private final GTPP_AlleleBeeSpecies species;
+ private final Consumer<GTPP_AlleleBeeSpecies> mSpeciesProperties;
private final Consumer<IAllele[]> mAlleles;
private final Consumer<GTPP_BeeDefinition> mMutations;
private IAllele[] template;
private IBeeGenome genome;
- GTPP_BeeDefinition(GT_BranchDefinition branch,
+ GTPP_BeeDefinition(GTPP_BranchDefinition branch,
String binomial,
boolean dominant,
- Color primary,
- Color secondary,
- Consumer<GT_AlleleBeeSpecies> aSpeciesProperties,
+ int primary,
+ int secondary,
+ Consumer<GTPP_AlleleBeeSpecies> aSpeciesProperties,
Consumer<IAllele[]> aAlleles,
Consumer<GTPP_BeeDefinition> aMutations
) {
@@ -190,7 +100,7 @@ public enum GTPP_BeeDefinition implements IBeeDefinition {
this.mMutations = aMutations;
this.mSpeciesProperties = aSpeciesProperties;
String lowercaseName = this.toString().toLowerCase(Locale.ENGLISH);
- String species = WordUtils.capitalize(lowercaseName);
+ String species = WordUtils.capitalize(binomial);
String uid = "gtpp.bee.species" + species;
String description = "for.description." + species;
@@ -198,7 +108,7 @@ public enum GTPP_BeeDefinition implements IBeeDefinition {
GT_LanguageManager.addStringLocalization("for.bees.species." + lowercaseName, species, true);
this.branch = branch;
- this.species = new GT_AlleleBeeSpecies(uid, dominant, name, "GT++", description, branch.getBranch(), binomial, primary, secondary);
+ this.species = new GTPP_AlleleBeeSpecies(uid, dominant, name, "GT++", description, branch.getBranch(), binomial, primary, secondary);
}
public static void initBees() {
@@ -281,8 +191,8 @@ public enum GTPP_BeeDefinition implements IBeeDefinition {
}
- protected final void setSpeciesProperties(GT_AlleleBeeSpecies beeSpecies) {
- this.mSpeciesProperties.accept(beeSpecies);
+ protected final void setSpeciesProperties(GTPP_AlleleBeeSpecies species2) {
+ this.mSpeciesProperties.accept(species2);
}
protected final void setAlleles(IAllele[] template) {
@@ -330,7 +240,7 @@ public enum GTPP_BeeDefinition implements IBeeDefinition {
* This new function allows Mutation percentages under 1%. Set them as a fraction with chance / chancedivider
*/
protected final IBeeMutationCustom registerMutation(IAlleleBeeSpecies parent1, IAlleleBeeSpecies parent2, int chance, float chancedivider) {
- return new GT_Bee_Mutation(parent1, parent2, this.getTemplate(), chance, chancedivider);
+ return new GTPP_Bee_Mutation(parent1, parent2, this.getTemplate(), chance, chancedivider);
}
protected final IBeeMutationCustom registerMutation(GTPP_BeeDefinition parent1, IAlleleBeeSpecies parent2, int chance, float chancedivider) {
@@ -373,20 +283,19 @@ public enum GTPP_BeeDefinition implements IBeeDefinition {
return new BeeVariation.RainResist(this);
}
+ private static final Class sGtBees = ReflectionUtils.getClass("gregtech.loaders.misc.GT_BeeDefinition");
+
public static IAlleleBeeSpecies getGregtechBeeType(String name){
- Class<?> gtBees;
try {
- Class gtBeeTypes = Class.forName("gregtech.loaders.misc.GT_BeeDefinition");
- Enum gtBeeEnumObject = Enum.valueOf(gtBeeTypes, name);
- Field gtBeesField = FieldUtils.getDeclaredField(gtBeeTypes, "species", true);
- gtBeesField.setAccessible(true);
- ReflectionUtils.makeFieldAccessible(gtBeesField);
- Object beeType = gtBeesField.get(gtBeeEnumObject);
- return (IAlleleBeeSpecies) beeType;
- }
- catch (ClassNotFoundException | IllegalArgumentException | IllegalAccessException e) {
- e.printStackTrace();
- }
- return null;
+ Enum aBeeObject = ReflectionUtils.getEnum(sGtBees, name);
+ Field gtBeesField = ReflectionUtils.getField(sGtBees, "species");
+ IAlleleBeeSpecies beeType = ReflectionUtils.getFieldValue(gtBeesField, aBeeObject);
+ return beeType != null ? beeType : null;
+ }
+ catch (Throwable t) {
+ t.printStackTrace();
+ return null;
+ }
+
}
}
diff --git a/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_Bee_Mutation.java b/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_Bee_Mutation.java
new file mode 100644
index 0000000000..92a2a9fb30
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_Bee_Mutation.java
@@ -0,0 +1,80 @@
+package gtPlusPlus.xmod.forestry.bees.registry;
+
+import forestry.api.apiculture.*;
+import forestry.api.core.IClimateProvider;
+import forestry.api.genetics.IAllele;
+import forestry.api.genetics.IGenome;
+import forestry.api.genetics.IMutationCondition;
+import forestry.apiculture.genetics.BeeMutation;
+import forestry.core.genetics.mutations.Mutation;
+import net.minecraft.util.ChunkCoordinates;
+import net.minecraft.world.World;
+import org.apache.commons.lang3.reflect.FieldUtils;
+
+import java.lang.reflect.Field;
+import java.util.List;
+
+
+public class GTPP_Bee_Mutation extends BeeMutation {
+
+ private final float split;
+
+ public GTPP_Bee_Mutation(IAlleleBeeSpecies bee0, IAlleleBeeSpecies bee1, IAllele[] result, int chance, float split) {
+ super(bee0, bee1, result, chance);
+ this.split = split;
+ BeeManager.beeRoot.registerMutation(this);
+ }
+
+ @Override
+ public float getBaseChance() {
+ return super.getBaseChance() / split;
+ }
+
+ @Override
+ public float getChance(IBeeHousing housing, IAlleleBeeSpecies allele0, IAlleleBeeSpecies allele1, IBeeGenome genome0, IBeeGenome genome1) {
+ World world = housing != null ? housing.getWorld() : null;
+ ChunkCoordinates housingCoordinates = housing != null ? housing.getCoordinates() : null;
+ int x = housingCoordinates != null ? housingCoordinates.posX : 0;
+ int y = housingCoordinates != null ? housingCoordinates.posY : 0;
+ int z = housingCoordinates != null ? housingCoordinates.posZ : 0;
+
+ float processedChance = getBasicChance(world, x, y, z, allele0, allele1, genome0, genome1, housing);
+
+ if (processedChance <= 0f) {
+ return 0f;
+ }
+
+ IBeeModifier beeHousingModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
+ IBeeModifier beeModeModifier = BeeManager.beeRoot.getBeekeepingMode(world).getBeeModifier();
+
+ processedChance *= beeHousingModifier.getMutationModifier(genome0, genome1, processedChance);
+ processedChance *= beeModeModifier.getMutationModifier(genome0, genome1, processedChance);
+
+ return processedChance;
+ }
+
+ @SuppressWarnings("unchecked")
+ private float getBasicChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1, IClimateProvider climate) {
+ float mutationChance = this.getBaseChance();
+ List<IMutationCondition> mutationConditions = null;
+ Field f = FieldUtils.getDeclaredField(Mutation.class, "mutationConditions", true);
+ if (f == null)
+ f = FieldUtils.getField(Mutation.class, "mutationConditions", true);
+ if (f == null)
+ return mutationChance;
+ try {
+ mutationConditions = f.get(this) instanceof List ? (List<IMutationCondition>) f.get(this) : null;
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+
+ if (mutationConditions != null)
+ for (IMutationCondition mutationCondition : mutationConditions) {
+ mutationChance *= mutationCondition.getChance(world, x, y, z, allele0, allele1, genome0, genome1, climate);
+ if (mutationChance == 0) {
+ return 0;
+ }
+ }
+ return mutationChance;
+ }
+}
diff --git a/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_Bees.java b/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_Bees.java
index 35dbb1ded6..68da927a1c 100644
--- a/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_Bees.java
+++ b/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_Bees.java
@@ -2,8 +2,13 @@ package gtPlusPlus.xmod.forestry.bees.registry;
import static gregtech.api.enums.GT_Values.MOD_ID_FR;
+import java.util.HashMap;
+
import cpw.mods.fml.common.Loader;
import gregtech.GT_Mod;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import gtPlusPlus.xmod.forestry.bees.handler.*;
import gtPlusPlus.xmod.forestry.bees.items.output.*;
public class GTPP_Bees {
@@ -18,9 +23,18 @@ public class GTPP_Bees {
public static GTPP_Pollen pollen;
public static GTPP_Drop drop;
public static GTPP_Comb combs;
+
+ public static HashMap<Integer, GTPP_PropolisType> sPropolisMappings = new HashMap<Integer, GTPP_PropolisType>();
+ public static HashMap<Integer, GTPP_PollenType> sPollenMappings = new HashMap<Integer, GTPP_PollenType>();
+ public static HashMap<Integer, GTPP_DropType> sDropMappings = new HashMap<Integer, GTPP_DropType>();
+ public static HashMap<Integer, GTPP_CombType> sCombMappings = new HashMap<Integer, GTPP_CombType>();
public GTPP_Bees() {
if (Loader.isModLoaded(MOD_ID_FR) && GT_Mod.gregtechproxy.mGTBees) {
+
+ if (!ReflectionUtils.doesClassExist("gregtech.loaders.misc.GT_BeeDefinition")) {
+ CORE.crash("Missing gregtech.loaders.misc.GT_BeeDefinition.");
+ }
propolis = new GTPP_Propolis();
pollen = new GTPP_Pollen();
drop = new GTPP_Drop();
diff --git a/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_BranchDefinition.java b/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_BranchDefinition.java
index 36ea72d1d1..3c7630a434 100644
--- a/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_BranchDefinition.java
+++ b/src/main/java/gtPlusPlus/xmod/forestry/bees/registry/GTPP_BranchDefinition.java
@@ -1,53 +1,40 @@
package gtPlusPlus.xmod.forestry.bees.registry;
+import static forestry.api.apiculture.EnumBeeChromosome.*;
+
+import java.util.Arrays;
+import java.util.function.Consumer;
+
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.EnumBeeChromosome;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.IClassification;
import forestry.apiculture.genetics.alleles.AlleleEffect;
import forestry.core.genetics.alleles.AlleleHelper;
-
-import java.util.Arrays;
-import java.util.function.Consumer;
-
-import static forestry.api.apiculture.EnumBeeChromosome.*;
-import static forestry.core.genetics.alleles.EnumAllele.*;
-import static gtPlusPlus.xmod.forestry.bees.registry.GTPP_BeeDefinition.getEffect;
-import static gtPlusPlus.xmod.forestry.bees.registry.GTPP_BeeDefinition.getFlowers;
-import static gtPlusPlus.xmod.forestry.bees.registry.GTPP_Bees.EXTRABEES;
+import forestry.core.genetics.alleles.EnumAllele.*;
public enum GTPP_BranchDefinition {
- HEE("Finis Expansiones", alleles -> {
+ LEGENDARY("gtpp.legendary", "Summa Potestas", alleles -> {
AlleleHelper.instance.set(alleles, TEMPERATURE_TOLERANCE, Tolerance.BOTH_2);
AlleleHelper.instance.set(alleles, HUMIDITY_TOLERANCE, Tolerance.BOTH_2);
+ AlleleHelper.instance.set(alleles, TOLERANT_FLYER, true);
AlleleHelper.instance.set(alleles, NOCTURNAL, true);
- AlleleHelper.instance.set(alleles, FLOWER_PROVIDER, getFlowers(EXTRABEES, "book"));
+ AlleleHelper.instance.set(alleles, FLOWER_PROVIDER, Flowers.END);
AlleleHelper.instance.set(alleles, LIFESPAN, Lifespan.SHORT);
AlleleHelper.instance.set(alleles, FLOWERING, Flowering.SLOW);
AlleleHelper.instance.set(alleles, SPEED, Speed.FASTEST);
AlleleHelper.instance.set(alleles, TERRITORY, Territory.LARGER);
}
- ),
- SPACE("Cosmicis", alleles -> {
- AlleleHelper.instance.set(alleles, TEMPERATURE_TOLERANCE, Tolerance.DOWN_2);
- AlleleHelper.instance.set(alleles, TOLERANT_FLYER, true);
- AlleleHelper.instance.set(alleles, NOCTURNAL, true);
- AlleleHelper.instance.set(alleles, FLOWER_PROVIDER, getFlowers(EXTRABEES, "rock"));
- AlleleHelper.instance.set(alleles, FLOWERING, Flowering.FASTEST);
- AlleleHelper.instance.set(alleles, LIFESPAN, Lifespan.LONGEST);
- AlleleHelper.instance.set(alleles, SPEED, Speed.FAST);
- AlleleHelper.instance.set(alleles, TERRITORY, Territory.LARGEST);
- }
- ),
+ )
;
private static IAllele[] defaultTemplate;
private final IClassification branch;
private final Consumer<IAllele[]> mBranchProperties;
- GTPP_BranchDefinition(String scientific, Consumer<IAllele[]> aBranchProperties) {
- this.branch = BeeManager.beeFactory.createBranch(this.name().toLowerCase(), scientific);
+ GTPP_BranchDefinition(String internal, String scientific, Consumer<IAllele[]> aBranchProperties) {
+ this.branch = BeeManager.beeFactory.createBranch(internal.toLowerCase(), scientific);
this.mBranchProperties = aBranchProperties;
}