Search in sources :

Example 1 with IFarmer

use of crazypants.enderio.api.farm.IFarmer in project EnderIO by SleepyTrousers.

the class NaturaUtil method registerFarmers.

@SubscribeEvent(priority = EventPriority.NORMAL)
public static void registerFarmers(@Nonnull RegistryEvent.Register<IFarmerJoe> event) {
    int count = 0;
    Item overworldSeeds = FarmersRegistry.findItem("natura", "overworld_seeds");
    if (overworldSeeds != null) {
        Block barleyBlock = FarmersRegistry.findBlock("natura", "barley_crop");
        Block cottonBlock = FarmersRegistry.findBlock("natura", "cotton_crop");
        if (barleyBlock != null) {
            new PlantableFarmer().addHarvestExlude(barleyBlock);
            event.getRegistry().register(new PickableFarmer(barleyBlock, 0, 3, new ItemStack(overworldSeeds, 1, 0)).setRegistryName("natura", "barley"));
            count++;
        }
        if (cottonBlock != null) {
            new PlantableFarmer().addHarvestExlude(cottonBlock);
            event.getRegistry().register(new PickableFarmer(cottonBlock, 0, 4, new ItemStack(overworldSeeds, 1, 1)).setRegistryName("natura", "cotton"));
            count++;
        }
    }
    NNIterator<String> iterator = new NNList<>("overworld_berrybush_raspberry", "overworld_berrybush_blueberry", "overworld_berrybush_blackberry", "overworld_berrybush_maloberry", "nether_berrybush_blightberry", "nether_berrybush_duskberry", "nether_berrybush_skyberry", "nether_berrybush_stingberry").iterator();
    while (iterator.hasNext()) {
        String berry = iterator.next();
        Block berryBlock = FarmersRegistry.findBlock("natura", berry);
        Item berryItem = FarmersRegistry.findItem("natura", berry);
        if (berryBlock != null && berryItem != null) {
            new PlantableFarmer().addHarvestExlude(berryBlock);
            PickableFarmer farmer = new NaturaBerryFarmer(berryBlock, 0, 3, new ItemStack(berryItem, 1, 0));
            farmer.setRequiresTilling(false);
            event.getRegistry().register(farmer.setRegistryName("natura", "berries"));
            // berry bushes are leaves, idiotic...
            IHarvestingTarget.addLeavesExcemption(berryBlock);
            count++;
        }
    }
    Block shroomSapling = FarmersRegistry.findBlock("natura", "nether_glowshroom");
    Block shroomGreenBlock = FarmersRegistry.findBlock("natura", "nether_green_large_glowshroom");
    Block shroomBlueBlock = FarmersRegistry.findBlock("natura", "nether_blue_large_glowshroom");
    Block shroomPurpleBlock = FarmersRegistry.findBlock("natura", "nether_purple_large_glowshroom");
    if (shroomSapling != null && shroomGreenBlock != null && shroomBlueBlock != null && shroomPurpleBlock != null) {
        final TreeFarmer shroomFarmer = new TreeFarmer(shroomSapling, shroomGreenBlock, shroomBlueBlock, shroomPurpleBlock);
        shroomFarmer.setIgnoreMeta(true);
        event.getRegistry().register(shroomFarmer.setRegistryName("natura", "shroom"));
        count++;
    }
    // TODO add farmer for the whole thing
    FarmersRegistry.registerFlower("block:natura:saguaro_fruit");
    Block saguaroBlock = FarmersRegistry.findBlock("natura", "saguaro");
    Item saguaroBabyItem = FarmersRegistry.findItem("natura", "saguaro_baby");
    if (saguaroBlock != null && saguaroBabyItem != null) {
        event.getRegistry().register(new StemFarmer(saguaroBlock, new ItemStack(saguaroBabyItem)) {

            @Override
            public boolean canHarvest(@Nonnull IFarmer farm, @Nonnull BlockPos bc, @Nonnull Block block, @Nonnull IBlockState meta) {
                return false;
            }
        }.setRegistryName("natura", "saguaro"));
        count++;
    }
    FarmersRegistry.registerFlower("block:natura:bluebells_flower");
    if (count == 12) {
        Log.info("Farming Station: Natura integration fully loaded");
    } else if (count == 0) {
        Log.info("Farming Station: Natura integration not loaded");
    } else {
        Log.info("Farming Station: Natura integration partially loaded (" + count + " of 12)");
    }
}
Also used : StemFarmer(crazypants.enderio.base.farming.farmers.StemFarmer) IBlockState(net.minecraft.block.state.IBlockState) Nonnull(javax.annotation.Nonnull) IFarmer(crazypants.enderio.api.farm.IFarmer) PickableFarmer(crazypants.enderio.base.farming.farmers.PickableFarmer) PlantableFarmer(crazypants.enderio.base.farming.farmers.PlantableFarmer) Item(net.minecraft.item.Item) Block(net.minecraft.block.Block) BlockPos(net.minecraft.util.math.BlockPos) ItemStack(net.minecraft.item.ItemStack) TreeFarmer(crazypants.enderio.base.farming.farmers.TreeFarmer) SubscribeEvent(net.minecraftforge.fml.common.eventhandler.SubscribeEvent)

