/******************************************************************************* * Copyright 2011-2014 SirSengir * * This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details. ******************************************************************************/ package forestry.api.mail; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; /** * Postal Carriers are systems which can be hooked into Forestry's mail system to handle mail delivery. * * The two available carriers in vanilla Forestry are * "player" - Delivers mail to individual players. * "trader" - Handles mail addressed to trade stations. */ public interface IPostalCarrier { /** * @return An EnumAddressee identifying the type of carrier */ EnumAddressee getType(); /** * @return A human-readable name for this carrier. */ String getName(); @SideOnly(Side.CLIENT) IIcon getIcon(); /** * Handle delivery of a letter addressed to this carrier. * @param world The world the {@link IPostOffice} handles. * @param office {link @IPostOffice} which received this letter and handed it to the carrier. * @param recipient An identifier for the recipient as typed by the player into the address field. * @param letterstack ItemStack representing the letter. See {@link IPostRegistry} for helper functions to validate and extract it. * @param doDeliver Whether or not the letter is supposed to actually be delivered or if delivery is only to be simulated. * @return {link IPostalState} holding information on success or failure for delivery. */ IPostalState deliverLetter(World world, IPostOffice office, IMailAddress recipient, ItemStack letterstack, boolean doDeliver); }