package pneumaticCraft.api.drone;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.ChunkPosition;
/**
* Implement this and register it to PneumaticRegistry.registerCustomBlockInteractor().
* This will add a puzzle piece that has only a Area white- and blacklist parameter (similar to a GoTo piece).
* It will do the specified behaviour. This can be used to create energy import/export widgets.
*/
public interface ICustomBlockInteract{
/**
* Should return a unique Id, used in NBT saving and localization.
*/
public String getName();
/**
* Should return the puzzle piece texture. Should be a multiple of 80x64 (width x height). I'd recommend starting out with copying the Go To widget texture.
* @return
*/
public ResourceLocation getTexture();
/**
* The actual interaction.
*
* For every position in the selected area the drone will visit every block (ordered from closest to furthest). It will call this method with 'simulate = true'. If this method returns true, the drone will navigate to this location, and call this method again with 'simulate = false' It will keep doing this until this method returns false.
*
* When interactHandler.useCount() returns true:
* In the interface of the puzzle piece users can specify a 'use count' and fill in the maximum count they want to use. When not simulating, you should only import/export up to interactHandler.getRemainingCount(), and you should notify the removed/added count by doing interactHandler.decreaseCount(int count).
*
* @param pos current visited location
* @param drone
* @param interactHandler object you can use to use to get accessible sides and give feedback about counts.
* @param simulate will be true when trying to figure out whether or not the drone should navigate to this block, false when next to this block.
* @return
*/
public boolean doInteract(ChunkPosition pos, IDrone drone, IBlockInteractHandler interactHandler, boolean simulate);
/**
* Used for crafting, categorizes the puzzle piece.
* @return
*/
public int getCraftingColorIndex();
}