Example 2 with IFarmer

use of crazypants.enderio.api.farm.IFarmer in project EnderIO by SleepyTrousers.

the class TileFarmStation method doTick.

protected void doTick() {
    IFarmer farmer = getFarmer();
    BlockPos farmingPos = null;
    IBlockState bs = null;
    int infiniteLoop = 20;
    while (farmingPos == null || bs == null || farmingPos.equals(getPos()) || !world.isBlockLoaded(farmingPos) || !PermissionAPI.hasPermission(getOwner().getAsGameProfile(), BlockFarmStation.permissionFarming, new BlockPosContext(farmer.getFakePlayer(), farmingPos, bs, null))) {
        if (infiniteLoop-- <= 0) {
            return;
        }
        farmingPos = getNextCoord();
        bs = world.getBlockState(farmingPos);
    }
    Block block = bs.getBlock();
    if (isOpen(farmingPos, block)) {
        Commune.instance.prepareBlock(farmer, farmingPos, block, bs);
        bs = world.getBlockState(farmingPos);
        block = bs.getBlock();
    }
    if (!isOpen(farmingPos, block)) {
        if (!executeHarvest(farmer, farmingPos, bs, block)) {
            executeBonemeal(farmer, farmingPos, block);
        }
    }
}
Also used : IBlockState(net.minecraft.block.state.IBlockState) Block(net.minecraft.block.Block) EnumSkyBlock(net.minecraft.world.EnumSkyBlock) IFarmer(crazypants.enderio.api.farm.IFarmer) BlockPos(net.minecraft.util.math.BlockPos) BlockPosContext(net.minecraftforge.server.permission.context.BlockPosContext)

Aggregations

IFarmer (crazypants.enderio.api.farm.IFarmer)2 Block (net.minecraft.block.Block)2 IBlockState (net.minecraft.block.state.IBlockState)2 BlockPos (net.minecraft.util.math.BlockPos)2 PickableFarmer (crazypants.enderio.base.farming.farmers.PickableFarmer)1 PlantableFarmer (crazypants.enderio.base.farming.farmers.PlantableFarmer)1 StemFarmer (crazypants.enderio.base.farming.farmers.StemFarmer)1 TreeFarmer (crazypants.enderio.base.farming.farmers.TreeFarmer)1 Nonnull (javax.annotation.Nonnull)1 Item (net.minecraft.item.Item)1 ItemStack (net.minecraft.item.ItemStack)1 EnumSkyBlock (net.minecraft.world.EnumSkyBlock)1 SubscribeEvent (net.minecraftforge.fml.common.eventhandler.SubscribeEvent)1 BlockPosContext (net.minecraftforge.server.permission.context.BlockPosContext)1