@SubscribeEvent public void onApplyBonemeal(BonemealEvent event) { Block plant = event.getBlock().getBlock(); boolean isFertile = ModFertility.isCropFertile(plant.getRegistryName().toString(), event.getWorld(), event.getPos()); if (FertilityConfig.general_category.seasonal_crops && !isFertile && !isGreenhouseGlassAboveBlock(event.getWorld(), event.getPos())) { if (FertilityConfig.general_category.crops_break && !(plant instanceof BlockGrass) && !(plant instanceof BlockReed)) { event.getWorld().destroyBlock(event.getPos(), true); } event.setCanceled(true); } }
private void bonemealCustomSaplings(BonemealEvent event) { if(!event.getWorld().isRemote) { Block block = event.getWorld().getBlockState(event.getPos()).getBlock(); if(block instanceof ConfigurableBlockSapling) { ConfigurableBlockSapling sapling = (ConfigurableBlockSapling) block; sapling.grow(event.getWorld(), event.getPos(), event.getWorld().getBlockState(event.getPos()), event.getWorld().rand); event.setResult(Result.ALLOW); } } }
BonemealEvent event = new BonemealEvent(player, worldIn, target, iblockstate, hand, stack); if (event.getResult() == Result.ALLOW)
@SubscribeEvent public void onBonemeal(BonemealEvent event) { IGardeningManager gardening = BotanyCore.getGardening(); BlockPos pos = event.getPos(); Block block = event.getBlock().getBlock(); if (gardening.isSoil(block)) { IBlockSoil soil = (IBlockSoil) block; if (soil.fertilise(event.getWorld(), pos, EnumSoilType.LOAM)) { event.setResult(Event.Result.ALLOW); } } } }
@SubscribeEvent public void onBonemealUse(BonemealEvent event) LocalWorld localWorld = WorldHelper.toLocalWorld(event.getWorld()); if (localWorld == null) if (event.getBlock() == Blocks.RED_MUSHROOM_BLOCK) gen = getSaplingGen(localWorld, SaplingType.RedMushroom, event.getPos()); } else if (event.getBlock() == Blocks.BROWN_MUSHROOM_BLOCK) gen = getSaplingGen(localWorld, SaplingType.BrownMushroom, event.getPos()); event.setResult(Result.ALLOW); event.getWorld().setBlockState(event.getPos(), Blocks.AIR.getDefaultState()); for (int i = 0; i < 10; i++) if (gen.growSapling(localWorld, random, false, event.getPos().getX(), event.getPos().getY(), event.getPos().getZ())) event.getWorld().setBlockState(event.getPos(), event.getBlock());
@SubscribeEvent(priority = EventPriority.HIGH) public void onBonemealUse(final BonemealEvent e){ if(EntityEventHandler.noBonemeals.isEmpty()) return; final Biome biome = e.getWorld().getBiome(e.getPos()); if(EntityEventHandler.noBonemeals.containsKey(Biome.getIdForBiome(biome))){ final List<IBlockState> list = EntityEventHandler.noBonemeals.get(Biome.getIdForBiome(biome)); if(list == null){ e.setCanceled(true); return; } for(final IBlockState block:list) if(new BlockEquivalencePredicate(block).apply(e.getBlock())){ e.setCanceled(true); break; } } }
private boolean applyBonemeal(World worldIn, BlockPos target, EntityPlayer player, ItemStack sigilStack) { IBlockState iblockstate = worldIn.getBlockState(target); BonemealEvent event = new BonemealEvent(player, worldIn, target, iblockstate, EnumHand.MAIN_HAND, sigilStack); if (MinecraftForge.EVENT_BUS.post(event)) return false; else if (event.getResult() == Result.ALLOW) return true; if (iblockstate.getBlock() instanceof IGrowable) { IGrowable igrowable = (IGrowable) iblockstate.getBlock(); if (igrowable.canGrow(worldIn, target, iblockstate, worldIn.isRemote)) { if (!worldIn.isRemote) { if (igrowable.canUseBonemeal(worldIn, worldIn.rand, target, iblockstate)) igrowable.grow(worldIn, worldIn.rand, target, iblockstate); } return true; } } return false; } }