diff --git a/api/forestry b/api/forestry index 024ccf2c4..dd8ed397f 160000 --- a/api/forestry +++ b/api/forestry @@ -1 +1 @@ -Subproject commit 024ccf2c406ba0e5a23f0a36451d1d5e036ac43a +Subproject commit dd8ed397f13879cf0f93d6642bfda5220f00b8ad diff --git a/lang b/lang index edacbda68..96fa7cb73 160000 --- a/lang +++ b/lang @@ -1 +1 @@ -Subproject commit edacbda68ad721f16c949a8dd1ca1d1ce74efe84 +Subproject commit 96fa7cb738ff8529c32e0c28c1d82290ba590615 diff --git a/src/main/java/forestry/apiculture/BeekeepingLogic.java b/src/main/java/forestry/apiculture/BeekeepingLogic.java index db0b0f494..899757d92 100755 --- a/src/main/java/forestry/apiculture/BeekeepingLogic.java +++ b/src/main/java/forestry/apiculture/BeekeepingLogic.java @@ -16,6 +16,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeType; import forestry.api.apiculture.IApiaristTracker; import forestry.api.apiculture.IBee; @@ -217,7 +218,7 @@ public class BeekeepingLogic implements IBeekeepingLogic { housingErrorState = EnumErrorCode.NOQUEEN; hasQueen = false; } else { - IBee queen = PluginApiculture.beeInterface.getMember(housing.getQueen()); + IBee queen = BeeManager.beeRoot.getMember(housing.getQueen()); // Kill dying queens if (!queen.isAlive()) { killQueen(queen); @@ -283,8 +284,8 @@ public class BeekeepingLogic implements IBeekeepingLogic { } // Replace - IBee princess = PluginApiculture.beeInterface.getMember(housing.getQueen()); - IBee drone = PluginApiculture.beeInterface.getMember(housing.getDrone()); + IBee princess = BeeManager.beeRoot.getMember(housing.getQueen()); + IBee drone = BeeManager.beeRoot.getMember(housing.getDrone()); princess.mate(drone); NBTTagCompound nbttagcompound = new NBTTagCompound(); @@ -296,7 +297,7 @@ public class BeekeepingLogic implements IBeekeepingLogic { housing.onQueenChange(housing.getQueen()); // Register the new queen with the breeding tracker - PluginApiculture.beeInterface.getBreedingTracker(housing.getWorld(), housing.getOwnerName()).registerQueen(princess); + BeeManager.beeRoot.getBreedingTracker(housing.getWorld(), housing.getOwnerName()).registerQueen(princess); // Remove drone housing.getDrone().stackSize--; @@ -349,7 +350,7 @@ public class BeekeepingLogic implements IBeekeepingLogic { private void spawnOffspring(IBee queen) { Stack offspring = new Stack(); - IApiaristTracker breedingTracker = PluginApiculture.beeInterface.getBreedingTracker(housing.getWorld(), housing.getOwnerName()); + IApiaristTracker breedingTracker = BeeManager.beeRoot.getBreedingTracker(housing.getWorld(), housing.getOwnerName()); housing.onQueenDeath(getQueen()); @@ -360,7 +361,7 @@ public class BeekeepingLogic implements IBeekeepingLogic { count--; IBee heiress = queen.spawnPrincess(housing); if (heiress != null) { - ItemStack princess = PluginApiculture.beeInterface.getMemberStack(heiress, EnumBeeType.PRINCESS.ordinal()); + ItemStack princess = BeeManager.beeRoot.getMemberStack(heiress, EnumBeeType.PRINCESS.ordinal()); breedingTracker.registerPrincess(heiress); offspring.push(princess); } @@ -369,7 +370,7 @@ public class BeekeepingLogic implements IBeekeepingLogic { // Drones IBee[] larvae = queen.spawnDrones(housing); for (IBee larva : larvae) { - ItemStack drone = PluginApiculture.beeInterface.getMemberStack(larva, EnumBeeType.DRONE.ordinal()); + ItemStack drone = BeeManager.beeRoot.getMemberStack(larva, EnumBeeType.DRONE.ordinal()); breedingTracker.registerDrone(larva); offspring.push(drone); } diff --git a/src/main/java/forestry/apiculture/GuiHandlerApiculture.java b/src/main/java/forestry/apiculture/GuiHandlerApiculture.java index de5ae3aec..8931c23f9 100755 --- a/src/main/java/forestry/apiculture/GuiHandlerApiculture.java +++ b/src/main/java/forestry/apiculture/GuiHandlerApiculture.java @@ -14,6 +14,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; +import forestry.api.apiculture.BeeManager; import forestry.apiculture.gadgets.TileAlvearyHygroregulator; import forestry.apiculture.gadgets.TileAlvearyPlain; import forestry.apiculture.gadgets.TileAlvearySieve; @@ -42,7 +43,6 @@ import forestry.apiculture.items.ItemImprinter.ImprinterInventory; import forestry.core.GuiHandlerBase; import forestry.core.gui.ContainerAlyzer; import forestry.core.network.GuiId; -import forestry.plugins.PluginApiculture; public class GuiHandlerApiculture extends GuiHandlerBase { @@ -176,6 +176,6 @@ public class GuiHandlerApiculture extends GuiHandlerBase { } private void synchApiaristTracker(World world, EntityPlayer player) { - PluginApiculture.beeInterface.getBreedingTracker(world, player.getGameProfile()).synchToPlayer(player); + BeeManager.beeRoot.getBreedingTracker(world, player.getGameProfile()).synchToPlayer(player); } } diff --git a/src/main/java/forestry/apiculture/SaveEventHandlerApiculture.java b/src/main/java/forestry/apiculture/SaveEventHandlerApiculture.java index ba6de2e27..480fbf128 100755 --- a/src/main/java/forestry/apiculture/SaveEventHandlerApiculture.java +++ b/src/main/java/forestry/apiculture/SaveEventHandlerApiculture.java @@ -12,14 +12,14 @@ package forestry.apiculture; import net.minecraft.world.World; +import forestry.api.apiculture.BeeManager; import forestry.core.interfaces.ISaveEventHandler; -import forestry.plugins.PluginApiculture; public class SaveEventHandlerApiculture implements ISaveEventHandler { @Override public void onWorldLoad(World world) { - PluginApiculture.beeInterface.resetBeekeepingMode(); + BeeManager.beeRoot.resetBeekeepingMode(); } @Override diff --git a/src/main/java/forestry/apiculture/commands/BeeModeHelper.java b/src/main/java/forestry/apiculture/commands/BeeModeHelper.java index 18dc7de63..11cc43f5f 100644 --- a/src/main/java/forestry/apiculture/commands/BeeModeHelper.java +++ b/src/main/java/forestry/apiculture/commands/BeeModeHelper.java @@ -15,15 +15,15 @@ import java.util.List; import net.minecraft.world.World; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.IBeekeepingMode; import forestry.core.commands.ICommandModeHelper; -import forestry.plugins.PluginApiculture; public class BeeModeHelper implements ICommandModeHelper { @Override public String[] getModeNames() { - ArrayList beekeepingModes = PluginApiculture.beeInterface.getBeekeepingModes(); + ArrayList beekeepingModes = BeeManager.beeRoot.getBeekeepingModes(); int modeStringCount = beekeepingModes.size(); List modeStrings = new ArrayList(modeStringCount); for (IBeekeepingMode mode : beekeepingModes) { @@ -35,7 +35,7 @@ public class BeeModeHelper implements ICommandModeHelper { @Override public String getModeNameMatching(String desired) { - IBeekeepingMode mode = PluginApiculture.beeInterface.getBeekeepingMode(desired); + IBeekeepingMode mode = BeeManager.beeRoot.getBeekeepingMode(desired); if (mode == null) { return null; } @@ -44,17 +44,17 @@ public class BeeModeHelper implements ICommandModeHelper { @Override public String getModeName(World world) { - return PluginApiculture.beeInterface.getBeekeepingMode(world).getName(); + return BeeManager.beeRoot.getBeekeepingMode(world).getName(); } @Override public void setMode(World world, String modeName) { - PluginApiculture.beeInterface.setBeekeepingMode(world, modeName); + BeeManager.beeRoot.setBeekeepingMode(world, modeName); } @Override public Iterable getDescription(String modeName) { - IBeekeepingMode mode = PluginApiculture.beeInterface.getBeekeepingMode(modeName); + IBeekeepingMode mode = BeeManager.beeRoot.getBeekeepingMode(modeName); return mode.getDescription(); } diff --git a/src/main/java/forestry/apiculture/commands/BeeStatsSaveHelper.java b/src/main/java/forestry/apiculture/commands/BeeStatsSaveHelper.java index 11ac1c484..fe21a3c99 100644 --- a/src/main/java/forestry/apiculture/commands/BeeStatsSaveHelper.java +++ b/src/main/java/forestry/apiculture/commands/BeeStatsSaveHelper.java @@ -18,6 +18,7 @@ import net.minecraft.world.World; import com.mojang.authlib.GameProfile; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.IAlleleBeeSpecies; import forestry.api.apiculture.IApiaristTracker; import forestry.api.genetics.AlleleManager; @@ -26,7 +27,6 @@ import forestry.api.genetics.IAlleleSpecies; import forestry.api.genetics.IBreedingTracker; import forestry.core.commands.IStatsSaveHelper; import forestry.core.utils.StringUtil; -import forestry.plugins.PluginApiculture; public class BeeStatsSaveHelper implements IStatsSaveHelper { @@ -69,7 +69,7 @@ public class BeeStatsSaveHelper implements IStatsSaveHelper { @Override public IBreedingTracker getBreedingTracker(World world, GameProfile gameProfile) { - return PluginApiculture.beeInterface.getBreedingTracker(world, gameProfile); + return BeeManager.beeRoot.getBreedingTracker(world, gameProfile); } } diff --git a/src/main/java/forestry/apiculture/commands/CommandBeeGive.java b/src/main/java/forestry/apiculture/commands/CommandBeeGive.java index 3cb26ad06..44be24660 100644 --- a/src/main/java/forestry/apiculture/commands/CommandBeeGive.java +++ b/src/main/java/forestry/apiculture/commands/CommandBeeGive.java @@ -18,6 +18,7 @@ import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeType; import forestry.api.apiculture.IAlleleBeeSpecies; import forestry.api.apiculture.IBee; @@ -28,7 +29,6 @@ import forestry.core.commands.CommandHelpers; import forestry.core.commands.SpeciesNotFoundException; import forestry.core.commands.SubCommand; import forestry.core.commands.TemplateNotFoundException; -import forestry.plugins.PluginApiculture; public class CommandBeeGive extends SubCommand { @@ -87,13 +87,13 @@ public class CommandBeeGive extends SubCommand { return; } - IBee bee = PluginApiculture.beeInterface.getBee(player.worldObj, beeGenome); + IBee bee = BeeManager.beeRoot.getBee(player.worldObj, beeGenome); if (beeType == EnumBeeType.QUEEN) { bee.mate(bee); } - ItemStack beeStack = PluginApiculture.beeInterface.getMemberStack(bee, beeType.ordinal()); + ItemStack beeStack = BeeManager.beeRoot.getMemberStack(bee, beeType.ordinal()); player.dropPlayerItemWithRandomChoice(beeStack, true); CommandHelpers.sendLocalizedChatMessage(sender, "for.chat.command.forestry.bee.give.given", player.getCommandSenderName(), bee.getGenome().getPrimary().getName(), beeType.getName()); @@ -127,13 +127,13 @@ public class CommandBeeGive extends SubCommand { throw new SpeciesNotFoundException(speciesName); } - IAllele[] template = PluginApiculture.beeInterface.getTemplate(species.getUID()); + IAllele[] template = BeeManager.beeRoot.getTemplate(species.getUID()); if (template == null) { throw new TemplateNotFoundException(species); } - return PluginApiculture.beeInterface.templateAsGenome(template); + return BeeManager.beeRoot.templateAsGenome(template); } @Override diff --git a/src/main/java/forestry/apiculture/entities/EntityBee.java b/src/main/java/forestry/apiculture/entities/EntityBee.java index 751906d5e..852264f74 100755 --- a/src/main/java/forestry/apiculture/entities/EntityBee.java +++ b/src/main/java/forestry/apiculture/entities/EntityBee.java @@ -18,12 +18,12 @@ import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeType; import forestry.api.apiculture.IAlleleBeeSpecies; import forestry.api.apiculture.IBee; import forestry.core.config.Defaults; import forestry.core.utils.ForestryResource; -import forestry.plugins.PluginApiculture; public class EntityBee extends EntityCreature implements IAnimals { @@ -48,7 +48,7 @@ public class EntityBee extends EntityCreature implements IAnimals { if (bee != null) { contained = bee; } else { - contained = PluginApiculture.beeInterface.templateAsIndividual(PluginApiculture.beeInterface.getDefaultTemplate()); + contained = BeeManager.beeRoot.templateAsIndividual(BeeManager.beeRoot.getDefaultTemplate()); } //isImmuneToFire = contained.getGenome().getFireResist(); diff --git a/src/main/java/forestry/apiculture/gadgets/TileAlvearyPlain.java b/src/main/java/forestry/apiculture/gadgets/TileAlvearyPlain.java index 3c6061a23..ac5c44b8f 100755 --- a/src/main/java/forestry/apiculture/gadgets/TileAlvearyPlain.java +++ b/src/main/java/forestry/apiculture/gadgets/TileAlvearyPlain.java @@ -24,6 +24,7 @@ import net.minecraft.world.biome.BiomeGenBase; import com.mojang.authlib.GameProfile; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.IBee; import forestry.api.apiculture.IBeeGenome; import forestry.api.apiculture.IBeeHousing; @@ -51,7 +52,6 @@ import forestry.core.network.PacketIds; import forestry.core.network.PacketInventoryStack; import forestry.core.proxy.Proxies; import forestry.core.utils.Utils; -import forestry.plugins.PluginApiculture; public class TileAlvearyPlain extends TileAlveary implements ISidedInventory, IBeeHousing, IClimatised, IHintSource { @@ -190,9 +190,9 @@ public class TileAlvearyPlain extends TileAlveary implements ISidedInventory, IB // / Multiplayer FX ItemStack queenStack = inventory.getStackInSlot(SLOT_QUEEN); - if (PluginApiculture.beeInterface.isMated(queenStack)) { + if (BeeManager.beeRoot.isMated(queenStack)) { if (getErrorState() == EnumErrorCode.OK && updateOnInterval(2)) { - IBee displayQueen = PluginApiculture.beeInterface.getMember(queenStack); + IBee displayQueen = BeeManager.beeRoot.getMember(queenStack); displayQueen.doFX(beekeepingLogic.getEffectData(), this); } } @@ -227,9 +227,9 @@ public class TileAlvearyPlain extends TileAlveary implements ISidedInventory, IB return 0; } - if (PluginApiculture.beeInterface.isMated(inventory.getStackInSlot(SLOT_QUEEN))) { - return PluginApiculture.beeInterface.getMember(inventory.getStackInSlot(SLOT_QUEEN)).getHealth(); - } else if (!PluginApiculture.beeInterface.isDrone(inventory.getStackInSlot(SLOT_QUEEN))) { + if (BeeManager.beeRoot.isMated(inventory.getStackInSlot(SLOT_QUEEN))) { + return BeeManager.beeRoot.getMember(inventory.getStackInSlot(SLOT_QUEEN)).getHealth(); + } else if (!BeeManager.beeRoot.isDrone(inventory.getStackInSlot(SLOT_QUEEN))) { return displayHealth; } else { return 0; @@ -242,9 +242,9 @@ public class TileAlvearyPlain extends TileAlveary implements ISidedInventory, IB return 0; } - if (PluginApiculture.beeInterface.isMated(inventory.getStackInSlot(SLOT_QUEEN))) { - return PluginApiculture.beeInterface.getMember(inventory.getStackInSlot(SLOT_QUEEN)).getMaxHealth(); - } else if (!PluginApiculture.beeInterface.isDrone(inventory.getStackInSlot(SLOT_QUEEN))) { + if (BeeManager.beeRoot.isMated(inventory.getStackInSlot(SLOT_QUEEN))) { + return BeeManager.beeRoot.getMember(inventory.getStackInSlot(SLOT_QUEEN)).getMaxHealth(); + } else if (!BeeManager.beeRoot.isDrone(inventory.getStackInSlot(SLOT_QUEEN))) { return displayHealthMax; } else { return 0; @@ -266,9 +266,9 @@ public class TileAlvearyPlain extends TileAlveary implements ISidedInventory, IB @Override public boolean canSlotAccept(int slotIndex, ItemStack itemStack) { if (slotIndex == SLOT_QUEEN) { - return PluginApiculture.beeInterface.isMember(itemStack) && !PluginApiculture.beeInterface.isDrone(itemStack); + return BeeManager.beeRoot.isMember(itemStack) && !BeeManager.beeRoot.isDrone(itemStack); } else if (slotIndex == SLOT_DRONE) { - return PluginApiculture.beeInterface.isDrone(itemStack); + return BeeManager.beeRoot.isDrone(itemStack); } return false; } @@ -284,7 +284,7 @@ public class TileAlvearyPlain extends TileAlveary implements ISidedInventory, IB public void makeMaster() { super.makeMaster(); if (beekeepingLogic == null) { - this.beekeepingLogic = PluginApiculture.beeInterface.createBeekeepingLogic(this); + this.beekeepingLogic = BeeManager.beeRoot.createBeekeepingLogic(this); } } diff --git a/src/main/java/forestry/apiculture/gadgets/TileAlvearySwarmer.java b/src/main/java/forestry/apiculture/gadgets/TileAlvearySwarmer.java index c2d87e007..a7e4fd323 100755 --- a/src/main/java/forestry/apiculture/gadgets/TileAlvearySwarmer.java +++ b/src/main/java/forestry/apiculture/gadgets/TileAlvearySwarmer.java @@ -34,7 +34,6 @@ import forestry.core.inventory.wrappers.InventoryIterator; import forestry.core.network.GuiId; import forestry.core.network.PacketPayload; import forestry.core.utils.StackUtils; -import forestry.plugins.PluginApiculture; public class TileAlvearySwarmer extends TileAlveary implements ISidedInventory { @@ -93,9 +92,9 @@ public class TileAlvearySwarmer extends TileAlveary implements ISidedInventory { } // Queue swarm spawn - IBee princess = PluginApiculture.beeInterface.getMember(princessStack); + IBee princess = BeeManager.beeRoot.getMember(princessStack); princess.setIsNatural(false); - pendingSpawns.push(PluginApiculture.beeInterface.getMemberStack(princess, EnumBeeType.PRINCESS.ordinal())); + pendingSpawns.push(BeeManager.beeRoot.getMemberStack(princess, EnumBeeType.PRINCESS.ordinal())); } private ItemStack getPrincessStack() { @@ -110,7 +109,7 @@ public class TileAlvearySwarmer extends TileAlveary implements ISidedInventory { IBeeHousing housing = (IBeeHousing) master; ItemStack princessStack = housing.getQueen(); - if (princessStack == null || !PluginApiculture.beeInterface.isMated(princessStack)) { + if (princessStack == null || !BeeManager.beeRoot.isMated(princessStack)) { return null; } diff --git a/src/main/java/forestry/apiculture/gadgets/TileApiaristChest.java b/src/main/java/forestry/apiculture/gadgets/TileApiaristChest.java index dac2ebf5a..758ab3482 100755 --- a/src/main/java/forestry/apiculture/gadgets/TileApiaristChest.java +++ b/src/main/java/forestry/apiculture/gadgets/TileApiaristChest.java @@ -10,15 +10,14 @@ ******************************************************************************/ package forestry.apiculture.gadgets; -import forestry.api.genetics.AlleleManager; -import forestry.apiculture.genetics.BeeHelper; +import forestry.api.apiculture.BeeManager; import forestry.core.gadgets.TileNaturalistChest; import forestry.core.network.GuiId; public class TileApiaristChest extends TileNaturalistChest { public TileApiaristChest() { - super(AlleleManager.alleleRegistry.getSpeciesRoot(BeeHelper.UID), GuiId.ApiaristChestGUI.ordinal()); + super(BeeManager.beeRoot, GuiId.ApiaristChestGUI.ordinal()); } } diff --git a/src/main/java/forestry/apiculture/gadgets/TileApiary.java b/src/main/java/forestry/apiculture/gadgets/TileApiary.java index fa3a8aede..28fe61c05 100755 --- a/src/main/java/forestry/apiculture/gadgets/TileApiary.java +++ b/src/main/java/forestry/apiculture/gadgets/TileApiary.java @@ -20,6 +20,7 @@ import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.common.Optional; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.IBeeGenome; import forestry.api.apiculture.IHiveFrame; import forestry.api.core.ForestryAPI; @@ -27,7 +28,6 @@ import forestry.apiculture.trigger.ApicultureTriggers; import forestry.core.gadgets.TileBase; import forestry.core.inventory.IInventoryAdapter; import forestry.core.network.GuiId; -import forestry.plugins.PluginApiculture; import buildcraft.api.statements.ITriggerExternal; @@ -136,7 +136,7 @@ public class TileApiary extends TileBeehouse { @Override public void wearOutEquipment(int amount) { IInventoryAdapter inventory = getInternalInventory(); - int wear = Math.round(amount * PluginApiculture.beeInterface.getBeekeepingMode(worldObj).getWearModifier()); + int wear = Math.round(amount * BeeManager.beeRoot.getBeekeepingMode(worldObj).getWearModifier()); for (int i = SLOT_FRAMES_1; i < SLOT_FRAMES_1 + SLOT_FRAMES_COUNT; i++) { if (inventory.getStackInSlot(i) == null) { @@ -149,7 +149,7 @@ public class TileApiary extends TileBeehouse { inventory.setInventorySlotContents( i, ((IHiveFrame) inventory.getStackInSlot(i).getItem()).frameUsed(this, inventory.getStackInSlot(i), - PluginApiculture.beeInterface.getMember(inventory.getStackInSlot(SLOT_QUEEN)), wear)); + BeeManager.beeRoot.getMember(inventory.getStackInSlot(SLOT_QUEEN)), wear)); } } diff --git a/src/main/java/forestry/apiculture/gadgets/TileBeehouse.java b/src/main/java/forestry/apiculture/gadgets/TileBeehouse.java index 678e66ece..6646c0651 100755 --- a/src/main/java/forestry/apiculture/gadgets/TileBeehouse.java +++ b/src/main/java/forestry/apiculture/gadgets/TileBeehouse.java @@ -20,6 +20,7 @@ import net.minecraft.world.biome.BiomeGenBase; import com.mojang.authlib.GameProfile; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.IBee; import forestry.api.apiculture.IBeeGenome; import forestry.api.apiculture.IBeeHousing; @@ -45,7 +46,6 @@ import forestry.core.network.PacketTileUpdate; import forestry.core.proxy.Proxies; import forestry.core.utils.GuiUtil; import forestry.core.utils.Utils; -import forestry.plugins.PluginApiculture; public class TileBeehouse extends TileBase implements IBeeHousing, IClimatised { @@ -57,11 +57,11 @@ public class TileBeehouse extends TileBase implements IBeeHousing, IClimatised { @Override public boolean canSlotAccept(int slotIndex, ItemStack itemStack) { if (slotIndex == SLOT_QUEEN) { - return PluginApiculture.beeInterface.isMember(itemStack) && !PluginApiculture.beeInterface.isDrone(itemStack); + return BeeManager.beeRoot.isMember(itemStack) && !BeeManager.beeRoot.isDrone(itemStack); } else if (GuiUtil.isIndexInRange(slotIndex, SLOT_FRAMES_1, SLOT_FRAMES_COUNT)) { return itemStack.getItem() instanceof IHiveFrame; } else if (slotIndex == SLOT_DRONE) { - return PluginApiculture.beeInterface.isDrone(itemStack); + return BeeManager.beeRoot.isDrone(itemStack); } return false; } @@ -86,7 +86,7 @@ public class TileBeehouse extends TileBase implements IBeeHousing, IClimatised { public TileBeehouse() { setHints(Config.hints.get("apiary")); - logic = PluginApiculture.beeInterface.createBeekeepingLogic(this); + logic = BeeManager.beeRoot.createBeekeepingLogic(this); setInternalInventory(new BeehouseInventoryAdapter(this, 12, "Items").disableAutomation()); } @@ -158,9 +158,9 @@ public class TileBeehouse extends TileBase implements IBeeHousing, IClimatised { public void updateClientSide() { // / Multiplayer FX - if (PluginApiculture.beeInterface.isMated(getInternalInventory().getStackInSlot(SLOT_QUEEN))) { + if (BeeManager.beeRoot.isMated(getInternalInventory().getStackInSlot(SLOT_QUEEN))) { if (getErrorState() == EnumErrorCode.OK && updateOnInterval(2)) { - IBee displayQueen = PluginApiculture.beeInterface.getMember(getInternalInventory().getStackInSlot(SLOT_QUEEN)); + IBee displayQueen = BeeManager.beeRoot.getMember(getInternalInventory().getStackInSlot(SLOT_QUEEN)); displayQueen.doFX(logic.getEffectData(), this); } } @@ -213,7 +213,7 @@ public class TileBeehouse extends TileBase implements IBeeHousing, IClimatised { } if (ForestryItem.beeQueenGE.isItemEqual(inventory.getStackInSlot(SLOT_QUEEN))) { - return PluginApiculture.beeInterface.getMember(inventory.getStackInSlot(SLOT_QUEEN)).getHealth(); + return BeeManager.beeRoot.getMember(inventory.getStackInSlot(SLOT_QUEEN)).getHealth(); } else if (ForestryItem.beePrincessGE.isItemEqual(inventory.getStackInSlot(SLOT_QUEEN))) { return displayHealth; } else { @@ -228,7 +228,7 @@ public class TileBeehouse extends TileBase implements IBeeHousing, IClimatised { } if (ForestryItem.beeQueenGE.isItemEqual(inventory.getStackInSlot(SLOT_QUEEN))) { - return PluginApiculture.beeInterface.getMember(inventory.getStackInSlot(SLOT_QUEEN)).getMaxHealth(); + return BeeManager.beeRoot.getMember(inventory.getStackInSlot(SLOT_QUEEN)).getMaxHealth(); } else if (ForestryItem.beePrincessGE.isItemEqual(inventory.getStackInSlot(SLOT_QUEEN))) { return displayHealthMax; } else { diff --git a/src/main/java/forestry/apiculture/genetics/AlleleBeeSpecies.java b/src/main/java/forestry/apiculture/genetics/AlleleBeeSpecies.java index 8147adb7e..66e9ef607 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleBeeSpecies.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleBeeSpecies.java @@ -14,6 +14,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Locale; +import java.util.Map; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; @@ -25,61 +26,52 @@ import com.mojang.authlib.GameProfile; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeChromosome; import forestry.api.apiculture.EnumBeeType; -import forestry.api.apiculture.IAlleleBeeSpecies; +import forestry.api.apiculture.IAlleleBeeSpeciesCustom; import forestry.api.apiculture.IBeeGenome; import forestry.api.apiculture.IBeeHousing; +import forestry.api.apiculture.IBeeIconProvider; import forestry.api.apiculture.IBeeRoot; +import forestry.api.apiculture.IJubilanceProvider; import forestry.api.core.IIconProvider; import forestry.api.genetics.IAllele; import forestry.api.genetics.IClassification; import forestry.api.genetics.IIndividual; import forestry.api.genetics.IMutation; -import forestry.core.config.Defaults; -import forestry.core.genetics.AlleleSpecies; +import forestry.core.genetics.alleles.AlleleSpecies; import forestry.core.render.TextureManager; import forestry.core.utils.StackUtils; -import forestry.plugins.PluginApiculture; -public class AlleleBeeSpecies extends AlleleSpecies implements IAlleleBeeSpecies, IIconProvider { +public class AlleleBeeSpecies extends AlleleSpecies implements IAlleleBeeSpeciesCustom { - public IJubilanceProvider jubilanceProvider; + private final Map products = new HashMap(); + private final Map specialty = new HashMap(); - private final HashMap products = new HashMap(); - private final HashMap specialty = new HashMap(); - - private String texture; private final int primaryColour; private final int secondaryColour; - private static final String iconType = "default"; + private IBeeIconProvider beeIconProvider; + private IJubilanceProvider jubilanceProvider; - public AlleleBeeSpecies(String uid, boolean dominant, String name, IClassification branch, String binomial, int primaryColor, int secondaryColor) { - this(uid, dominant, name, branch, binomial, primaryColor, secondaryColor, new JubilanceDefault()); - } - - public AlleleBeeSpecies(String uid, boolean dominant, String name, IClassification branch, String binomial, int primaryColor, int secondaryColor, - IJubilanceProvider jubilanceProvider) { - super(uid, dominant, name, branch, binomial, false); + public AlleleBeeSpecies(String uid, String authority, String unlocalizedDescription, boolean dominant, String name, IClassification branch, String binomial, int primaryColor, int secondaryColor) { + super(uid, authority, unlocalizedDescription, dominant, name, branch, binomial, false); this.primaryColour = primaryColor; this.secondaryColour = secondaryColor; - this.jubilanceProvider = jubilanceProvider; - texture = Defaults.TEXTURE_PATH_ENTITIES + "/bees/honeyBee.png"; + + setCustomBeeIconProvider(DefaultBeeIconProvider.getInstance()); + setJubilanceProvider(JubilanceDefault.getInstance()); } @Override public IBeeRoot getRoot() { - return PluginApiculture.beeInterface; + return BeeManager.beeRoot; } - public AlleleBeeSpecies setEntityTexture(String texture) { - this.texture = Defaults.TEXTURE_PATH_ENTITIES + "/bees/" + texture + ".png"; - return this; - } - - public AlleleBeeSpecies addProduct(ItemStack product, int chance) { + @Override + public IAlleleBeeSpeciesCustom addProduct(ItemStack product, int chance) { if (product == null || product.getItem() == null) { throw new IllegalArgumentException("Tried to add null product"); } @@ -87,16 +79,27 @@ public class AlleleBeeSpecies extends AlleleSpecies implements IAlleleBeeSpecies return this; } - public AlleleBeeSpecies addSpecialty(ItemStack specialty, int chance) { + @Override + public IAlleleBeeSpeciesCustom addSpecialty(ItemStack specialty, int chance) { + if (specialty == null || specialty.getItem() == null) { + throw new IllegalArgumentException("Tried to add null specialty"); + } this.specialty.put(specialty, chance); return this; } - public AlleleBeeSpecies setJubilanceProvider(IJubilanceProvider provider) { + @Override + public IAlleleBeeSpeciesCustom setJubilanceProvider(IJubilanceProvider provider) { this.jubilanceProvider = provider; return this; } + @Override + public IAlleleBeeSpeciesCustom setCustomBeeIconProvider(IBeeIconProvider beeIconProvider) { + this.beeIconProvider = beeIconProvider; + return this; + } + /* RESEARCH */ @Override public int getComplexity() { @@ -170,12 +173,12 @@ public class AlleleBeeSpecies extends AlleleSpecies implements IAlleleBeeSpecies } @Override - public HashMap getProducts() { + public Map getProducts() { return products; } @Override - public HashMap getSpecialty() { + public Map getSpecialty() { return specialty; } @@ -185,8 +188,14 @@ public class AlleleBeeSpecies extends AlleleSpecies implements IAlleleBeeSpecies } @Override - public String getEntityTexture() { - return texture; + @SideOnly(Side.CLIENT) + public IIconProvider getIconProvider() { + return new BeeIconProviderWrapper(beeIconProvider); + } + + @Override + public IIcon getIcon(EnumBeeType type, int renderPass) { + return beeIconProvider.getIcon(type, renderPass); } @Override @@ -200,45 +209,70 @@ public class AlleleBeeSpecies extends AlleleSpecies implements IAlleleBeeSpecies return 0xffffff; } - @SideOnly(Side.CLIENT) - private static IIcon[][] icons; - - @SideOnly(Side.CLIENT) @Override - public void registerIcons(IIconRegister register) { - icons = new IIcon[EnumBeeType.values().length][3]; - - IIcon body1 = TextureManager.getInstance().registerTex(register, "bees/" + iconType + "/body1"); - - for (int i = 0; i < EnumBeeType.values().length; i++) { - if (EnumBeeType.values()[i] == EnumBeeType.NONE) { - continue; - } - - icons[i][0] = TextureManager.getInstance().registerTex(register, "bees/" + iconType + "/" + EnumBeeType.values()[i].toString().toLowerCase(Locale.ENGLISH) + ".outline"); - icons[i][1] = (EnumBeeType.values()[i] != EnumBeeType.LARVAE) ? body1 - : TextureManager.getInstance().registerTex(register, "bees/" + iconType + "/" + EnumBeeType.values()[i].toString().toLowerCase(Locale.ENGLISH) + ".body"); - icons[i][2] = TextureManager.getInstance().registerTex(register, "bees/" + iconType + "/" + EnumBeeType.values()[i].toString().toLowerCase(Locale.ENGLISH) + ".body2"); - } - - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(EnumBeeType type, int renderPass) { - return icons[type.ordinal()][renderPass]; - } - - @Override - @SideOnly(Side.CLIENT) - public IIconProvider getIconProvider() { - return this; - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(short texUID) { + public String getEntityTexture() { return null; } + private static class DefaultBeeIconProvider implements IBeeIconProvider { + + private static final String iconType = "default"; + private static DefaultBeeIconProvider instance; + + public static DefaultBeeIconProvider getInstance() { + if (instance == null) { + instance = new DefaultBeeIconProvider(); + } + return instance; + } + + private DefaultBeeIconProvider() { + + } + + @SideOnly(Side.CLIENT) + private static final IIcon[][] icons = new IIcon[EnumBeeType.values().length][3]; + + @SideOnly(Side.CLIENT) + @Override + public void registerIcons(IIconRegister register) { + IIcon body1 = TextureManager.getInstance().registerTex(register, "bees/" + iconType + "/body1"); + + for (int i = 0; i < EnumBeeType.values().length; i++) { + if (EnumBeeType.values()[i] == EnumBeeType.NONE) { + continue; + } + + icons[i][0] = TextureManager.getInstance().registerTex(register, "bees/" + iconType + '/' + EnumBeeType.values()[i].toString().toLowerCase(Locale.ENGLISH) + ".outline"); + icons[i][1] = (EnumBeeType.values()[i] != EnumBeeType.LARVAE) ? body1 + : TextureManager.getInstance().registerTex(register, "bees/" + iconType + '/' + EnumBeeType.values()[i].toString().toLowerCase(Locale.ENGLISH) + ".body"); + icons[i][2] = TextureManager.getInstance().registerTex(register, "bees/" + iconType + '/' + EnumBeeType.values()[i].toString().toLowerCase(Locale.ENGLISH) + ".body2"); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(EnumBeeType type, int renderPass) { + return icons[type.ordinal()][renderPass]; + } + } + + private static class BeeIconProviderWrapper implements IIconProvider { + + private final IBeeIconProvider beeIconProvider; + + public BeeIconProviderWrapper(IBeeIconProvider beeIconProvider) { + this.beeIconProvider = beeIconProvider; + } + + @Override + public IIcon getIcon(short texUID) { + return null; + } + + @Override + public void registerIcons(IIconRegister register) { + beeIconProvider.registerIcons(register); + } + } } diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectAggressive.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectAggressive.java index ed17f93d2..61b8924e1 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectAggressive.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectAggressive.java @@ -27,8 +27,8 @@ public class AlleleEffectAggressive extends AlleleEffectThrottled { public static final DamageSource damageSourceBeeAggressive = new DamageSourceForestry("bee.aggressive"); - public AlleleEffectAggressive(String uid) { - super(uid, "aggressive", true, 40, false, false); + public AlleleEffectAggressive() { + super("aggressive", true, 40, false, false); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectCreeper.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectCreeper.java index 603cccd96..7b85dfb41 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectCreeper.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectCreeper.java @@ -29,8 +29,8 @@ public class AlleleEffectCreeper extends AlleleEffectThrottled { private final byte indexExplosionTimer = 1; private final byte indexExplosionForce = 2; - public AlleleEffectCreeper(String uid) { - super(uid, "creeper", true, 20, false, true); + public AlleleEffectCreeper() { + super("creeper", true, 20, false, true); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectExploration.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectExploration.java index 71d9d84c5..e9f3e0030 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectExploration.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectExploration.java @@ -21,8 +21,8 @@ import forestry.api.genetics.IEffectData; public class AlleleEffectExploration extends AlleleEffectThrottled { - public AlleleEffectExploration(String uid) { - super(uid, "exploration", false, 80, true, false); + public AlleleEffectExploration() { + super("exploration", false, 80, true, false); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectFertile.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectFertile.java index 47d83236c..97180b748 100644 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectFertile.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectFertile.java @@ -13,8 +13,8 @@ public class AlleleEffectFertile extends AlleleEffectThrottled { public static final int MAX_BLOCK_FIND_TRIES = 5; - public AlleleEffectFertile(String uid) { - super(uid, "fertile", false, 6, true, false); + public AlleleEffectFertile() { + super("fertile", false, 6, true, false); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectFungification.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectFungification.java index 26b2776f5..31a109e37 100644 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectFungification.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectFungification.java @@ -21,8 +21,8 @@ public class AlleleEffectFungification extends AlleleEffectThrottled { public static final int MAX_BLOCK_FIND_TRIES = 10; public static final int ENTITY_THROTTLE = 6; - public AlleleEffectFungification(String uid) { - super(uid, "mycophilic", true, 10, false, false); + public AlleleEffectFungification() { + super("mycophilic", true, 10, false, false); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectGlacial.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectGlacial.java index f65dc6207..be4d91384 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectGlacial.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectGlacial.java @@ -24,8 +24,8 @@ import forestry.core.vect.Vect; public class AlleleEffectGlacial extends AlleleEffectThrottled { - public AlleleEffectGlacial(String uid) { - super(uid, "glacial", false, 200, true, false); + public AlleleEffectGlacial() { + super("glacial", false, 200, true, false); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectHeroic.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectHeroic.java index d48d670d2..ff6b824d0 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectHeroic.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectHeroic.java @@ -22,8 +22,8 @@ import forestry.api.genetics.IEffectData; public class AlleleEffectHeroic extends AlleleEffectThrottled { - public AlleleEffectHeroic(String uid) { - super(uid, "heroic", false, 40, true, false); + public AlleleEffectHeroic() { + super("heroic", false, 40, true, false); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectIgnition.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectIgnition.java index 6e55a364d..4720a542e 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectIgnition.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectIgnition.java @@ -28,8 +28,8 @@ public class AlleleEffectIgnition extends AlleleEffectThrottled { private static final int ignitionChance = 50; private static final int fireDuration = 500; - public AlleleEffectIgnition(String uid) { - super(uid, "ignition", false, 20, false, true); + public AlleleEffectIgnition() { + super("ignition", false, 20, false, true); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectMiasmic.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectMiasmic.java index 1d117c1a5..0874591a2 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectMiasmic.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectMiasmic.java @@ -28,8 +28,8 @@ public class AlleleEffectMiasmic extends AlleleEffectThrottled { private static final int infectionChance = 50; - public AlleleEffectMiasmic(String uid) { - super(uid, "misasmic", false, 50, false, false); + public AlleleEffectMiasmic() { + super("miasmic", false, 50, false, false); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectMisanthrope.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectMisanthrope.java index fc80d714e..3cd20bdfd 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectMisanthrope.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectMisanthrope.java @@ -26,8 +26,8 @@ public class AlleleEffectMisanthrope extends AlleleEffectThrottled { public static final DamageSource damageSourceBeeEnd = new DamageSourceForestry("bee.end"); - public AlleleEffectMisanthrope(String uid) { - super(uid, "misanthrope", true, 20, false, false); + public AlleleEffectMisanthrope() { + super("misanthrope", true, 20, false, false); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectNone.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectNone.java index b88f7db59..57d61d013 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectNone.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectNone.java @@ -14,13 +14,13 @@ import forestry.api.apiculture.IAlleleBeeEffect; import forestry.api.apiculture.IBeeGenome; import forestry.api.apiculture.IBeeHousing; import forestry.api.genetics.IEffectData; -import forestry.core.genetics.Allele; +import forestry.core.genetics.alleles.AlleleForestry; import forestry.plugins.PluginApiculture; -public class AlleleEffectNone extends Allele implements IAlleleBeeEffect { +public class AlleleEffectNone extends AlleleForestry implements IAlleleBeeEffect { - public AlleleEffectNone(String uid) { - super(uid, true); + public AlleleEffectNone(String name) { + super("effect", name, true); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectPotion.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectPotion.java index df9a5f07f..6fd2480f7 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectPotion.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectPotion.java @@ -31,8 +31,8 @@ public class AlleleEffectPotion extends AlleleEffectThrottled { private final boolean isBadEffect; private final int duration; - public AlleleEffectPotion(String uid, String name, boolean isDominant, Potion potion, int duration, boolean requiresWorking) { - super(uid, name, isDominant, 200, requiresWorking, false); + public AlleleEffectPotion(String name, boolean isDominant, Potion potion, int duration, boolean requiresWorking) { + super(name, isDominant, 200, requiresWorking, false); this.potion = potion; this.isBadEffect = isBadEffect(potion); this.duration = duration; diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectRadioactive.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectRadioactive.java index ece1ed459..36f6f6fa0 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectRadioactive.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectRadioactive.java @@ -34,8 +34,8 @@ public class AlleleEffectRadioactive extends AlleleEffectThrottled { public static final DamageSource damageSourceBeeRadioactive = new DamageSourceForestry("bee.radioactive"); - public AlleleEffectRadioactive(String uid) { - super(uid, "radioactive", true, 40, false, true); + public AlleleEffectRadioactive() { + super("radioactive", true, 40, false, true); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectRepulsion.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectRepulsion.java index ce6d780b4..2eda66f0c 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectRepulsion.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectRepulsion.java @@ -22,8 +22,8 @@ import forestry.api.genetics.IEffectData; public class AlleleEffectRepulsion extends AlleleEffectThrottled { - public AlleleEffectRepulsion(String uid) { - super(uid, "repulsion", false, 100, true, true); + public AlleleEffectRepulsion() { + super("repulsion", false, 100, true, true); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectResurrection.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectResurrection.java index a8b794464..e38999f2f 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectResurrection.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectResurrection.java @@ -72,8 +72,8 @@ public class AlleleEffectResurrection extends AlleleEffectThrottled { private final List resurrectables; - public AlleleEffectResurrection(String uid, String name, List resurrectables) { - super(uid, name, true, 40, true, true); + public AlleleEffectResurrection(String name, List resurrectables) { + super(name, true, 40, true, true); this.resurrectables = resurrectables; } diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectSnowing.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectSnowing.java index ca10f050e..3a4d5712f 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectSnowing.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectSnowing.java @@ -25,8 +25,8 @@ import forestry.core.vect.Vect; public class AlleleEffectSnowing extends AlleleEffectThrottled { - public AlleleEffectSnowing(String uid) { - super(uid, "snowing", false, 20, true, true); + public AlleleEffectSnowing() { + super("snowing", false, 20, true, true); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/AlleleEffectThrottled.java b/src/main/java/forestry/apiculture/genetics/AlleleEffectThrottled.java index 54f699f75..512e02915 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleEffectThrottled.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleEffectThrottled.java @@ -17,19 +17,19 @@ import forestry.api.apiculture.IBeeGenome; import forestry.api.apiculture.IBeeHousing; import forestry.api.genetics.IEffectData; import forestry.core.EnumErrorCode; -import forestry.core.genetics.Allele; import forestry.core.genetics.EffectData; +import forestry.core.genetics.alleles.AlleleForestry; import forestry.core.vect.Vect; import forestry.plugins.PluginApiculture; -public abstract class AlleleEffectThrottled extends Allele implements IAlleleBeeEffect { +public abstract class AlleleEffectThrottled extends AlleleForestry implements IAlleleBeeEffect { private boolean isCombinable = false; private final int throttle; private boolean requiresWorkingQueen = false; - public AlleleEffectThrottled(String uid, String name, boolean isDominant, int throttle, boolean requiresWorking, boolean isCombinable) { - super(uid, isDominant); + public AlleleEffectThrottled(String name, boolean isDominant, int throttle, boolean requiresWorking, boolean isCombinable) { + super("effect", name, isDominant); this.name = "apiculture.effect." + name; this.throttle = throttle; this.isCombinable = isCombinable; diff --git a/src/main/java/forestry/apiculture/genetics/AlleleFlowers.java b/src/main/java/forestry/apiculture/genetics/AlleleFlowers.java index 6b8bb5bbb..84cec0e89 100755 --- a/src/main/java/forestry/apiculture/genetics/AlleleFlowers.java +++ b/src/main/java/forestry/apiculture/genetics/AlleleFlowers.java @@ -12,18 +12,14 @@ package forestry.apiculture.genetics; import forestry.api.genetics.IAlleleFlowers; import forestry.api.genetics.IFlowerProvider; -import forestry.core.genetics.Allele; +import forestry.core.genetics.alleles.AlleleForestry; -public class AlleleFlowers extends Allele implements IAlleleFlowers { +public class AlleleFlowers extends AlleleForestry implements IAlleleFlowers { private final IFlowerProvider provider; - public AlleleFlowers(String uid, IFlowerProvider provider) { - this(uid, provider, false); - } - - public AlleleFlowers(String uid, IFlowerProvider provider, boolean isDominant) { - super(uid, isDominant); + public AlleleFlowers(String category, String name, IFlowerProvider provider, boolean isDominant) { + super(category, name, isDominant); this.provider = provider; } diff --git a/src/main/java/forestry/apiculture/genetics/ApiaristTracker.java b/src/main/java/forestry/apiculture/genetics/ApiaristTracker.java index 9f0acdedb..ebd03e822 100755 --- a/src/main/java/forestry/apiculture/genetics/ApiaristTracker.java +++ b/src/main/java/forestry/apiculture/genetics/ApiaristTracker.java @@ -15,12 +15,12 @@ import net.minecraft.nbt.NBTTagCompound; import com.mojang.authlib.GameProfile; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeChromosome; import forestry.api.apiculture.IApiaristTracker; import forestry.api.genetics.IBreedingTracker; import forestry.api.genetics.IIndividual; import forestry.core.genetics.BreedingTracker; -import forestry.plugins.PluginApiculture; public class ApiaristTracker extends BreedingTracker implements IApiaristTracker { @@ -67,7 +67,7 @@ public class ApiaristTracker extends BreedingTracker implements IApiaristTracker if (!individual.isPureBred(EnumBeeChromosome.SPECIES)) { return; } - if (PluginApiculture.beeInterface.getCombinations(individual.getGenome().getPrimary()).size() > 0) { + if (BeeManager.beeRoot.getCombinations(individual.getGenome().getPrimary()).size() > 0) { return; } @@ -109,7 +109,7 @@ public class ApiaristTracker extends BreedingTracker implements IApiaristTracker @Override protected IBreedingTracker getBreedingTracker(EntityPlayer player) { - return PluginApiculture.beeInterface.getBreedingTracker(player.worldObj, player.getGameProfile()); + return BeeManager.beeRoot.getBreedingTracker(player.worldObj, player.getGameProfile()); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/Bee.java b/src/main/java/forestry/apiculture/genetics/Bee.java index 9fd6ff820..171b3cf23 100755 --- a/src/main/java/forestry/apiculture/genetics/Bee.java +++ b/src/main/java/forestry/apiculture/genetics/Bee.java @@ -24,6 +24,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeChromosome; import forestry.api.apiculture.IAlleleBeeEffect; import forestry.api.apiculture.IAlleleBeeSpecies; @@ -42,7 +43,6 @@ import forestry.api.genetics.IAlleleTolerance; import forestry.api.genetics.IChromosome; import forestry.api.genetics.IEffectData; import forestry.api.genetics.IFlowerProvider; -import forestry.api.genetics.IGenome; import forestry.api.genetics.IIndividual; import forestry.api.genetics.IPollinatable; import forestry.arboriculture.genetics.FakePollinatable; @@ -57,7 +57,6 @@ import forestry.core.utils.GeneticsUtil; import forestry.core.utils.StringUtil; import forestry.core.vect.MutableVect; import forestry.core.vect.Vect; -import forestry.plugins.PluginApiculture; public class Bee extends IndividualLiving implements IBee { @@ -408,7 +407,7 @@ public class Bee extends IndividualLiving implements IBee { @Override public void age(World world, float housingLifespanModifier) { - IBeekeepingMode mode = PluginApiculture.beeInterface.getBeekeepingMode(world); + IBeekeepingMode mode = BeeManager.beeRoot.getBeekeepingMode(world); float finalModifier = housingLifespanModifier * mode.getLifespanModifier(genome, mate, housingLifespanModifier); super.age(world, finalModifier); @@ -461,7 +460,7 @@ public class Bee extends IndividualLiving implements IBee { Proxies.log.warning("Failed to produce in an apiary because the beehousing was null."); return null; } - IBeekeepingMode mode = PluginApiculture.beeInterface.getBeekeepingMode(housing.getWorld()); + IBeekeepingMode mode = BeeManager.beeRoot.getBeekeepingMode(housing.getWorld()); if (mode == null) { Proxies.log.warning("Failed to produce in an apiary because the beekeeping mode was null."); return null; @@ -519,7 +518,7 @@ public class Bee extends IndividualLiving implements IBee { } // Fatigued queens do not produce princesses. - if (PluginApiculture.beeInterface.getBeekeepingMode(housing.getWorld()).isFatigued(this, housing)) { + if (BeeManager.beeRoot.getBeekeepingMode(housing.getWorld()).isFatigued(this, housing)) { return null; } @@ -538,7 +537,7 @@ public class Bee extends IndividualLiving implements IBee { ArrayList bees = new ArrayList(); - int toCreate = PluginApiculture.beeInterface.getBeekeepingMode(world).getFinalFertility(this, world, housing.getXCoord(), housing.getYCoord(), + int toCreate = BeeManager.beeRoot.getBeekeepingMode(world).getFinalFertility(this, world, housing.getXCoord(), housing.getYCoord(), housing.getZCoord()); if (toCreate <= 0) { @@ -585,42 +584,42 @@ public class Bee extends IndividualLiving implements IBee { } } - IBeekeepingMode mode = PluginApiculture.beeInterface.getBeekeepingMode(world); + IBeekeepingMode mode = BeeManager.beeRoot.getBeekeepingMode(world); return new Bee(new BeeGenome(chromosomes), mode.isNaturalOffspring(this), generation); } - private IChromosome[] mutateSpecies(IBeeHousing housing, IGenome genomeOne, IGenome genomeTwo) { + private static IChromosome[] mutateSpecies(IBeeHousing housing, IBeeGenome genomeOne, IBeeGenome genomeTwo) { World world = housing.getWorld(); IChromosome[] parent1 = genomeOne.getChromosomes(); IChromosome[] parent2 = genomeTwo.getChromosomes(); - IGenome genome0; - IGenome genome1; - IAllele allele0; - IAllele allele1; + IBeeGenome genome0; + IBeeGenome genome1; + IAlleleBeeSpecies allele0; + IAlleleBeeSpecies allele1; if (world.rand.nextBoolean()) { - allele0 = parent1[EnumBeeChromosome.SPECIES.ordinal()].getPrimaryAllele(); - allele1 = parent2[EnumBeeChromosome.SPECIES.ordinal()].getSecondaryAllele(); + allele0 = (IAlleleBeeSpecies) parent1[EnumBeeChromosome.SPECIES.ordinal()].getPrimaryAllele(); + allele1 = (IAlleleBeeSpecies) parent2[EnumBeeChromosome.SPECIES.ordinal()].getSecondaryAllele(); genome0 = genomeOne; genome1 = genomeTwo; } else { - allele0 = parent2[EnumBeeChromosome.SPECIES.ordinal()].getPrimaryAllele(); - allele1 = parent1[EnumBeeChromosome.SPECIES.ordinal()].getSecondaryAllele(); + allele0 = (IAlleleBeeSpecies) parent2[EnumBeeChromosome.SPECIES.ordinal()].getPrimaryAllele(); + allele1 = (IAlleleBeeSpecies) parent1[EnumBeeChromosome.SPECIES.ordinal()].getSecondaryAllele(); genome0 = genomeTwo; genome1 = genomeOne; } - for (IBeeMutation mutation : PluginApiculture.beeInterface.getMutations(true)) { + for (IBeeMutation mutation : BeeManager.beeRoot.getMutations(true)) { float chance = mutation.getChance(housing, allele0, allele1, genome0, genome1); if (chance > world.rand.nextFloat() * 100) { - IApiaristTracker breedingTracker = PluginApiculture.beeInterface.getBreedingTracker(world, housing.getOwnerName()); + IApiaristTracker breedingTracker = BeeManager.beeRoot.getBreedingTracker(world, housing.getOwnerName()); breedingTracker.registerMutation(mutation); - return PluginApiculture.beeInterface.templateAsChromosomes(mutation.getTemplate()); + return BeeManager.beeRoot.templateAsChromosomes(mutation.getTemplate()); } } diff --git a/src/main/java/forestry/apiculture/genetics/BeeBranchDefinition.java b/src/main/java/forestry/apiculture/genetics/BeeBranchDefinition.java index abee32eb4..b3da39b4b 100644 --- a/src/main/java/forestry/apiculture/genetics/BeeBranchDefinition.java +++ b/src/main/java/forestry/apiculture/genetics/BeeBranchDefinition.java @@ -2,9 +2,12 @@ package forestry.apiculture.genetics; import java.util.Arrays; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeChromosome; import forestry.api.genetics.IAllele; -import forestry.core.genetics.Allele; +import forestry.api.genetics.IClassification; +import forestry.core.genetics.alleles.Allele; +import forestry.core.genetics.alleles.EnumAllele; public enum BeeBranchDefinition { HONEY("Apis"), @@ -14,104 +17,104 @@ public enum BeeBranchDefinition { INFERNAL("Diapis") { @Override protected void setBranchProperties(IAllele[] alleles) { - alleles[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceDown2; - alleles[EnumBeeChromosome.NOCTURNAL.ordinal()] = Allele.boolTrue; - alleles[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = Allele.flowersNether; - alleles[EnumBeeChromosome.FLOWERING.ordinal()] = Allele.floweringAverage; + Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.DOWN_2); + Allele.helper.set(alleles, EnumBeeChromosome.NOCTURNAL, true); + Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.NETHER); + Allele.helper.set(alleles, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.AVERAGE); } }, AUSTERE("Modapis") { @Override protected void setBranchProperties(IAllele[] alleles) { - alleles[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceBoth1; - alleles[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.toleranceDown1; - alleles[EnumBeeChromosome.NOCTURNAL.ordinal()] = Allele.boolTrue; - alleles[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = Allele.flowersCacti; + Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_1); + Allele.helper.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.DOWN_1); + Allele.helper.set(alleles, EnumBeeChromosome.NOCTURNAL, true); + Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.CACTI); } }, TROPICAL("Caldapis") { @Override protected void setBranchProperties(IAllele[] alleles) { - alleles[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceUp1; - alleles[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.toleranceUp1; - alleles[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = Allele.flowersJungle; - alleles[EnumBeeChromosome.EFFECT.ordinal()] = Allele.effectMiasmic; + Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.UP_1); + Allele.helper.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.UP_1); + Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.JUNGLE); + Allele.helper.set(alleles, EnumBeeChromosome.EFFECT, Allele.effectMiasmic); } }, END("Finapis") { @Override protected void setBranchProperties(IAllele[] alleles) { - alleles[EnumBeeChromosome.FERTILITY.ordinal()] = Allele.fertilityLow; - alleles[EnumBeeChromosome.SPEED.ordinal()] = Allele.speedSlower; - alleles[EnumBeeChromosome.LIFESPAN.ordinal()] = Allele.lifespanLonger; - alleles[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceUp1; - alleles[EnumBeeChromosome.TERRITORY.ordinal()] = Allele.territoryLarge; - alleles[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = Allele.flowersEnd; - alleles[EnumBeeChromosome.NOCTURNAL.ordinal()] = Allele.boolTrue; - alleles[EnumBeeChromosome.EFFECT.ordinal()] = Allele.effectMisanthrope; + Allele.helper.set(alleles, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.LOW); + Allele.helper.set(alleles, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(alleles, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER); + Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.UP_1); + Allele.helper.set(alleles, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGE); + Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.END); + Allele.helper.set(alleles, EnumBeeChromosome.NOCTURNAL, true); + Allele.helper.set(alleles, EnumBeeChromosome.EFFECT, Allele.effectMisanthrope); } }, FROZEN("Coagapis") { @Override protected void setBranchProperties(IAllele[] alleles) { - alleles[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceUp1; - alleles[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.toleranceBoth1; - alleles[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = Allele.flowersSnow; - alleles[EnumBeeChromosome.EFFECT.ordinal()] = Allele.effectGlacial; + Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.UP_1); + Allele.helper.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.BOTH_1); + Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.SNOW); + Allele.helper.set(alleles, EnumBeeChromosome.EFFECT, Allele.effectGlacial); } }, VENGEFUL("Punapis") { @Override protected void setBranchProperties(IAllele[] alleles) { - alleles[EnumBeeChromosome.TERRITORY.ordinal()] = Allele.territoryLargest; - alleles[EnumBeeChromosome.EFFECT.ordinal()] = Allele.effectRadioactive; + Allele.helper.set(alleles, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGEST); + Allele.helper.set(alleles, EnumBeeChromosome.EFFECT, Allele.effectRadioactive); } }, FESTIVE("Festapis") { @Override protected void setBranchProperties(IAllele[] alleles) { - alleles[EnumBeeChromosome.SPEED.ordinal()] = Allele.speedSlower; - alleles[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceBoth2; - alleles[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.toleranceBoth1; - alleles[EnumBeeChromosome.LIFESPAN.ordinal()] = Allele.lifespanNormal; + Allele.helper.set(alleles, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_2); + Allele.helper.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.BOTH_1); + Allele.helper.set(alleles, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL); } }, AGRARIAN("Rustapis") { @Override protected void setBranchProperties(IAllele[] alleles) { - alleles[EnumBeeChromosome.SPEED.ordinal()] = Allele.speedSlower; - alleles[EnumBeeChromosome.LIFESPAN.ordinal()] = Allele.lifespanShorter; - alleles[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = Allele.flowersWheat; - alleles[EnumBeeChromosome.FLOWERING.ordinal()] = Allele.floweringFaster; + Allele.helper.set(alleles, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(alleles, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTER); + Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.WHEAT); + Allele.helper.set(alleles, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTER); } }, BOGGY("Paludapis") { @Override protected void setBranchProperties(IAllele[] alleles) { - alleles[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = Allele.flowersMushrooms; - alleles[EnumBeeChromosome.FLOWERING.ordinal()] = Allele.floweringSlower; - alleles[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceBoth1; + Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.MUSHROOMS); + Allele.helper.set(alleles, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWER); + Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_1); } }, MONASTIC("Monapis") { @Override protected void setBranchProperties(IAllele[] alleles) { - alleles[EnumBeeChromosome.SPEED.ordinal()] = Allele.speedSlower; - alleles[EnumBeeChromosome.LIFESPAN.ordinal()] = Allele.lifespanLong; - alleles[EnumBeeChromosome.FERTILITY.ordinal()] = Allele.fertilityLow; - alleles[EnumBeeChromosome.FLOWERING.ordinal()] = Allele.floweringFaster; - alleles[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.toleranceBoth1; - alleles[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceBoth1; - alleles[EnumBeeChromosome.CAVE_DWELLING.ordinal()] = Allele.boolTrue; - alleles[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = Allele.flowersWheat; + Allele.helper.set(alleles, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(alleles, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG); + Allele.helper.set(alleles, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.LOW); + Allele.helper.set(alleles, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTER); + Allele.helper.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.BOTH_1); + Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_1); + Allele.helper.set(alleles, EnumBeeChromosome.CAVE_DWELLING, true); + Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.WHEAT); } } ; - private final BranchBees branch; + private final IClassification branch; BeeBranchDefinition(String scientific) { - branch = new BranchBees(this.name().toLowerCase(), scientific); + branch = BeeManager.beeFactory.createBranch(this.name().toLowerCase(), scientific); } protected void setBranchProperties(IAllele[] template) { @@ -124,7 +127,7 @@ public enum BeeBranchDefinition { return template; } - public final BranchBees getBranch() { + public final IClassification getBranch() { return branch; } @@ -134,18 +137,18 @@ public enum BeeBranchDefinition { if (defaultTemplate == null) { defaultTemplate = new IAllele[EnumBeeChromosome.values().length]; - defaultTemplate[EnumBeeChromosome.SPEED.ordinal()] = Allele.speedSlowest; - defaultTemplate[EnumBeeChromosome.LIFESPAN.ordinal()] = Allele.lifespanShorter; - defaultTemplate[EnumBeeChromosome.FERTILITY.ordinal()] = Allele.fertilityNormal; - defaultTemplate[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceNone; - defaultTemplate[EnumBeeChromosome.NOCTURNAL.ordinal()] = Allele.boolFalse; - defaultTemplate[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.toleranceNone; - defaultTemplate[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = Allele.boolFalse; - defaultTemplate[EnumBeeChromosome.CAVE_DWELLING.ordinal()] = Allele.boolFalse; - defaultTemplate[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = Allele.flowersVanilla; - defaultTemplate[EnumBeeChromosome.FLOWERING.ordinal()] = Allele.floweringSlowest; - defaultTemplate[EnumBeeChromosome.TERRITORY.ordinal()] = Allele.territoryDefault; - defaultTemplate[EnumBeeChromosome.EFFECT.ordinal()] = Allele.effectNone; + Allele.helper.set(defaultTemplate, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST); + Allele.helper.set(defaultTemplate, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTER); + Allele.helper.set(defaultTemplate, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.NORMAL); + Allele.helper.set(defaultTemplate, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.NONE); + Allele.helper.set(defaultTemplate, EnumBeeChromosome.NOCTURNAL, false); + Allele.helper.set(defaultTemplate, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.NONE); + Allele.helper.set(defaultTemplate, EnumBeeChromosome.TOLERANT_FLYER, false); + Allele.helper.set(defaultTemplate, EnumBeeChromosome.CAVE_DWELLING, false); + Allele.helper.set(defaultTemplate, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.VANILLA); + Allele.helper.set(defaultTemplate, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWEST); + Allele.helper.set(defaultTemplate, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.AVERAGE); + Allele.helper.set(defaultTemplate, EnumBeeChromosome.EFFECT, Allele.effectNone); } return Arrays.copyOf(defaultTemplate, defaultTemplate.length); } diff --git a/src/main/java/forestry/apiculture/genetics/BeeDefinition.java b/src/main/java/forestry/apiculture/genetics/BeeDefinition.java index 987c01d78..c2733b951 100644 --- a/src/main/java/forestry/apiculture/genetics/BeeDefinition.java +++ b/src/main/java/forestry/apiculture/genetics/BeeDefinition.java @@ -12,30 +12,33 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.common.BiomeDictionary; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeChromosome; import forestry.api.apiculture.EnumBeeType; +import forestry.api.apiculture.IAlleleBeeSpecies; +import forestry.api.apiculture.IAlleleBeeSpeciesCustom; import forestry.api.apiculture.IBee; import forestry.api.apiculture.IBeeGenome; +import forestry.api.apiculture.IBeeMutationCustom; import forestry.api.core.EnumHumidity; import forestry.api.core.EnumTemperature; -import forestry.api.genetics.AlleleManager; import forestry.api.genetics.IAllele; import forestry.core.config.ForestryItem; -import forestry.core.genetics.Allele; -import forestry.plugins.PluginApiculture; +import forestry.core.genetics.alleles.Allele; +import forestry.core.genetics.alleles.EnumAllele; public enum BeeDefinition implements IBeeDefinition { /* HONEY BRANCH */ FOREST(BeeBranchDefinition.HONEY, "nigrocincta", true, new Color(0x19d0ec), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 0), 30); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.FLOWERING, Allele.floweringSlower); - setAllele(EnumBeeChromosome.FERTILITY, Allele.fertilityHigh); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWER); + Allele.helper.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.HIGH); } @Override @@ -45,13 +48,13 @@ public enum BeeDefinition implements IBeeDefinition { }, MEADOWS(BeeBranchDefinition.HONEY, "florea", true, new Color(0xef131e), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 0), 30); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.FLOWERING, Allele.floweringSlower); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWER); } @Override @@ -61,13 +64,13 @@ public enum BeeDefinition implements IBeeDefinition { }, COMMON(BeeBranchDefinition.HONEY, "cerana", true, new Color(0xb2b2b2), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 0), 35); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlower); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); } @Override @@ -83,14 +86,14 @@ public enum BeeDefinition implements IBeeDefinition { }, CULTIVATED(BeeBranchDefinition.HONEY, "mellifera", true, new Color(0x5734ec), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 0), 40); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedFast); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanShortest); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.FAST); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTEST); } @Override @@ -104,15 +107,15 @@ public enum BeeDefinition implements IBeeDefinition { /* NOBLE BRANCH */ NOBLE(BeeBranchDefinition.NOBLE, "nobilis", false, new Color(0xec9a19), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 5), 20); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlower); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanShort); - setAllele(EnumBeeChromosome.FLOWERING, Allele.floweringSlow); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT); + Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOW); } @Override @@ -122,15 +125,15 @@ public enum BeeDefinition implements IBeeDefinition { }, MAJESTIC(BeeBranchDefinition.NOBLE, "regalis", true, new Color(0x7f0000), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 5), 30); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedNorm); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanShortened); - setAllele(EnumBeeChromosome.FERTILITY, Allele.fertilityMaximum); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTENED); + Allele.helper.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.MAXIMUM); } @Override @@ -140,17 +143,17 @@ public enum BeeDefinition implements IBeeDefinition { }, IMPERIAL(BeeBranchDefinition.NOBLE, "imperatorius", false, new Color(0xa3e02f), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 5), 20) .addProduct(ForestryItem.royalJelly.getItemStack(), 15) .setHasEffect(); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlower); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanNormal); - setAllele(EnumBeeChromosome.EFFECT, Allele.effectBeatific); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL); + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectBeatific); } @Override @@ -162,15 +165,15 @@ public enum BeeDefinition implements IBeeDefinition { /* INDUSTRIOUS BRANCH */ DILIGENT(BeeBranchDefinition.INDUSTRIOUS, "sedulus", false, new Color(0xc219ec), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 3), 20); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlower); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanShort); - setAllele(EnumBeeChromosome.FLOWERING, Allele.floweringSlow); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT); + Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOW); } @Override @@ -180,14 +183,14 @@ public enum BeeDefinition implements IBeeDefinition { }, UNWEARY(BeeBranchDefinition.INDUSTRIOUS, "assiduus", true, new Color(0x19ec5a), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 3), 30); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedNorm); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanShortened); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTENED); } @Override @@ -197,17 +200,17 @@ public enum BeeDefinition implements IBeeDefinition { }, INDUSTRIOUS(BeeBranchDefinition.INDUSTRIOUS, "industria", false, new Color(0xffffff), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 3), 20) .addProduct(ForestryItem.pollenCluster.getItemStack(), 15) .setHasEffect(); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlower); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanNormal); - setAllele(EnumBeeChromosome.FLOWERING, Allele.floweringFast); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL); + Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FAST); } @Override @@ -219,17 +222,17 @@ public enum BeeDefinition implements IBeeDefinition { /* HEROIC BRANCH */ STEADFAST(BeeBranchDefinition.HEROIC, "legio", false, new Color(0x4d2b15), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 1), 20) .setHasEffect(); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlower); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanNormal); - setAllele(EnumBeeChromosome.NOCTURNAL, Allele.boolTrue); - setAllele(EnumBeeChromosome.CAVE_DWELLING, Allele.boolTrue); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL); + Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true); + Allele.helper.set(template, EnumBeeChromosome.CAVE_DWELLING, true); } @Override @@ -239,17 +242,17 @@ public enum BeeDefinition implements IBeeDefinition { }, VALIANT(BeeBranchDefinition.HEROIC, "centurio", true, new Color(0x626bdd), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 1), 30) .addSpecialty(new ItemStack(Items.sugar), 15); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlow); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanLong); - setAllele(EnumBeeChromosome.NOCTURNAL, Allele.boolTrue); - setAllele(EnumBeeChromosome.CAVE_DWELLING, Allele.boolTrue); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG); + Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true); + Allele.helper.set(template, EnumBeeChromosome.CAVE_DWELLING, true); } @Override @@ -259,43 +262,41 @@ public enum BeeDefinition implements IBeeDefinition { }, HEROIC(BeeBranchDefinition.HEROIC, "kraphti", false, new Color(0xb3d5e4), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 1), 40) .setHasEffect(); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlow); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanLong); - setAllele(EnumBeeChromosome.NOCTURNAL, Allele.boolTrue); - setAllele(EnumBeeChromosome.CAVE_DWELLING, Allele.boolTrue); - setAllele(EnumBeeChromosome.EFFECT, Allele.effectHeroic); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG); + Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true); + Allele.helper.set(template, EnumBeeChromosome.CAVE_DWELLING, true); + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectHeroic); } @Override protected void registerMutations() { registerMutation(STEADFAST, VALIANT, 6) - .restrictBiomeType(BiomeDictionary.Type.FOREST) - .enableStrictBiomeCheck(); + .restrictBiomeType(BiomeDictionary.Type.FOREST); } }, /* INFERNAL BRANCH */ SINISTER(BeeBranchDefinition.INFERNAL, "caecus", false, new Color(0xb3d5e4), new Color(0x9a2323)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 2), 45) - .setEntityTexture("sinisterBee") .setTemperature(EnumTemperature.HELLISH) .setHumidity(EnumHumidity.ARID); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlower); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanNormal); - setAllele(EnumBeeChromosome.EFFECT, Allele.effectAggressive); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL); + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectAggressive); } @Override @@ -308,19 +309,18 @@ public enum BeeDefinition implements IBeeDefinition { }, FIENDISH(BeeBranchDefinition.INFERNAL, "diabolus", true, new Color(0xd7bee5), new Color(0x9a2323)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 2), 55) .addProduct(ForestryItem.ash.getItemStack(), 15) - .setEntityTexture("sinisterBee") .setTemperature(EnumTemperature.HELLISH) .setHumidity(EnumHumidity.ARID); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedNorm); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanLong); - setAllele(EnumBeeChromosome.EFFECT, Allele.effectAggressive); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG); + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectAggressive); } @Override @@ -333,20 +333,19 @@ public enum BeeDefinition implements IBeeDefinition { }, DEMONIC(BeeBranchDefinition.INFERNAL, "draco", false, new Color(0xf4e400), new Color(0x9a2323)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 2), 45) .addProduct(new ItemStack(Items.glowstone_dust), 15) - .setEntityTexture("sinisterBee") .setHasEffect() .setTemperature(EnumTemperature.HELLISH) .setHumidity(EnumHumidity.ARID); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlower); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanLonger); - setAllele(EnumBeeChromosome.EFFECT, Allele.effectIgnition); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER); + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectIgnition); } @Override @@ -359,16 +358,16 @@ public enum BeeDefinition implements IBeeDefinition { /* AUSTERE BRANCH */ MODEST(BeeBranchDefinition.AUSTERE, "modicus", false, new Color(0xc5be86), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 7), 20) .setTemperature(EnumTemperature.HOT) .setHumidity(EnumHumidity.ARID); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlower); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanShort); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT); } @Override @@ -378,29 +377,31 @@ public enum BeeDefinition implements IBeeDefinition { }, FRUGAL(BeeBranchDefinition.AUSTERE, "permodestus", true, new Color(0xe8dcb1), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 7), 30) .setTemperature(EnumTemperature.HOT) .setHumidity(EnumHumidity.ARID); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedNorm); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanLong); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG); } @Override protected void registerMutations() { registerMutation(MODEST, SINISTER, 16) - .setTemperatureRainfall(1.9f, 2.0f, 0.0f, 0.1f); + .restrictTemperature(EnumTemperature.HOT, EnumTemperature.HELLISH) + .restrictHumidity(EnumHumidity.ARID); registerMutation(MODEST, FIENDISH, 10) - .setTemperatureRainfall(1.9f, 2.0f, 0.0f, 0.1f); + .restrictTemperature(EnumTemperature.HOT, EnumTemperature.HELLISH) + .restrictHumidity(EnumHumidity.ARID); } }, AUSTERE(BeeBranchDefinition.AUSTERE, "correpere", false, new Color(0xfffac2), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 7), 20) .addSpecialty(ForestryItem.beeComb.getItemStack(1, 10), 50) .setHasEffect() @@ -409,34 +410,34 @@ public enum BeeDefinition implements IBeeDefinition { } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlowest); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanLonger); - setAllele(EnumBeeChromosome.TEMPERATURE_TOLERANCE, Allele.toleranceDown2); - setAllele(EnumBeeChromosome.EFFECT, Allele.effectCreeper); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER); + Allele.helper.set(template, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.DOWN_2); + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectCreeper); } @Override protected void registerMutations() { registerMutation(MODEST, FRUGAL, 8) - .setTemperatureRainfall(1.9f, 2.0f, 0.0f, 0.1f); + .restrictTemperature(EnumTemperature.HOT, EnumTemperature.HELLISH) + .restrictHumidity(EnumHumidity.ARID); } }, /* TROPICAL BRANCH */ TROPICAL(BeeBranchDefinition.TROPICAL, "mendelia", false, new Color(0x378020), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 6), 20) - .setEntityTexture("tropicalBee") .setTemperature(EnumTemperature.WARM) .setHumidity(EnumHumidity.DAMP); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlower); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanShort); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT); } @Override @@ -446,17 +447,16 @@ public enum BeeDefinition implements IBeeDefinition { }, EXOTIC(BeeBranchDefinition.TROPICAL, "darwini", true, new Color(0x304903), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 6), 30) - .setEntityTexture("tropicalBee") .setTemperature(EnumTemperature.WARM) .setHumidity(EnumHumidity.DAMP); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedNorm); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanLong); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG); } @Override @@ -466,20 +466,19 @@ public enum BeeDefinition implements IBeeDefinition { }, EDENIC(BeeBranchDefinition.TROPICAL, "humboldti", false, new Color(0x393d0d), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 6), 20) - .setEntityTexture("tropicalBee") .setHasEffect() .setTemperature(EnumTemperature.WARM) .setHumidity(EnumHumidity.DAMP); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlowest); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanLonger); - setAllele(EnumBeeChromosome.TEMPERATURE_TOLERANCE, Allele.toleranceBoth2); - setAllele(EnumBeeChromosome.EFFECT, Allele.effectExploration); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER); + Allele.helper.set(template, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_2); + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectExploration); } @Override @@ -491,14 +490,13 @@ public enum BeeDefinition implements IBeeDefinition { /* END BRANCH */ ENDED(BeeBranchDefinition.END, "notchi", false, new Color(0xe079fa), new Color(0xd9de9e)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 8), 30) - .setEntityTexture("endBee") .setTemperature(EnumTemperature.COLD); } @Override - protected void setAlleles() { + protected void setAlleles(IAllele[] template) { } @@ -510,15 +508,14 @@ public enum BeeDefinition implements IBeeDefinition { SPECTRAL(BeeBranchDefinition.END, "idolum", true, new Color(0xa98bed), new Color(0xd9de9e)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 8), 50) - .setEntityTexture("endBee") .setTemperature(EnumTemperature.COLD); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.EFFECT, Allele.effectReanimation); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectReanimation); } @Override @@ -529,18 +526,17 @@ public enum BeeDefinition implements IBeeDefinition { PHANTASMAL(BeeBranchDefinition.END, "lemur", false, new Color(0xcc00fa), new Color(0xd9de9e)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 8), 40) - .setEntityTexture("endBee") .setHasEffect() .setTemperature(EnumTemperature.COLD); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlowest); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanLongest); - setAllele(EnumBeeChromosome.EFFECT, Allele.effectResurrection); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGEST); + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectResurrection); } @Override @@ -552,17 +548,16 @@ public enum BeeDefinition implements IBeeDefinition { /* FROZEN BRANCH */ WINTRY(BeeBranchDefinition.FROZEN, "brumalis", false, new Color(0xa0ffc8), new Color(0xdaf5f3)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 4), 30) - .setEntityTexture("icyBee") .setTemperature(EnumTemperature.ICY); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlower); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanShort); - setAllele(EnumBeeChromosome.FERTILITY, Allele.fertilityMaximum); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT); + Allele.helper.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.MAXIMUM); } @Override @@ -572,60 +567,58 @@ public enum BeeDefinition implements IBeeDefinition { }, ICY(BeeBranchDefinition.FROZEN, "coagulis", true, new Color(0xa0ffff), new Color(0xdaf5f3)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 4), 20) .addProduct(ForestryItem.craftingMaterial.getItemStack(1, 5), 20) - .setEntityTexture("icyBee") .setTemperature(EnumTemperature.ICY); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlow); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanShort); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT); } @Override protected void registerMutations() { registerMutation(INDUSTRIOUS, WINTRY, 12) - .setTemperature(0f, 0.15f); + .restrictTemperature(EnumTemperature.ICY, EnumTemperature.COLD); } }, GLACIAL(BeeBranchDefinition.FROZEN, "glacialis", false, new Color(0xefffff), new Color(0xdaf5f3)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 4), 20) .addProduct(ForestryItem.craftingMaterial.getItemStack(1, 5), 40) - .setEntityTexture("icyBee") .setTemperature(EnumTemperature.ICY) .setHasEffect(); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlower); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanShort); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT); } @Override protected void registerMutations() { registerMutation(ICY, WINTRY, 8) - .setTemperature(0f, 0.15f); + .restrictTemperature(EnumTemperature.ICY, EnumTemperature.COLD); } }, /* VENGEFUL BRANCH */ VINDICTIVE(BeeBranchDefinition.VENGEFUL, "ultio", false, new Color(0xeafff3), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 9), 25) .setIsNotCounted(); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlower); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanNormal); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL); } @Override @@ -635,15 +628,15 @@ public enum BeeDefinition implements IBeeDefinition { }, VENGEFUL(BeeBranchDefinition.VENGEFUL, "punire", false, new Color(0xc2de00), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 9), 40) .setIsNotCounted(); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedNorm); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanLonger); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER); } @Override @@ -654,16 +647,16 @@ public enum BeeDefinition implements IBeeDefinition { }, AVENGING(BeeBranchDefinition.VENGEFUL, "hostimentum", false, new Color(0xddff00), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 9), 40) .setHasEffect() .setIsNotCounted(); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlowest); - setAllele(EnumBeeChromosome.LIFESPAN, Allele.lifespanLongest); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST); + Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGEST); } @Override @@ -676,7 +669,7 @@ public enum BeeDefinition implements IBeeDefinition { // Easter LEPORINE(BeeBranchDefinition.FESTIVE, "lepus", false, new Color(0xfeff8f), new Color(0x3cd757)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 6), 30) .addProduct(new ItemStack(Items.egg), 10) .setHasEffect() @@ -684,19 +677,21 @@ public enum BeeDefinition implements IBeeDefinition { } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.EFFECT, Allele.effectFestiveEaster); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectFestiveEaster); } @Override protected void registerMutations() { - registerMutationTimeLimited(MEADOWS, FOREST, 10, 3, 29, 4, 15).setIsSecret(); + registerMutation(MEADOWS, FOREST, 10) + .restrictDateRange(3, 29, 4, 15) + .setIsSecret(); } }, // Christmas MERRY(BeeBranchDefinition.FESTIVE, "feliciter", false, new Color(0xffffff), new Color(0xd40000)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 4), 30) .addProduct(ForestryItem.craftingMaterial.getItemStack(1, 5), 20) .setTemperature(EnumTemperature.ICY) @@ -705,20 +700,22 @@ public enum BeeDefinition implements IBeeDefinition { } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.NOCTURNAL, Allele.boolTrue); - setAllele(EnumBeeChromosome.EFFECT, Allele.effectSnowing); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true); + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectSnowing); } @Override protected void registerMutations() { - registerMutationTimeLimited(WINTRY, FOREST, 10, 12, 21, 12, 27).setIsSecret(); + registerMutation(WINTRY, FOREST, 10) + .restrictDateRange(12, 21, 12, 27) + .setIsSecret(); } }, // New Year TIPSY(BeeBranchDefinition.FESTIVE, "ebrius", false, new Color(0xffffff), new Color(0xc219ec)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 4), 30) .addProduct(ForestryItem.craftingMaterial.getItemStack(1, 5), 20) .setTemperature(EnumTemperature.ICY) @@ -727,21 +724,23 @@ public enum BeeDefinition implements IBeeDefinition { } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.NOCTURNAL, Allele.boolTrue); - setAllele(EnumBeeChromosome.EFFECT, Allele.effectDrunkard); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true); + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectDrunkard); } @Override protected void registerMutations() { - registerMutationTimeLimited(WINTRY, MEADOWS, 10, 12, 27, 1, 2).setIsSecret(); + registerMutation(WINTRY, MEADOWS, 10) + .restrictDateRange(12, 27, 1, 2) + .setIsSecret(); } }, // (missing) Solstice // Halloween TRICKY(BeeBranchDefinition.FESTIVE, "libita", false, new Color(0x49413B), new Color(0xFF6A00)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 0), 40) .addProduct(new ItemStack(Items.cookie), 15) .addSpecialty(new ItemStack(Items.skull, 1, 0), 2) @@ -753,15 +752,17 @@ public enum BeeDefinition implements IBeeDefinition { } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.NOCTURNAL, Allele.boolTrue); - setAllele(EnumBeeChromosome.TOLERANT_FLYER, Allele.boolTrue); - setAllele(EnumBeeChromosome.FLOWER_PROVIDER, Allele.flowersGourd); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true); + Allele.helper.set(template, EnumBeeChromosome.TOLERANT_FLYER, true); + Allele.helper.set(template, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.GOURD); } @Override protected void registerMutations() { - registerMutationTimeLimited(SINISTER, COMMON, 10, 10, 15, 11, 3).setIsSecret(); + registerMutation(SINISTER, COMMON, 10) + .restrictDateRange(10, 15, 11, 3) + .setIsSecret(); } }, // (missing) Thanksgiving @@ -769,74 +770,71 @@ public enum BeeDefinition implements IBeeDefinition { /* AGRARIAN BRANCH */ RURAL(BeeBranchDefinition.AGRARIAN, "rustico", false, new Color(0xfeff8f), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 14), 20); } @Override - protected void setAlleles() { + protected void setAlleles(IAllele[] template) { } @Override protected void registerMutations() { registerMutation(MEADOWS, DILIGENT, 12) - .restrictBiomeType(BiomeDictionary.Type.PLAINS) - .enableStrictBiomeCheck(); + .restrictBiomeType(BiomeDictionary.Type.PLAINS); } }, FARMERLY(BeeBranchDefinition.AGRARIAN, "arator", true, new Color(0xD39728), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 14), 27); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlow); - setAllele(EnumBeeChromosome.TERRITORY, Allele.territoryLarge); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW); + Allele.helper.set(template, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGE); } @Override protected void registerMutations() { registerMutation(RURAL, UNWEARY, 10) - .restrictBiomeType(BiomeDictionary.Type.PLAINS) - .enableStrictBiomeCheck(); + .restrictBiomeType(BiomeDictionary.Type.PLAINS); } }, AGRARIAN(BeeBranchDefinition.AGRARIAN, "arator", true, new Color(0xFFCA75), new Color(0xFFE047)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 14), 35) .setHasEffect(); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.SPEED, Allele.speedSlow); - setAllele(EnumBeeChromosome.HUMIDITY_TOLERANCE, Allele.toleranceBoth2); - setAllele(EnumBeeChromosome.EFFECT, Allele.effectFertile); - setAllele(EnumBeeChromosome.TERRITORY, Allele.territoryLarge); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW); + Allele.helper.set(template, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.BOTH_2); + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectFertile); + Allele.helper.set(template, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGE); } @Override protected void registerMutations() { registerMutation(FARMERLY, INDUSTRIOUS, 6) - .restrictBiomeType(BiomeDictionary.Type.PLAINS) - .enableStrictBiomeCheck(); + .restrictBiomeType(BiomeDictionary.Type.PLAINS); } }, /* BOGGY BRANCH */ MARSHY(BeeBranchDefinition.BOGGY, "adorasti", true, new Color(0x546626), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 15), 30) .setHumidity(EnumHumidity.DAMP); } @Override - protected void setAlleles() { + protected void setAlleles(IAllele[] template) { } @@ -847,58 +845,60 @@ public enum BeeDefinition implements IBeeDefinition { }, MIRY(BeeBranchDefinition.BOGGY, "humidium", true, new Color(0x92AF42), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 15), 36) .setHumidity(EnumHumidity.DAMP); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.FERTILITY, Allele.fertilityMaximum); - setAllele(EnumBeeChromosome.TOLERANT_FLYER, Allele.boolTrue); - setAllele(EnumBeeChromosome.NOCTURNAL, Allele.boolTrue); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.MAXIMUM); + Allele.helper.set(template, EnumBeeChromosome.TOLERANT_FLYER, true); + Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true); } @Override protected void registerMutations() { registerMutation(MARSHY, NOBLE, 15) - .setTemperatureRainfall(0.75f, 0.94f, 0.75f, 2.0f); + .restrictTemperature(EnumTemperature.WARM) + .restrictHumidity(EnumHumidity.DAMP); } }, BOGGY(BeeBranchDefinition.BOGGY, "paluster", true, new Color(0x698948), new Color(0xffdc16)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 15), 39) .addSpecialty(ForestryItem.peat.getItemStack(), 8) .setHumidity(EnumHumidity.DAMP); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.TOLERANT_FLYER, Allele.boolTrue); - setAllele(EnumBeeChromosome.NOCTURNAL, Allele.boolTrue); - setAllele(EnumBeeChromosome.EFFECT, Allele.effectMycophilic); - setAllele(EnumBeeChromosome.TERRITORY, Allele.territoryLarger); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.TOLERANT_FLYER, true); + Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true); + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectMycophilic); + Allele.helper.set(template, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGER); } @Override protected void registerMutations() { registerMutation(MARSHY, MIRY, 9) - .setTemperatureRainfall(0.75f, 0.94f, 0.75f, 2.0f); + .restrictTemperature(EnumTemperature.WARM) + .restrictHumidity(EnumHumidity.DAMP); } }, /* MONASTIC BRANCH */ MONASTIC(BeeBranchDefinition.MONASTIC, "monachus", false, new Color(0x42371c), new Color(0xfff7b6)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 14), 30) .addSpecialty(ForestryItem.beeComb.getItemStack(1, 16), 10) .setJubilanceProvider(new JubilanceProviderHermit()); } @Override - protected void setAlleles() { + protected void setAlleles(IAllele[] template) { } @@ -909,14 +909,14 @@ public enum BeeDefinition implements IBeeDefinition { }, SECLUDED(BeeBranchDefinition.MONASTIC, "contractus", true, new Color(0x7b6634), new Color(0xfff7b6)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addSpecialty(ForestryItem.beeComb.getItemStack(1, 16), 20) .setJubilanceProvider(new JubilanceProviderHermit()); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.FLOWERING, Allele.floweringFastest); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTEST); } @Override @@ -926,16 +926,16 @@ public enum BeeDefinition implements IBeeDefinition { }, HERMITIC(BeeBranchDefinition.MONASTIC, "anachoreta", false, new Color(0xffd46c), new Color(0xfff7b6)) { @Override - protected void setSpeciesProperties(AlleleBeeSpecies beeSpecies) { + protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies.addSpecialty(ForestryItem.beeComb.getItemStack(1, 16), 20) .setJubilanceProvider(new JubilanceProviderHermit()) .setHasEffect(); } @Override - protected void setAlleles() { - setAllele(EnumBeeChromosome.FLOWERING, Allele.floweringFastest); - setAllele(EnumBeeChromosome.EFFECT, Allele.effectRepulsion); + protected void setAlleles(IAllele[] template) { + Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTEST); + Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectRepulsion); } @Override @@ -947,22 +947,26 @@ public enum BeeDefinition implements IBeeDefinition { public static final EnumSet overworldHiveBees = EnumSet.of(FOREST, MARSHY, MEADOWS, MODEST, TROPICAL, WINTRY); private final BeeBranchDefinition branch; - private final AlleleBeeSpecies species; + private final IAlleleBeeSpeciesCustom species; + private IAllele[] template; private IBeeGenome genome; BeeDefinition(BeeBranchDefinition branch, String binomial, boolean dominant, Color primary, Color secondary) { String lowercaseName = this.toString().toLowerCase(Locale.ENGLISH); - String uid = "species" + WordUtils.capitalize(lowercaseName); + String species = "species" + WordUtils.capitalize(lowercaseName); + + String uid = "forestry." + species; + String description = "for.description." + species; String name = "bees.species." + lowercaseName; - this.species = new AlleleBeeSpecies(uid, dominant, name, branch.getBranch(), binomial, primary.getRGB(), secondary.getRGB()); this.branch = branch; + this.species = BeeManager.beeFactory.createSpecies(uid, dominant, "Sengir", name, description, branch.getBranch(), binomial, primary.getRGB(), secondary.getRGB()); } - protected abstract void setSpeciesProperties(AlleleBeeSpecies beeSpecies); + protected abstract void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies); - protected abstract void setAlleles(); + protected abstract void setAlleles(IAllele[] template); protected abstract void registerMutations(); @@ -982,32 +986,16 @@ public enum BeeDefinition implements IBeeDefinition { setSpeciesProperties(species); template = branch.getTemplate(); - setAllele(EnumBeeChromosome.SPECIES, species); - setAlleles(); + Allele.helper.set(template, EnumBeeChromosome.SPECIES, species); + setAlleles(template); - genome = PluginApiculture.beeInterface.templateAsGenome(template); + genome = BeeManager.beeRoot.templateAsGenome(template); - AlleleManager.alleleRegistry.registerAllele(species); - PluginApiculture.beeInterface.registerTemplate(template); + BeeManager.beeRoot.registerTemplate(template); } - protected final BeeMutation registerMutation(BeeDefinition parent1, BeeDefinition parent2, int chance) { - BeeMutation beeMutation = new BeeMutation(parent1, parent2, this, chance); - PluginApiculture.beeInterface.registerMutation(beeMutation); - return beeMutation; - } - - protected final BeeMutation registerMutationTimeLimited(BeeDefinition parent1, BeeDefinition parent2, int chance, int startMonth, int startDay, int endMonth, int endDay) { - MutationTimeLimited.DayMonth start = new MutationTimeLimited.DayMonth(startDay, startMonth); - MutationTimeLimited.DayMonth end = new MutationTimeLimited.DayMonth(endDay, endMonth); - - MutationTimeLimited beeMutation = new MutationTimeLimited(parent1, parent2, this, chance, start, end); - PluginApiculture.beeInterface.registerMutation(beeMutation); - return beeMutation; - } - - protected final void setAllele(EnumBeeChromosome chromosome, IAllele allele) { - template[chromosome.ordinal()] = allele; + protected final IBeeMutationCustom registerMutation(BeeDefinition parent1, BeeDefinition parent2, int chance) { + return BeeManager.beeMutationFactory.createMutation(parent1.species, parent2.species, getTemplate(), chance); } @Override @@ -1028,7 +1016,7 @@ public enum BeeDefinition implements IBeeDefinition { @Override public final ItemStack getMemberStack(EnumBeeType beeType) { IBee bee = getIndividual(); - return PluginApiculture.beeInterface.getMemberStack(bee, beeType.ordinal()); + return BeeManager.beeRoot.getMemberStack(bee, beeType.ordinal()); } public final IBeeDefinition getRainResist() { diff --git a/src/main/java/forestry/apiculture/genetics/BeeFactory.java b/src/main/java/forestry/apiculture/genetics/BeeFactory.java new file mode 100644 index 000000000..dd080d279 --- /dev/null +++ b/src/main/java/forestry/apiculture/genetics/BeeFactory.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * Copyright (c) 2011-2014 SirSengir. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser Public License v3 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.apiculture.genetics; + +import forestry.api.apiculture.IAlleleBeeSpeciesCustom; +import forestry.api.apiculture.IBeeFactory; +import forestry.api.genetics.AlleleManager; +import forestry.api.genetics.IClassification; + +public class BeeFactory implements IBeeFactory { + @Override + public IAlleleBeeSpeciesCustom createSpecies(String uid, boolean dominant, String authority, String unlocalizedName, String unlocalizedDescription, IClassification branch, String binomial, int primaryColor, int secondaryColor) { + IAlleleBeeSpeciesCustom species = new AlleleBeeSpecies(uid, authority, unlocalizedDescription, dominant, unlocalizedName, branch, binomial, primaryColor, secondaryColor); + AlleleManager.alleleRegistry.registerAllele(species); + return species; + } + + @Override + public IClassification createBranch(String uid, String scientific) { + return new BranchBees(uid, scientific); + } +} diff --git a/src/main/java/forestry/apiculture/genetics/BeeGenome.java b/src/main/java/forestry/apiculture/genetics/BeeGenome.java index eba11027e..b0ab98f36 100755 --- a/src/main/java/forestry/apiculture/genetics/BeeGenome.java +++ b/src/main/java/forestry/apiculture/genetics/BeeGenome.java @@ -13,6 +13,7 @@ package forestry.apiculture.genetics; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeChromosome; import forestry.api.apiculture.IAlleleBeeEffect; import forestry.api.apiculture.IAlleleBeeSpecies; @@ -24,12 +25,11 @@ import forestry.api.genetics.IAlleleInteger; import forestry.api.genetics.IChromosome; import forestry.api.genetics.IFlowerProvider; import forestry.api.genetics.ISpeciesRoot; -import forestry.core.genetics.AlleleArea; -import forestry.core.genetics.AlleleBoolean; -import forestry.core.genetics.AlleleTolerance; import forestry.core.genetics.Genome; +import forestry.core.genetics.alleles.AlleleArea; +import forestry.core.genetics.alleles.AlleleBoolean; +import forestry.core.genetics.alleles.AlleleTolerance; import forestry.core.vect.Vect; -import forestry.plugins.PluginApiculture; public class BeeGenome extends Genome implements IBeeGenome { /** @@ -72,7 +72,7 @@ public class BeeGenome extends Genome implements IBeeGenome { // NBT RETRIEVAL public static IAlleleBeeSpecies getSpecies(ItemStack itemStack) { - return (IAlleleBeeSpecies) getActiveAllele(itemStack, EnumBeeChromosome.SPECIES, PluginApiculture.beeInterface); + return (IAlleleBeeSpecies) getActiveAllele(itemStack, EnumBeeChromosome.SPECIES, BeeManager.beeRoot); } // / INFORMATION RETRIEVAL @@ -149,6 +149,6 @@ public class BeeGenome extends Genome implements IBeeGenome { @Override public ISpeciesRoot getSpeciesRoot() { - return PluginApiculture.beeInterface; + return BeeManager.beeRoot; } } diff --git a/src/main/java/forestry/apiculture/genetics/BeeHelper.java b/src/main/java/forestry/apiculture/genetics/BeeHelper.java index 16b7a34c4..3db802983 100755 --- a/src/main/java/forestry/apiculture/genetics/BeeHelper.java +++ b/src/main/java/forestry/apiculture/genetics/BeeHelper.java @@ -25,6 +25,7 @@ import com.mojang.authlib.GameProfile; import cpw.mods.fml.common.FMLCommonHandler; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeChromosome; import forestry.api.apiculture.EnumBeeType; import forestry.api.apiculture.IAlleleBeeSpecies; @@ -215,7 +216,7 @@ public class BeeHelper extends SpeciesRoot implements IBeeRoot { @Override public void registerTemplate(String identifier, IAllele[] template) { - beeTemplates.add(new Bee(PluginApiculture.beeInterface.templateAsGenome(template))); + beeTemplates.add(new Bee(BeeManager.beeRoot.templateAsGenome(template))); speciesTemplates.put(identifier, template); } diff --git a/src/main/java/forestry/apiculture/genetics/BeeMutation.java b/src/main/java/forestry/apiculture/genetics/BeeMutation.java index 303d4917d..aef32f24c 100755 --- a/src/main/java/forestry/apiculture/genetics/BeeMutation.java +++ b/src/main/java/forestry/apiculture/genetics/BeeMutation.java @@ -10,110 +10,49 @@ ******************************************************************************/ package forestry.apiculture.genetics; -import java.util.ArrayList; -import java.util.List; - import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; - -import net.minecraftforge.common.BiomeDictionary; +import forestry.api.apiculture.BeeManager; +import forestry.api.apiculture.IAlleleBeeSpecies; import forestry.api.apiculture.IBeeGenome; import forestry.api.apiculture.IBeeHousing; -import forestry.api.apiculture.IBeeMutation; +import forestry.api.apiculture.IBeeMutationCustom; import forestry.api.apiculture.IBeeRoot; import forestry.api.genetics.IAllele; import forestry.api.genetics.IGenome; import forestry.core.genetics.Mutation; -import forestry.plugins.PluginApiculture; -public class BeeMutation extends Mutation implements IBeeMutation { - boolean requiresDay = false; - boolean requiresNight = false; +public class BeeMutation extends Mutation implements IBeeMutationCustom { - private final List restrictBiomeTypes = new ArrayList(); - private boolean strictBiomeCheck = false; - - public BeeMutation(BeeDefinition bee0, BeeDefinition bee1, BeeDefinition result, int chance) { - super(bee0.getGenome().getPrimary(), bee1.getGenome().getPrimary(), result.getTemplate(), chance); + public BeeMutation(IAlleleBeeSpecies bee0, IAlleleBeeSpecies bee1, IAllele[] result, int chance) { + super(bee0, bee1, result, chance); } @Override public IBeeRoot getRoot() { - return PluginApiculture.beeInterface; - } - - public BeeMutation enableStrictBiomeCheck() { - strictBiomeCheck = true; - return this; - } - - public BeeMutation restrictBiomeType(BiomeDictionary.Type type) { - restrictBiomeTypes.add(type); - specialConditions.add(String.format("Is restricted to %s-like environments.", type.toString())); - return this; - } - - public BeeMutation requireDay() { - requiresDay = true; - requiresNight = false; - specialConditions.add("Can only occur during the day."); - return this; - } - - public BeeMutation requireNight() { - requiresDay = false; - requiresNight = true; - specialConditions.add("Can only occur during the night."); - return this; + return BeeManager.beeRoot; } @Override public float getChance(IBeeHousing housing, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) { + return getChance(housing, (IAlleleBeeSpecies) allele0, (IAlleleBeeSpecies) allele1, (IBeeGenome) genome0, (IBeeGenome) genome1); + } + + @Override + public float getChance(IBeeHousing housing, IAlleleBeeSpecies allele0, IAlleleBeeSpecies allele1, IBeeGenome genome0, IBeeGenome genome1) { World world = housing.getWorld(); - if (requiresDay && !world.isDaytime()) { + int x = housing.getXCoord(); + int y = housing.getYCoord(); + int z = housing.getZCoord(); + + float processedChance = super.getChance(world, x, y, z, allele0, allele1, genome0, genome1); + if (processedChance <= 0) { return 0; } - if (requiresNight && world.isDaytime()) { - return 0; - } - - // Skip if we are restricted by biomes and this one does not match. - if (restrictBiomeTypes.size() > 0) { - boolean noneMatched = true; - - BiomeGenBase biome = housing.getBiome(); - if (strictBiomeCheck) { - BiomeDictionary.Type[] types = BiomeDictionary.getTypesForBiome(biome); - if (types.length == 1 && restrictBiomeTypes.contains(types[0])) { - noneMatched = false; - } - } else { - for (BiomeDictionary.Type type : restrictBiomeTypes) { - if (BiomeDictionary.isBiomeOfType(biome, type)) { - noneMatched = false; - break; - } - } - } - - if (noneMatched) { - return 0; - } - } - - BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(housing.getXCoord(), housing.getZCoord()); - if (biome.temperature < minTemperature || biome.temperature > maxTemperature) { - return 0; - } - if (biome.rainfall < minRainfall || biome.rainfall > maxRainfall) { - return 0; - } - - float processedChance = chance * housing.getMutationModifier((IBeeGenome) genome0, (IBeeGenome) genome1, 1f) - * PluginApiculture.beeInterface.getBeekeepingMode(world).getMutationModifier((IBeeGenome) genome0, (IBeeGenome) genome1, 1f); + processedChance *= housing.getMutationModifier(genome0, genome1, 1f); + processedChance *= BeeManager.beeRoot.getBeekeepingMode(world).getMutationModifier(genome0, genome1, 1f); if (processedChance <= 0) { return 0; } diff --git a/src/main/java/forestry/apiculture/genetics/IJubilanceProvider.java b/src/main/java/forestry/apiculture/genetics/BeeMutationFactory.java old mode 100755 new mode 100644 similarity index 53% rename from src/main/java/forestry/apiculture/genetics/IJubilanceProvider.java rename to src/main/java/forestry/apiculture/genetics/BeeMutationFactory.java index 47b8dc5dc..2013e75d2 --- a/src/main/java/forestry/apiculture/genetics/IJubilanceProvider.java +++ b/src/main/java/forestry/apiculture/genetics/BeeMutationFactory.java @@ -1,19 +1,27 @@ -/******************************************************************************* - * Copyright (c) 2011-2014 SirSengir. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser Public License v3 - * which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/lgpl-3.0.txt - * - * Various Contributors including, but not limited to: - * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges - ******************************************************************************/ -package forestry.apiculture.genetics; - -import forestry.api.apiculture.IAlleleBeeSpecies; -import forestry.api.apiculture.IBeeGenome; -import forestry.api.apiculture.IBeeHousing; - -public interface IJubilanceProvider { - boolean isJubilant(IAlleleBeeSpecies species, IBeeGenome genome, IBeeHousing housing); -} +/******************************************************************************* + * Copyright (c) 2011-2014 SirSengir. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser Public License v3 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.apiculture.genetics; + +import forestry.api.apiculture.BeeManager; +import forestry.api.apiculture.IAlleleBeeSpecies; +import forestry.api.apiculture.IBeeMutationCustom; +import forestry.api.apiculture.IBeeMutationFactory; +import forestry.api.genetics.IAllele; + +public class BeeMutationFactory implements IBeeMutationFactory { + + @Override + public IBeeMutationCustom createMutation(IAlleleBeeSpecies parentBee0, IAlleleBeeSpecies parentBee1, IAllele[] result, int chance) { + IBeeMutationCustom mutation = new BeeMutation(parentBee0, parentBee1, result, chance); + BeeManager.beeRoot.registerMutation(mutation); + return mutation; + } +} diff --git a/src/main/java/forestry/apiculture/genetics/BeeVariation.java b/src/main/java/forestry/apiculture/genetics/BeeVariation.java index f6c0bcc4b..3e6353944 100644 --- a/src/main/java/forestry/apiculture/genetics/BeeVariation.java +++ b/src/main/java/forestry/apiculture/genetics/BeeVariation.java @@ -2,13 +2,13 @@ package forestry.apiculture.genetics; import net.minecraft.item.ItemStack; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeChromosome; import forestry.api.apiculture.EnumBeeType; import forestry.api.apiculture.IBee; import forestry.api.apiculture.IBeeGenome; import forestry.api.genetics.IAllele; -import forestry.core.genetics.Allele; -import forestry.plugins.PluginApiculture; +import forestry.core.genetics.alleles.Allele; public abstract class BeeVariation implements IBeeDefinition { @@ -18,7 +18,7 @@ public abstract class BeeVariation implements IBeeDefinition { public BeeVariation(IBeeDefinition bee) { template = bee.getTemplate(); initializeTemplate(template); - genome = PluginApiculture.beeInterface.templateAsGenome(template); + genome = BeeManager.beeRoot.templateAsGenome(template); } protected abstract void initializeTemplate(IAllele[] template); @@ -41,7 +41,7 @@ public abstract class BeeVariation implements IBeeDefinition { @Override public final ItemStack getMemberStack(EnumBeeType beeType) { IBee bee = getIndividual(); - return PluginApiculture.beeInterface.getMemberStack(bee, beeType.ordinal()); + return BeeManager.beeRoot.getMemberStack(bee, beeType.ordinal()); } public static class RainResist extends BeeVariation { @@ -51,7 +51,7 @@ public abstract class BeeVariation implements IBeeDefinition { @Override protected void initializeTemplate(IAllele[] template) { - template[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = Allele.boolTrue; + Allele.helper.set(template, EnumBeeChromosome.TOLERANT_FLYER, true); } } } diff --git a/src/main/java/forestry/apiculture/genetics/HiveDrop.java b/src/main/java/forestry/apiculture/genetics/HiveDrop.java index 84bc7da4f..088a07465 100755 --- a/src/main/java/forestry/apiculture/genetics/HiveDrop.java +++ b/src/main/java/forestry/apiculture/genetics/HiveDrop.java @@ -17,10 +17,10 @@ import java.util.List; import net.minecraft.item.ItemStack; import net.minecraft.world.World; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeType; import forestry.api.apiculture.IBee; import forestry.api.apiculture.IHiveDrop; -import forestry.plugins.PluginApiculture; public class HiveDrop implements IHiveDrop { @@ -48,7 +48,7 @@ public class HiveDrop implements IHiveDrop { bee.setIsNatural(false); } - return PluginApiculture.beeInterface.getMemberStack(bee, EnumBeeType.PRINCESS.ordinal()); + return BeeManager.beeRoot.getMemberStack(bee, EnumBeeType.PRINCESS.ordinal()); } @Override diff --git a/src/main/java/forestry/apiculture/genetics/JubilanceDefault.java b/src/main/java/forestry/apiculture/genetics/JubilanceDefault.java index 82e4a2b71..1d7f44b03 100755 --- a/src/main/java/forestry/apiculture/genetics/JubilanceDefault.java +++ b/src/main/java/forestry/apiculture/genetics/JubilanceDefault.java @@ -16,12 +16,26 @@ import net.minecraft.world.biome.BiomeGenBase; import forestry.api.apiculture.IAlleleBeeSpecies; import forestry.api.apiculture.IBeeGenome; import forestry.api.apiculture.IBeeHousing; +import forestry.api.apiculture.IJubilanceProvider; import forestry.api.core.EnumHumidity; import forestry.api.core.EnumTemperature; import forestry.core.vect.Vect; public class JubilanceDefault implements IJubilanceProvider { + private static JubilanceDefault instance; + + public static JubilanceDefault getInstance() { + if (instance == null) { + instance = new JubilanceDefault(); + } + return instance; + } + + protected JubilanceDefault() { + + } + @Override public boolean isJubilant(IAlleleBeeSpecies species, IBeeGenome genome, IBeeHousing housing) { BiomeGenBase biome = housing.getBiome(); diff --git a/src/main/java/forestry/apiculture/genetics/JubilanceNone.java b/src/main/java/forestry/apiculture/genetics/JubilanceFactory.java old mode 100755 new mode 100644 similarity index 58% rename from src/main/java/forestry/apiculture/genetics/JubilanceNone.java rename to src/main/java/forestry/apiculture/genetics/JubilanceFactory.java index f758b463c..a795548f3 --- a/src/main/java/forestry/apiculture/genetics/JubilanceNone.java +++ b/src/main/java/forestry/apiculture/genetics/JubilanceFactory.java @@ -1,24 +1,28 @@ -/******************************************************************************* - * Copyright (c) 2011-2014 SirSengir. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser Public License v3 - * which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/lgpl-3.0.txt - * - * Various Contributors including, but not limited to: - * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges - ******************************************************************************/ -package forestry.apiculture.genetics; - -import forestry.api.apiculture.IAlleleBeeSpecies; -import forestry.api.apiculture.IBeeGenome; -import forestry.api.apiculture.IBeeHousing; - -public class JubilanceNone implements IJubilanceProvider { - - @Override - public boolean isJubilant(IAlleleBeeSpecies species, IBeeGenome genome, IBeeHousing housing) { - return false; - } - -} +/******************************************************************************* + * Copyright (c) 2011-2014 SirSengir. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser Public License v3 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.apiculture.genetics; + +import net.minecraft.block.Block; + +import forestry.api.apiculture.IJubilanceFactory; +import forestry.api.apiculture.IJubilanceProvider; + +public class JubilanceFactory implements IJubilanceFactory { + @Override + public IJubilanceProvider getDefault() { + return JubilanceDefault.getInstance(); + } + + @Override + public IJubilanceProvider getRequiresResource(Block block, int meta) { + return new JubilanceRequiresResource(block, meta); + } +} diff --git a/src/main/java/forestry/apiculture/genetics/JubilanceReqRes.java b/src/main/java/forestry/apiculture/genetics/JubilanceRequiresResource.java old mode 100755 new mode 100644 similarity index 85% rename from src/main/java/forestry/apiculture/genetics/JubilanceReqRes.java rename to src/main/java/forestry/apiculture/genetics/JubilanceRequiresResource.java index 9ad5cc0bf..fe9363ab4 --- a/src/main/java/forestry/apiculture/genetics/JubilanceReqRes.java +++ b/src/main/java/forestry/apiculture/genetics/JubilanceRequiresResource.java @@ -17,23 +17,19 @@ import net.minecraft.world.World; import forestry.api.apiculture.IAlleleBeeSpecies; import forestry.api.apiculture.IBeeGenome; import forestry.api.apiculture.IBeeHousing; +import forestry.api.apiculture.IJubilanceProvider; import forestry.core.utils.StackUtils; -public class JubilanceReqRes implements IJubilanceProvider { +public class JubilanceRequiresResource implements IJubilanceProvider { private final ItemStack blockRequired; - public JubilanceReqRes(ItemStack blockRequired) { - this.blockRequired = blockRequired; + public JubilanceRequiresResource(Block block, int meta) { + this.blockRequired = new ItemStack(block, meta); } @Override public boolean isJubilant(IAlleleBeeSpecies species, IBeeGenome genome, IBeeHousing housing) { - - if (blockRequired == null) { - return true; - } - World world = housing.getWorld(); Block block = world.getBlock(housing.getXCoord(), housing.getYCoord() - 1, housing.getZCoord()); diff --git a/src/main/java/forestry/apiculture/genetics/MutationEMC.java b/src/main/java/forestry/apiculture/genetics/MutationEMC.java deleted file mode 100755 index f001199e6..000000000 --- a/src/main/java/forestry/apiculture/genetics/MutationEMC.java +++ /dev/null @@ -1,101 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011-2014 SirSengir. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser Public License v3 - * which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/lgpl-3.0.txt - * - * Various Contributors including, but not limited to: - * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges - ******************************************************************************/ -package forestry.apiculture.genetics; - -import java.lang.reflect.Field; - -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -import forestry.api.apiculture.IBeeHousing; -import forestry.api.genetics.IAllele; -import forestry.api.genetics.IGenome; -import forestry.core.proxy.Proxies; -import forestry.core.vect.Vect; - -public class MutationEMC extends MutationReqRes { - - private final int emcRequired; - private final Class condenserClass; - private final Field emcField; - - public MutationEMC(BeeDefinition bee0, BeeDefinition bee1, BeeDefinition result, int chance, ItemStack blockRequired, Class condenserClass, Field emcField, int emcRequired) { - super(bee0, bee1, result, chance, blockRequired); - - this.condenserClass = condenserClass; - this.emcField = emcField; - this.emcRequired = emcRequired; - } - - @Override - public float getChance(IBeeHousing housing, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) { - float chance = super.getChance(housing, allele0, allele1, genome0, genome1); - - // If we don't have any chance, return at once. - if (chance <= 0) { - return 0; - } - - if (emcRequired <= 0) { - return chance; - } - - World world = housing.getWorld(); - - Vect[] possibleTargets = new Vect[]{new Vect(housing.getXCoord() + 1, housing.getYCoord(), housing.getZCoord()), - new Vect(housing.getXCoord() - 1, housing.getYCoord(), housing.getZCoord()), - new Vect(housing.getXCoord(), housing.getYCoord(), housing.getZCoord() + 1), - new Vect(housing.getXCoord(), housing.getYCoord(), housing.getZCoord() - 1)}; - - for (Vect target : possibleTargets) { - if (!world.blockExists(target.x, target.y, target.z)) { - continue; - } - - TileEntity entity = world.getTileEntity(target.x, target.y, target.z); - if (entity == null) { - continue; - } - - if (!condenserClass.isInstance(entity)) { - Proxies.log.warning("Did not find a relay at " + target.toString()); - continue; - } - - int emc = 0; - try { - emc = emcField.getInt(entity); - } catch (Exception ex) { - Proxies.log.warning("Failed to fetch EMC information."); - } - - if (emc < emcRequired * 80) { - continue; - } - - boolean removedEMC = false; - try { - emcField.set(entity, emc - (emcRequired * 80)); - removedEMC = true; - } catch (Exception ex) { - Proxies.log.warning("Failed to set EMC information."); - } - - if (removedEMC) { - return chance; - } - - } - - return 0; - } -} diff --git a/src/main/java/forestry/apiculture/genetics/MutationReqRes.java b/src/main/java/forestry/apiculture/genetics/MutationReqRes.java deleted file mode 100755 index 313801025..000000000 --- a/src/main/java/forestry/apiculture/genetics/MutationReqRes.java +++ /dev/null @@ -1,53 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011-2014 SirSengir. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser Public License v3 - * which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/lgpl-3.0.txt - * - * Various Contributors including, but not limited to: - * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges - ******************************************************************************/ -package forestry.apiculture.genetics; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -import forestry.api.apiculture.IBeeHousing; -import forestry.api.genetics.IAllele; -import forestry.api.genetics.IGenome; -import forestry.core.utils.StackUtils; - -public class MutationReqRes extends BeeMutation { - - private final ItemStack blockRequired; - - public MutationReqRes(BeeDefinition bee0, BeeDefinition bee1, BeeDefinition result, int chance, ItemStack blockRequired) { - super(bee0, bee1, result, chance); - this.blockRequired = blockRequired; - } - - @Override - public float getChance(IBeeHousing housing, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) { - float chance = super.getChance(housing, allele0, allele1, genome0, genome1); - - // If we have no chance anyway, we don't need to check. - if (chance <= 0) { - return 0; - } - - World world = housing.getWorld(); - if (blockRequired == null) { - return chance; - } - - Block block = world.getBlock(housing.getXCoord(), housing.getYCoord() - 1, housing.getZCoord()); - int meta = world.getBlockMetadata(housing.getXCoord(), housing.getYCoord() - 1, housing.getZCoord()); - if (StackUtils.equals(block, blockRequired) && meta == blockRequired.getItemDamage()) { - return chance; - } else { - return 0; - } - } -} diff --git a/src/main/java/forestry/apiculture/genetics/MutationTimeLimited.java b/src/main/java/forestry/apiculture/genetics/MutationTimeLimited.java deleted file mode 100755 index f3509370e..000000000 --- a/src/main/java/forestry/apiculture/genetics/MutationTimeLimited.java +++ /dev/null @@ -1,154 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011-2014 SirSengir. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Lesser Public License v3 - * which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/lgpl-3.0.txt - * - * Various Contributors including, but not limited to: - * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges - ******************************************************************************/ -package forestry.apiculture.genetics; - -import java.util.Calendar; - -import forestry.api.apiculture.IBeeHousing; -import forestry.api.genetics.IAllele; -import forestry.api.genetics.IGenome; - -public class MutationTimeLimited extends BeeMutation { - - /** - * Fed up with Date and Calendar and their shenanigans - */ - public static class DayMonth { - - public final int day; - public final int month; - - public DayMonth() { - this.day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); - this.month = Calendar.getInstance().get(Calendar.MONTH) + 1; - } - - public DayMonth(int day, int month) { - this.day = day; - this.month = month; - } - - public boolean between(DayMonth start, DayMonth end) { - if (equals(start) || equals(end)) { - return true; - } - if (start.month > end.month) { - return after(start) || before(end); - } - return after(start) && before(end); - } - - public boolean before(DayMonth other) { - - if (other.month > this.month) { - return true; - } - - if (other.month < this.month) { - return false; - } - - return this.day < other.day; - } - - public boolean after(DayMonth other) { - - if (other.month < this.month) { - return true; - } - - if (other.month > this.month) { - return false; - } - - return this.day > other.day; - } - - @Override - public int hashCode() { - int hash = 7; - hash = 89 * hash + this.day; - hash = 89 * hash + this.month; - return hash; - } - - @Override - public boolean equals(Object obj) { - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final DayMonth other = (DayMonth) obj; - if (this.day != other.day) { - return false; - } - if (this.month != other.month) { - return false; - } - return true; - } - - @Override - public String toString() { - return day + "." + month; - } - } - - private final DayMonth start; - private final DayMonth end; - - protected MutationTimeLimited(BeeDefinition bee0, BeeDefinition bee1, BeeDefinition result, int chance, DayMonth start, DayMonth end) { - super(bee0, bee1, result, chance); - - this.start = start; - this.end = end; - } - - @Override - public float getChance(IBeeHousing housing, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) { - float chance = super.getChance(housing, allele0, allele1, genome0, genome1); - - if (chance == 0) { - return 0; - } - - if (start == null) { - return chance; - } - - DayMonth now = new DayMonth(); - - // If we are equal to start day, return chance. - if (Calendar.getInstance().get(Calendar.DAY_OF_MONTH) == start.day && Calendar.getInstance().get(Calendar.MONTH) + 1 == start.month) { - return chance; - } - - // Still here but not time span? No mutation! - if (end == null) { - return 0; - } - - // Equal to end date, return chance. - if (Calendar.getInstance().get(Calendar.DAY_OF_MONTH) == end.day && Calendar.getInstance().get(Calendar.MONTH) + 1 == end.month) { - return chance; - } - - // Still a chance we are in between - if (now.between(start, end)) { - return chance; - } - - // Now we finally failed. - return 0; - } -} diff --git a/src/main/java/forestry/apiculture/gui/GuiBeealyzer.java b/src/main/java/forestry/apiculture/gui/GuiBeealyzer.java index 318c13379..7ad854ced 100755 --- a/src/main/java/forestry/apiculture/gui/GuiBeealyzer.java +++ b/src/main/java/forestry/apiculture/gui/GuiBeealyzer.java @@ -15,6 +15,7 @@ import java.util.ArrayList; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeChromosome; import forestry.api.apiculture.EnumBeeType; import forestry.api.apiculture.IAlleleBeeSpecies; @@ -27,12 +28,11 @@ import forestry.apiculture.genetics.BeeGenome; import forestry.apiculture.items.ItemBeeGE; import forestry.apiculture.items.ItemBeealyzer.BeealyzerInventory; import forestry.core.config.ForestryItem; -import forestry.core.genetics.AlleleBoolean; +import forestry.core.genetics.alleles.AlleleBoolean; import forestry.core.gui.ContainerAlyzer; import forestry.core.gui.GuiAlyzer; import forestry.core.utils.StringUtil; import forestry.core.vect.Vect; -import forestry.plugins.PluginApiculture; public class GuiBeealyzer extends GuiAlyzer { @@ -65,8 +65,8 @@ public class GuiBeealyzer extends GuiAlyzer { if (inventory.getStackInSlot(k) == null) { continue; } - bee = PluginApiculture.beeInterface.getMember(inventory.getStackInSlot(k)); - beeType = PluginApiculture.beeInterface.getType(inventory.getStackInSlot(k)); + bee = BeeManager.beeRoot.getMember(inventory.getStackInSlot(k)); + beeType = BeeManager.beeRoot.getType(inventory.getStackInSlot(k)); if (bee == null || !bee.isAnalyzed()) { continue; } diff --git a/src/main/java/forestry/apiculture/items/ItemBeeGE.java b/src/main/java/forestry/apiculture/items/ItemBeeGE.java index c222584b2..34a73c9b8 100755 --- a/src/main/java/forestry/apiculture/items/ItemBeeGE.java +++ b/src/main/java/forestry/apiculture/items/ItemBeeGE.java @@ -24,6 +24,7 @@ import net.minecraft.util.IIcon; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeChromosome; import forestry.api.apiculture.EnumBeeType; import forestry.api.apiculture.IAlleleBeeSpecies; @@ -38,7 +39,6 @@ import forestry.apiculture.genetics.BeeGenome; import forestry.core.config.Config; import forestry.core.genetics.ItemGE; import forestry.core.utils.StringUtil; -import forestry.plugins.PluginApiculture; public class ItemBeeGE extends ItemGE { @@ -123,7 +123,7 @@ public class ItemBeeGE extends ItemGE { @SuppressWarnings({"rawtypes", "unchecked"}) public void addCreativeItems(List itemList, boolean hideSecrets) { - for (IIndividual individual : PluginApiculture.beeInterface.getIndividualTemplates()) { + for (IIndividual individual : BeeManager.beeRoot.getIndividualTemplates()) { // Don't show secret bees unless ordered to. if (hideSecrets && individual.isSecret() && !Config.isDebug) { continue; @@ -188,7 +188,7 @@ public class ItemBeeGE extends ItemGE { @SideOnly(Side.CLIENT) public IIcon getIconFromSpecies(IAlleleBeeSpecies species, int renderPass) { if (species == null) { - species = (IAlleleBeeSpecies) PluginApiculture.beeInterface.getDefaultTemplate()[EnumBeeChromosome.SPECIES.ordinal()]; + species = (IAlleleBeeSpecies) BeeManager.beeRoot.getDefaultTemplate()[EnumBeeChromosome.SPECIES.ordinal()]; } return species.getIcon(type, renderPass); diff --git a/src/main/java/forestry/apiculture/items/ItemBeealyzer.java b/src/main/java/forestry/apiculture/items/ItemBeealyzer.java index d6651f7ec..89dd3e77a 100755 --- a/src/main/java/forestry/apiculture/items/ItemBeealyzer.java +++ b/src/main/java/forestry/apiculture/items/ItemBeealyzer.java @@ -15,6 +15,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.IBee; import forestry.api.core.ForestryAPI; import forestry.api.core.Tabs; @@ -26,7 +27,6 @@ import forestry.core.inventory.AlyzerInventory; import forestry.core.items.ItemInventoried; import forestry.core.network.GuiId; import forestry.core.proxy.Proxies; -import forestry.plugins.PluginApiculture; public class ItemBeealyzer extends ItemInventoried { @@ -39,7 +39,7 @@ public class ItemBeealyzer extends ItemInventoried { @Override protected boolean isSpecimen(ItemStack itemStack) { - return PluginApiculture.beeInterface.isMember(itemStack); + return BeeManager.beeRoot.isMember(itemStack); } private void tryAnalyze() { @@ -48,7 +48,7 @@ public class ItemBeealyzer extends ItemInventoried { return; } - IBee bee = PluginApiculture.beeInterface.getMember(getStackInSlot(SLOT_SPECIMEN)); + IBee bee = BeeManager.beeRoot.getMember(getStackInSlot(SLOT_SPECIMEN)); // No bee, abort if (bee == null) { return; @@ -64,8 +64,8 @@ public class ItemBeealyzer extends ItemInventoried { bee.analyze(); if (player != null) { - PluginApiculture.beeInterface.getBreedingTracker(player.worldObj, player.getGameProfile()).registerSpecies(bee.getGenome().getPrimary()); - PluginApiculture.beeInterface.getBreedingTracker(player.worldObj, player.getGameProfile()).registerSpecies(bee.getGenome().getSecondary()); + BeeManager.beeRoot.getBreedingTracker(player.worldObj, player.getGameProfile()).registerSpecies(bee.getGenome().getPrimary()); + BeeManager.beeRoot.getBreedingTracker(player.worldObj, player.getGameProfile()).registerSpecies(bee.getGenome().getSecondary()); } NBTTagCompound nbttagcompound = new NBTTagCompound(); @@ -104,7 +104,7 @@ public class ItemBeealyzer extends ItemInventoried { @Override public EnumErrorCode getErrorState() { - if (PluginApiculture.beeInterface.isMember(inventoryStacks[SLOT_SPECIMEN]) && !isEnergy(getStackInSlot(SLOT_ENERGY))) { + if (BeeManager.beeRoot.isMember(inventoryStacks[SLOT_SPECIMEN]) && !isEnergy(getStackInSlot(SLOT_ENERGY))) { return EnumErrorCode.NOHONEY; } diff --git a/src/main/java/forestry/apiculture/items/ItemHabitatLocator.java b/src/main/java/forestry/apiculture/items/ItemHabitatLocator.java index 129123144..aad207ea8 100644 --- a/src/main/java/forestry/apiculture/items/ItemHabitatLocator.java +++ b/src/main/java/forestry/apiculture/items/ItemHabitatLocator.java @@ -32,6 +32,7 @@ import net.minecraftforge.common.BiomeDictionary; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.IBee; import forestry.api.core.EnumHumidity; import forestry.api.core.EnumTemperature; @@ -50,7 +51,6 @@ import forestry.core.network.GuiId; import forestry.core.proxy.Proxies; import forestry.core.utils.StringUtil; import forestry.core.vect.Vect; -import forestry.plugins.PluginApiculture; public class ItemHabitatLocator extends ItemInventoried { @@ -91,7 +91,7 @@ public class ItemHabitatLocator extends ItemInventoried { setInventorySlotContents(SLOT_SPECIMEN, null); } - IBee bee = PluginApiculture.beeInterface.getMember(getStackInSlot(SLOT_ANALYZED)); + IBee bee = BeeManager.beeRoot.getMember(getStackInSlot(SLOT_ANALYZED)); // No bee, abort if (bee == null) { @@ -126,7 +126,7 @@ public class ItemHabitatLocator extends ItemInventoried { @Override public EnumErrorCode getErrorState() { - if (PluginApiculture.beeInterface.isMember(inventoryStacks[SLOT_SPECIMEN]) && !isEnergy(getStackInSlot(SLOT_ENERGY))) { + if (BeeManager.beeRoot.isMember(inventoryStacks[SLOT_SPECIMEN]) && !isEnergy(getStackInSlot(SLOT_ENERGY))) { return EnumErrorCode.NOHONEY; } @@ -139,7 +139,7 @@ public class ItemHabitatLocator extends ItemInventoried { Item item = itemStack.getItem(); return item == ForestryItem.honeydew.item() || item == ForestryItem.honeyDrop.item(); } else if (slotIndex == SLOT_SPECIMEN) { - return PluginApiculture.beeInterface.isMember(itemStack); + return BeeManager.beeRoot.isMember(itemStack); } return false; } diff --git a/src/main/java/forestry/apiculture/items/ItemImprinter.java b/src/main/java/forestry/apiculture/items/ItemImprinter.java index 10c712428..a710e91e0 100755 --- a/src/main/java/forestry/apiculture/items/ItemImprinter.java +++ b/src/main/java/forestry/apiculture/items/ItemImprinter.java @@ -15,6 +15,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.IAlleleBeeSpecies; import forestry.api.apiculture.IBee; import forestry.api.core.ForestryAPI; @@ -24,7 +25,6 @@ import forestry.core.inventory.ItemInventory; import forestry.core.items.ItemForestry; import forestry.core.network.GuiId; import forestry.core.proxy.Proxies; -import forestry.plugins.PluginApiculture; public class ItemImprinter extends ItemForestry { @@ -44,7 +44,7 @@ public class ItemImprinter extends ItemForestry { } public void advancePrimary() { - if (primaryIndex < PluginApiculture.beeInterface.getIndividualTemplates().size() - 1) { + if (primaryIndex < BeeManager.beeRoot.getIndividualTemplates().size() - 1) { primaryIndex++; } else { primaryIndex = 0; @@ -52,7 +52,7 @@ public class ItemImprinter extends ItemForestry { } public void advanceSecondary() { - if (secondaryIndex < PluginApiculture.beeInterface.getIndividualTemplates().size() - 1) { + if (secondaryIndex < BeeManager.beeRoot.getIndividualTemplates().size() - 1) { secondaryIndex++; } else { secondaryIndex = 0; @@ -63,7 +63,7 @@ public class ItemImprinter extends ItemForestry { if (primaryIndex > 0) { primaryIndex--; } else { - primaryIndex = PluginApiculture.beeInterface.getIndividualTemplates().size() - 1; + primaryIndex = BeeManager.beeRoot.getIndividualTemplates().size() - 1; } } @@ -71,22 +71,22 @@ public class ItemImprinter extends ItemForestry { if (secondaryIndex > 0) { secondaryIndex--; } else { - secondaryIndex = PluginApiculture.beeInterface.getIndividualTemplates().size() - 1; + secondaryIndex = BeeManager.beeRoot.getIndividualTemplates().size() - 1; } } public IAlleleBeeSpecies getPrimary() { - return PluginApiculture.beeInterface.getIndividualTemplates().get(primaryIndex).getGenome().getPrimary(); + return BeeManager.beeRoot.getIndividualTemplates().get(primaryIndex).getGenome().getPrimary(); } public IAlleleBeeSpecies getSecondary() { - return PluginApiculture.beeInterface.getIndividualTemplates().get(secondaryIndex).getGenome().getPrimary(); + return BeeManager.beeRoot.getIndividualTemplates().get(secondaryIndex).getGenome().getPrimary(); } public IBee getSelectedBee() { - return new Bee(PluginApiculture.beeInterface.templateAsGenome( - PluginApiculture.beeInterface.getGenomeTemplates().get(PluginApiculture.beeInterface.getIndividualTemplates().get(primaryIndex).getIdent()), - PluginApiculture.beeInterface.getGenomeTemplates().get(PluginApiculture.beeInterface.getIndividualTemplates().get(secondaryIndex).getIdent()))); + return new Bee(BeeManager.beeRoot.templateAsGenome( + BeeManager.beeRoot.getGenomeTemplates().get(BeeManager.beeRoot.getIndividualTemplates().get(primaryIndex).getIdent()), + BeeManager.beeRoot.getGenomeTemplates().get(BeeManager.beeRoot.getIndividualTemplates().get(secondaryIndex).getIdent()))); } public int getPrimaryIndex() { @@ -112,7 +112,7 @@ public class ItemImprinter extends ItemForestry { } // Only imprint bees - if (!PluginApiculture.beeInterface.isMember(inventoryStacks[specimenSlot])) { + if (!BeeManager.beeRoot.isMember(inventoryStacks[specimenSlot])) { return; } @@ -146,7 +146,7 @@ public class ItemImprinter extends ItemForestry { @Override public boolean canSlotAccept(int slotIndex, ItemStack itemStack) { - return PluginApiculture.beeInterface.isMember(itemStack); + return BeeManager.beeRoot.isMember(itemStack); } } diff --git a/src/main/java/forestry/apiculture/render/BeeItemRenderer.java b/src/main/java/forestry/apiculture/render/BeeItemRenderer.java index fb1dc733a..5fbd739ec 100755 --- a/src/main/java/forestry/apiculture/render/BeeItemRenderer.java +++ b/src/main/java/forestry/apiculture/render/BeeItemRenderer.java @@ -20,10 +20,10 @@ import net.minecraftforge.client.IItemRenderer; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.IBee; import forestry.apiculture.entities.EntityBee; import forestry.core.proxy.Proxies; -import forestry.plugins.PluginApiculture; public class BeeItemRenderer implements IItemRenderer { @@ -67,16 +67,16 @@ public class BeeItemRenderer implements IItemRenderer { } private IBee initBee(ItemStack item, boolean scaled) { - IBee bee = PluginApiculture.beeInterface.getMember(item); + IBee bee = BeeManager.beeRoot.getMember(item); if (bee == null) { - bee = PluginApiculture.beeInterface.templateAsIndividual(PluginApiculture.beeInterface.getDefaultTemplate()); + bee = BeeManager.beeRoot.templateAsIndividual(BeeManager.beeRoot.getDefaultTemplate()); } if (entity == null) { entity = new EntityBee(Proxies.common.getClientInstance().theWorld); } entity.setSpecies(bee.getGenome().getPrimary()); - entity.setType(PluginApiculture.beeInterface.getType(item)); + entity.setType(BeeManager.beeRoot.getType(item)); /* if(scaled) entity.setScale(butterfly.getSize()); diff --git a/src/main/java/forestry/apiculture/worldgen/ComponentVillageBeeHouse.java b/src/main/java/forestry/apiculture/worldgen/ComponentVillageBeeHouse.java index 5f14b62a7..90748d92d 100755 --- a/src/main/java/forestry/apiculture/worldgen/ComponentVillageBeeHouse.java +++ b/src/main/java/forestry/apiculture/worldgen/ComponentVillageBeeHouse.java @@ -46,7 +46,6 @@ import forestry.core.config.Defaults; import forestry.core.config.ForestryBlock; import forestry.core.config.ForestryItem; import forestry.core.utils.StackUtils; -import forestry.plugins.PluginApiculture; import forestry.plugins.PluginManager; public class ComponentVillageBeeHouse extends StructureVillagePieces.House1 { @@ -310,9 +309,9 @@ public class ComponentVillageBeeHouse extends StructureVillagePieces.House1 { TileBeehouse apiary = ((TileBeehouse) tile); apiary.initialize(); apiary.setInventorySlotContents(TileBeehouse.SLOT_QUEEN, - PluginApiculture.beeInterface.getMemberStack(getVillageBee(world, xCoord, yCoord, zCoord), EnumBeeType.PRINCESS.ordinal())); + BeeManager.beeRoot.getMemberStack(getVillageBee(world, xCoord, yCoord, zCoord), EnumBeeType.PRINCESS.ordinal())); apiary.setInventorySlotContents(TileBeehouse.SLOT_DRONE, - PluginApiculture.beeInterface.getMemberStack(getVillageBee(world, xCoord, yCoord, zCoord), EnumBeeType.DRONE.ordinal())); + BeeManager.beeRoot.getMemberStack(getVillageBee(world, xCoord, yCoord, zCoord), EnumBeeType.DRONE.ordinal())); for (int i = TileBeehouse.SLOT_FRAMES_1; i < TileBeehouse.SLOT_FRAMES_1 + TileBeehouse.SLOT_FRAMES_COUNT; i++) { float roll = world.rand.nextFloat(); @@ -351,10 +350,10 @@ public class ComponentVillageBeeHouse extends StructureVillagePieces.House1 { // No valid ones found, return any of the common ones. if (valid.isEmpty()) { - return PluginApiculture.beeInterface.getBee(world, BeeManager.villageBees[0].get(world.rand.nextInt(BeeManager.villageBees[0].size()))); + return BeeManager.beeRoot.getBee(world, BeeManager.villageBees[0].get(world.rand.nextInt(BeeManager.villageBees[0].size()))); } - return PluginApiculture.beeInterface.getBee(world, valid.get(world.rand.nextInt(valid.size()))); + return BeeManager.beeRoot.getBee(world, valid.get(world.rand.nextInt(valid.size()))); } private boolean checkBiomeHazard(IBeeGenome genome, float temperature, float humidity) { diff --git a/src/main/java/forestry/arboriculture/gadgets/TileLeaves.java b/src/main/java/forestry/arboriculture/gadgets/TileLeaves.java index 13e93919e..46e4e1374 100755 --- a/src/main/java/forestry/arboriculture/gadgets/TileLeaves.java +++ b/src/main/java/forestry/arboriculture/gadgets/TileLeaves.java @@ -53,7 +53,7 @@ import forestry.api.lepidopterology.IButterflyRoot; import forestry.arboriculture.network.PacketLeaf; import forestry.arboriculture.network.PacketRipeningUpdate; import forestry.core.EnumErrorCode; -import forestry.core.genetics.Allele; +import forestry.core.genetics.alleles.Allele; import forestry.core.network.ForestryPacket; import forestry.core.proxy.Proxies; import forestry.core.render.TextureManager; diff --git a/src/main/java/forestry/arboriculture/genetics/AlleleFruit.java b/src/main/java/forestry/arboriculture/genetics/AlleleFruit.java index 9f70b42b3..5496b1983 100755 --- a/src/main/java/forestry/arboriculture/genetics/AlleleFruit.java +++ b/src/main/java/forestry/arboriculture/genetics/AlleleFruit.java @@ -12,18 +12,18 @@ package forestry.arboriculture.genetics; import forestry.api.arboriculture.IAlleleFruit; import forestry.api.arboriculture.IFruitProvider; -import forestry.core.genetics.Allele; +import forestry.core.genetics.alleles.AlleleForestry; -public class AlleleFruit extends Allele implements IAlleleFruit { +public class AlleleFruit extends AlleleForestry implements IAlleleFruit { private final IFruitProvider provider; - public AlleleFruit(String uid, IFruitProvider provider) { - this(uid, provider, false); + public AlleleFruit(String name, IFruitProvider provider) { + this(name, provider, false); } - public AlleleFruit(String uid, IFruitProvider provider, boolean isDominant) { - super(uid, isDominant); + public AlleleFruit(String name, IFruitProvider provider, boolean isDominant) { + super("fruit", name, isDominant); this.provider = provider; } diff --git a/src/main/java/forestry/arboriculture/genetics/AlleleGrowth.java b/src/main/java/forestry/arboriculture/genetics/AlleleGrowth.java index d73f6a20e..b9c237a3e 100755 --- a/src/main/java/forestry/arboriculture/genetics/AlleleGrowth.java +++ b/src/main/java/forestry/arboriculture/genetics/AlleleGrowth.java @@ -12,18 +12,18 @@ package forestry.arboriculture.genetics; import forestry.api.arboriculture.IAlleleGrowth; import forestry.api.arboriculture.IGrowthProvider; -import forestry.core.genetics.Allele; +import forestry.core.genetics.alleles.AlleleForestry; -public class AlleleGrowth extends Allele implements IAlleleGrowth { +public class AlleleGrowth extends AlleleForestry implements IAlleleGrowth { private final IGrowthProvider provider; - public AlleleGrowth(String uid, IGrowthProvider provider) { - this(uid, provider, false); + public AlleleGrowth(String name, IGrowthProvider provider) { + this(name, provider, false); } - public AlleleGrowth(String uid, IGrowthProvider provider, boolean isDominant) { - super(uid, isDominant); + public AlleleGrowth(String name, IGrowthProvider provider, boolean isDominant) { + super("growth", name, isDominant); this.provider = provider; } diff --git a/src/main/java/forestry/arboriculture/genetics/AlleleLeafEffectNone.java b/src/main/java/forestry/arboriculture/genetics/AlleleLeafEffectNone.java index 1e09e1751..30aff0c88 100755 --- a/src/main/java/forestry/arboriculture/genetics/AlleleLeafEffectNone.java +++ b/src/main/java/forestry/arboriculture/genetics/AlleleLeafEffectNone.java @@ -16,15 +16,15 @@ import net.minecraft.world.World; import forestry.api.arboriculture.IAlleleLeafEffect; import forestry.api.arboriculture.ITreeGenome; import forestry.api.genetics.IEffectData; -import forestry.core.genetics.Allele; +import forestry.core.genetics.alleles.AlleleForestry; import forestry.core.vect.Vect; -public class AlleleLeafEffectNone extends Allele implements IAlleleLeafEffect { +public class AlleleLeafEffectNone extends AlleleForestry implements IAlleleLeafEffect { private static final int[] DEFAULT_EFFECT_AREA = new int[]{12, 12, 12}; - public AlleleLeafEffectNone(String uid) { - super(uid, true); + public AlleleLeafEffectNone() { + super("leaves", "none", true); } @Override @@ -47,7 +47,7 @@ public class AlleleLeafEffectNone extends Allele implements IAlleleLeafEffect { return storedData; } - protected AxisAlignedBB getBounding(int x, int y, int z, float modifier) { + protected static AxisAlignedBB getBounding(int x, int y, int z, float modifier) { int[] areaAr = DEFAULT_EFFECT_AREA; Vect area = new Vect(areaAr[0], areaAr[1], areaAr[2]).multiply(modifier); Vect offset = new Vect(-Math.round(area.x / 2), -Math.round(area.y / 2), -Math.round(area.z / 2)); diff --git a/src/main/java/forestry/arboriculture/genetics/AlleleTreeSpecies.java b/src/main/java/forestry/arboriculture/genetics/AlleleTreeSpecies.java index ec071da66..7754dc833 100755 --- a/src/main/java/forestry/arboriculture/genetics/AlleleTreeSpecies.java +++ b/src/main/java/forestry/arboriculture/genetics/AlleleTreeSpecies.java @@ -40,7 +40,7 @@ import forestry.api.world.ITreeGenData; import forestry.arboriculture.worldgen.WorldGenArboriculture; import forestry.arboriculture.worldgen.WorldGenBalsa; import forestry.core.config.ForestryItem; -import forestry.core.genetics.AlleleSpecies; +import forestry.core.genetics.alleles.AlleleSpecies; import forestry.core.render.TextureManager; import forestry.core.utils.Utils; @@ -93,7 +93,7 @@ public class AlleleTreeSpecies extends AlleleSpecies implements IAlleleTreeSpeci public AlleleTreeSpecies(String uid, boolean isDominant, String name, IClassification branch, String binomial, int primaryColor, int secondaryColor, Class generator, ItemStack wood) { - super(uid, isDominant, "trees.species." + name, branch, binomial, true); + super("forestry." + uid, "Sengir", "for.description." + uid, isDominant, "trees.species." + name, branch, binomial, true); this.root = (ITreeRoot) AlleleManager.alleleRegistry.getSpeciesRoot("rootTrees"); this.generatorClass = generator; @@ -238,7 +238,8 @@ public class AlleleTreeSpecies extends AlleleSpecies implements IAlleleTreeSpeci @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister register) { if (vanillaMap < 0) { - icon = TextureManager.getInstance().registerTex(register, "germlings/sapling." + uid); + String name = uid.substring("forestry.".length()); + icon = TextureManager.getInstance().registerTex(register, "germlings/sapling." + name); } else { icon = Blocks.sapling.getIcon(0, vanillaMap); } diff --git a/src/main/java/forestry/arboriculture/genetics/Tree.java b/src/main/java/forestry/arboriculture/genetics/Tree.java index 7d55ed631..8d1e06217 100755 --- a/src/main/java/forestry/arboriculture/genetics/Tree.java +++ b/src/main/java/forestry/arboriculture/genetics/Tree.java @@ -48,9 +48,9 @@ import forestry.arboriculture.gadgets.ForestryBlockLeaves; import forestry.arboriculture.gadgets.TileLeaves; import forestry.core.config.Defaults; import forestry.core.config.ForestryBlock; -import forestry.core.genetics.Allele; import forestry.core.genetics.Chromosome; import forestry.core.genetics.Individual; +import forestry.core.genetics.alleles.Allele; import forestry.core.utils.StringUtil; import forestry.plugins.PluginArboriculture; diff --git a/src/main/java/forestry/arboriculture/genetics/TreeGenome.java b/src/main/java/forestry/arboriculture/genetics/TreeGenome.java index c152172b6..5201239a5 100755 --- a/src/main/java/forestry/arboriculture/genetics/TreeGenome.java +++ b/src/main/java/forestry/arboriculture/genetics/TreeGenome.java @@ -29,8 +29,8 @@ import forestry.api.genetics.IAlleleFloat; import forestry.api.genetics.IAlleleInteger; import forestry.api.genetics.IChromosome; import forestry.api.genetics.ISpeciesRoot; -import forestry.core.genetics.AllelePlantType; import forestry.core.genetics.Genome; +import forestry.core.genetics.alleles.AllelePlantType; import forestry.plugins.PluginArboriculture; public class TreeGenome extends Genome implements ITreeGenome { diff --git a/src/main/java/forestry/arboriculture/genetics/TreeMutation.java b/src/main/java/forestry/arboriculture/genetics/TreeMutation.java index 3fbe8ae92..16f824ffd 100755 --- a/src/main/java/forestry/arboriculture/genetics/TreeMutation.java +++ b/src/main/java/forestry/arboriculture/genetics/TreeMutation.java @@ -11,7 +11,6 @@ package forestry.arboriculture.genetics; import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; import forestry.api.arboriculture.ITreeGenome; import forestry.api.arboriculture.ITreeMutation; @@ -41,13 +40,8 @@ public class TreeMutation extends Mutation implements ITreeMutation { @Override public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) { - float processedChance = chance; - - BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(x, z); - if (biome.temperature < minTemperature || biome.temperature > maxTemperature) { - return 0; - } - if (biome.rainfall < minRainfall || biome.rainfall > maxRainfall) { + float processedChance = super.getChance(world, x, y, z, allele0, allele1, genome0, genome1); + if (processedChance <= 0) { return 0; } diff --git a/src/main/java/forestry/arboriculture/genetics/TreeTemplates.java b/src/main/java/forestry/arboriculture/genetics/TreeTemplates.java index ce53b7694..1a5e3eb2c 100755 --- a/src/main/java/forestry/arboriculture/genetics/TreeTemplates.java +++ b/src/main/java/forestry/arboriculture/genetics/TreeTemplates.java @@ -14,8 +14,9 @@ import forestry.api.arboriculture.EnumTreeChromosome; import forestry.api.arboriculture.ITreeGenome; import forestry.api.genetics.IAllele; import forestry.api.genetics.IMutation; -import forestry.core.genetics.Allele; import forestry.core.genetics.Chromosome; +import forestry.core.genetics.alleles.Allele; +import forestry.core.genetics.alleles.EnumAllele; public class TreeTemplates { @@ -73,343 +74,343 @@ public class TreeTemplates { public static IAllele[] getDefaultTemplate() { IAllele[] alleles = new IAllele[EnumTreeChromosome.values().length]; - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeOak; - alleles[EnumTreeChromosome.FRUITS.ordinal()] = Allele.fruitNone; - alleles[EnumTreeChromosome.GROWTH.ordinal()] = Allele.growthLightlevel; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightSmall; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsLower; - alleles[EnumTreeChromosome.YIELD.ordinal()] = Allele.yieldLowest; - alleles[EnumTreeChromosome.PLANT.ordinal()] = Allele.plantTypeNone; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLowest; - alleles[EnumTreeChromosome.TERRITORY.ordinal()] = Allele.territoryDefault; - alleles[EnumTreeChromosome.EFFECT.ordinal()] = Allele.leavesNone; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationAverage; - alleles[EnumTreeChromosome.GIRTH.ordinal()] = Allele.int1; - alleles[EnumTreeChromosome.FIREPROOF.ordinal()] = Allele.fireproofFalse; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeOak); + Allele.helper.set(alleles, EnumTreeChromosome.FRUITS, Allele.fruitNone); + Allele.helper.set(alleles, EnumTreeChromosome.GROWTH, Allele.growthLightlevel); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.SMALL); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.YIELD, EnumAllele.Yield.LOWEST); + Allele.helper.set(alleles, EnumTreeChromosome.PLANT, Allele.plantTypeNone); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWEST); + Allele.helper.set(alleles, EnumTreeChromosome.TERRITORY, EnumAllele.Territory.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.EFFECT, Allele.leavesNone); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.GIRTH, 1); + Allele.helper.set(alleles, EnumTreeChromosome.FIREPROOF, EnumAllele.Fireproof.FALSE); return alleles; } public static IAllele[] getOakTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.FRUITS.ordinal()] = Allele.fruitApple; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsAverage; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationFaster; + Allele.helper.set(alleles, EnumTreeChromosome.FRUITS, Allele.fruitApple); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.FASTER); return alleles; } public static IAllele[] getBirchTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeBirch; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsAverage; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationFaster; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeBirch); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.FASTER); return alleles; } public static IAllele[] getSpruceTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeSpruce; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsAverage; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightAverage; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationFaster; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeSpruce); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.FASTER); return alleles; } public static IAllele[] getJungleTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeJungle; - alleles[EnumTreeChromosome.FRUITS.ordinal()] = Allele.fruitCocoa; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightLarger; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationFast; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeJungle); + Allele.helper.set(alleles, EnumTreeChromosome.FRUITS, Allele.fruitCocoa); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.LARGER); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.FAST); return alleles; } public static IAllele[] getAcaciaTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeAcacia; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeAcacia); return alleles; } public static IAllele[] getDarkOakTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeDarkOak; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsAverage; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationFaster; - alleles[EnumTreeChromosome.GIRTH.ordinal()] = Allele.int2; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeDarkOak); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.FASTER); + Allele.helper.set(alleles, EnumTreeChromosome.GIRTH, 2); return alleles; } public static IAllele[] getBalsaTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeBalsa; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsHigh; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLower; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightLarge; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeBalsa); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.HIGH); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.LARGE); return alleles; } public static IAllele[] getSequoiaTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeSequioa; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightLargest; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLower; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationSlower; - alleles[EnumTreeChromosome.GIRTH.ordinal()] = Allele.int3; - alleles[EnumTreeChromosome.FIREPROOF.ordinal()] = Allele.fireproofTrue; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeSequioa); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.LARGEST); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.SLOWER); + Allele.helper.set(alleles, EnumTreeChromosome.GIRTH, 3); + Allele.helper.set(alleles, EnumTreeChromosome.FIREPROOF, EnumAllele.Fireproof.TRUE); return alleles; } public static IAllele[] getGiganteumTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeGiganteum; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightGigantic; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLowest; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationSlowest; - alleles[EnumTreeChromosome.GIRTH.ordinal()] = Allele.int4; - alleles[EnumTreeChromosome.FIREPROOF.ordinal()] = Allele.fireproofTrue; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeGiganteum); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.GIGANTIC); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWEST); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.SLOWEST); + Allele.helper.set(alleles, EnumTreeChromosome.GIRTH, 4); + Allele.helper.set(alleles, EnumTreeChromosome.FIREPROOF, EnumAllele.Fireproof.TRUE); return alleles; } public static IAllele[] getLarchTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeLarch; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsLow; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLower; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightAverage; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeLarch); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.AVERAGE); return alleles; } public static IAllele[] getPineTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treePine; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsLow; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLower; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightAverage; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treePine); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.AVERAGE); return alleles; } public static IAllele[] getCherryTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeCherry; - alleles[EnumTreeChromosome.FRUITS.ordinal()] = Allele.fruitCherry; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsLow; - alleles[EnumTreeChromosome.YIELD.ordinal()] = Allele.yieldAverage; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLow; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightSmaller; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeCherry); + Allele.helper.set(alleles, EnumTreeChromosome.FRUITS, Allele.fruitCherry); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.YIELD, EnumAllele.Yield.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.SMALLER); return alleles; } public static IAllele[] getLimeTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeLime; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsLow; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLower; - alleles[EnumTreeChromosome.YIELD.ordinal()] = Allele.yieldLower; - //alleles[EnumTreeChromosome.EFFECT.ordinal()] = Allele.leavesBrimstone; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeLime); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.YIELD, EnumAllele.Yield.LOWER); + //Allele.helper.set(alleles, EnumTreeChromosome.EFFECT, Allele.leavesBrimstone); return alleles; } public static IAllele[] getTeakTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeTeak; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLower; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeTeak); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWER); return alleles; } public static IAllele[] getKapokTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeKapok; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightLarge; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLow; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationSlow; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeKapok); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.LARGE); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.SLOW); return alleles; } public static IAllele[] getEbonyTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeEbony; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightAverage; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLow; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationSlower; - alleles[EnumTreeChromosome.GIRTH.ordinal()] = Allele.int3; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeEbony); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.SLOWER); + Allele.helper.set(alleles, EnumTreeChromosome.GIRTH, 3); return alleles; } public static IAllele[] getMahoganyTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeMahogany; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightLarge; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLow; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationSlow; - alleles[EnumTreeChromosome.GIRTH.ordinal()] = Allele.int2; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeMahogany); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.LARGE); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.SLOW); + Allele.helper.set(alleles, EnumTreeChromosome.GIRTH, 2); return alleles; } public static IAllele[] getChestnutTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeChestnut; - alleles[EnumTreeChromosome.FRUITS.ordinal()] = Allele.fruitChestnut; - alleles[EnumTreeChromosome.YIELD.ordinal()] = Allele.yieldAverage; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLower; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightLarge; - alleles[EnumTreeChromosome.GIRTH.ordinal()] = Allele.int2; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeChestnut); + Allele.helper.set(alleles, EnumTreeChromosome.FRUITS, Allele.fruitChestnut); + Allele.helper.set(alleles, EnumTreeChromosome.YIELD, EnumAllele.Yield.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.LARGE); + Allele.helper.set(alleles, EnumTreeChromosome.GIRTH, 2); return alleles; } public static IAllele[] getDesertAcaciaTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeDesertAcacia; - alleles[EnumTreeChromosome.PLANT.ordinal()] = Allele.plantTypeDesert; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeDesertAcacia); + Allele.helper.set(alleles, EnumTreeChromosome.PLANT, Allele.plantTypeDesert); return alleles; } public static IAllele[] getWengeTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeWenge; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsLowest; - alleles[EnumTreeChromosome.GIRTH.ordinal()] = Allele.int2; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeWenge); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.LOWEST); + Allele.helper.set(alleles, EnumTreeChromosome.GIRTH, 2); return alleles; } public static IAllele[] getBaobabTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeBaobab; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightLarge; - alleles[EnumTreeChromosome.PLANT.ordinal()] = Allele.plantTypeDesert; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLower; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationSlow; - alleles[EnumTreeChromosome.GIRTH.ordinal()] = Allele.int3; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeBaobab); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.LARGE); + Allele.helper.set(alleles, EnumTreeChromosome.PLANT, Allele.plantTypeDesert); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.SLOW); + Allele.helper.set(alleles, EnumTreeChromosome.GIRTH, 3); return alleles; } public static IAllele[] getWalnutTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeWalnut; - alleles[EnumTreeChromosome.FRUITS.ordinal()] = Allele.fruitWalnut; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsLower; - alleles[EnumTreeChromosome.YIELD.ordinal()] = Allele.yieldAverage; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLower; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightAverage; - alleles[EnumTreeChromosome.GIRTH.ordinal()] = Allele.int2; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeWalnut); + Allele.helper.set(alleles, EnumTreeChromosome.FRUITS, Allele.fruitWalnut); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.YIELD, EnumAllele.Yield.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.GIRTH, 2); return alleles; } public static IAllele[] getWillowTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeWillow; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightAverage; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLow; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationFaster; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeWillow); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.FASTER); return alleles; } public static IAllele[] getSipiriTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeSipiri; - alleles[EnumTreeChromosome.GROWTH.ordinal()] = Allele.growthTropical; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightLarge; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLow; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationSlow; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeSipiri); + Allele.helper.set(alleles, EnumTreeChromosome.GROWTH, Allele.growthTropical); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.LARGE); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.SLOW); return alleles; } public static IAllele[] getMahoeTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeMahoe; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightSmall; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessHigh; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationSlowest; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeMahoe); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.SMALL); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.HIGH); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.SLOWEST); return alleles; } public static IAllele[] getPoplarTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treePoplar; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightSmall; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLow; - alleles[EnumTreeChromosome.MATURATION.ordinal()] = Allele.maturationSlower; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treePoplar); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.SMALL); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.MATURATION, EnumAllele.Maturation.SLOWER); return alleles; } public static IAllele[] getLemonTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeLemon; - alleles[EnumTreeChromosome.FRUITS.ordinal()] = Allele.fruitLemon; - alleles[EnumTreeChromosome.YIELD.ordinal()] = Allele.yieldLower; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessAverage; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightSmallest; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeLemon); + Allele.helper.set(alleles, EnumTreeChromosome.FRUITS, Allele.fruitLemon); + Allele.helper.set(alleles, EnumTreeChromosome.YIELD, EnumAllele.Yield.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.SMALLEST); return alleles; } public static IAllele[] getPlumTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treePlum; - alleles[EnumTreeChromosome.FRUITS.ordinal()] = Allele.fruitPlum; - alleles[EnumTreeChromosome.YIELD.ordinal()] = Allele.yieldHigh; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessAverage; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightSmallest; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treePlum); + Allele.helper.set(alleles, EnumTreeChromosome.FRUITS, Allele.fruitPlum); + Allele.helper.set(alleles, EnumTreeChromosome.YIELD, EnumAllele.Yield.HIGH); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.AVERAGE); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.SMALLEST); return alleles; } public static IAllele[] getMapleTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeMaple; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsLow; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLower; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightAverage; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeMaple); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.AVERAGE); return alleles; } public static IAllele[] getPapayaTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treePapaya; - alleles[EnumTreeChromosome.FRUITS.ordinal()] = Allele.fruitPapaya; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsLow; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLower; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightAverage; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treePapaya); + Allele.helper.set(alleles, EnumTreeChromosome.FRUITS, Allele.fruitPapaya); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.AVERAGE); return alleles; } public static IAllele[] getDateTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeDate; - alleles[EnumTreeChromosome.FRUITS.ordinal()] = Allele.fruitDates; - alleles[EnumTreeChromosome.FERTILITY.ordinal()] = Allele.saplingsLow; - alleles[EnumTreeChromosome.YIELD.ordinal()] = Allele.yieldLow; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLow; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightAverage; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeDate); + Allele.helper.set(alleles, EnumTreeChromosome.FRUITS, Allele.fruitDates); + Allele.helper.set(alleles, EnumTreeChromosome.FERTILITY, EnumAllele.Saplings.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.YIELD, EnumAllele.Yield.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOW); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.AVERAGE); return alleles; } public static IAllele[] getIpeTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeIpe; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLower; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightLarge; - alleles[EnumTreeChromosome.GIRTH.ordinal()] = Allele.int2; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeIpe); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.LARGE); + Allele.helper.set(alleles, EnumTreeChromosome.GIRTH, 2); return alleles; } public static IAllele[] getPadaukTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treePadauk; - alleles[EnumTreeChromosome.SAPPINESS.ordinal()] = Allele.sappinessLower; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightLarge; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treePadauk); + Allele.helper.set(alleles, EnumTreeChromosome.SAPPINESS, EnumAllele.Sappiness.LOWER); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.LARGE); return alleles; } public static IAllele[] getCocoboloTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeCocobolo; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightLargest; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeCocobolo); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.LARGEST); return alleles; } public static IAllele[] getZebrawoodTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumTreeChromosome.SPECIES.ordinal()] = Allele.treeZebrawood; - alleles[EnumTreeChromosome.HEIGHT.ordinal()] = Allele.heightLarge; - alleles[EnumTreeChromosome.GIRTH.ordinal()] = Allele.int2; + Allele.helper.set(alleles, EnumTreeChromosome.SPECIES, Allele.treeZebrawood); + Allele.helper.set(alleles, EnumTreeChromosome.HEIGHT, EnumAllele.Height.LARGE); + Allele.helper.set(alleles, EnumTreeChromosome.GIRTH, 2); return alleles; } diff --git a/src/main/java/forestry/arboriculture/gui/GuiTreealyzer.java b/src/main/java/forestry/arboriculture/gui/GuiTreealyzer.java index eb0f714d6..1edd1dee6 100755 --- a/src/main/java/forestry/arboriculture/gui/GuiTreealyzer.java +++ b/src/main/java/forestry/arboriculture/gui/GuiTreealyzer.java @@ -34,9 +34,9 @@ import forestry.arboriculture.genetics.TreeGenome; import forestry.arboriculture.items.ItemGermlingGE; import forestry.arboriculture.items.ItemTreealyzer.TreealyzerInventory; import forestry.core.config.ForestryItem; -import forestry.core.genetics.Allele; -import forestry.core.genetics.AlleleBoolean; -import forestry.core.genetics.AllelePlantType; +import forestry.core.genetics.alleles.Allele; +import forestry.core.genetics.alleles.AlleleBoolean; +import forestry.core.genetics.alleles.AllelePlantType; import forestry.core.gui.ContainerAlyzer; import forestry.core.gui.GuiAlyzer; import forestry.core.utils.StringUtil; diff --git a/src/main/java/forestry/core/config/Defaults.java b/src/main/java/forestry/core/config/Defaults.java index fb365acce..d071b9bba 100755 --- a/src/main/java/forestry/core/config/Defaults.java +++ b/src/main/java/forestry/core/config/Defaults.java @@ -127,11 +127,6 @@ public class Defaults { public static final int SLOTS_BACKPACK_T2 = 45; public static final int SLOTS_BACKPACK_APIARIST = 125; - // Bee ids - public static final int ID_BEE_SPECIES_REDDENED = 31; - public static final int ID_BEE_SPECIES_DARKENED = 32; - public static final int ID_BEE_SPECIES_OMEGA = 33; - // Food stuff public static final int FOOD_AMBROSIA_HEAL = 8; public static final int FOOD_JUICE_HEAL = 2; diff --git a/src/main/java/forestry/core/gadgets/TileAnalyzer.java b/src/main/java/forestry/core/gadgets/TileAnalyzer.java index 12fab69b9..58efbb600 100755 --- a/src/main/java/forestry/core/gadgets/TileAnalyzer.java +++ b/src/main/java/forestry/core/gadgets/TileAnalyzer.java @@ -23,6 +23,7 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; +import forestry.api.apiculture.BeeManager; import forestry.api.core.ForestryAPI; import forestry.api.genetics.AlleleManager; import forestry.api.genetics.IAllele; @@ -43,7 +44,6 @@ import forestry.core.network.GuiId; import forestry.core.network.PacketPayload; import forestry.core.utils.GeneticsUtil; import forestry.core.utils.GuiUtil; -import forestry.plugins.PluginApiculture; public class TileAnalyzer extends TilePowered implements ISidedInventory, ILiquidTankContainer { @@ -211,7 +211,7 @@ public class TileAnalyzer extends TilePowered implements ISidedInventory, ILiqui } IIndividual displayIndividual = AlleleManager.alleleRegistry.getIndividual(displayStack); - int type = PluginApiculture.beeInterface.getType(displayStack).ordinal(); + int type = BeeManager.beeRoot.getType(displayStack).ordinal(); PacketPayload payload = new PacketPayload(); payload.stringPayload = new String[1]; @@ -229,10 +229,10 @@ public class TileAnalyzer extends TilePowered implements ISidedInventory, ILiqui int type = payload.shortPayload[0]; int stackSize = payload.shortPayload[1]; - IAllele[] template = PluginApiculture.beeInterface.getTemplate(individualUID); - IIndividual individual = PluginApiculture.beeInterface.templateAsIndividual(template); + IAllele[] template = BeeManager.beeRoot.getTemplate(individualUID); + IIndividual individual = BeeManager.beeRoot.templateAsIndividual(template); - newIndividualOnDisplay = PluginApiculture.beeInterface.getMemberStack(individual, type); + newIndividualOnDisplay = BeeManager.beeRoot.getMemberStack(individual, type); newIndividualOnDisplay.stackSize = stackSize; } diff --git a/src/main/java/forestry/core/genetics/Genome.java b/src/main/java/forestry/core/genetics/Genome.java index aac9b6ab9..6886cea56 100755 --- a/src/main/java/forestry/core/genetics/Genome.java +++ b/src/main/java/forestry/core/genetics/Genome.java @@ -26,7 +26,6 @@ import forestry.api.genetics.IChromosomeType; import forestry.api.genetics.IGenome; import forestry.api.genetics.ISpeciesRoot; import forestry.core.config.Config; -import forestry.core.proxy.Proxies; public abstract class Genome implements IGenome { @@ -93,7 +92,7 @@ public abstract class Genome implements IGenome { } if (chromosome.hasInvalidAlleles(speciesRoot.getKaryotype()[chromosomeOrdinal].getAlleleClass())) { - throw new RuntimeException("Found Chromosome with invalid Alleles.\nNBTTagCompound: " + chromosomesNBT + "\nSee config option \"genetics.clear.invalid.chromosomes\"."); + throw new RuntimeException("Found Chromosome with invalid Alleles.\nNBTTagCompound: " + chromosomesNBT + "\nSee config option \"genetics.clear.invalid.chromosomes\".\nMissing: " + chromosomeNBT); } } } diff --git a/src/main/java/forestry/core/genetics/Mutation.java b/src/main/java/forestry/core/genetics/Mutation.java index d205640bd..7f20e1f9f 100755 --- a/src/main/java/forestry/core/genetics/Mutation.java +++ b/src/main/java/forestry/core/genetics/Mutation.java @@ -12,16 +12,24 @@ package forestry.core.genetics; import java.util.ArrayList; import java.util.Collection; +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.world.World; + +import net.minecraftforge.common.BiomeDictionary; import forestry.api.core.EnumHumidity; import forestry.api.core.EnumTemperature; import forestry.api.genetics.IAllele; import forestry.api.genetics.IAlleleSpecies; -import forestry.api.genetics.IMutation; +import forestry.api.genetics.IGenome; +import forestry.api.genetics.IMutationCondition; +import forestry.api.genetics.IMutationCustom; -public abstract class Mutation implements IMutation { +public abstract class Mutation implements IMutationCustom { - protected final int chance; + private final int chance; boolean isSecret = false; protected final IAllele species0; @@ -29,12 +37,8 @@ public abstract class Mutation implements IMutation { private final IAllele[] template; - protected float minTemperature = 0.0f; - protected float maxTemperature = 2.0f; - protected float minRainfall = 0.0f; - protected float maxRainfall = 2.0f; - - protected final ArrayList specialConditions = new ArrayList(); + private final List mutationConditions = new ArrayList(); + private final List specialConditions = new ArrayList(); public Mutation(IAlleleSpecies species0, IAlleleSpecies species1, IAllele[] template, int chance) { this.species0 = species0; @@ -43,54 +47,84 @@ public abstract class Mutation implements IMutation { this.chance = chance; } - - public Mutation setSpecialConditions(Collection conditions) { - specialConditions.addAll(conditions); - return this; - } - public Collection getSpecialConditions() { return specialConditions; } + @Override public Mutation setIsSecret() { isSecret = true; return this; } - public Mutation setTemperature(float minTemperature, float maxTemperature) { - this.minTemperature = minTemperature; - this.maxTemperature = maxTemperature; - - EnumTemperature temp1 = EnumTemperature.getFromValue(minTemperature); - EnumTemperature temp2 = EnumTemperature.getFromValue(maxTemperature); - if (temp1 != temp2) { - specialConditions.add(String.format("Temperature between %s and %s.", temp1, temp2)); - } else { - specialConditions.add(String.format("Temperature %s required.", temp1)); - } + @Override + public Mutation restrictTemperature(EnumTemperature temperature) { + return restrictTemperature(temperature, temperature); + } + + @Override + public Mutation restrictTemperature(EnumTemperature minTemperature, EnumTemperature maxTemperature) { + IMutationCondition mutationCondition = new MutationConditionTemperature(minTemperature, maxTemperature); + return addMutationCondition(mutationCondition); + } + + @Override + public Mutation restrictHumidity(EnumHumidity humidity) { + return restrictHumidity(humidity, humidity); + } + + @Override + public Mutation restrictHumidity(EnumHumidity minHumidity, EnumHumidity maxHumidity) { + IMutationCondition mutationCondition = new MutationConditionHumidity(minHumidity, maxHumidity); + return addMutationCondition(mutationCondition); + } + + @Override + public Mutation restrictBiomeType(BiomeDictionary.Type... types) { + IMutationCondition mutationCondition = new MutationConditionBiome(types); + return addMutationCondition(mutationCondition); + } + + @Override + public Mutation requireDay() { + IMutationCondition mutationCondition = new MutationConditionDaytime(true); + return addMutationCondition(mutationCondition); + } + + @Override + public Mutation requireNight() { + IMutationCondition mutationCondition = new MutationConditionDaytime(false); + return addMutationCondition(mutationCondition); + } + + @Override + public Mutation restrictDateRange(int startMonth, int startDay, int endMonth, int endDay) { + IMutationCondition mutationCondition = new MutationConditionTimeLimited(startMonth, startDay, endMonth, endDay); + return addMutationCondition(mutationCondition); + } + + @Override + public Mutation requireResource(Block block, int meta) { + IMutationCondition mutationCondition = new MutationConditionRequiresResource(block, meta); + return addMutationCondition(mutationCondition); + } + + @Override + public Mutation addMutationCondition(IMutationCondition mutationCondition) { + mutationConditions.add(mutationCondition); + specialConditions.add(mutationCondition.getDescription()); return this; } - public Mutation setRainfall(float minRainfall, float maxRainfall) { - this.minRainfall = minRainfall; - this.maxRainfall = maxRainfall; - - EnumHumidity temp1 = EnumHumidity.getFromValue(minRainfall); - EnumHumidity temp2 = EnumHumidity.getFromValue(maxRainfall); - - if (temp1 != temp2) { - specialConditions.add(String.format("Humidity between %s and %s.", temp1, temp2)); - } else { - specialConditions.add(String.format("Humidity %s required.", temp1)); + protected float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) { + float mutationChance = chance; + for (IMutationCondition mutationCondition : mutationConditions) { + mutationChance *= mutationCondition.getChance(world, x, y, z, allele0, allele1, genome0, genome1); + if (mutationChance == 0) { + return 0; + } } - return this; - } - - public Mutation setTemperatureRainfall(float minTemperature, float maxTemperature, float minRainfall, float maxRainfall) { - setTemperature(minTemperature, maxTemperature); - setRainfall(minRainfall, maxRainfall); - return this; + return mutationChance; } @Override diff --git a/src/main/java/forestry/core/genetics/MutationConditionBiome.java b/src/main/java/forestry/core/genetics/MutationConditionBiome.java new file mode 100644 index 000000000..3fc2a0f44 --- /dev/null +++ b/src/main/java/forestry/core/genetics/MutationConditionBiome.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright (c) 2011-2014 SirSengir. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser Public License v3 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.core.genetics; + +import java.util.Arrays; +import java.util.List; + +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; + +import net.minecraftforge.common.BiomeDictionary; + +import forestry.api.genetics.IAllele; +import forestry.api.genetics.IGenome; +import forestry.api.genetics.IMutationCondition; + +public class MutationConditionBiome implements IMutationCondition { + + private final List validBiomeTypes; + + public MutationConditionBiome(BiomeDictionary.Type... types) { + this.validBiomeTypes = Arrays.asList(types); + } + + @Override + public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) { + BiomeGenBase biome = world.getBiomeGenForCoords(x, z); + for (BiomeDictionary.Type type : validBiomeTypes) { + if (BiomeDictionary.isBiomeOfType(biome, type)) { + return 1; + } + } + + return 0; + } + + @Override + public String getDescription() { + if (validBiomeTypes.size() > 1) { + String biomeTypes = Arrays.toString(validBiomeTypes.toArray()); + return String.format("Is restricted to biomes like: %s", biomeTypes); + } else { + String biomeType = validBiomeTypes.get(0).toString(); + return String.format("Is restricted to %s-like biomes.", biomeType); + } + } +} diff --git a/src/main/java/forestry/core/genetics/MutationConditionDaytime.java b/src/main/java/forestry/core/genetics/MutationConditionDaytime.java new file mode 100644 index 000000000..b1fb5ffe4 --- /dev/null +++ b/src/main/java/forestry/core/genetics/MutationConditionDaytime.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2011-2014 SirSengir. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser Public License v3 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.core.genetics; + +import net.minecraft.world.World; + +import forestry.api.genetics.IAllele; +import forestry.api.genetics.IGenome; +import forestry.api.genetics.IMutationCondition; + +public class MutationConditionDaytime implements IMutationCondition { + + private final boolean daytime; + + public MutationConditionDaytime(boolean daytime) { + this.daytime = daytime; + } + + @Override + public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) { + if (world.isDaytime() == daytime) { + return 1; + } + return 0; + } + + @Override + public String getDescription() { + if (daytime) { + return "Can only occur during the day."; + } else { + return "Can only occur during the night."; + } + } +} diff --git a/src/main/java/forestry/core/genetics/MutationConditionHumidity.java b/src/main/java/forestry/core/genetics/MutationConditionHumidity.java new file mode 100644 index 000000000..778545576 --- /dev/null +++ b/src/main/java/forestry/core/genetics/MutationConditionHumidity.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright (c) 2011-2014 SirSengir. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser Public License v3 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.core.genetics; + +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; + +import forestry.api.core.EnumHumidity; +import forestry.api.genetics.IAllele; +import forestry.api.genetics.IGenome; +import forestry.api.genetics.IMutationCondition; + +public class MutationConditionHumidity implements IMutationCondition { + private final EnumHumidity minHumidity; + private final EnumHumidity maxHumidity; + + public MutationConditionHumidity(EnumHumidity minHumidity, EnumHumidity maxHumidity) { + this.minHumidity = minHumidity; + this.maxHumidity = maxHumidity; + } + + @Override + public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) { + BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(x, z); + EnumHumidity biomeHumidity = EnumHumidity.getFromValue(biome.rainfall); + + if (biomeHumidity.ordinal() < minHumidity.ordinal() || biomeHumidity.ordinal() > maxHumidity.ordinal()) { + return 0; + } + return 1; + } + + @Override + public String getDescription() { + if (minHumidity != maxHumidity) { + return String.format("Humidity between %s and %s.", minHumidity, maxHumidity); + } else { + return String.format("Humidity %s required.", minHumidity); + } + } +} diff --git a/src/main/java/forestry/core/genetics/MutationConditionRequiresResource.java b/src/main/java/forestry/core/genetics/MutationConditionRequiresResource.java new file mode 100644 index 000000000..fd367a870 --- /dev/null +++ b/src/main/java/forestry/core/genetics/MutationConditionRequiresResource.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright (c) 2011-2014 SirSengir. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser Public License v3 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.core.genetics; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +import forestry.api.genetics.IAllele; +import forestry.api.genetics.IGenome; +import forestry.api.genetics.IMutationCondition; +import forestry.core.utils.StackUtils; + +public class MutationConditionRequiresResource implements IMutationCondition { + + private final ItemStack blockRequired; + + public MutationConditionRequiresResource(Block block, int meta) { + blockRequired = new ItemStack(block, meta); + } + + @Override + public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) { + Block block = world.getBlock(x, y - 1, z); + int meta = world.getBlockMetadata(x, y - 1, z); + return StackUtils.equals(block, meta, blockRequired) ? 1 : 0; + } + + @Override + public String getDescription() { + return String.format("Must be placed on:%s", blockRequired.getDisplayName()); + } +} diff --git a/src/main/java/forestry/core/genetics/MutationConditionTemperature.java b/src/main/java/forestry/core/genetics/MutationConditionTemperature.java new file mode 100644 index 000000000..b819800ba --- /dev/null +++ b/src/main/java/forestry/core/genetics/MutationConditionTemperature.java @@ -0,0 +1,50 @@ +/******************************************************************************* + * Copyright (c) 2011-2014 SirSengir. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser Public License v3 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.core.genetics; + +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; + +import forestry.api.core.EnumTemperature; +import forestry.api.genetics.IAllele; +import forestry.api.genetics.IGenome; +import forestry.api.genetics.IMutationCondition; + +public class MutationConditionTemperature implements IMutationCondition { + + private final EnumTemperature minTemperature; + private final EnumTemperature maxTemperature; + + public MutationConditionTemperature(EnumTemperature minTemperature, EnumTemperature maxTemperature) { + this.minTemperature = minTemperature; + this.maxTemperature = maxTemperature; + } + + @Override + public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) { + BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(x, z); + EnumTemperature biomeTemperature = EnumTemperature.getFromBiome(biome); + + if (biomeTemperature.ordinal() < minTemperature.ordinal() || biomeTemperature.ordinal() > maxTemperature.ordinal()) { + return 0; + } + return 1; + } + + @Override + public String getDescription() { + if (minTemperature != maxTemperature) { + return String.format("Temperature between %s and %s.", minTemperature, maxTemperature); + } else { + return String.format("Temperature %s required.", minTemperature); + } + } +} diff --git a/src/main/java/forestry/core/genetics/MutationConditionTimeLimited.java b/src/main/java/forestry/core/genetics/MutationConditionTimeLimited.java new file mode 100644 index 000000000..09705d417 --- /dev/null +++ b/src/main/java/forestry/core/genetics/MutationConditionTimeLimited.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright (c) 2011-2014 SirSengir. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser Public License v3 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.core.genetics; + +import java.util.Calendar; + +import net.minecraft.world.World; + +import forestry.api.genetics.IAllele; +import forestry.api.genetics.IGenome; +import forestry.api.genetics.IMutationCondition; +import forestry.core.utils.DayMonth; + +public class MutationConditionTimeLimited implements IMutationCondition { + + private final DayMonth start; + private final DayMonth end; + + public MutationConditionTimeLimited(int startMonth, int startDay, int endMonth, int endDay) { + this.start = new DayMonth(startDay, startMonth); + this.end = new DayMonth(endDay, endMonth); + } + + @Override + public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) { + DayMonth now = new DayMonth(); + + // If we are equal to start day, return 1. + if (Calendar.getInstance().get(Calendar.DAY_OF_MONTH) == start.day && Calendar.getInstance().get(Calendar.MONTH) + 1 == start.month) { + return 1; + } + + // Equal to end date, return 1 + if (Calendar.getInstance().get(Calendar.DAY_OF_MONTH) == end.day && Calendar.getInstance().get(Calendar.MONTH) + 1 == end.month) { + return 1; + } + + // Still a chance we are in between + if (now.between(start, end)) { + return 1; + } + + // Now we finally failed. + return 0; + } + + @Override + public String getDescription() { + return "Between " + start + " and " + end + '.'; + } +} diff --git a/src/main/java/forestry/core/genetics/Allele.java b/src/main/java/forestry/core/genetics/alleles/Allele.java old mode 100755 new mode 100644 similarity index 51% rename from src/main/java/forestry/core/genetics/Allele.java rename to src/main/java/forestry/core/genetics/alleles/Allele.java index 96fffd83f..b5c1a4a67 --- a/src/main/java/forestry/core/genetics/Allele.java +++ b/src/main/java/forestry/core/genetics/alleles/Allele.java @@ -8,7 +8,7 @@ * Various Contributors including, but not limited to: * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges ******************************************************************************/ -package forestry.core.genetics; +package forestry.core.genetics.alleles; import java.util.EnumSet; @@ -18,23 +18,17 @@ import forestry.api.arboriculture.IAlleleFruit; import forestry.api.arboriculture.IAlleleGrowth; import forestry.api.arboriculture.IAlleleTreeSpecies; import forestry.api.genetics.AlleleManager; -import forestry.api.genetics.EnumTolerance; import forestry.api.genetics.IAllele; import forestry.api.genetics.ILegacyHandler; import forestry.api.lepidopterology.IAlleleButterflySpecies; -import forestry.core.config.Defaults; import forestry.core.utils.StringUtil; -public class Allele implements IAllele { +public abstract class Allele implements IAllele { protected final String uid; protected final boolean isDominant; protected String name; - public Allele(String uid, boolean isDominant) { - this(uid, isDominant, false); - } - protected Allele(String uid, boolean isDominant, boolean skipRegister) { this.uid = uid; this.isDominant = isDominant; @@ -47,7 +41,7 @@ public class Allele implements IAllele { @Override public String getUID() { - return "forestry." + this.uid; + return uid; } @Override @@ -55,6 +49,8 @@ public class Allele implements IAllele { return isDominant; } + public static IAlleleHelper helper; + // / TREES // SPECIES 512 - 1023 public static IAlleleTreeSpecies treeOak; public static IAlleleTreeSpecies treeBirch; @@ -141,47 +137,6 @@ public class Allele implements IAllele { public static IAlleleButterflySpecies lepiSpicebush; public static IAlleleButterflySpecies lepiMalachite; public static IAlleleButterflySpecies lepiLLacewing; - - // / ALL // GENERIC - public static final Allele boolFalse = new AlleleBoolean("boolFalse", false); - public static final Allele boolTrue = new AlleleBoolean("boolTrue", true); - - public static final Allele int1 = new AlleleInteger("i1d", 1, true); - public static final Allele int2 = new AlleleInteger("i2d", 2, true); - public static final Allele int3 = new AlleleInteger("i3d", 3, true); - public static final Allele int4 = new AlleleInteger("i4d", 4, true); - public static final Allele int5 = new AlleleInteger("i5d", 5, true); - public static final Allele int6 = new AlleleInteger("i6d", 6, true); - public static final Allele int7 = new AlleleInteger("i7d", 7, true); - public static final Allele int8 = new AlleleInteger("i8d", 8, true); - public static final Allele int9 = new AlleleInteger("i9d", 9, true); - public static final Allele int10 = new AlleleInteger("i10d", 10, true); - - // / BEES // SPEED 1100 - 1199 - public static final Allele speedSlowest = new AlleleFloat("speedSlowest", 0.3f, true).setName("speed", "slowest"); - public static final Allele speedSlower = new AlleleFloat("speedSlower", 0.6f, true).setName("speed", "slower"); - public static final Allele speedSlow = new AlleleFloat("speedSlow", 0.8f, true).setName("speed", "slow"); - public static final Allele speedNorm = new AlleleFloat("speedNorm", 1.0f).setName("speed", "normal"); - public static final Allele speedFast = new AlleleFloat("speedFast", 1.2f, true).setName("speed", "fast"); - public static final Allele speedFaster = new AlleleFloat("speedFaster", 1.4f).setName("speed", "faster"); - public static final Allele speedFastest = new AlleleFloat("speedFastest", 1.7f).setName("speed", "fastest"); - - // / BEES // LIFESPAN 1200 - 1299 - public static final Allele lifespanShortest = new AlleleInteger("lifespanShortest", 10, false).setName("gui.shortestlife"); - public static final Allele lifespanShorter = new AlleleInteger("lifespanShorter", 20, true).setName("gui.shorterlife"); - public static final Allele lifespanShort = new AlleleInteger("lifespanShort", 30, true).setName("gui.shortlife"); - public static final Allele lifespanShortened = new AlleleInteger("lifespanShortened", 35, true).setName("gui.shortenedlife"); - public static final Allele lifespanNormal = new AlleleInteger("lifespanNormal", 40).setName("gui.normallife"); - public static final Allele lifespanElongated = new AlleleInteger("lifespanElongated", 45, true).setName("gui.elongatedlife"); - public static final Allele lifespanLong = new AlleleInteger("lifespanLong", 50).setName("gui.longlife"); - public static final Allele lifespanLonger = new AlleleInteger("lifespanLonger", 60).setName("gui.longerlife"); - public static final Allele lifespanLongest = new AlleleInteger("lifespanLongest", 70).setName("gui.longestlife"); - - // / BEES // FERTILITY 1300 - 1349 - public static final Allele fertilityLow = new AlleleInteger("fertilityLow", 1, true); - public static final Allele fertilityNormal = new AlleleInteger("fertilityNormal", 2, true); - public static final Allele fertilityHigh = new AlleleInteger("fertilityHigh", 3); - public static final Allele fertilityMaximum = new AlleleInteger("fertilityMaximum", 4); // / TREES // GROWTH PROVIDER 1350 - 1399 public static IAlleleGrowth growthLightlevel; @@ -202,106 +157,6 @@ public class Allele implements IAllele { public static IAlleleFruit fruitPlum; public static IAlleleFruit fruitJujube; - // / TREES // HEIGHT 1400 - 1449 - public static final Allele heightSmallest = new AlleleFloat("heightSmallest", 0.25f).setName("height", "smallest"); - public static final Allele heightSmaller = new AlleleFloat("heightSmaller", 0.5f).setName("height", "smaller"); - public static final Allele heightSmall = new AlleleFloat("heightSmall", 0.75f).setName("height", "small"); - public static final Allele heightAverage = new AlleleFloat("heightMax10", 1.0f).setName("height", "average"); - public static final Allele heightLarge = new AlleleFloat("heightLarge", 1.25f).setName("height", "large"); - public static final Allele heightLarger = new AlleleFloat("heightLarger", 1.5f).setName("height", "larger"); - public static final Allele heightLargest = new AlleleFloat("heightLargest", 1.75f).setName("height", "largest"); - public static final Allele heightGigantic = new AlleleFloat("heightGigantic", 2.0f).setName("height", "gigantic"); - - /// BUTTERFLIES // SIZE - public static final Allele sizeSmallest = new AlleleFloat("sizeSmallest", 0.3f).setName("size", "smallest"); - public static final Allele sizeSmaller = new AlleleFloat("sizeSmaller", 0.4f).setName("size", "smaller"); - public static final Allele sizeSmall = new AlleleFloat("sizeSmall", 0.5f).setName("size", "small"); - public static final Allele sizeAverage = new AlleleFloat("sizeAverage", 0.6f).setName("size", "average"); - public static final Allele sizeLarge = new AlleleFloat("sizeLarge", 0.75f).setName("size", "large"); - public static final Allele sizeLarger = new AlleleFloat("sizeLarger", 0.9f).setName("size", "larger"); - public static final Allele sizeLargest = new AlleleFloat("sizeLargest", 1.0f).setName("size", "largest"); - - // / BOTH // TOLERANCE 1450 - 1499 - public static final Allele toleranceNone = new AlleleTolerance("toleranceNone", EnumTolerance.NONE); - public static final Allele toleranceBoth1 = new AlleleTolerance("toleranceBoth1", EnumTolerance.BOTH_1, true); - public static final Allele toleranceBoth2 = new AlleleTolerance("toleranceBoth2", EnumTolerance.BOTH_2); - public static final Allele toleranceBoth3 = new AlleleTolerance("toleranceBoth3", EnumTolerance.BOTH_3); - public static final Allele toleranceBoth4 = new AlleleTolerance("toleranceBoth4", EnumTolerance.BOTH_4); - public static final Allele toleranceBoth5 = new AlleleTolerance("toleranceBoth5", EnumTolerance.BOTH_5); - public static final Allele toleranceUp1 = new AlleleTolerance("toleranceUp1", EnumTolerance.UP_1, true); - public static final Allele toleranceUp2 = new AlleleTolerance("toleranceUp2", EnumTolerance.UP_2); - public static final Allele toleranceUp3 = new AlleleTolerance("toleranceUp3", EnumTolerance.UP_3); - public static final Allele toleranceUp4 = new AlleleTolerance("toleranceUp4", EnumTolerance.UP_4); - public static final Allele toleranceUp5 = new AlleleTolerance("toleranceUp5", EnumTolerance.UP_5); - public static final Allele toleranceDown1 = new AlleleTolerance("toleranceDown1", EnumTolerance.DOWN_1, true); - public static final Allele toleranceDown2 = new AlleleTolerance("toleranceDown2", EnumTolerance.DOWN_2); - public static final Allele toleranceDown3 = new AlleleTolerance("toleranceDown3", EnumTolerance.DOWN_3); - public static final Allele toleranceDown4 = new AlleleTolerance("toleranceDown4", EnumTolerance.DOWN_4); - public static final Allele toleranceDown5 = new AlleleTolerance("toleranceDown5", EnumTolerance.DOWN_5); - - // / BEES // FLOWER PROVIDERS 1500 - 1599 - public static Allele flowersVanilla; - public static Allele flowersNether; - public static Allele flowersCacti; - public static Allele flowersMushrooms; - public static Allele flowersEnd; - public static Allele flowersJungle; - public static Allele flowersSnow; - public static Allele flowersWheat; - public static Allele flowersGourd; - - // / TREES // FERTILITY 1600 - 1649 - public static final Allele saplingsLowest = new AlleleFloat("saplingsLowest", 0.01f, true).setName("saplings", "lowest"); - public static final Allele saplingsLower = new AlleleFloat("saplingsLower", 0.025f, true).setName("saplings", "lower"); - public static final Allele saplingsLow = new AlleleFloat("saplingsLow", 0.035f, true).setName("saplings", "low"); - public static final Allele saplingsAverage = new AlleleFloat("saplingsDefault", 0.05f, true).setName("saplings", "average"); - public static final Allele saplingsHigh = new AlleleFloat("saplingsDouble", 0.1f, true).setName("saplings", "high"); - public static final Allele saplingsHigher = new AlleleFloat("saplingsTriple", 0.2f, true).setName("saplings", "higher"); - public static final Allele saplingsHighest = new AlleleFloat("saplingsHighest", 0.3f, true).setName("saplings", "highest"); - - // / TREES // YIELD 1650 - 1699 - public static final Allele yieldLowest = new AlleleFloat("yieldLowest", 0.025f, true).setName("yield", "lowest"); - public static final Allele yieldLower = new AlleleFloat("yieldLower", 0.05f, true).setName("yield", "lower"); - public static final Allele yieldLow = new AlleleFloat("yieldLow", 0.1f, true).setName("yield", "low"); - public static final Allele yieldAverage = new AlleleFloat("yieldDefault", 0.2f, true).setName("yield", "average"); - public static final Allele yieldHigh = new AlleleFloat("yieldHigh", 0.3f, false).setName("yield", "high"); - public static final Allele yieldHigher = new AlleleFloat("yieldHigher", 0.35f, false).setName("yield", "higher"); - public static final Allele yieldHighest = new AlleleFloat("yieldHighest", 0.4f, false).setName("yield", "highest"); - - // TREES // SAPPINESS - public static final Allele sappinessLowest = new AlleleFloat("sappinessLowest", 0.1f, true).setName("sappiness", "lowest"); - public static final Allele sappinessLower = new AlleleFloat("sappinessLower", 0.2f, true).setName("sappiness", "lower"); - public static final Allele sappinessLow = new AlleleFloat("sappinessLow", 0.3f, true).setName("sappiness", "low"); - public static final Allele sappinessAverage = new AlleleFloat("sappinessAverage", 0.4f, true).setName("sappiness", "average"); - public static final Allele sappinessHigh = new AlleleFloat("sappinessHigh", 0.6f, true).setName("sappiness", "high"); - public static final Allele sappinessHigher = new AlleleFloat("sappinessHigher", 0.8f, false).setName("sappiness", "higher"); - public static final Allele sappinessHighest = new AlleleFloat("sappinessHighest", 1.0f, false).setName("sappiness", "highest"); - - // TREES // MATURATION TIME - public static final Allele maturationSlowest = new AlleleInteger("maturationSlowest", 10, true).setName("maturity", "slowest"); - public static final Allele maturationSlower = new AlleleInteger("maturationSlower", 7).setName("maturity", "slower"); - public static final Allele maturationSlow = new AlleleInteger("maturationSlow", 5, true).setName("maturity", "slow"); - public static final Allele maturationAverage = new AlleleInteger("maturationAverage", 4).setName("maturity", "average"); - public static final Allele maturationFast = new AlleleInteger("maturationFast", 3).setName("maturity", "fast"); - public static final Allele maturationFaster = new AlleleInteger("maturationFaster", 2).setName("maturity", "faster"); - public static final Allele maturationFastest = new AlleleInteger("maturationFastest", 1).setName("maturity", "fastest"); - - // / BEES // FLOWER GROWTH 1700 - 1749 - public static final Allele floweringSlowest = new AlleleInteger("floweringSlowest", 5, true).setName("flowering", "slowest"); - public static final Allele floweringSlower = new AlleleInteger("floweringSlower", 10).setName("flowering", "slower"); - public static final Allele floweringSlow = new AlleleInteger("floweringSlow", 15).setName("flowering", "slow"); - public static final Allele floweringAverage = new AlleleInteger("floweringAverage", 20).setName("flowering", "average"); - public static final Allele floweringFast = new AlleleInteger("floweringFast", 25).setName("flowering", "fast"); - public static final Allele floweringFaster = new AlleleInteger("floweringFaster", 30).setName("flowering", "faster"); - public static final Allele floweringFastest = new AlleleInteger("floweringFastest", 35).setName("flowering", "fastest"); - public static final Allele floweringMaximum = new AlleleInteger("floweringMaximum", 99, true).setName("flowering", "maximum"); - - // / BOTH // TERRITORY 1750 - 1799 - public static final Allele territoryDefault = new AlleleArea("territoryDefault", new int[]{9, 6, 9}).setName("territory", "average"); - public static final Allele territoryLarge = new AlleleArea("territoryLarge", new int[]{11, 8, 11}).setName("territory", "large"); - public static final Allele territoryLarger = new AlleleArea("territoryLarger", new int[]{13, 12, 13}).setName("territory", "larger"); - public static final Allele territoryLargest = new AlleleArea("territoryLargest", new int[]{15, 13, 15}).setName("territory", "largest"); - // / BEES // EFFECTS 1800 - 1899 public static Allele effectNone; public static Allele effectAggressive; @@ -330,20 +185,16 @@ public class Allele implements IAllele { public static Allele butterflyNone; // These are "secondary" plant attributes, i.e. the tree can double as one. - public static final Allele plantTypeNone = new AllelePlantType("plantTypeNone", EnumSet.noneOf(EnumPlantType.class), true); - public static final Allele plantTypePlains = new AllelePlantType("plantTypePlains", EnumPlantType.Plains); - public static final Allele plantTypeDesert = new AllelePlantType("plantTypeDesert", EnumPlantType.Desert); - public static final Allele plantTypeBeach = new AllelePlantType("plantTypeBeach", EnumPlantType.Beach); - public static final Allele plantTypeCave = new AllelePlantType("plantTypeCave", EnumPlantType.Cave); - public static final Allele plantTypeWater = new AllelePlantType("plantTypeWater", EnumPlantType.Water); - public static final Allele plantTypeNether = new AllelePlantType("plantTypeNether", EnumPlantType.Nether); - public static final Allele plantTypeCrop = new AllelePlantType("plantTypeCrop", EnumPlantType.Crop); + public static final Allele plantTypeNone = new AllelePlantType("none", EnumSet.noneOf(EnumPlantType.class), true); + public static final Allele plantTypePlains = new AllelePlantType(EnumPlantType.Plains); + public static final Allele plantTypeDesert = new AllelePlantType(EnumPlantType.Desert); + public static final Allele plantTypeBeach = new AllelePlantType(EnumPlantType.Beach); + public static final Allele plantTypeCave = new AllelePlantType(EnumPlantType.Cave); + public static final Allele plantTypeWater = new AllelePlantType(EnumPlantType.Water); + public static final Allele plantTypeNether = new AllelePlantType(EnumPlantType.Nether); + public static final Allele plantTypeCrop = new AllelePlantType(EnumPlantType.Crop); - // / TREES // FIREPROOF - public static final Allele fireproofFalse = new AlleleBoolean("fireproofFalse", false); - public static final Allele fireproofTrue = new AlleleBoolean("fireproofTrue", true); - - public static void setupLegacyAPI() { + public static void setupAPI() { // LEGACY MAPPINGS ILegacyHandler legacy = (ILegacyHandler) AlleleManager.alleleRegistry; @@ -384,10 +235,6 @@ public class Allele implements IAllele { legacy.registerLegacyMapping(29, "forestry.speciesVengeful"); legacy.registerLegacyMapping(30, "forestry.speciesAvenging"); - legacy.registerLegacyMapping(Defaults.ID_BEE_SPECIES_DARKENED, "forestry.speciesDarkened"); - legacy.registerLegacyMapping(Defaults.ID_BEE_SPECIES_REDDENED, "forestry.speciesReddened"); - legacy.registerLegacyMapping(Defaults.ID_BEE_SPECIES_OMEGA, "forestry.speciesOmega"); - legacy.registerLegacyMapping(34, "forestry.speciesLeporine"); legacy.registerLegacyMapping(40, "forestry.speciesRural"); @@ -488,11 +335,6 @@ public class Allele implements IAllele { public String getUnlocalizedName() { return name; } - - public Allele setName(String string) { - name = string; - return this; - } @Override public String toString() { diff --git a/src/main/java/forestry/core/genetics/AlleleArea.java b/src/main/java/forestry/core/genetics/alleles/AlleleArea.java old mode 100755 new mode 100644 similarity index 59% rename from src/main/java/forestry/core/genetics/AlleleArea.java rename to src/main/java/forestry/core/genetics/alleles/AlleleArea.java index 002c39139..337d36c91 --- a/src/main/java/forestry/core/genetics/AlleleArea.java +++ b/src/main/java/forestry/core/genetics/alleles/AlleleArea.java @@ -8,22 +8,17 @@ * Various Contributors including, but not limited to: * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges ******************************************************************************/ -package forestry.core.genetics; +package forestry.core.genetics.alleles; import forestry.api.genetics.IAlleleArea; -import forestry.core.utils.StringUtil; import forestry.core.vect.Vect; -public class AlleleArea extends Allele implements IAlleleArea { +public class AlleleArea extends AlleleForestry implements IAlleleArea { private final int[] area; - public AlleleArea(String uid, int[] value) { - this(uid, value, false); - } - - public AlleleArea(String uid, int[] value, boolean isDominant) { - super(uid, isDominant); + public AlleleArea(String prefix, String name, int[] value, boolean isDominant) { + super(prefix, name, isDominant, false); this.area = value; } @@ -34,15 +29,4 @@ public class AlleleArea extends Allele implements IAlleleArea { public Vect getArea() { return new Vect(area); } - - public AlleleArea setName(String customPrefix, String name) { - String customName = "gui." + customPrefix + "." + name; - if (StringUtil.canTranslate(customName)) { - this.name = customName; - } else { - this.name = "gui." + name; - } - return this; - } - } diff --git a/src/main/java/forestry/core/genetics/AlleleBoolean.java b/src/main/java/forestry/core/genetics/alleles/AlleleBoolean.java old mode 100755 new mode 100644 similarity index 69% rename from src/main/java/forestry/core/genetics/AlleleBoolean.java rename to src/main/java/forestry/core/genetics/alleles/AlleleBoolean.java index 1bd96078a..01f0e618e --- a/src/main/java/forestry/core/genetics/AlleleBoolean.java +++ b/src/main/java/forestry/core/genetics/alleles/AlleleBoolean.java @@ -8,20 +8,16 @@ * Various Contributors including, but not limited to: * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges ******************************************************************************/ -package forestry.core.genetics; +package forestry.core.genetics.alleles; import forestry.api.genetics.IAlleleBoolean; -public class AlleleBoolean extends Allele implements IAlleleBoolean { +public class AlleleBoolean extends AlleleForestry implements IAlleleBoolean { - final boolean value; + private final boolean value; - public AlleleBoolean(String uid, boolean value) { - this(uid, value, false); - } - - public AlleleBoolean(String uid, boolean value, boolean isDominant) { - super(uid, isDominant); + public AlleleBoolean(String category, boolean value, boolean isDominant) { + super(category, Boolean.toString(value), isDominant); this.value = value; } diff --git a/src/main/java/forestry/core/genetics/AlleleFloat.java b/src/main/java/forestry/core/genetics/alleles/AlleleFloat.java old mode 100755 new mode 100644 similarity index 56% rename from src/main/java/forestry/core/genetics/AlleleFloat.java rename to src/main/java/forestry/core/genetics/alleles/AlleleFloat.java index cd99ca273..e03d00e09 --- a/src/main/java/forestry/core/genetics/AlleleFloat.java +++ b/src/main/java/forestry/core/genetics/alleles/AlleleFloat.java @@ -8,21 +8,20 @@ * Various Contributors including, but not limited to: * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges ******************************************************************************/ -package forestry.core.genetics; +package forestry.core.genetics.alleles; import forestry.api.genetics.IAlleleFloat; -import forestry.core.utils.StringUtil; -public class AlleleFloat extends Allele implements IAlleleFloat { +public class AlleleFloat extends AlleleForestry implements IAlleleFloat { private final float value; - public AlleleFloat(String uid, float value) { - this(uid, value, false); + public AlleleFloat(String prefix, String name, float value) { + this(prefix, name, value, false); } - public AlleleFloat(String uid, float value, boolean isDominant) { - super(uid, isDominant); + public AlleleFloat(String prefix, String name, float value, boolean isDominant) { + super(prefix, name, isDominant); this.value = value; } @@ -30,14 +29,4 @@ public class AlleleFloat extends Allele implements IAlleleFloat { public float getValue() { return value; } - - public AlleleFloat setName(String customPrefix, String name) { - String customName = "gui." + customPrefix + "." + name; - if (StringUtil.canTranslate(customName)) { - this.name = customName; - } else { - this.name = "gui." + name; - } - return this; - } } diff --git a/src/main/java/forestry/core/genetics/alleles/AlleleForestry.java b/src/main/java/forestry/core/genetics/alleles/AlleleForestry.java new file mode 100644 index 000000000..89a4eae16 --- /dev/null +++ b/src/main/java/forestry/core/genetics/alleles/AlleleForestry.java @@ -0,0 +1,36 @@ +/******************************************************************************* + * Copyright (c) 2011-2014 SirSengir. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser Public License v3 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.core.genetics.alleles; + +import org.apache.commons.lang3.text.WordUtils; + +import forestry.core.utils.StringUtil; + +public class AlleleForestry extends Allele { + public AlleleForestry(String prefix, String name, boolean isDominant) { + this(prefix, name, isDominant, false); + } + + protected AlleleForestry(String prefix, String name, boolean isDominant, boolean skipRegister) { + super("forestry." + prefix + WordUtils.capitalize(name), isDominant, skipRegister); + setName(prefix, name); + } + + private AlleleForestry setName(String customPrefix, String name) { + String customName = "gui." + customPrefix + '.' + name; + if (StringUtil.canTranslate(customName)) { + this.name = customName; + } else { + this.name = "gui." + name; + } + return this; + } +} diff --git a/src/main/java/forestry/core/genetics/alleles/AlleleHelper.java b/src/main/java/forestry/core/genetics/alleles/AlleleHelper.java new file mode 100644 index 000000000..92f248e48 --- /dev/null +++ b/src/main/java/forestry/core/genetics/alleles/AlleleHelper.java @@ -0,0 +1,155 @@ +/******************************************************************************* + * Copyright (c) 2011-2014 SirSengir. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser Public License v3 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.core.genetics.alleles; + +import java.util.EnumMap; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +import forestry.api.genetics.AlleleManager; +import forestry.api.genetics.EnumTolerance; +import forestry.api.genetics.IAllele; +import forestry.api.genetics.IAlleleBoolean; +import forestry.api.genetics.IAlleleInteger; +import forestry.api.genetics.IChromosomeType; +import forestry.apiculture.flowers.FlowerProvider; +import forestry.apiculture.genetics.AlleleFlowers; +import forestry.core.vect.IVect; +import forestry.plugins.PluginManager; + +public class AlleleHelper implements IAlleleHelper { + + private final Map> alleleMaps = new HashMap>(); + + public void init() { + if (PluginManager.Module.APICULTURE.isEnabled()) { + createAlleles(EnumAllele.Fertility.class); + createAlleles(EnumAllele.Flowering.class); + } + + if (PluginManager.Module.APICULTURE.isEnabled() || PluginManager.Module.ARBORICULTURE.isEnabled()) { + createAlleles(EnumAllele.Territory.class); + + AlleleManager.alleleRegistry.registerDeprecatedAlleleReplacement("forestry.territoryDefault", get(EnumAllele.Territory.AVERAGE)); + } + + if (PluginManager.Module.APICULTURE.isEnabled() || PluginManager.Module.LEPIDOPTEROLOGY.isEnabled()) { + createAlleles(EnumAllele.Speed.class); + createAlleles(EnumAllele.Lifespan.class); + createAlleles(EnumAllele.Tolerance.class); + createAlleles(EnumAllele.Flowers.class); + + AlleleManager.alleleRegistry.registerDeprecatedAlleleReplacement("forestry.speedNorm", get(EnumAllele.Speed.NORMAL)); + } + + if (PluginManager.Module.ARBORICULTURE.isEnabled()) { + createAlleles(EnumAllele.Height.class); + createAlleles(EnumAllele.Saplings.class); + createAlleles(EnumAllele.Yield.class); + createAlleles(EnumAllele.Fireproof.class); + createAlleles(EnumAllele.Maturation.class); + createAlleles(EnumAllele.Sappiness.class); + + AlleleManager.alleleRegistry.registerDeprecatedAlleleReplacement("forestry.heightMax10", get(EnumAllele.Height.AVERAGE)); + AlleleManager.alleleRegistry.registerDeprecatedAlleleReplacement("forestry.saplingsDefault", get(EnumAllele.Saplings.AVERAGE)); + AlleleManager.alleleRegistry.registerDeprecatedAlleleReplacement("forestry.saplingsDouble", get(EnumAllele.Saplings.HIGH)); + AlleleManager.alleleRegistry.registerDeprecatedAlleleReplacement("forestry.saplingsTriple", get(EnumAllele.Saplings.HIGHER)); + AlleleManager.alleleRegistry.registerDeprecatedAlleleReplacement("forestry.yieldDefault", get(EnumAllele.Yield.AVERAGE)); + } + + if (PluginManager.Module.LEPIDOPTEROLOGY.isEnabled()) { + createAlleles(EnumAllele.Size.class); + } + + Map integers = new HashMap(); + for (int i = 1; i <= 10; i++) { + IAlleleInteger alleleInteger = new AlleleInteger("i", i + "d", i, true); + integers.put(i, alleleInteger); + } + alleleMaps.put(Integer.class, integers); + + Map booleans = new HashMap(); + booleans.put(true, new AlleleBoolean("bool", true, false)); + booleans.put(false, new AlleleBoolean("bool", false, false)); + alleleMaps.put(Boolean.class, booleans); + } + + private & IChromosomeType> IAllele get(Object value) { + Class valueClass = value.getClass(); + Map map = alleleMaps.get(valueClass); + if (map == null) { + throw new IllegalArgumentException("There is no IAllele type for: " + valueClass + ' ' + value); + } + IAllele allele = map.get(value); + if (allele == null) { + throw new IllegalArgumentException("There is no IAllele for: " + valueClass + ' ' + value); + } + + return allele; + } + + @Override + public & IChromosomeType> void set(IAllele[] alleles, T chromosomeType, IAllele allele) { + if (allele == null || !chromosomeType.getAlleleClass().isInstance(allele)) { + throw new IllegalArgumentException("Allele is the wrong type. Expected: " + chromosomeType + " Got: " + allele); + } + alleles[chromosomeType.ordinal()] = allele; + } + + @Override + public & IChromosomeType> void set(IAllele[] alleles, T chromosomeType, IAlleleValue value) { + set(alleles, chromosomeType, get(value)); + } + + @Override + public & IChromosomeType> void set(IAllele[] alleles, T chromosomeType, boolean value) { + set(alleles, chromosomeType, get(value)); + } + + @Override + public & IChromosomeType> void set(IAllele[] alleles, T chromosomeType, int value) { + set(alleles, chromosomeType, get(value)); + } + + private & IAlleleValue, V> void createAlleles(Class enumClass) { + String category = enumClass.getSimpleName().toLowerCase(Locale.ENGLISH); + EnumMap map = new EnumMap(enumClass); + for (K enumValue : enumClass.getEnumConstants()) { + IAllele allele = createAllele(category, enumValue); + map.put(enumValue, allele); + } + alleleMaps.put(enumClass, map); + } + + private static , V> IAllele createAllele(String category, K enumValue) { + V value = enumValue.getValue(); + boolean isDominant = enumValue.isDominant(); + String name = enumValue.toString().toLowerCase(Locale.ENGLISH); + + Class valueClass = value.getClass(); + if (Float.class.isAssignableFrom(valueClass)) { + return new AlleleFloat(category, name, (Float) value, isDominant); + } else if (Integer.class.isAssignableFrom(valueClass)) { + return new AlleleInteger(category, name, (Integer) value, isDominant); + } else if (IVect.class.isAssignableFrom(valueClass)) { + int[] area = ((IVect) value).toArray(); + return new AlleleArea(category, name, area, isDominant); + } else if (Boolean.class.isAssignableFrom(valueClass)) { + return new AlleleBoolean(category, (Boolean) value, isDominant); + } else if (EnumTolerance.class.isAssignableFrom(valueClass)) { + return new AlleleTolerance(category, name, (EnumTolerance) value, isDominant); + } else if (FlowerProvider.class.isAssignableFrom(valueClass)) { + return new AlleleFlowers(category, name, (FlowerProvider) value, isDominant); + } + throw new RuntimeException("could not create allele for category: " + category + " and value " + valueClass); + } +} diff --git a/src/main/java/forestry/core/genetics/AlleleInteger.java b/src/main/java/forestry/core/genetics/alleles/AlleleInteger.java old mode 100755 new mode 100644 similarity index 56% rename from src/main/java/forestry/core/genetics/AlleleInteger.java rename to src/main/java/forestry/core/genetics/alleles/AlleleInteger.java index 34d2c9341..75e34b683 --- a/src/main/java/forestry/core/genetics/AlleleInteger.java +++ b/src/main/java/forestry/core/genetics/alleles/AlleleInteger.java @@ -8,21 +8,20 @@ * Various Contributors including, but not limited to: * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges ******************************************************************************/ -package forestry.core.genetics; +package forestry.core.genetics.alleles; import forestry.api.genetics.IAlleleInteger; -import forestry.core.utils.StringUtil; -public class AlleleInteger extends Allele implements IAlleleInteger { +public class AlleleInteger extends AlleleForestry implements IAlleleInteger { private final int value; - public AlleleInteger(String uid, int value) { - this(uid, value, false); + public AlleleInteger(String prefix, String name, int value) { + this(prefix, name, value, false); } - public AlleleInteger(String uid, int value, boolean isDominant) { - super(uid, isDominant); + public AlleleInteger(String prefix, String name, int value, boolean isDominant) { + super(prefix, name, isDominant); this.value = value; } @@ -30,15 +29,4 @@ public class AlleleInteger extends Allele implements IAlleleInteger { public int getValue() { return value; } - - public AlleleInteger setName(String customPrefix, String name) { - String customName = "gui." + customPrefix + "." + name; - if (StringUtil.canTranslate(customName)) { - this.name = customName; - } else { - this.name = "gui." + name; - } - return this; - } - } diff --git a/src/main/java/forestry/core/genetics/AllelePlantType.java b/src/main/java/forestry/core/genetics/alleles/AllelePlantType.java old mode 100755 new mode 100644 similarity index 63% rename from src/main/java/forestry/core/genetics/AllelePlantType.java rename to src/main/java/forestry/core/genetics/alleles/AllelePlantType.java index 1c067ea46..eeff08ca3 --- a/src/main/java/forestry/core/genetics/AllelePlantType.java +++ b/src/main/java/forestry/core/genetics/alleles/AllelePlantType.java @@ -8,28 +8,29 @@ * Various Contributors including, but not limited to: * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges ******************************************************************************/ -package forestry.core.genetics; +package forestry.core.genetics.alleles; import java.util.EnumSet; +import java.util.Locale; import net.minecraftforge.common.EnumPlantType; import forestry.api.genetics.IAllelePlantType; -public class AllelePlantType extends Allele implements IAllelePlantType { +public class AllelePlantType extends AlleleForestry implements IAllelePlantType { private final EnumSet types; - protected AllelePlantType(String uid, EnumPlantType type) { - this(uid, type, false); + protected AllelePlantType(EnumPlantType type) { + this(type, false); } - protected AllelePlantType(String uid, EnumPlantType type, boolean isDominant) { - this(uid, EnumSet.of(type), isDominant); + protected AllelePlantType(EnumPlantType type, boolean isDominant) { + this(type.toString().toLowerCase(Locale.ENGLISH), EnumSet.of(type), isDominant); } - protected AllelePlantType(String uid, EnumSet types, boolean isDominant) { - super(uid, isDominant); + protected AllelePlantType(String name, EnumSet types, boolean isDominant) { + super("plantType", name, isDominant); this.types = types; } diff --git a/src/main/java/forestry/core/genetics/AlleleRegistry.java b/src/main/java/forestry/core/genetics/alleles/AlleleRegistry.java old mode 100755 new mode 100644 similarity index 98% rename from src/main/java/forestry/core/genetics/AlleleRegistry.java rename to src/main/java/forestry/core/genetics/alleles/AlleleRegistry.java index ae9b46d6d..c6b478e6b --- a/src/main/java/forestry/core/genetics/AlleleRegistry.java +++ b/src/main/java/forestry/core/genetics/alleles/AlleleRegistry.java @@ -8,7 +8,7 @@ * Various Contributors including, but not limited to: * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges ******************************************************************************/ -package forestry.core.genetics; +package forestry.core.genetics.alleles; import java.util.ArrayList; import java.util.Collection; @@ -34,6 +34,7 @@ import forestry.api.genetics.ILegacyHandler; import forestry.api.genetics.IMutation; import forestry.api.genetics.ISpeciesRoot; import forestry.core.config.ForestryItem; +import forestry.core.genetics.Classification; import forestry.core.genetics.ItemResearchNote.EnumNoteType; public class AlleleRegistry implements IAlleleRegistry, ILegacyHandler { diff --git a/src/main/java/forestry/core/genetics/AlleleSpecies.java b/src/main/java/forestry/core/genetics/alleles/AlleleSpecies.java old mode 100755 new mode 100644 similarity index 78% rename from src/main/java/forestry/core/genetics/AlleleSpecies.java rename to src/main/java/forestry/core/genetics/alleles/AlleleSpecies.java index 8c4b8b0c0..d9818ad4c --- a/src/main/java/forestry/core/genetics/AlleleSpecies.java +++ b/src/main/java/forestry/core/genetics/alleles/AlleleSpecies.java @@ -8,12 +8,13 @@ * Various Contributors including, but not limited to: * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges ******************************************************************************/ -package forestry.core.genetics; +package forestry.core.genetics.alleles; import java.util.Collection; import java.util.Map; import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; import net.minecraft.world.World; import com.mojang.authlib.GameProfile; @@ -25,19 +26,18 @@ import forestry.api.core.EnumHumidity; import forestry.api.core.EnumTemperature; import forestry.api.core.IIconProvider; import forestry.api.genetics.AlleleManager; -import forestry.api.genetics.IAlleleSpecies; +import forestry.api.genetics.IAlleleSpeciesCustom; import forestry.api.genetics.IClassification; import forestry.api.genetics.IIndividual; import forestry.api.genetics.IMutation; import forestry.core.config.ForestryItem; import forestry.core.utils.StackUtils; -import forestry.core.utils.StringUtil; -public abstract class AlleleSpecies extends Allele implements IAlleleSpecies { +public abstract class AlleleSpecies extends Allele implements IAlleleSpeciesCustom { private final String binomial; + private final String authority; private String description = null; - private int complexity = 3; private boolean hasEffect = false; private boolean isSecret = false; private boolean isCounted = true; @@ -45,13 +45,14 @@ public abstract class AlleleSpecies extends Allele implements IAlleleSpecies { private EnumTemperature climate = EnumTemperature.NORMAL; private EnumHumidity humidity = EnumHumidity.NORMAL; - public AlleleSpecies(String uid, boolean isDominant, String name, IClassification branch, String binomial, boolean doRegister) { + public AlleleSpecies(String uid, String authority, String unlocalizedDescription, boolean isDominant, String name, IClassification branch, String binomial, boolean doRegister) { super(uid, isDominant, true); this.branch = branch; this.name = name; this.binomial = binomial; - this.description = StringUtil.localize("description." + uid); + this.description = StatCollector.translateToLocal(unlocalizedDescription); + this.authority = authority; // FIXME: do not register here if (doRegister) { @@ -64,11 +65,6 @@ public abstract class AlleleSpecies extends Allele implements IAlleleSpecies { return description; } - @Override - public int getComplexity() { - return complexity; - } - @Override public float getResearchSuitability(ItemStack itemstack) { if (itemstack == null) { @@ -146,7 +142,7 @@ public abstract class AlleleSpecies extends Allele implements IAlleleSpecies { @Override public String getAuthority() { - return "Sengir"; + return authority; } @Override @@ -154,42 +150,50 @@ public abstract class AlleleSpecies extends Allele implements IAlleleSpecies { return this.branch; } - @SuppressWarnings("unchecked") - public T setComplexity(int complexity) { - this.complexity = complexity; - return (T) this; + @Override + public IAlleleSpeciesCustom setTemperature(EnumTemperature temperature) { + climate = temperature; + return this; } + @Override + public IAlleleSpeciesCustom setHumidity(EnumHumidity humidity) { + this.humidity = humidity; + return this; + } + + @Override + public IAlleleSpeciesCustom setHasEffect() { + hasEffect = true; + return this; + } + + @Override + public IAlleleSpeciesCustom setIsSecret() { + isSecret = true; + return this; + } + + @Override + public IAlleleSpeciesCustom setIsNotCounted() { + isCounted = false; + return this; + } + + @Deprecated @SuppressWarnings("unchecked") - public T setTemperature(EnumTemperature temperature) { + public T setTemperatureDeprecated(EnumTemperature temperature) { climate = temperature; return (T) this; } + @Deprecated @SuppressWarnings("unchecked") - public T setHumidity(EnumHumidity humidity) { + public T setHumidityDeprecated(EnumHumidity humidity) { this.humidity = humidity; return (T) this; } - @SuppressWarnings("unchecked") - public T setHasEffect() { - hasEffect = true; - return (T) this; - } - - @SuppressWarnings("unchecked") - public T setIsSecret() { - isSecret = true; - return (T) this; - } - - @SuppressWarnings("unchecked") - public T setIsNotCounted() { - isCounted = false; - return (T) this; - } - @Override @SideOnly(Side.CLIENT) public abstract IIconProvider getIconProvider(); diff --git a/src/main/java/forestry/core/genetics/AlleleTolerance.java b/src/main/java/forestry/core/genetics/alleles/AlleleTolerance.java old mode 100755 new mode 100644 similarity index 85% rename from src/main/java/forestry/core/genetics/AlleleTolerance.java rename to src/main/java/forestry/core/genetics/alleles/AlleleTolerance.java index 4eba9dfa8..1559c0694 --- a/src/main/java/forestry/core/genetics/AlleleTolerance.java +++ b/src/main/java/forestry/core/genetics/alleles/AlleleTolerance.java @@ -8,21 +8,17 @@ * Various Contributors including, but not limited to: * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges ******************************************************************************/ -package forestry.core.genetics; +package forestry.core.genetics.alleles; import forestry.api.genetics.EnumTolerance; import forestry.api.genetics.IAlleleTolerance; -public class AlleleTolerance extends Allele implements IAlleleTolerance { +public class AlleleTolerance extends AlleleForestry implements IAlleleTolerance { private final EnumTolerance value; - public AlleleTolerance(String uid, EnumTolerance value) { - this(uid, value, false); - } - - public AlleleTolerance(String uid, EnumTolerance value, boolean isDominant) { - super(uid, isDominant); + public AlleleTolerance(String category, String name, EnumTolerance value, boolean isDominant) { + super(category, name, isDominant); this.value = value; } diff --git a/src/main/java/forestry/core/genetics/alleles/EnumAllele.java b/src/main/java/forestry/core/genetics/alleles/EnumAllele.java new file mode 100644 index 000000000..6297e3aa7 --- /dev/null +++ b/src/main/java/forestry/core/genetics/alleles/EnumAllele.java @@ -0,0 +1,456 @@ +package forestry.core.genetics.alleles; + +import java.util.Locale; + +import forestry.api.apiculture.FlowerManager; +import forestry.api.genetics.EnumTolerance; +import forestry.apiculture.flowers.FlowerProvider; +import forestry.core.vect.IVect; +import forestry.core.vect.Vect; + +public class EnumAllele { + public enum Fertility implements IAlleleValue { + LOW(1, true), + NORMAL(2, true), + HIGH(3), + MAXIMUM(4); + + private final Integer value; + private final boolean dominant; + + Fertility(Integer value) { + this(value, false); + } + + Fertility(Integer value, boolean dominant) { + this.value = value; + this.dominant = dominant; + } + + @Override + public Integer getValue() { + return value; + } + + @Override + public boolean isDominant() { + return dominant; + } + } + + public enum Fireproof implements IAlleleValue { + TRUE(true), + FALSE(false); + + private final boolean value; + private final boolean dominant; + + Fireproof(boolean value) { + this(value, false); + } + + Fireproof(boolean value, boolean dominant) { + this.value = value; + this.dominant = dominant; + } + + @Override + public boolean isDominant() { + return dominant; + } + + @Override + public Boolean getValue() { + return value; + } + } + + public enum Flowering implements IAlleleValue { + SLOWEST(5, true), + SLOWER(10), + SLOW(15), + AVERAGE(20), + FAST(25), + FASTER(30), + FASTEST(35); + + private final Integer value; + private final boolean dominant; + + Flowering(Integer value) { + this(value, false); + } + + Flowering(Integer value, boolean dominant) { + this.value = value; + this.dominant = dominant; + } + + @Override + public Integer getValue() { + return value; + } + + @Override + public boolean isDominant() { + return dominant; + } + } + + public enum Flowers implements IAlleleValue { + VANILLA(FlowerManager.FlowerTypeVanilla, true), + NETHER(FlowerManager.FlowerTypeNether), + CACTI(FlowerManager.FlowerTypeCacti), + MUSHROOMS(FlowerManager.FlowerTypeMushrooms), + END(FlowerManager.FlowerTypeEnd), + JUNGLE(FlowerManager.FlowerTypeJungle), + SNOW(FlowerManager.FlowerTypeSnow, true), + WHEAT(FlowerManager.FlowerTypeWheat, true), + GOURD(FlowerManager.FlowerTypeGourd, true); + + private final FlowerProvider value; + private final boolean dominant; + + Flowers(String flowerType) { + this(flowerType, false); + } + + Flowers(String flowerType, boolean dominant) { + String lowercaseName = toString().toLowerCase(Locale.ENGLISH); + this.value = new FlowerProvider(flowerType, "flowers." + lowercaseName); + this.dominant = dominant; + } + + @Override + public FlowerProvider getValue() { + return value; + } + + @Override + public boolean isDominant() { + return dominant; + } + } + + public enum Height implements IAlleleValue { + SMALLEST(0.25f), + SMALLER(0.5f), + SMALL(0.75f), + AVERAGE(1.0f), + LARGE(1.25f), + LARGER(1.5f), + LARGEST(1.75f), + GIGANTIC(2.0f); + + private final float value; + private final boolean dominant; + + Height(float value) { + this(value, false); + } + + Height(float value, boolean dominant) { + this.value = value; + this.dominant = dominant; + } + + @Override + public Float getValue() { + return value; + } + + @Override + public boolean isDominant() { + return dominant; + } + } + + public enum Lifespan implements IAlleleValue { + SHORTEST(10), + SHORTER(20, true), + SHORT(30, true), + SHORTENED(35, true), + NORMAL(40), + ELONGATED(45, true), + LONG(50), + LONGER(60), + LONGEST(70); + + private final Integer value; + private final boolean dominant; + + Lifespan(Integer value) { + this(value, false); + } + + Lifespan(Integer value, boolean dominant) { + this.value = value; + this.dominant = dominant; + } + + @Override + public Integer getValue() { + return value; + } + + @Override + public boolean isDominant() { + return dominant; + } + } + + public enum Maturation implements IAlleleValue { + SLOWEST(10, true), + SLOWER(7), + SLOW(5, true), + AVERAGE(4), + FAST(3), + FASTER(2), + FASTEST(1); + + private final Integer value; + private final boolean dominant; + + Maturation(Integer value) { + this(value, false); + } + + Maturation(Integer value, boolean dominant) { + this.value = value; + this.dominant = dominant; + } + + @Override + public Integer getValue() { + return value; + } + + @Override + public boolean isDominant() { + return dominant; + } + } + + public enum Saplings implements IAlleleValue { + LOWEST(0.01f, true), + LOWER(0.025f, true), + LOW(0.035f, true), + AVERAGE(0.05f, true), + HIGH(0.1f, true), + HIGHER(0.2f, true), + HIGHEST(0.3f, true); + + private final float value; + private final boolean dominant; + + Saplings(float value) { + this(value, false); + } + + Saplings(float value, boolean dominant) { + this.value = value; + this.dominant = dominant; + } + + @Override + public Float getValue() { + return value; + } + + @Override + public boolean isDominant() { + return dominant; + } + } + + public enum Sappiness implements IAlleleValue { + LOWEST(0.1f, true), + LOWER(0.2f, true), + LOW(0.3f, true), + AVERAGE(0.4f, true), + HIGH(0.6f, true), + HIGHER(0.8f), + HIGHEST(1.0f); + + private final Float value; + private final boolean dominant; + + Sappiness(Float value) { + this(value, false); + } + + Sappiness(Float value, boolean dominant) { + this.value = value; + this.dominant = dominant; + } + + @Override + public Float getValue() { + return value; + } + + @Override + public boolean isDominant() { + return dominant; + } + } + + public enum Size implements IAlleleValue { + SMALLEST(0.3f), + SMALLER(0.4f), + SMALL(0.5f), + AVERAGE(0.6f), + LARGE(0.75f), + LARGER(0.9f), + LARGEST(1.0f); + + private final float value; + private final boolean dominant; + + Size(float value) { + this(value, false); + } + + Size(float value, boolean dominant) { + this.value = value; + this.dominant = dominant; + } + + @Override + public Float getValue() { + return value; + } + + @Override + public boolean isDominant() { + return dominant; + } + } + + public enum Speed implements IAlleleValue { + SLOWEST(0.3f, true), + SLOWER(0.6f, true), + SLOW(0.8f, true), + NORMAL(1.0f), + FAST(1.2f, true), + FASTER(1.4f), + FASTEST(1.7f); + + private final float value; + private final boolean dominant; + + Speed(float value) { + this(value, false); + } + + Speed(float value, boolean dominant) { + this.value = value; + this.dominant = dominant; + } + + @Override + public Float getValue() { + return value; + } + + @Override + public boolean isDominant() { + return dominant; + } + } + + public enum Territory implements IAlleleValue { + AVERAGE(9, 6, 9), + LARGE(11, 8, 11), + LARGER(13, 12, 13), + LARGEST(15, 13, 15); + + private final IVect area; + private final boolean dominant; + + Territory(int x, int y, int z) { + this(x, y, z, false); + } + + Territory(int x, int y, int z, boolean dominant) { + this.area = new Vect(x, y, z); + this.dominant = dominant; + } + + @Override + public IVect getValue() { + return area; + } + + @Override + public boolean isDominant() { + return dominant; + } + } + + public enum Tolerance implements IAlleleValue { + NONE, + BOTH_1(true), BOTH_2, BOTH_3, BOTH_4, BOTH_5, + UP_1(true), UP_2, UP_3, UP_4, UP_5, + DOWN_1(true), DOWN_2, DOWN_3, DOWN_4, DOWN_5; + + private final EnumTolerance value; + private final boolean dominant; + + Tolerance() { + this(false); + } + + Tolerance(boolean dominant) { + this.value = EnumTolerance.values()[ordinal()]; + this.dominant = dominant; + } + + @Override + public String toString() { + return super.toString().replace("_", ""); + } + + @Override + public EnumTolerance getValue() { + return value; + } + + @Override + public boolean isDominant() { + return dominant; + } + } + + public enum Yield implements IAlleleValue { + LOWEST(0.025f, true), + LOWER(0.05f, true), + LOW(0.1f, true), + AVERAGE(0.2f, true), + HIGH(0.3f), + HIGHER(0.35f), + HIGHEST(0.4f); + + private final float value; + private final boolean dominant; + + Yield(float value) { + this(value, false); + } + + Yield(float value, boolean dominant) { + this.value = value; + this.dominant = dominant; + } + + @Override + public Float getValue() { + return value; + } + + @Override + public boolean isDominant() { + return dominant; + } + } +} diff --git a/src/main/java/forestry/core/genetics/alleles/IAlleleHelper.java b/src/main/java/forestry/core/genetics/alleles/IAlleleHelper.java new file mode 100644 index 000000000..a1047e04b --- /dev/null +++ b/src/main/java/forestry/core/genetics/alleles/IAlleleHelper.java @@ -0,0 +1,26 @@ +/******************************************************************************* + * Copyright (c) 2011-2014 SirSengir. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser Public License v3 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.core.genetics.alleles; + +import forestry.api.genetics.IAllele; +import forestry.api.genetics.IChromosomeType; + +public interface IAlleleHelper { + + & IChromosomeType> void set(IAllele[] alleles, T chromosomeType, IAllele allele); + + & IChromosomeType> void set(IAllele[] alleles, T chromosomeType, IAlleleValue value); + + & IChromosomeType> void set(IAllele[] alleles, T chromosomeType, boolean value); + + & IChromosomeType> void set(IAllele[] alleles, T chromosomeType, int value); + +} diff --git a/src/main/java/forestry/core/genetics/alleles/IAlleleValue.java b/src/main/java/forestry/core/genetics/alleles/IAlleleValue.java new file mode 100644 index 000000000..119b08be4 --- /dev/null +++ b/src/main/java/forestry/core/genetics/alleles/IAlleleValue.java @@ -0,0 +1,7 @@ +package forestry.core.genetics.alleles; + +public interface IAlleleValue { + boolean isDominant(); + + V getValue(); +} diff --git a/src/main/java/forestry/core/utils/DayMonth.java b/src/main/java/forestry/core/utils/DayMonth.java new file mode 100644 index 000000000..24137806e --- /dev/null +++ b/src/main/java/forestry/core/utils/DayMonth.java @@ -0,0 +1,102 @@ +/******************************************************************************* + * Copyright (c) 2011-2014 SirSengir. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser Public License v3 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.core.utils; + +import java.text.DateFormatSymbols; +import java.util.Calendar; + +/** + * Fed up with Date and Calendar and their shenanigans + */ +public class DayMonth { + + public final int day; + public final int month; + + public DayMonth() { + this.day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); + this.month = Calendar.getInstance().get(Calendar.MONTH) + 1; + } + + public DayMonth(int day, int month) { + this.day = day; + this.month = month; + } + + public boolean between(DayMonth start, DayMonth end) { + if (equals(start) || equals(end)) { + return true; + } + if (start.month > end.month) { + return after(start) || before(end); + } + return after(start) && before(end); + } + + public boolean before(DayMonth other) { + + if (other.month > this.month) { + return true; + } + + if (other.month < this.month) { + return false; + } + + return this.day < other.day; + } + + public boolean after(DayMonth other) { + + if (other.month < this.month) { + return true; + } + + if (other.month > this.month) { + return false; + } + + return this.day > other.day; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 89 * hash + this.day; + hash = 89 * hash + this.month; + return hash; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final DayMonth other = (DayMonth) obj; + if (this.day != other.day) { + return false; + } + if (this.month != other.month) { + return false; + } + return true; + } + + @Override + public String toString() { + String monthName = new DateFormatSymbols().getMonths()[month - 1]; + return monthName + ' ' + day; + } + +} diff --git a/src/main/java/forestry/core/vect/IVect.java b/src/main/java/forestry/core/vect/IVect.java index e43053e04..8524dcd01 100644 --- a/src/main/java/forestry/core/vect/IVect.java +++ b/src/main/java/forestry/core/vect/IVect.java @@ -27,4 +27,6 @@ public interface IVect { IVect add(int x, int y, int z); IVect add(ForgeDirection direction); + + int[] toArray(); } diff --git a/src/main/java/forestry/core/vect/MutableVect.java b/src/main/java/forestry/core/vect/MutableVect.java index f68d16410..164e35b14 100644 --- a/src/main/java/forestry/core/vect/MutableVect.java +++ b/src/main/java/forestry/core/vect/MutableVect.java @@ -54,6 +54,11 @@ public class MutableVect implements IVect { return this; } + @Override + public int[] toArray() { + return new int[]{x, y, z}; + } + public boolean advancePositionInArea(Vect area) { // Increment z first until end reached if (z < area.z - 1) { diff --git a/src/main/java/forestry/core/vect/Vect.java b/src/main/java/forestry/core/vect/Vect.java index 0841a8e35..878c22cb7 100644 --- a/src/main/java/forestry/core/vect/Vect.java +++ b/src/main/java/forestry/core/vect/Vect.java @@ -76,6 +76,11 @@ public class Vect implements IVect { return add(direction.offsetX, direction.offsetY, direction.offsetZ); } + @Override + public int[] toArray() { + return new int[]{x, y, z}; + } + public Vect multiply(float factor) { return new Vect(Math.round(x * factor), Math.round(y * factor), Math.round(z * factor)); } diff --git a/src/main/java/forestry/lepidopterology/genetics/AlleleButterflySpecies.java b/src/main/java/forestry/lepidopterology/genetics/AlleleButterflySpecies.java index 2c5e19b05..1ce953463 100755 --- a/src/main/java/forestry/lepidopterology/genetics/AlleleButterflySpecies.java +++ b/src/main/java/forestry/lepidopterology/genetics/AlleleButterflySpecies.java @@ -34,7 +34,7 @@ import forestry.api.lepidopterology.EnumFlutterType; import forestry.api.lepidopterology.IAlleleButterflySpecies; import forestry.api.lepidopterology.IButterflyRoot; import forestry.core.config.Defaults; -import forestry.core.genetics.AlleleSpecies; +import forestry.core.genetics.alleles.AlleleSpecies; public class AlleleButterflySpecies extends AlleleSpecies implements IAlleleButterflySpecies { @@ -52,7 +52,7 @@ public class AlleleButterflySpecies extends AlleleSpecies implements IAlleleButt private final Map caterpillarLoot = new HashMap(); public AlleleButterflySpecies(String uid, boolean isDominant, String name, IClassification branch, String binomial, int serumColour) { - super(uid, isDominant, "butterflies.species." + branch.getParent().getUID().substring((branch.getParent().getLevel().name().toLowerCase(Locale.ENGLISH)).length() + 1) + "." + name, branch, binomial, true); + super("forestry." + uid, "Sengir", "for.description." + uid, isDominant, "butterflies.species." + branch.getParent().getUID().substring((branch.getParent().getLevel().name().toLowerCase(Locale.ENGLISH)).length() + 1) + "." + name, branch, binomial, true); this.root = (IButterflyRoot) AlleleManager.alleleRegistry.getSpeciesRoot("rootButterflies"); this.serumColour = serumColour; texture = "forestry:" + Defaults.TEXTURE_PATH_ENTITIES + "/butterflies/" + uid + ".png"; diff --git a/src/main/java/forestry/lepidopterology/genetics/AlleleEffectNone.java b/src/main/java/forestry/lepidopterology/genetics/AlleleEffectNone.java index bb36239a3..f3a3b65d3 100755 --- a/src/main/java/forestry/lepidopterology/genetics/AlleleEffectNone.java +++ b/src/main/java/forestry/lepidopterology/genetics/AlleleEffectNone.java @@ -13,12 +13,12 @@ package forestry.lepidopterology.genetics; import forestry.api.genetics.IEffectData; import forestry.api.lepidopterology.IAlleleButterflyEffect; import forestry.api.lepidopterology.IEntityButterfly; -import forestry.core.genetics.Allele; +import forestry.core.genetics.alleles.AlleleForestry; -public class AlleleEffectNone extends Allele implements IAlleleButterflyEffect { +public class AlleleEffectNone extends AlleleForestry implements IAlleleButterflyEffect { - public AlleleEffectNone(String uid, boolean isDominant) { - super(uid, isDominant, false); + public AlleleEffectNone(String prefix, String name, boolean isDominant) { + super(prefix, name, isDominant); } @Override diff --git a/src/main/java/forestry/lepidopterology/genetics/ButterflyGenome.java b/src/main/java/forestry/lepidopterology/genetics/ButterflyGenome.java index 68a8de8c0..962109daf 100755 --- a/src/main/java/forestry/lepidopterology/genetics/ButterflyGenome.java +++ b/src/main/java/forestry/lepidopterology/genetics/ButterflyGenome.java @@ -24,9 +24,9 @@ import forestry.api.lepidopterology.EnumButterflyChromosome; import forestry.api.lepidopterology.IAlleleButterflyEffect; import forestry.api.lepidopterology.IAlleleButterflySpecies; import forestry.api.lepidopterology.IButterflyGenome; -import forestry.core.genetics.AlleleBoolean; -import forestry.core.genetics.AlleleTolerance; import forestry.core.genetics.Genome; +import forestry.core.genetics.alleles.AlleleBoolean; +import forestry.core.genetics.alleles.AlleleTolerance; import forestry.plugins.PluginLepidopterology; public class ButterflyGenome extends Genome implements IButterflyGenome { diff --git a/src/main/java/forestry/lepidopterology/genetics/ButterflyTemplates.java b/src/main/java/forestry/lepidopterology/genetics/ButterflyTemplates.java index 71cbd9f4a..237cd3186 100755 --- a/src/main/java/forestry/lepidopterology/genetics/ButterflyTemplates.java +++ b/src/main/java/forestry/lepidopterology/genetics/ButterflyTemplates.java @@ -12,294 +12,302 @@ package forestry.lepidopterology.genetics; import forestry.api.genetics.IAllele; import forestry.api.lepidopterology.EnumButterflyChromosome; -import forestry.core.genetics.Allele; +import forestry.core.genetics.alleles.Allele; +import forestry.core.genetics.alleles.EnumAllele; public class ButterflyTemplates { public static IAllele[] getDefaultTemplate() { IAllele[] alleles = new IAllele[EnumButterflyChromosome.values().length]; - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiCabbageWhite; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeSmall; - alleles[EnumButterflyChromosome.SPEED.ordinal()] = Allele.speedSlowest; - alleles[EnumButterflyChromosome.LIFESPAN.ordinal()] = Allele.lifespanShorter; - alleles[EnumButterflyChromosome.METABOLISM.ordinal()] = Allele.int3; - alleles[EnumButterflyChromosome.FERTILITY.ordinal()] = Allele.int3; - alleles[EnumButterflyChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceNone; - alleles[EnumButterflyChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.toleranceNone; - alleles[EnumButterflyChromosome.NOCTURNAL.ordinal()] = Allele.boolFalse; - alleles[EnumButterflyChromosome.TOLERANT_FLYER.ordinal()] = Allele.boolFalse; - alleles[EnumButterflyChromosome.FIRE_RESIST.ordinal()] = Allele.boolFalse; - alleles[EnumButterflyChromosome.FLOWER_PROVIDER.ordinal()] = Allele.flowersVanilla; - alleles[EnumButterflyChromosome.EFFECT.ordinal()] = Allele.butterflyNone; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiCabbageWhite); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.SMALL); + Allele.helper.set(alleles, EnumButterflyChromosome.SPEED, EnumAllele.Speed.SLOWEST); + Allele.helper.set(alleles, EnumButterflyChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTER); + Allele.helper.set(alleles, EnumButterflyChromosome.METABOLISM, 3); + Allele.helper.set(alleles, EnumButterflyChromosome.FERTILITY, 3); + Allele.helper.set(alleles, EnumButterflyChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.NONE); + Allele.helper.set(alleles, EnumButterflyChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.NONE); + Allele.helper.set(alleles, EnumButterflyChromosome.NOCTURNAL, false); + Allele.helper.set(alleles, EnumButterflyChromosome.TOLERANT_FLYER, false); + Allele.helper.set(alleles, EnumButterflyChromosome.FIRE_RESIST, false); + Allele.helper.set(alleles, EnumButterflyChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.VANILLA); + Allele.helper.set(alleles, EnumButterflyChromosome.EFFECT, Allele.butterflyNone); return alleles; } public static IAllele[] getCabbageWhiteTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeAverage; + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.AVERAGE); return alleles; } public static IAllele[] getGlasswingTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiGlasswing; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeSmaller; - alleles[EnumButterflyChromosome.LIFESPAN.ordinal()] = Allele.lifespanShort; - alleles[EnumButterflyChromosome.FERTILITY.ordinal()] = Allele.int5; - alleles[EnumButterflyChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceDown1; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiGlasswing); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.SMALLER); + Allele.helper.set(alleles, EnumButterflyChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT); + Allele.helper.set(alleles, EnumButterflyChromosome.FERTILITY, 5); + Allele.helper.set(alleles, EnumButterflyChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.DOWN_1); return alleles; } public static IAllele[] getEmeraldPeacockTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiEmeraldPeacock; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeLarge; - alleles[EnumButterflyChromosome.LIFESPAN.ordinal()] = Allele.lifespanNormal; - alleles[EnumButterflyChromosome.FERTILITY.ordinal()] = Allele.int5; - alleles[EnumButterflyChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceDown1; - alleles[EnumButterflyChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.toleranceDown1; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiEmeraldPeacock); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.LARGE); + Allele.helper.set(alleles, EnumButterflyChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL); + Allele.helper.set(alleles, EnumButterflyChromosome.FERTILITY, 5); + Allele.helper.set(alleles, EnumButterflyChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.DOWN_1); + Allele.helper.set(alleles, EnumButterflyChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.DOWN_1); return alleles; } public static IAllele[] getCitrusSwallowTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiCitrusSwallow; - alleles[EnumButterflyChromosome.SPEED.ordinal()] = Allele.speedSlower; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeLarge; - alleles[EnumButterflyChromosome.FERTILITY.ordinal()] = Allele.int10; - alleles[EnumButterflyChromosome.METABOLISM.ordinal()] = Allele.int8; - alleles[EnumButterflyChromosome.LIFESPAN.ordinal()] = Allele.lifespanShorter; - alleles[EnumButterflyChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceDown1; - alleles[EnumButterflyChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.toleranceDown1; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiCitrusSwallow); + Allele.helper.set(alleles, EnumButterflyChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.LARGE); + Allele.helper.set(alleles, EnumButterflyChromosome.FERTILITY, 10); + Allele.helper.set(alleles, EnumButterflyChromosome.METABOLISM, 8); + Allele.helper.set(alleles, EnumButterflyChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTER); + Allele.helper.set(alleles, EnumButterflyChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.DOWN_1); + Allele.helper.set(alleles, EnumButterflyChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.DOWN_1); return alleles; } public static IAllele[] getBlackSwallowTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiBlackSwallow; - alleles[EnumButterflyChromosome.SPEED.ordinal()] = Allele.speedSlow; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeLarge; - alleles[EnumButterflyChromosome.LIFESPAN.ordinal()] = Allele.lifespanShorter; - alleles[EnumButterflyChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceDown1; - alleles[EnumButterflyChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.toleranceDown1; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiBlackSwallow); + Allele.helper.set(alleles, EnumButterflyChromosome.SPEED, EnumAllele.Speed.SLOW); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.LARGE); + Allele.helper.set(alleles, EnumButterflyChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTER); + Allele.helper.set(alleles, EnumButterflyChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.DOWN_1); + Allele.helper.set(alleles, EnumButterflyChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.DOWN_1); return alleles; } public static IAllele[] getBrimstoneMothTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.mothBrimstone; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.mothBrimstone); return alleles; } public static IAllele[] getSpeckledWoodTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiSpeckledWood; - alleles[EnumButterflyChromosome.FERTILITY.ordinal()] = Allele.int2; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiSpeckledWood); + Allele.helper.set(alleles, EnumButterflyChromosome.FERTILITY, 2); + ; return alleles; } public static IAllele[] getMadeiranSpeckledWoodTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiMadeiranSpeckledWood; - alleles[EnumButterflyChromosome.FERTILITY.ordinal()] = Allele.int2; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiMadeiranSpeckledWood); + Allele.helper.set(alleles, EnumButterflyChromosome.FERTILITY, 2); + ; return alleles; } public static IAllele[] getCanarySpeckledWoodTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiCanarySpeckledWood; - alleles[EnumButterflyChromosome.FERTILITY.ordinal()] = Allele.int2; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiCanarySpeckledWood); + Allele.helper.set(alleles, EnumButterflyChromosome.FERTILITY, 2); + ; return alleles; } public static IAllele[] getMenelausBlueMorphoTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiMenelausBlueMorpho; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeLarger; - alleles[EnumButterflyChromosome.LIFESPAN.ordinal()] = Allele.lifespanShortest; - alleles[EnumButterflyChromosome.FERTILITY.ordinal()] = Allele.int2; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiMenelausBlueMorpho); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.LARGER); + Allele.helper.set(alleles, EnumButterflyChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTEST); + Allele.helper.set(alleles, EnumButterflyChromosome.FERTILITY, 2); + ; return alleles; } public static IAllele[] getRhetenorBlueMorphoTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiRhetenorBlueMorpho; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeLarger; - alleles[EnumButterflyChromosome.LIFESPAN.ordinal()] = Allele.lifespanShortest; - alleles[EnumButterflyChromosome.FERTILITY.ordinal()] = Allele.int2; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiRhetenorBlueMorpho); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.LARGER); + Allele.helper.set(alleles, EnumButterflyChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTEST); + Allele.helper.set(alleles, EnumButterflyChromosome.FERTILITY, 2); + ; return alleles; } public static IAllele[] getPeleidesBlueMorphoTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiPeleidesBlueMorpho; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeLarger; - alleles[EnumButterflyChromosome.LIFESPAN.ordinal()] = Allele.lifespanShortest; - alleles[EnumButterflyChromosome.FERTILITY.ordinal()] = Allele.int2; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiPeleidesBlueMorpho); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.LARGER); + Allele.helper.set(alleles, EnumButterflyChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTEST); + Allele.helper.set(alleles, EnumButterflyChromosome.FERTILITY, 2); + ; return alleles; } public static IAllele[] getBrimstoneTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiBrimstone; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiBrimstone); return alleles; } public static IAllele[] getAuroraTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiAurora; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeSmaller; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiAurora); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.SMALLER); return alleles; } public static IAllele[] getPostillionTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiPostillion; - alleles[EnumButterflyChromosome.SPEED.ordinal()] = Allele.speedSlow; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiPostillion); + Allele.helper.set(alleles, EnumButterflyChromosome.SPEED, EnumAllele.Speed.SLOW); return alleles; } public static IAllele[] getPalaenoSulphurTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiPalaenoSulphur; - alleles[EnumButterflyChromosome.SPEED.ordinal()] = Allele.speedSlower; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiPalaenoSulphur); + Allele.helper.set(alleles, EnumButterflyChromosome.SPEED, EnumAllele.Speed.SLOWER); return alleles; } public static IAllele[] getResedaTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiReseda; - alleles[EnumButterflyChromosome.SPEED.ordinal()] = Allele.speedSlower; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiReseda); + Allele.helper.set(alleles, EnumButterflyChromosome.SPEED, EnumAllele.Speed.SLOWER); return alleles; } public static IAllele[] getSpringAzureTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiSpringAzure; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeSmaller; - alleles[EnumButterflyChromosome.LIFESPAN.ordinal()] = Allele.lifespanShort; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiSpringAzure); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.SMALLER); + Allele.helper.set(alleles, EnumButterflyChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT); return alleles; } public static IAllele[] getGozoraAzureTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiGozoraAzure; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeSmaller; - alleles[EnumButterflyChromosome.LIFESPAN.ordinal()] = Allele.lifespanShort; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiGozoraAzure); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.SMALLER); + Allele.helper.set(alleles, EnumButterflyChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT); return alleles; } public static IAllele[] getCommaTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiComma; - alleles[EnumButterflyChromosome.SPEED.ordinal()] = Allele.speedSlower; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiComma); + Allele.helper.set(alleles, EnumButterflyChromosome.SPEED, EnumAllele.Speed.SLOWER); return alleles; } public static IAllele[] getBatesiaTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiBatesia; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeLarge; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiBatesia); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.LARGE); return alleles; } public static IAllele[] getBlueWingTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiBlueWing; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeAverage; - alleles[EnumButterflyChromosome.METABOLISM.ordinal()] = Allele.int5; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiBlueWing); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.AVERAGE); + Allele.helper.set(alleles, EnumButterflyChromosome.METABOLISM, 5); + ; return alleles; } public static IAllele[] getBlueDukeTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiBlueDuke; - alleles[EnumButterflyChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceBoth1; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiBlueDuke); + Allele.helper.set(alleles, EnumButterflyChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_1); return alleles; } public static IAllele[] getGlassyTigerTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiGlassyTiger; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeAverage; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiGlassyTiger); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.AVERAGE); return alleles; } public static IAllele[] getPostmanTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiPostman; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiPostman); return alleles; } public static IAllele[] getSpicebushTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiSpicebush; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeAverage; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiSpicebush); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.AVERAGE); return alleles; } public static IAllele[] getMalachiteTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiMalachite; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeAverage; - alleles[EnumButterflyChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceDown1; - alleles[EnumButterflyChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.toleranceDown1; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiMalachite); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.AVERAGE); + Allele.helper.set(alleles, EnumButterflyChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.DOWN_1); + Allele.helper.set(alleles, EnumButterflyChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.DOWN_1); return alleles; } public static IAllele[] getLeopardLacewingTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiLLacewing; - alleles[EnumButterflyChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.toleranceUp1; - alleles[EnumButterflyChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.toleranceUp1; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiLLacewing); + Allele.helper.set(alleles, EnumButterflyChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.UP_1); + Allele.helper.set(alleles, EnumButterflyChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.UP_1); return alleles; } public static IAllele[] getMonarchTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiMonarch; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeAverage; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiMonarch); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.AVERAGE); return alleles; } public static IAllele[] getThoasSwallowTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiThoasSwallow; - alleles[EnumButterflyChromosome.SPEED.ordinal()] = Allele.speedSlower; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeLarge; - alleles[EnumButterflyChromosome.LIFESPAN.ordinal()] = Allele.lifespanShortest; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiThoasSwallow); + Allele.helper.set(alleles, EnumButterflyChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.LARGE); + Allele.helper.set(alleles, EnumButterflyChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTEST); return alleles; } public static IAllele[] getZebraSwallowTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiZebraSwallow; - alleles[EnumButterflyChromosome.SPEED.ordinal()] = Allele.speedSlower; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeAverage; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiZebraSwallow); + Allele.helper.set(alleles, EnumButterflyChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.AVERAGE); return alleles; } public static IAllele[] getDianaFritTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.lepiDianaFrit; - alleles[EnumButterflyChromosome.SPEED.ordinal()] = Allele.speedSlower; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeSmaller; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.lepiDianaFrit); + Allele.helper.set(alleles, EnumButterflyChromosome.SPEED, EnumAllele.Speed.SLOWER); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.SMALLER); return alleles; } public static IAllele[] getLatticedHeathTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.mothLatticedHeath; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeSmallest; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.mothLatticedHeath); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.SMALLEST); return alleles; } public static IAllele[] getAtlasMothTemplate() { IAllele[] alleles = getDefaultTemplate(); - alleles[EnumButterflyChromosome.SPECIES.ordinal()] = Allele.mothAtlas; - alleles[EnumButterflyChromosome.SIZE.ordinal()] = Allele.sizeLargest; + Allele.helper.set(alleles, EnumButterflyChromosome.SPECIES, Allele.mothAtlas); + Allele.helper.set(alleles, EnumButterflyChromosome.SIZE, EnumAllele.Size.LARGEST); return alleles; } diff --git a/src/main/java/forestry/lepidopterology/gui/GuiFlutterlyzer.java b/src/main/java/forestry/lepidopterology/gui/GuiFlutterlyzer.java index c91fa7952..8f4339545 100755 --- a/src/main/java/forestry/lepidopterology/gui/GuiFlutterlyzer.java +++ b/src/main/java/forestry/lepidopterology/gui/GuiFlutterlyzer.java @@ -23,8 +23,8 @@ import forestry.api.lepidopterology.EnumButterflyChromosome; import forestry.api.lepidopterology.IAlleleButterflySpecies; import forestry.api.lepidopterology.IButterfly; import forestry.core.config.ForestryItem; -import forestry.core.genetics.AlleleBoolean; import forestry.core.genetics.GenericRatings; +import forestry.core.genetics.alleles.AlleleBoolean; import forestry.core.gui.ContainerAlyzer; import forestry.core.gui.GuiAlyzer; import forestry.core.utils.StringUtil; diff --git a/src/main/java/forestry/pipes/GuiHandlerPipes.java b/src/main/java/forestry/pipes/GuiHandlerPipes.java index 38e7ae844..62708248f 100755 --- a/src/main/java/forestry/pipes/GuiHandlerPipes.java +++ b/src/main/java/forestry/pipes/GuiHandlerPipes.java @@ -13,10 +13,10 @@ import net.minecraft.world.World; import cpw.mods.fml.common.network.IGuiHandler; +import forestry.api.apiculture.BeeManager; import forestry.core.network.GuiId; import forestry.pipes.gui.ContainerPropolisPipe; import forestry.pipes.gui.GuiPropolisPipe; -import forestry.plugins.PluginApiculture; import buildcraft.transport.Pipe; import buildcraft.transport.TileGenericPipe; @@ -63,7 +63,7 @@ public class GuiHandlerPipes implements IGuiHandler { switch (GuiId.values()[id]) { case PropolisPipeGUI: - PluginApiculture.beeInterface.getBreedingTracker(world, player.getGameProfile()).synchToPlayer(player); + BeeManager.beeRoot.getBreedingTracker(world, player.getGameProfile()).synchToPlayer(player); return new ContainerPropolisPipe(player.inventory, (PipeItemsPropolis) getPipe(world, x, y, z)); default: return null; diff --git a/src/main/java/forestry/pipes/PipeItemsPropolis.java b/src/main/java/forestry/pipes/PipeItemsPropolis.java index 7615d1f11..3767284d7 100755 --- a/src/main/java/forestry/pipes/PipeItemsPropolis.java +++ b/src/main/java/forestry/pipes/PipeItemsPropolis.java @@ -20,12 +20,12 @@ import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.IBee; import forestry.api.core.ForestryAPI; import forestry.api.genetics.IAllele; import forestry.core.network.GuiId; import forestry.core.proxy.Proxies; -import forestry.plugins.PluginApiculture; import buildcraft.api.core.IIconProvider; import buildcraft.transport.BlockGenericPipe; @@ -104,7 +104,7 @@ public class PipeItemsPropolis extends Pipe { IBee bee = null; if (type != EnumFilterType.ITEM) { - bee = PluginApiculture.beeInterface.getMember(event.item.getItemStack()); + bee = BeeManager.beeRoot.getMember(event.item.getItemStack()); } // Filtered outputs diff --git a/src/main/java/forestry/pipes/gui/GuiPropolisPipe.java b/src/main/java/forestry/pipes/gui/GuiPropolisPipe.java index 33c806c7d..9d7095733 100755 --- a/src/main/java/forestry/pipes/gui/GuiPropolisPipe.java +++ b/src/main/java/forestry/pipes/gui/GuiPropolisPipe.java @@ -19,6 +19,7 @@ import net.minecraftforge.common.util.ForgeDirection; import org.lwjgl.opengl.GL11; +import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.IAlleleBeeSpecies; import forestry.api.apiculture.IApiaristTracker; import forestry.api.genetics.AlleleManager; @@ -37,7 +38,6 @@ import forestry.core.utils.StringUtil; import forestry.pipes.EnumFilterType; import forestry.pipes.PipeItemsPropolis; import forestry.pipes.PipeLogicPropolis; -import forestry.plugins.PluginApiculture; /** * GuiScreen for propolis pipes. @@ -233,7 +233,7 @@ public class GuiPropolisPipe extends GuiForestry(), new ArrayList()}; + BeeManager.beeFactory = new BeeFactory(); + BeeManager.beeMutationFactory = new BeeMutationFactory(); + BeeManager.jubilanceFactory = new JubilanceFactory(); + // Init bee interface - AlleleManager.alleleRegistry.registerSpeciesRoot(PluginApiculture.beeInterface = new BeeHelper()); + BeeManager.beeRoot = new BeeHelper(); + AlleleManager.alleleRegistry.registerSpeciesRoot(BeeManager.beeRoot); // Modes - PluginApiculture.beeInterface.registerBeekeepingMode(BeekeepingMode.easy); - PluginApiculture.beeInterface.registerBeekeepingMode(BeekeepingMode.normal); - PluginApiculture.beeInterface.registerBeekeepingMode(BeekeepingMode.hard); - PluginApiculture.beeInterface.registerBeekeepingMode(BeekeepingMode.hardcore); - PluginApiculture.beeInterface.registerBeekeepingMode(BeekeepingMode.insane); + BeeManager.beeRoot.registerBeekeepingMode(BeekeepingMode.easy); + BeeManager.beeRoot.registerBeekeepingMode(BeekeepingMode.normal); + BeeManager.beeRoot.registerBeekeepingMode(BeekeepingMode.hard); + BeeManager.beeRoot.registerBeekeepingMode(BeekeepingMode.hardcore); + BeeManager.beeRoot.registerBeekeepingMode(BeekeepingMode.insane); } @Override @@ -784,37 +785,26 @@ public class PluginApiculture extends ForestryPlugin { apidae.addMemberGroup(beeBranch.getBranch()); } - // / BEES // FLOWER PROVIDERS 1500 - 1599 - Allele.flowersVanilla = new AlleleFlowers("flowersVanilla", new FlowerProvider(FlowerManager.FlowerTypeVanilla, "flowers.vanilla"), true); - Allele.flowersNether = new AlleleFlowers("flowersNether", new FlowerProvider(FlowerManager.FlowerTypeNether, "flowers.nether")); - Allele.flowersCacti = new AlleleFlowers("flowersCacti", new FlowerProvider(FlowerManager.FlowerTypeCacti, "flowers.cacti")); - Allele.flowersMushrooms = new AlleleFlowers("flowersMushrooms", new FlowerProvider(FlowerManager.FlowerTypeMushrooms, "flowers.mushroom")); - Allele.flowersEnd = new AlleleFlowers("flowersEnd", new FlowerProvider(FlowerManager.FlowerTypeEnd, "flowers.end")); - Allele.flowersJungle = new AlleleFlowers("flowersJungle", new FlowerProvider(FlowerManager.FlowerTypeJungle, "flowers.jungle")); - Allele.flowersSnow = new AlleleFlowers("flowersSnow", new FlowerProvider(FlowerManager.FlowerTypeSnow, "flowers.vanilla"), true); - Allele.flowersWheat = new AlleleFlowers("flowersWheat", new FlowerProvider(FlowerManager.FlowerTypeWheat, "flowers.wheat"), true); - Allele.flowersGourd = new AlleleFlowers("flowersGourd", new FlowerProvider(FlowerManager.FlowerTypeGourd, "flowers.gourd"), true); - // / BEES // EFFECTS 1800 - 1899 - Allele.effectNone = new AlleleEffectNone("effectNone"); - Allele.effectAggressive = new AlleleEffectAggressive("effectAggressive"); - Allele.effectHeroic = new AlleleEffectHeroic("effectHeroic"); - Allele.effectBeatific = new AlleleEffectPotion("effectBeatific", "beatific", false, Potion.regeneration, 100, true); - Allele.effectMiasmic = new AlleleEffectMiasmic("effectMiasmic"); - Allele.effectMisanthrope = new AlleleEffectMisanthrope("effectMisanthrope"); - Allele.effectGlacial = new AlleleEffectGlacial("effectGlacial"); - Allele.effectRadioactive = new AlleleEffectRadioactive("effectRadioactive"); - Allele.effectCreeper = new AlleleEffectCreeper("effectCreeper"); - Allele.effectIgnition = new AlleleEffectIgnition("effectIgnition"); - Allele.effectExploration = new AlleleEffectExploration("effectExploration"); - Allele.effectFestiveEaster = new AlleleEffectNone("effectFestiveEaster"); - Allele.effectSnowing = new AlleleEffectSnowing("effectSnowing"); - Allele.effectDrunkard = new AlleleEffectPotion("effectDrunkard", "drunkard", false, Potion.confusion, 100, false); - Allele.effectReanimation = new AlleleEffectResurrection("effectReanimation", "reanimation", AlleleEffectResurrection.getReanimationList()); - Allele.effectResurrection = new AlleleEffectResurrection("effectResurrection", "resurrection", AlleleEffectResurrection.getResurrectionList()); - Allele.effectRepulsion = new AlleleEffectRepulsion("effectRepulsion"); - Allele.effectFertile = new AlleleEffectFertile("effectFertile"); - Allele.effectMycophilic = new AlleleEffectFungification("effectMycophilic"); + Allele.effectNone = new AlleleEffectNone("none"); + Allele.effectAggressive = new AlleleEffectAggressive(); + Allele.effectHeroic = new AlleleEffectHeroic(); + Allele.effectBeatific = new AlleleEffectPotion("beatific", false, Potion.regeneration, 100, true); + Allele.effectMiasmic = new AlleleEffectMiasmic(); + Allele.effectMisanthrope = new AlleleEffectMisanthrope(); + Allele.effectGlacial = new AlleleEffectGlacial(); + Allele.effectRadioactive = new AlleleEffectRadioactive(); + Allele.effectCreeper = new AlleleEffectCreeper(); + Allele.effectIgnition = new AlleleEffectIgnition(); + Allele.effectExploration = new AlleleEffectExploration(); + Allele.effectFestiveEaster = new AlleleEffectNone("festiveEaster"); + Allele.effectSnowing = new AlleleEffectSnowing(); + Allele.effectDrunkard = new AlleleEffectPotion("drunkard", false, Potion.confusion, 100, false); + Allele.effectReanimation = new AlleleEffectResurrection("reanimation", AlleleEffectResurrection.getReanimationList()); + Allele.effectResurrection = new AlleleEffectResurrection("resurrection", AlleleEffectResurrection.getResurrectionList()); + Allele.effectRepulsion = new AlleleEffectRepulsion(); + Allele.effectFertile = new AlleleEffectFertile(); + Allele.effectMycophilic = new AlleleEffectFungification(); } public static float getSecondPrincessChance() { diff --git a/src/main/java/forestry/plugins/PluginArboriculture.java b/src/main/java/forestry/plugins/PluginArboriculture.java index 5e22d7225..e9f9577da 100644 --- a/src/main/java/forestry/plugins/PluginArboriculture.java +++ b/src/main/java/forestry/plugins/PluginArboriculture.java @@ -37,6 +37,8 @@ import cpw.mods.fml.common.registry.VillagerRegistry; import forestry.api.arboriculture.EnumGermlingType; import forestry.api.arboriculture.ITree; import forestry.api.arboriculture.ITreeRoot; +import forestry.api.core.EnumHumidity; +import forestry.api.core.EnumTemperature; import forestry.api.core.Tabs; import forestry.api.genetics.AlleleManager; import forestry.api.genetics.IAllele; @@ -139,8 +141,8 @@ import forestry.core.config.ForestryItem; import forestry.core.fluids.Fluids; import forestry.core.gadgets.BlockBase; import forestry.core.gadgets.MachineDefinition; -import forestry.core.genetics.Allele; import forestry.core.genetics.FruitFamily; +import forestry.core.genetics.alleles.Allele; import forestry.core.interfaces.IPacketHandler; import forestry.core.items.ItemForestryBlock; import forestry.core.items.ItemFruit.EnumFruit; @@ -317,17 +319,17 @@ public class PluginArboriculture extends ForestryPlugin { // Commands PluginCore.rootCommand.addChildCommand(new CommandTree()); + } + + @Override + public void doInit() { + super.doInit(); // Create alleles createAlleles(); createMutations(); registerTemplates(); registerErsatzGenomes(); - } - - @Override - public void doInit() { - super.doInit(); GameRegistry.registerTileEntity(TileSapling.class, "forestry.Sapling"); GameRegistry.registerTileEntity(TileLeaves.class, "forestry.Leaves"); @@ -1015,29 +1017,29 @@ public class PluginArboriculture extends ForestryPlugin { .addFruitFamily(prunes); // FRUITS - Allele.fruitNone = new AlleleFruit("fruitNone", new FruitProviderNone("none", null)); - Allele.fruitApple = new AlleleFruit("fruitApple", new FruitProviderRandom("apple", pomes, new ItemStack(Items.apple), 1.0f).setColour(0xff2e2e).setOverlay("pomes")); - Allele.fruitCocoa = new AlleleFruit("fruitCocoa", new FruitProviderPod("cocoa", jungle, EnumPodType.COCOA)); + Allele.fruitNone = new AlleleFruit("none", new FruitProviderNone("none", null)); + Allele.fruitApple = new AlleleFruit("apple", new FruitProviderRandom("apple", pomes, new ItemStack(Items.apple), 1.0f).setColour(0xff2e2e).setOverlay("pomes")); + Allele.fruitCocoa = new AlleleFruit("cocoa", new FruitProviderPod("cocoa", jungle, EnumPodType.COCOA)); // .setColours(0xecdca5, 0xc4d24a), true); - Allele.fruitChestnut = new AlleleFruit("fruitChestnut", new FruitProviderRipening("chestnut", nux, EnumFruit.CHESTNUT.getStack(), 1.0f).setRipeningPeriod(6).setColours(0x7f333d, 0xc4d24a).setOverlay("nuts"), true); - Allele.fruitWalnut = new AlleleFruit("fruitWalnut", new FruitProviderRipening("walnut", nux, EnumFruit.WALNUT.getStack(), 1.0f).setRipeningPeriod(8).setColours(0xfba248, 0xc4d24a).setOverlay("nuts"), true); - Allele.fruitCherry = new AlleleFruit("fruitCherry", new FruitProviderRipening("cherry", prunes, EnumFruit.CHERRY.getStack(), 1.0f).setColours(0xff2e2e, 0xc4d24a).setOverlay("berries"), true); - Allele.fruitDates = new AlleleFruit("fruitDates", new FruitProviderPod("dates", jungle, EnumPodType.DATES, EnumFruit.DATES.getStack(4))); - Allele.fruitPapaya = new AlleleFruit("fruitPapaya", new FruitProviderPod("papaya", jungle, EnumPodType.PAPAYA, EnumFruit.PAPAYA.getStack())); + Allele.fruitChestnut = new AlleleFruit("chestnut", new FruitProviderRipening("chestnut", nux, EnumFruit.CHESTNUT.getStack(), 1.0f).setRipeningPeriod(6).setColours(0x7f333d, 0xc4d24a).setOverlay("nuts"), true); + Allele.fruitWalnut = new AlleleFruit("walnut", new FruitProviderRipening("walnut", nux, EnumFruit.WALNUT.getStack(), 1.0f).setRipeningPeriod(8).setColours(0xfba248, 0xc4d24a).setOverlay("nuts"), true); + Allele.fruitCherry = new AlleleFruit("cherry", new FruitProviderRipening("cherry", prunes, EnumFruit.CHERRY.getStack(), 1.0f).setColours(0xff2e2e, 0xc4d24a).setOverlay("berries"), true); + Allele.fruitDates = new AlleleFruit("dates", new FruitProviderPod("dates", jungle, EnumPodType.DATES, EnumFruit.DATES.getStack(4))); + Allele.fruitPapaya = new AlleleFruit("papaya", new FruitProviderPod("papaya", jungle, EnumPodType.PAPAYA, EnumFruit.PAPAYA.getStack())); // Allele.fruitCoconut = new AlleleFruit("fruitCoconut", new // FruitProviderPod("coconut", jungle, EnumPodType.COCONUT, new // ItemStack[] { new ItemStack( // ForestryItem.fruits, 1, EnumFruit.COCONUT.ordinal()) })); - Allele.fruitLemon = new AlleleFruit("fruitLemon", new FruitProviderRipening("lemon", prunes, EnumFruit.LEMON.getStack(), 1.0f).setColours(0xeeee00, 0x99ff00).setOverlay("citrus"), true); - Allele.fruitPlum = new AlleleFruit("fruitPlum", new FruitProviderRipening("plum", prunes, EnumFruit.PLUM.getStack(), 1.0f).setColours(0x663446, 0xeeff1a).setOverlay("plums"), true); + Allele.fruitLemon = new AlleleFruit("lemon", new FruitProviderRipening("lemon", prunes, EnumFruit.LEMON.getStack(), 1.0f).setColours(0xeeee00, 0x99ff00).setOverlay("citrus"), true); + Allele.fruitPlum = new AlleleFruit("plum", new FruitProviderRipening("plum", prunes, EnumFruit.PLUM.getStack(), 1.0f).setColours(0x663446, 0xeeff1a).setOverlay("plums"), true); // / TREES // GROWTH PROVIDER 1350 - 1399 - Allele.growthLightlevel = new AlleleGrowth("growthLightlevel", new GrowthProvider()); - Allele.growthAcacia = new AlleleGrowth("growthAcacia", new GrowthProvider()); - Allele.growthTropical = new AlleleGrowth("growthTropical", new GrowthProviderTropical()); + Allele.growthLightlevel = new AlleleGrowth("lightlevel", new GrowthProvider()); + Allele.growthAcacia = new AlleleGrowth("acacia", new GrowthProvider()); + Allele.growthTropical = new AlleleGrowth("tropical", new GrowthProviderTropical()); // / TREES // EFFECTS 1900 - 1999 - Allele.leavesNone = new AlleleLeafEffectNone("leavesNone"); + Allele.leavesNone = new AlleleLeafEffectNone(); } @@ -1187,19 +1189,19 @@ public class PluginArboriculture extends ForestryPlugin { TreeTemplates.mahoeA = new TreeMutation(Allele.treeBalsa, Allele.treeDesertAcacia, TreeTemplates.getMahoeTemplate(), 5); - TreeTemplates.willowA = new TreeMutation(Allele.treeOak, Allele.treeBirch, - TreeTemplates.getWillowTemplate(), 10).setTemperatureRainfall(0.7f, 1.5f, 0.9f, - 2.0f); - TreeTemplates.willowB = new TreeMutation(Allele.treeOak, Allele.treeLime, - TreeTemplates.getWillowTemplate(), 10).setTemperatureRainfall(0.7f, 1.5f, 0.9f, - 2.0f); - TreeTemplates.willowC = new TreeMutation(Allele.treeLime, Allele.treeBirch, - TreeTemplates.getWillowTemplate(), 10).setTemperatureRainfall(0.7f, 1.5f, 0.9f, - 2.0f); + TreeTemplates.willowA = new TreeMutation(Allele.treeOak, Allele.treeBirch, TreeTemplates.getWillowTemplate(), 10) + .restrictTemperature(EnumTemperature.WARM, EnumTemperature.HOT) + .restrictHumidity(EnumHumidity.DAMP); + TreeTemplates.willowB = new TreeMutation(Allele.treeOak, Allele.treeLime, TreeTemplates.getWillowTemplate(), 10) + .restrictTemperature(EnumTemperature.WARM, EnumTemperature.HOT) + .restrictHumidity(EnumHumidity.DAMP); + TreeTemplates.willowC = new TreeMutation(Allele.treeLime, Allele.treeBirch, TreeTemplates.getWillowTemplate(), 10) + .restrictTemperature(EnumTemperature.WARM, EnumTemperature.HOT) + .restrictHumidity(EnumHumidity.DAMP); - TreeTemplates.sipiriA = new TreeMutation(Allele.treeKapok, Allele.treeMahogany, - TreeTemplates.getSipiriTemplate(), 10).setTemperatureRainfall(0.9f, 1.9f, 0.9f, - 2.0f); + TreeTemplates.sipiriA = new TreeMutation(Allele.treeKapok, Allele.treeMahogany, TreeTemplates.getSipiriTemplate(), 10) + .restrictTemperature(EnumTemperature.WARM, EnumTemperature.HOT) + .restrictHumidity(EnumHumidity.DAMP); TreeTemplates.poplarA = new TreeMutation(Allele.treeBirch, Allele.treeWillow, TreeTemplates.getPoplarTemplate(), 5); @@ -1207,7 +1209,6 @@ public class PluginArboriculture extends ForestryPlugin { TreeTemplates.getPoplarTemplate(), 5); TreeTemplates.poplarB = new TreeMutation(Allele.treeLime, Allele.treeWillow, TreeTemplates.getPoplarTemplate(), 5); - } @Override diff --git a/src/main/java/forestry/plugins/PluginCore.java b/src/main/java/forestry/plugins/PluginCore.java index adef1d0d3..3d5aeee26 100644 --- a/src/main/java/forestry/plugins/PluginCore.java +++ b/src/main/java/forestry/plugins/PluginCore.java @@ -52,10 +52,11 @@ import forestry.core.gadgets.BlockSoil; import forestry.core.gadgets.BlockStainedGlass; import forestry.core.gadgets.MachineDefinition; import forestry.core.gadgets.TileEscritoire; -import forestry.core.genetics.Allele; -import forestry.core.genetics.AlleleRegistry; import forestry.core.genetics.ClimateHelper; import forestry.core.genetics.ItemResearchNote; +import forestry.core.genetics.alleles.Allele; +import forestry.core.genetics.alleles.AlleleHelper; +import forestry.core.genetics.alleles.AlleleRegistry; import forestry.core.interfaces.IPickupHandler; import forestry.core.interfaces.ISaveEventHandler; import forestry.core.items.ItemArmorNaturalist; @@ -83,6 +84,8 @@ public class PluginCore extends ForestryPlugin { public static ForestryModEnvWarningCallable crashCallable; public static final RootCommand rootCommand = new RootCommand(); + private AlleleHelper alleleHelper; + @Override protected void setupAPI() { super.setupAPI(); @@ -96,7 +99,7 @@ public class PluginCore extends ForestryPlugin { AlleleManager.climateHelper = new ClimateHelper(); alleleRegistry.initialize(); - Allele.setupLegacyAPI(); + Allele.setupAPI(); } @Override @@ -106,6 +109,8 @@ public class PluginCore extends ForestryPlugin { rootCommand.addChildCommand(new CommandVersion()); rootCommand.addChildCommand(new CommandPlugins()); + Allele.helper = alleleHelper = new AlleleHelper(); + ForestryBlock.core.registerBlock(new BlockBase(Material.iron, true), ItemForestryBlock.class, "core"); definitionEscritoire = ((BlockBase) ForestryBlock.core.block()).addDefinition(new MachineDefinition(Defaults.DEFINITION_ESCRITOIRE_META, "forestry.Escritoire", TileEscritoire.class, @@ -140,6 +145,8 @@ public class PluginCore extends ForestryPlugin { definitionEscritoire.register(); crashCallable = new ForestryModEnvWarningCallable(); + alleleHelper.init(); + RecipeSorter.register("forestry:shapedrecipecustom", ShapedRecipeCustom.class, RecipeSorter.Category.SHAPED, "before:minecraft:shaped"); } diff --git a/src/main/java/forestry/plugins/PluginLepidopterology.java b/src/main/java/forestry/plugins/PluginLepidopterology.java index 3aa973e3d..c1b7ed51d 100755 --- a/src/main/java/forestry/plugins/PluginLepidopterology.java +++ b/src/main/java/forestry/plugins/PluginLepidopterology.java @@ -41,8 +41,8 @@ import forestry.core.config.Property; import forestry.core.fluids.Fluids; import forestry.core.gadgets.BlockBase; import forestry.core.gadgets.MachineDefinition; -import forestry.core.genetics.Allele; import forestry.core.genetics.Branch; +import forestry.core.genetics.alleles.Allele; import forestry.core.items.ItemForestryBlock; import forestry.core.utils.ShapedRecipeCustom; import forestry.core.utils.Utils; @@ -222,11 +222,11 @@ public class PluginLepidopterology extends ForestryPlugin { IClassification protographium = createButterflyBranch(papilionidae, "Protographium"); Allele.lepiCitrusSwallow = new AlleleButterflySpecies("lepiCitrusSwallow", false, "swallowtailC", papilio, "demodocus", 0xeae389).setRarity(1.0f) - .setTemperature(EnumTemperature.WARM).setHumidity(EnumHumidity.DAMP); + .setTemperatureDeprecated(EnumTemperature.WARM).setHumidityDeprecated(EnumHumidity.DAMP); Allele.lepiEmeraldPeacock = new AlleleButterflySpecies("lepiEmeraldPeacock", true, "emeraldPeacock", papilio, "palinurus", 0x7cfe80) - .setTemperature(EnumTemperature.WARM).setHumidity(EnumHumidity.DAMP); + .setTemperatureDeprecated(EnumTemperature.WARM).setHumidityDeprecated(EnumHumidity.DAMP); Allele.lepiThoasSwallow = new AlleleButterflySpecies("lepiThoasSwallow", false, "swallowtailT", papilio, "thoas", 0xeac783).setRarity(0.2f) - .setTemperature(EnumTemperature.WARM).setHumidity(EnumHumidity.DAMP); + .setTemperatureDeprecated(EnumTemperature.WARM).setHumidityDeprecated(EnumHumidity.DAMP); Allele.lepiSpicebush = new AlleleButterflySpecies("lepiSpicebush", true, "swallowtailS", papilio, "troilus", 0xeefeff).setRarity(0.5f); Allele.lepiBlackSwallow = new AlleleButterflySpecies("lepiBlackSwallow", true, "swallowtailB", papilio, "polyxenes", 0xeac783).setRarity(1.0f); @@ -248,36 +248,36 @@ public class PluginLepidopterology extends ForestryPlugin { IClassification speyeria = createButterflyBranch(nymphalidae, "Speyeria"); Allele.lepiGlasswing = new AlleleButterflySpecies("lepiGlasswing", true, "glasswing", greta, "oto", 0x583732) - .setTemperature(EnumTemperature.WARM); + .setTemperatureDeprecated(EnumTemperature.WARM); Allele.lepiSpeckledWood = new AlleleButterflySpecies("lepiSpeckledWood", true, "speckledWood", pararge, "aegeria", 0x947245).setRarity(1.0f); Allele.lepiMadeiranSpeckledWood = new AlleleButterflySpecies("lepiMSpeckledWood", true, "speckledWoodM", pararge, "xiphia", 0x402919).setRarity(0.5f); Allele.lepiCanarySpeckledWood = new AlleleButterflySpecies("lepiCSpeckledWood", true, "speckledWoodC", pararge, "xiphioides", 0x51372a).setRarity(0.5f); Allele.lepiMenelausBlueMorpho = new AlleleButterflySpecies("lepiMBlueMorpho", true, "blueMorphoM", morpho, "menelaus", 0x72e1fd).setRarity(0.5f) - .setTemperature(EnumTemperature.WARM).setHumidity(EnumHumidity.DAMP); + .setTemperatureDeprecated(EnumTemperature.WARM).setHumidityDeprecated(EnumHumidity.DAMP); Allele.lepiPeleidesBlueMorpho = new AlleleButterflySpecies("lepiPBlueMorpho", true, "blueMorphoP", morpho, "peleides", 0x6ecce8).setRarity(0.25f) - .setTemperature(EnumTemperature.WARM).setHumidity(EnumHumidity.DAMP); + .setTemperatureDeprecated(EnumTemperature.WARM).setHumidityDeprecated(EnumHumidity.DAMP); Allele.lepiRhetenorBlueMorpho = new AlleleButterflySpecies("lepiRBlueMorpho", true, "blueMorphoR", morpho, "rhetenor", 0x00bef8) - .setTemperature(EnumTemperature.WARM).setHumidity(EnumHumidity.DAMP); + .setTemperatureDeprecated(EnumTemperature.WARM).setHumidityDeprecated(EnumHumidity.DAMP); Allele.lepiComma = new AlleleButterflySpecies("lepiComma", true, "comma", polygonia, "c-album", 0xf89505).setRarity(0.3f); Allele.lepiBatesia = new AlleleButterflySpecies("lepiBatesia", true, "paintedBeauty", batesia, "hypochlora", 0xfe7763).setRarity(0.3f) - .setTemperature(EnumTemperature.WARM).setHumidity(EnumHumidity.DAMP); + .setTemperatureDeprecated(EnumTemperature.WARM).setHumidityDeprecated(EnumHumidity.DAMP); Allele.lepiBlueWing = new AlleleButterflySpecies("lepiBlueWing", true, "blueWing", myscelia, "ethusa", 0x3a93cc).setRarity(0.3f); Allele.lepiMonarch = new AlleleButterflySpecies("lepiMonarch", true, "monarch", danaus, "plexippus", 0xffa722).setRarity(0.2f); Allele.lepiBlueDuke = new AlleleButterflySpecies("lepiBlueDuke", true, "blueDuke", bassarona, "durga", 0x304240).setRarity(0.5f) - .setTemperature(EnumTemperature.COLD); + .setTemperatureDeprecated(EnumTemperature.COLD); Allele.lepiGlassyTiger = new AlleleButterflySpecies("lepiGlassyTiger", true, "glassyTiger", parantica, "aglea", 0x5b3935).setRarity(0.3f); Allele.lepiPostman = new AlleleButterflySpecies("lepiPostman", true, "postman", heliconius, "melpomene", 0xf7302d).setRarity(0.3f); Allele.lepiMalachite = new AlleleButterflySpecies("lepiMalachite", true, "malachite", siproeta, "stelenes", 0xbdff53).setRarity(0.5f) - .setTemperature(EnumTemperature.WARM).setHumidity(EnumHumidity.DAMP); + .setTemperatureDeprecated(EnumTemperature.WARM).setHumidityDeprecated(EnumHumidity.DAMP); Allele.lepiLLacewing = new AlleleButterflySpecies("lepiLLacewing", true, "leopardLacewing", cethosia, "cyane", 0xfb8a06).setRarity(0.7f); Allele.lepiDianaFrit = new AlleleButterflySpecies("lepiDianaFrit", true, "dianaFritillary", speyeria, "diana", 0xffac05).setRarity(0.6f); - Allele.butterflyNone = new AlleleEffectNone("bfNone", false); + Allele.butterflyNone = new AlleleEffectNone("bf", "none", false); } private static IClassification createButterflyBranch(IClassification family, String scientific) { diff --git a/src/main/java/forestry/storage/items/ItemNaturalistBackpack.java b/src/main/java/forestry/storage/items/ItemNaturalistBackpack.java index 0631ec35d..3b685dc1c 100755 --- a/src/main/java/forestry/storage/items/ItemNaturalistBackpack.java +++ b/src/main/java/forestry/storage/items/ItemNaturalistBackpack.java @@ -13,10 +13,10 @@ package forestry.storage.items; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import forestry.api.apiculture.BeeManager; import forestry.api.core.ForestryAPI; import forestry.api.storage.EnumBackpackType; import forestry.api.storage.IBackpackDefinition; -import forestry.plugins.PluginApiculture; import forestry.plugins.PluginLepidopterology; import forestry.storage.BackpackDefinition; @@ -30,7 +30,7 @@ public class ItemNaturalistBackpack extends ItemBackpack { @Override public boolean isValidItem(ItemStack stack) { - return PluginApiculture.beeInterface.isMember(stack); + return BeeManager.beeRoot.isMember(stack); } }