Package forestry.plugins

Source Code of forestry.plugins.PluginLepidopterology

/*******************************************************************************
* 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.plugins;

import java.util.EnumSet;
import java.util.Locale;

import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraftforge.oredict.RecipeSorter;

import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.network.IGuiHandler;

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.IClassification;
import forestry.api.genetics.IClassification.EnumClassLevel;
import forestry.api.lepidopterology.EnumFlutterType;
import forestry.api.lepidopterology.IButterflyRoot;
import forestry.api.recipes.RecipeManagers;
import forestry.core.config.Configuration;
import forestry.core.config.Defaults;
import forestry.core.config.ForestryBlock;
import forestry.core.config.ForestryItem;
import forestry.core.config.Property;
import forestry.core.gadgets.BlockBase;
import forestry.core.gadgets.MachineDefinition;
import forestry.core.genetics.Allele;
import forestry.core.genetics.Branch;
import forestry.core.items.ItemForestryBlock;
import forestry.core.utils.LiquidHelper;
import forestry.core.utils.ShapedRecipeCustom;
import forestry.core.utils.Utils;
import forestry.lepidopterology.ButterflySpawner;
import forestry.lepidopterology.GuiHandlerLepidopterology;
import forestry.lepidopterology.MatingRecipe;
import forestry.lepidopterology.entities.EntityButterfly;
import forestry.lepidopterology.gadgets.TileLepidopteristChest;
import forestry.lepidopterology.genetics.AlleleButterflySpecies;
import forestry.lepidopterology.genetics.AlleleEffectNone;
import forestry.lepidopterology.genetics.ButterflyHelper;
import forestry.lepidopterology.genetics.ButterflyTemplates;
import forestry.lepidopterology.items.ItemButterflyGE;
import forestry.lepidopterology.items.ItemFlutterlyzer;
import forestry.lepidopterology.proxy.ProxyLepidopterology;

@Plugin(pluginID = "Lepidopterology", name = "Lepidopterology", author = "SirSengir", url = Defaults.URL, unlocalizedDescription = "for.plugin.lepidopterology.description")
public class PluginLepidopterology extends ForestryPlugin {

  @SidedProxy(clientSide = "forestry.lepidopterology.proxy.ClientProxyLepidopterology", serverSide = "forestry.lepidopterology.proxy.ProxyLepidopterology")
  public static ProxyLepidopterology proxy;
  private static final String CONFIG_CATEGORY = "lepidopterology";
  private Configuration config;
  public static int spawnConstraint = 100;
  public static int entityConstraint = 1000;
  public static IClassification geometridae;
  public static IClassification saturniidae;
  public static IClassification pieridae;
  public static IClassification nymphalidae;
  public static IClassification lycaenidae;
  public static IClassification papilionidae;
  public static IClassification notchidae;
  /**
   * See {@link IButterflyRoot} for details.
   */
  public static IButterflyRoot butterflyInterface;
  public static MachineDefinition definitionChest;

  @Override
  public void preInit() {
    ForestryBlock.lepidopterology.registerBlock(new BlockBase(Material.iron), ItemForestryBlock.class, "lepidopterology");
    ForestryBlock.lepidopterology.block().setCreativeTab(Tabs.tabLepidopterology);

    AlleleManager.alleleRegistry.registerSpeciesRoot(PluginLepidopterology.butterflyInterface = new ButterflyHelper());
    createAlleles();
  }

  @Override
  public EnumSet<PluginManager.Module> getDependancies() {
    EnumSet<PluginManager.Module> deps = super.getDependancies();
    deps.add(PluginManager.Module.ARBORICULTURE);
    return deps;
  }

  @Override
  public void doInit() {
    config = new Configuration();

    Property property = config.get("entities.spawn.limit", CONFIG_CATEGORY, spawnConstraint);
    property.Comment = "determines the global butterfly entity count above which natural spawning of butterflies ceases.";
    spawnConstraint = Integer.parseInt(property.Value);

    property = config.get("entities.maximum.allowed", CONFIG_CATEGORY, entityConstraint);
    property.Comment = "determines the global butterfly entity count above which butterflies will stay in item form and will not take flight anymore.";
    entityConstraint = Integer.parseInt(property.Value);

    config.save();

    Utils.registerEntity(EntityButterfly.class, "butterflyGE", 0, 0x000000, 0xffffff, 50, 1, true);
    proxy.initializeRendering();
    registerTemplates();

    BlockBase lepidopterology = ((BlockBase) ForestryBlock.lepidopterology.block());
    definitionChest = lepidopterology.addDefinition((new MachineDefinition(Defaults.DEFINITION_LEPICHEST_META, "forestry.LepiChest", TileLepidopteristChest.class,
        ShapedRecipeCustom.createShapedRecipe(
            ForestryBlock.lepidopterology.getItemStack(1, Defaults.DEFINITION_LEPICHEST_META),
            " # ",
            "XYX",
            "XXX",
            '#', Blocks.glass,
            'X', ForestryItem.butterflyGE.getItemStack(1, Defaults.WILDCARD),
            'Y', Blocks.chest))
        .setFaces(0, 1, 2, 3, 4, 4, 0, 7)));
    definitionChest.register();

    ((ITreeRoot) AlleleManager.alleleRegistry.getSpeciesRoot("rootTrees")).registerLeafTickHandler(new ButterflySpawner());

    RecipeSorter.register("forestry:lepidopterologymating", MatingRecipe.class, RecipeSorter.Category.SHAPELESS, "before:minecraft:shapeless");
  }

  @Override
  protected void registerItems() {
    ForestryItem.flutterlyzer.registerItem(new ItemFlutterlyzer(), "flutterlyzer");
    ForestryItem.butterflyGE.registerItem(new ItemButterflyGE(EnumFlutterType.BUTTERFLY), "butterflyGE");
    ForestryItem.serumGE.registerItem(new ItemButterflyGE(EnumFlutterType.SERUM), "serumGE");
    ForestryItem.caterpillarGE.registerItem(new ItemButterflyGE(EnumFlutterType.CATERPILLAR), "caterpillarGE");
  }

  @SuppressWarnings("unchecked")
  @Override
  protected void registerRecipes() {
    CraftingManager.getInstance().getRecipeList().add(new MatingRecipe());

    RecipeManagers.carpenterManager.addRecipe(100, LiquidHelper.getLiquid(Defaults.LIQUID_WATER, 2000), null, ForestryItem.flutterlyzer.getItemStack(),
        new Object[]{"X#X", "X#X", "RDR", Character.valueOf('#'), Blocks.glass_pane, Character.valueOf('X'), "ingotBronze", Character.valueOf('R'),
          Items.redstone, Character.valueOf('D'), Items.diamond});
  }

  private void createAlleles() {

    IClassification lepidoptera = AlleleManager.alleleRegistry.createAndRegisterClassification(EnumClassLevel.ORDER, "lepidoptera", "Lepidoptera");
    AlleleManager.alleleRegistry.getClassification("class.insecta").addMemberGroup(lepidoptera);

    geometridae = AlleleManager.alleleRegistry.createAndRegisterClassification(EnumClassLevel.FAMILY, "geometridae", "Geometridae");
    lepidoptera.addMemberGroup(geometridae);
    saturniidae = AlleleManager.alleleRegistry.createAndRegisterClassification(EnumClassLevel.FAMILY, "saturniidae", "Saturniidae");
    lepidoptera.addMemberGroup(saturniidae);

    pieridae = AlleleManager.alleleRegistry.createAndRegisterClassification(EnumClassLevel.FAMILY, "pieridae", "Pieridae");
    lepidoptera.addMemberGroup(pieridae);
    nymphalidae = AlleleManager.alleleRegistry.createAndRegisterClassification(EnumClassLevel.FAMILY, "nymphalidae", "Nymphalidae");
    lepidoptera.addMemberGroup(nymphalidae);
    lycaenidae = AlleleManager.alleleRegistry.createAndRegisterClassification(EnumClassLevel.FAMILY, "lycaenidae", "Lycaenidae");
    lepidoptera.addMemberGroup(lycaenidae);
    papilionidae = AlleleManager.alleleRegistry.createAndRegisterClassification(EnumClassLevel.FAMILY, "papilionidae", "Papilionidae");
    lepidoptera.addMemberGroup(papilionidae);
    notchidae = AlleleManager.alleleRegistry.createAndRegisterClassification(EnumClassLevel.FAMILY, "notchidae", "Notchidae");
    lepidoptera.addMemberGroup(notchidae);

    /* GEOMETRIDAE */
    IClassification opisthograptis = createButterflyBranch(geometridae, "Opisthograptis");
    IClassification chiasmia = createButterflyBranch(geometridae, "Chiasmia");

    Allele.mothBrimstone = new AlleleButterflySpecies("mothBrimstone", true, "brimstone", opisthograptis, "luteolata", 0xffea40).setNocturnal(true).setRarity(1.0f);
    Allele.mothLatticedHeath = new AlleleButterflySpecies("mothLatticedHeath", true, "latticedHeath", chiasmia, "clathrata", 0xf2f0be).setNocturnal(true).setRarity(0.5f);

    /* SATURNIIDAE */
    IClassification attacus = createButterflyBranch(saturniidae, "Attacus");

    Allele.mothAtlas = new AlleleButterflySpecies("mothAtlas", false, "atlas", attacus, "atlas", 0xd96e3d).setNocturnal(true);

    /* PIERIDAE */
    IClassification pieris = createButterflyBranch(pieridae, "Pieris");
    IClassification gonepteryx = createButterflyBranch(pieridae, "Gonepteryx");
    IClassification anthocharis = createButterflyBranch(pieridae, "Anthocharis");
    IClassification colias = createButterflyBranch(pieridae, "Colias");
    IClassification pontia = createButterflyBranch(pieridae, "Pontia");
    IClassification celastrina = createButterflyBranch(pieridae, "Celastrina");

    Allele.lepiCabbageWhite = new AlleleButterflySpecies("lepiCabbageWhite", true, "cabbageWhite", pieris, "rapae", 0xccffee).setRarity(1.0f);
    Allele.lepiBrimstone = new AlleleButterflySpecies("lepiBrimstone", true, "brimstone", gonepteryx, "rhamni", 0xf0ee38).setRarity(1.0f);
    Allele.lepiAurora = new AlleleButterflySpecies("lepiAurora", true, "orangeTip", anthocharis, "cardamines", 0xe34f05).setRarity(0.5f);
    Allele.lepiPostillion = new AlleleButterflySpecies("lepiPostillion", true, "postillion", colias, "croceus", 0xd77e04).setRarity(0.5f);
    Allele.lepiPalaenoSulphur = new AlleleButterflySpecies("lepiPalaenoSulphur", true, "palaenoSulphur", colias, "palaeno", 0xf8fba3).setRarity(0.4f);
    Allele.lepiReseda = new AlleleButterflySpecies("lepiReseda", true, "reseda", pontia, "edusa", 0x747d48).setRarity(0.3f);

    Allele.lepiSpringAzure = new AlleleButterflySpecies("lepiSpringAzure", true, "springAzure", celastrina, "argiolus", 0xb8cae2).setRarity(0.3f);
    Allele.lepiGozoraAzure = new AlleleButterflySpecies("lepiGozoraAzure", true, "gozoraAzure", celastrina, "gozora", 0x6870e7).setRarity(0.2f);

    /* PAPILIONIDAE */
    IClassification papilio = createButterflyBranch(papilionidae, "Papilio");
    IClassification protographium = createButterflyBranch(papilionidae, "Protographium");

    Allele.lepiCitrusSwallow = new AlleleButterflySpecies("lepiCitrusSwallow", false, "swallowtailC", papilio, "demodocus", 0xeae389).setRarity(1.0f)
        .setTemperature(EnumTemperature.WARM).setHumidity(EnumHumidity.DAMP);
    Allele.lepiEmeraldPeacock = new AlleleButterflySpecies("lepiEmeraldPeacock", true, "emeraldPeacock", papilio, "palinurus", 0x7cfe80)
        .setTemperature(EnumTemperature.WARM).setHumidity(EnumHumidity.DAMP);
    Allele.lepiThoasSwallow = new AlleleButterflySpecies("lepiThoasSwallow", false, "swallowtailT", papilio, "thoas", 0xeac783).setRarity(0.2f)
        .setTemperature(EnumTemperature.WARM).setHumidity(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);

    Allele.lepiZebraSwallow = new AlleleButterflySpecies("lepiZebraSwallow", true, "swallowtailZ", protographium, "marcellus", 0xeafeff).setRarity(0.5f);

    /* NYMPHALIDAE */
    IClassification pararge = createButterflyBranch(nymphalidae, "Pararge");
    IClassification polygonia = createButterflyBranch(nymphalidae, "Polygonia");
    IClassification morpho = createButterflyBranch(nymphalidae, "Morpho");
    IClassification greta = createButterflyBranch(nymphalidae, "Greta");
    IClassification batesia = createButterflyBranch(nymphalidae, "Batesia");
    IClassification myscelia = createButterflyBranch(nymphalidae, "Myscelia");
    IClassification danaus = createButterflyBranch(nymphalidae, "Danaus");
    IClassification bassarona = createButterflyBranch(nymphalidae, "Bassarona");
    IClassification parantica = createButterflyBranch(nymphalidae, "Parantica");
    IClassification heliconius = createButterflyBranch(nymphalidae, "Heliconius");
    IClassification siproeta = createButterflyBranch(nymphalidae, "Siproeta");
    IClassification cethosia = createButterflyBranch(nymphalidae, "Cethosia");
    IClassification speyeria = createButterflyBranch(nymphalidae, "Speyeria");

    Allele.lepiGlasswing = new AlleleButterflySpecies("lepiGlasswing", true, "glasswing", greta, "oto", 0x583732)
        .setTemperature(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);
    Allele.lepiPeleidesBlueMorpho = new AlleleButterflySpecies("lepiPBlueMorpho", true, "blueMorphoP", morpho, "peleides", 0x6ecce8).setRarity(0.25f)
        .setTemperature(EnumTemperature.WARM).setHumidity(EnumHumidity.DAMP);
    Allele.lepiRhetenorBlueMorpho = new AlleleButterflySpecies("lepiRBlueMorpho", true, "blueMorphoR", morpho, "rhetenor", 0x00bef8)
        .setTemperature(EnumTemperature.WARM).setHumidity(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);
    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);
    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);
    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);
  }

  private void registerTemplates() {
    butterflyInterface.registerTemplate(ButterflyTemplates.getBrimstoneMothTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getLatticedHeathTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getAtlasMothTemplate());

    butterflyInterface.registerTemplate(ButterflyTemplates.getCabbageWhiteTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getGlasswingTemplate());

    butterflyInterface.registerTemplate(ButterflyTemplates.getEmeraldPeacockTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getThoasSwallowTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getCitrusSwallowTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getBlackSwallowTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getZebraSwallowTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getDianaFritTemplate());

    butterflyInterface.registerTemplate(ButterflyTemplates.getSpeckledWoodTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getMadeiranSpeckledWoodTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getCanarySpeckledWoodTemplate());

    butterflyInterface.registerTemplate(ButterflyTemplates.getMenelausBlueMorphoTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getRhetenorBlueMorphoTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getPeleidesBlueMorphoTemplate());

    butterflyInterface.registerTemplate(ButterflyTemplates.getBrimstoneTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getAuroraTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getPostillionTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getPalaenoSulphurTemplate());

    butterflyInterface.registerTemplate(ButterflyTemplates.getResedaTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getSpringAzureTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getGozoraAzureTemplate());

    butterflyInterface.registerTemplate(ButterflyTemplates.getCommaTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getBatesiaTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getBlueWingTemplate());

    butterflyInterface.registerTemplate(ButterflyTemplates.getBlueDukeTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getGlassyTigerTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getMonarchTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getPostmanTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getSpicebushTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getMalachiteTemplate());
    butterflyInterface.registerTemplate(ButterflyTemplates.getLeopardLacewingTemplate());

  }

  private IClassification createButterflyBranch(IClassification family, String scientific) {
    IClassification branch = new Branch("moth." + scientific.toLowerCase(Locale.ENGLISH), scientific);
    branch.setParent(family);
    return branch;
  }

  @Override
  public IGuiHandler getGuiHandler() {
    return new GuiHandlerLepidopterology();
  }
}
TOP

Related Classes of forestry.plugins.PluginLepidopterology

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.