Search in sources :

Example 6 with IBeekeepingMode

use of forestry.api.apiculture.IBeekeepingMode in project ForestryMC by ForestryMC.

the class ModuleApiculture method doInit.

// TODO: Buildcraft for 1.9
// @Override
// public void registerTriggers() {
// ApicultureTriggers.initialize();
// }
@Override
public void doInit() {
    File configFile = new File(Forestry.instance.getConfigFolder(), CONFIG_CATEGORY + ".cfg");
    LocalizedConfiguration config = new LocalizedConfiguration(configFile, "3.0.0");
    if (!Objects.equals(config.getLoadedConfigVersion(), config.getDefinedConfigVersion())) {
        boolean deleted = configFile.delete();
        if (deleted) {
            config = new LocalizedConfiguration(configFile, "3.0.0");
        }
    }
    initFlowerRegistry();
    List<IBeekeepingMode> beekeepingModes = BeeManager.beeRoot.getBeekeepingModes();
    String[] validBeekeepingModeNames = new String[beekeepingModes.size()];
    for (int i = 0; i < beekeepingModes.size(); i++) {
        validBeekeepingModeNames[i] = beekeepingModes.get(i).getName();
    }
    beekeepingMode = config.getStringLocalized("beekeeping", "mode", "NORMAL", validBeekeepingModeNames);
    Log.debug("Beekeeping mode read from config: " + beekeepingMode);
    secondPrincessChance = config.getFloatLocalized("beekeeping", "second.princess", secondPrincessChance, 0.0f, 100.0f);
    maxFlowersSpawnedPerHive = config.getIntLocalized("beekeeping", "flowers.spawn", 20, 0, 1000);
    String[] blacklist = config.getStringListLocalized("species", "blacklist", Constants.EMPTY_STRINGS);
    parseBeeBlacklist(blacklist);
    ticksPerBeeWorkCycle = config.getIntLocalized("beekeeping", "ticks.work", 550, 250, 850);
    hivesDamageOnPeaceful = config.getBooleanLocalized("beekeeping", "hivedamage.peaceful", false);
    doSelfPollination = config.getBooleanLocalized("beekeeping", "self.pollination", false);
    config.save();
    // Genetics
    createAlleles();
    BeeDefinition.initBees();
    // Hives
    createHives();
    registerBeehiveDrops();
    ItemRegistryApiculture items = getItems();
    BlockRegistryApiculture blocks = getBlocks();
    // Inducers for swarmer
    BeeManager.inducers.put(items.royalJelly.getItemStack(), 10);
    GameRegistry.registerTileEntity(TileAlvearyPlain.class, "forestry.Alveary");
    GameRegistry.registerTileEntity(TileHive.class, "forestry.Swarm");
    GameRegistry.registerTileEntity(TileAlvearySwarmer.class, "forestry.AlvearySwarmer");
    GameRegistry.registerTileEntity(TileAlvearyHeater.class, "forestry.AlvearyHeater");
    GameRegistry.registerTileEntity(TileAlvearyFan.class, "forestry.AlvearyFan");
    GameRegistry.registerTileEntity(TileAlvearyHygroregulator.class, "forestry.AlvearyHygro");
    GameRegistry.registerTileEntity(TileAlvearyStabiliser.class, "forestry.AlvearyStabiliser");
    GameRegistry.registerTileEntity(TileAlvearySieve.class, "forestry.AlvearySieve");
    GameRegistry.registerTileEntity(TileCandle.class, "forestry.Candle");
    ResourceLocation beeHouseCartResource = new ResourceLocation(Constants.MOD_ID, "cart.beehouse");
    EntityUtil.registerEntity(beeHouseCartResource, EntityMinecartBeehouse.class, "cart.beehouse", 1, 0x000000, 0xffffff, 256, 3, true);
    ResourceLocation apiaryCartResource = new ResourceLocation(Constants.MOD_ID, "cart.apiary");
    EntityUtil.registerEntity(apiaryCartResource, EntityMinecartApiary.class, "cart.apiary", 2, 0x000000, 0xffffff, 256, 3, true);
    BeeManager.commonVillageBees.add(BeeDefinition.FOREST.getGenome());
    BeeManager.commonVillageBees.add(BeeDefinition.MEADOWS.getGenome());
    BeeManager.commonVillageBees.add(BeeDefinition.MODEST.getGenome());
    BeeManager.commonVillageBees.add(BeeDefinition.MARSHY.getGenome());
    BeeManager.commonVillageBees.add(BeeDefinition.WINTRY.getGenome());
    BeeManager.commonVillageBees.add(BeeDefinition.TROPICAL.getGenome());
    BeeManager.uncommonVillageBees.add(BeeDefinition.FOREST.getRainResist().getGenome());
    BeeManager.uncommonVillageBees.add(BeeDefinition.COMMON.getGenome());
    BeeManager.uncommonVillageBees.add(BeeDefinition.VALIANT.getGenome());
    if (Config.enableVillagers) {
        // Register villager stuff
        VillageCreationApiculture villageHandler = new VillageCreationApiculture();
        VillagerRegistry villagerRegistry = VillagerRegistry.instance();
        villagerRegistry.registerVillageCreationHandler(villageHandler);
        villagerApiarist = new VillagerRegistry.VillagerProfession(Constants.ID_VILLAGER_APIARIST, Constants.TEXTURE_SKIN_BEEKPEEPER, Constants.TEXTURE_SKIN_ZOMBIE_BEEKPEEPER);
        IForgeRegistry<VillagerRegistry.VillagerProfession> villagerProfessions = ForgeRegistries.VILLAGER_PROFESSIONS;
        villagerProfessions.register(villagerApiarist);
        ItemStack wildcardPrincess = new ItemStack(items.beePrincessGE, 1);
        ItemStack wildcardDrone = new ItemStack(items.beeDroneGE, 1);
        ItemStack apiary = new ItemStack(blocks.apiary);
        ItemStack provenFrames = items.frameProven.getItemStack();
        ItemStack monasticDrone = BeeDefinition.MONASTIC.getMemberStack(EnumBeeType.DRONE);
        ItemStack endDrone = BeeDefinition.ENDED.getMemberStack(EnumBeeType.DRONE);
        ItemStack propolis = new ItemStack(items.propolis, 1);
        VillagerRegistry.VillagerCareer apiaristCareer = new VillagerRegistry.VillagerCareer(villagerApiarist, "apiarist");
        apiaristCareer.addTrade(1, new VillagerApiaristTrades.GiveRandomCombsForItems(items.beeComb, new ItemStack(Items.WHEAT), new EntityVillager.PriceInfo(8, 12), new EntityVillager.PriceInfo(2, 4)), new VillagerApiaristTrades.GiveRandomCombsForItems(items.beeComb, new ItemStack(Items.CARROT), new EntityVillager.PriceInfo(8, 12), new EntityVillager.PriceInfo(2, 4)), new VillagerApiaristTrades.GiveRandomCombsForItems(items.beeComb, new ItemStack(Items.POTATO), new EntityVillager.PriceInfo(8, 12), new EntityVillager.PriceInfo(2, 4)));
        apiaristCareer.addTrade(2, new VillagerTradeLists.GiveItemForEmeralds(new EntityVillager.PriceInfo(1, 4), new ItemStack(items.smoker), null), new VillagerTradeLists.GiveItemForLogsAndEmeralds(apiary, new EntityVillager.PriceInfo(1, 1), new EntityVillager.PriceInfo(16, 32), new EntityVillager.PriceInfo(1, 2)), new VillagerApiaristTrades.GiveRandomHiveDroneForItems(propolis, null, wildcardDrone, new EntityVillager.PriceInfo(2, 4)));
        apiaristCareer.addTrade(3, new VillagerTradeLists.GiveEmeraldForItems(wildcardPrincess, null), new VillagerTradeLists.GiveItemForEmeralds(new EntityVillager.PriceInfo(1, 2), provenFrames, new EntityVillager.PriceInfo(1, 6)));
        apiaristCareer.addTrade(4, new VillagerTradeLists.GiveItemForItemAndEmerald(wildcardPrincess, null, new EntityVillager.PriceInfo(10, 64), monasticDrone, null), new VillagerTradeLists.GiveItemForTwoItems(wildcardPrincess, null, new ItemStack(Items.ENDER_EYE), new EntityVillager.PriceInfo(12, 16), endDrone, null));
    }
    blocks.apiary.init();
    blocks.beeHouse.init();
    blocks.beeChest.init();
}
Also used : BlockRegistryApiculture(forestry.apiculture.blocks.BlockRegistryApiculture) ItemRegistryApiculture(forestry.apiculture.items.ItemRegistryApiculture) VillagerTradeLists(forestry.core.utils.VillagerTradeLists) ResourceLocation(net.minecraft.util.ResourceLocation) VillagerRegistry(net.minecraftforge.fml.common.registry.VillagerRegistry) IBeekeepingMode(forestry.api.apiculture.IBeekeepingMode) LocalizedConfiguration(forestry.core.config.LocalizedConfiguration) ItemStack(net.minecraft.item.ItemStack) File(java.io.File)

