package eiteam.esteemedinnovation.tools.steam.upgrades; import eiteam.esteemedinnovation.api.SmasherRegistry; import eiteam.esteemedinnovation.api.SteamChargable; import eiteam.esteemedinnovation.api.tool.SteamToolSlot; import eiteam.esteemedinnovation.commons.util.OreDictHelper; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.world.BlockEvent; import org.apache.commons.lang3.tuple.Pair; import javax.annotation.Nonnull; import java.util.List; import static eiteam.esteemedinnovation.tools.ToolsModule.upgradeResource; public class ItemInternalProcessingUnitUpgrade extends ItemSteamToolUpgrade { public ItemInternalProcessingUnitUpgrade() { super(SteamToolSlot.DRILL_CORE, upgradeResource("processor"), null, 0); } @Override public void onPlayerHarvestDropsWithTool(BlockEvent.HarvestDropsEvent event, @Nonnull ItemStack toolStack, @Nonnull ItemStack thisUpgradeStack) { World world = event.getWorld(); IBlockState state = event.getState(); Block block = state.getBlock(); Item blockItem = Item.getItemFromBlock(block); int meta = block.getMetaFromState(state); if (OreDictHelper.cobblestones.contains(Pair.of(blockItem, meta))) { return; } SteamChargable drill = (SteamChargable) toolStack.getItem(); List<ItemStack> out = SmasherRegistry.getOutput(new ItemStack(block, 1, meta), world); if (!out.isEmpty()) { for (int i = 0; i < event.getDrops().size(); i++) { ItemStack drop = event.getDrops().get(i); if (drop.getItem() == blockItem && drop.getItemDamage() == meta) { event.getDrops().remove(i); } } event.getDrops().addAll(out); drill.addSteam(toolStack, -(2 * drill.steamPerDurability()), event.getHarvester()); } } @Override public void onUpdateBreakSpeedWithTool(PlayerEvent.BreakSpeed event, @Nonnull ItemStack toolStack, @Nonnull ItemStack thisUpgradeStack) { event.setNewSpeed(event.getNewSpeed() / 2); } }