package com.jaquadro.minecraft.gardentrees.core.handlers; import com.jaquadro.minecraft.gardencore.api.SaplingRegistry; import com.jaquadro.minecraft.gardencore.api.event.EnrichedSoilEvent; import com.jaquadro.minecraft.gardentrees.GardenTrees; import com.jaquadro.minecraft.gardentrees.core.recipe.WoodPostRecipe; import com.jaquadro.minecraft.gardentrees.item.ItemThinLog; import cpw.mods.fml.common.eventhandler.Event; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.gen.feature.WorldGenerator; public class ForgeEventHandler { @SubscribeEvent public void applyEnrichedSoil (EnrichedSoilEvent event) { if (!GardenTrees.config.compostGrowsOrnamentalTrees) return; Item sapling = Item.getItemFromBlock(event.block); int saplingMeta = event.world.getBlockMetadata(event.x, event.y, event.z); if (sapling == null) return; WorldGenerator generator = (WorldGenerator) SaplingRegistry.instance().getExtendedData(sapling, saplingMeta, "sm_generator"); if (generator == null) return; event.world.setBlockToAir(event.x, event.y, event.z); if (generator.generate(event.world, event.world.rand, event.x, event.y, event.z)) { event.setResult(Event.Result.ALLOW); return; } event.world.setBlock(event.x, event.y, event.z, event.block, saplingMeta, 0); } @SubscribeEvent public void handleCrafting (PlayerEvent.ItemCraftedEvent event) { if (event.crafting.getItem() instanceof ItemThinLog) { for (int i = 0; i < event.craftMatrix.getSizeInventory(); i++) { ItemStack item = event.craftMatrix.getStackInSlot(i); if (item != null && isValidAxe(item) && item.getItemDamage() < item.getMaxDamage()) { ItemStack modifiedAxe = item.copy(); modifiedAxe.setItemDamage(modifiedAxe.getItemDamage() + 1); modifiedAxe.stackSize += modifiedAxe.stackSize; event.craftMatrix.setInventorySlotContents(i, modifiedAxe); } } } } private boolean isValidAxe (ItemStack itemStack) { Item item = itemStack.getItem(); for (int i = 0, n = WoodPostRecipe.axeList.size(); i < n; i++) { if (item == WoodPostRecipe.axeList.get(i)) return true; } return false; } }