Example 7 with IBeekeepingMode

use of forestry.api.apiculture.IBeekeepingMode in project ForestryMC by ForestryMC.

the class Bee method produceStacks.

@Override
public NonNullList<ItemStack> produceStacks(IBeeHousing housing) {
    World world = housing.getWorldObj();
    IBeekeepingMode mode = BeeManager.beeRoot.getBeekeepingMode(world);
    NonNullList<ItemStack> products = NonNullList.create();
    IAlleleBeeSpecies primary = genome.getPrimary();
    IAlleleBeeSpecies secondary = genome.getSecondary();
    IBeeModifier beeHousingModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
    IBeeModifier beeModeModifier = mode.getBeeModifier();
    // Bee genetic speed * beehousing * beekeeping mode
    float speed = genome.getSpeed() * beeHousingModifier.getProductionModifier(genome, 1f) * beeModeModifier.getProductionModifier(genome, 1f);
    // / Primary Products
    for (Map.Entry<ItemStack, Float> entry : primary.getProductChances().entrySet()) {
        if (world.rand.nextFloat() < entry.getValue() * speed) {
            products.add(entry.getKey().copy());
        }
    }
    // / Secondary Products
    for (Map.Entry<ItemStack, Float> entry : secondary.getProductChances().entrySet()) {
        if (world.rand.nextFloat() < Math.round(entry.getValue() / 2) * speed) {
            products.add(entry.getKey().copy());
        }
    }
    // / Specialty products
    if (primary.isJubilant(genome, housing) && secondary.isJubilant(genome, housing)) {
        for (Map.Entry<ItemStack, Float> entry : primary.getSpecialtyChances().entrySet()) {
            if (world.rand.nextFloat() < entry.getValue() * speed) {
                products.add(entry.getKey().copy());
            }
        }
    }
    BlockPos housingCoordinates = housing.getCoordinates();
    return genome.getFlowerProvider().affectProducts(world, this, housingCoordinates, products);
}
Also used : IAlleleBeeSpecies(forestry.api.apiculture.IAlleleBeeSpecies) IBeeModifier(forestry.api.apiculture.IBeeModifier) IBeekeepingMode(forestry.api.apiculture.IBeekeepingMode) BlockPos(net.minecraft.util.math.BlockPos) World(net.minecraft.world.World) ItemStack(net.minecraft.item.ItemStack) Map(java.util.Map)

