equivalent-exchange-3/src/main/java/moze_intel/projecte/api/proxy/IEMCProxy.java

89 lines
3.4 KiB
Java

package moze_intel.projecte.api.proxy;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import java.util.Map;
public interface IEMCProxy
{
/**
* Registers a custom EMC value for this ItemStack
* Call this during any of the main loading phases (Preinit, Init, Postinit)
* @param stack The stack we want to define EMC for
* @param value The value to define. Values below 0 are changed to 0
*/
void registerCustomEMC(ItemStack stack, int value);
/**
* Register a custom EMC value for emc calculation that is used in Recipes.
* You can use the following things for the {@code o}-Parameter:
* <ul>
* <li>{@link ItemStack} - The Modname:unlocalizedName and Metadata will be used to identify this ItemStack (May contain a {@code Block} or {@code Item})</li>
* <li>{@link String} - will be interpreted as an OreDictionary name.</li>
* <li>{@link Object} - (No subclasses of {@code Object} - only {@code Object}!) can be used as a intermediate fake object for complex recipes.</li>
* </ul>
* @param o
* @param value
* @see IConversionProxy#addConversion(int, Object, Map)
*/
void registerCustomEMC(Object o, int value);
/**
* Queries the EMC value registry if the given block has an EMC value
* Can be called at any time, but will only return valid results if a world is loaded
* Can be called on both sides
* @param block The block we want to query
* @return Whether the block has an emc value
*/
boolean hasValue(Block block);
/**
* Queries the EMC value registry if the given item with a damage value of 0 has an EMC value
* Can be called at any time, but will only return valid results if a world is loaded
* Can be called on both sides
* @param item The item we want to query
* @return Whether the item has an emc value
*/
boolean hasValue(Item item);
/**
* Queries the EMC value registry if the given ItemStack has an EMC value
* This will also use the damage value to check if the Item has an EMC value
* Can be called at any time, but will only return valid results if a world is loaded
* Can be called on both sides
* @param stack The stack we want to query
* @return Whether the ItemStack has an emc value
*/
boolean hasValue(ItemStack stack);
/**
* Queries the EMC value for the provided block
* Can be called at any time, but will only return valid results if a world is loaded
* Can be called on both sides
* @param block The block we want to query
* @return The block's EMC value, or 0 if there is none
*/
int getValue(Block block);
/**
* Queries the EMC value for the provided item
* Can be called at any time, but will only return valid results if a world is loaded
* Can be called on both sides
* @param item The item we want to query
* @return The item's EMC value, or 0 if there is none
*/
int getValue(Item item);
/**
* Queries the EMC value for the provided stack
* Can be called at any time, but will only return valid results if a world is loaded
* Can be called on both sides
* This takes into account bonuses such as stored emc in power items and enchantments
* @param stack The stack we want to query
* @return The stack's EMC value, or 0 if there is none
*/
int getValue(ItemStack stack);
}