Aggregations

IBeekeepingMode (forestry.api.apiculture.IBeekeepingMode)7 ItemStack (net.minecraft.item.ItemStack)3 IBee (forestry.api.apiculture.IBee)2 IBeeModifier (forestry.api.apiculture.IBeeModifier)2 World (net.minecraft.world.World)2 IAlleleBeeSpecies (forestry.api.apiculture.IAlleleBeeSpecies)1 IApiaristTracker (forestry.api.apiculture.IApiaristTracker)1 IBeeGenome (forestry.api.apiculture.IBeeGenome)1 IHiveFrame (forestry.api.apiculture.IHiveFrame)1 IChromosome (forestry.api.genetics.IChromosome)1 BlockRegistryApiculture (forestry.apiculture.blocks.BlockRegistryApiculture)1 ItemRegistryApiculture (forestry.apiculture.items.ItemRegistryApiculture)1 LocalizedConfiguration (forestry.core.config.LocalizedConfiguration)1 VillagerTradeLists (forestry.core.utils.VillagerTradeLists)1 File (java.io.File)1 ArrayList (java.util.ArrayList)1 Map (java.util.Map)1 Item (net.minecraft.item.Item)1 ResourceLocation (net.minecraft.util.ResourceLocation)1 BlockPos (net.minecraft.util.math.BlockPos)1