// Path: src/main/java/infstudio/exoticpower/ExoticPower.java
// @Mod(modid = "ExoticPower", name = "ExoticPower", version = "1.0.0")
// public class ExoticPower {
// 
//     public static final NormalExoticPowerTab NEPTab = new NormalExoticPowerTab();
//     public static final MageExoticPowerTab MEPTab = new MageExoticPowerTab();
// 
//     @SidedProxy(clientSide = "infstudio.exoticpower.proxy.ClientProxy",
//             serverSide = "infstudio.exoticpower.proxy.CommonProxy")
//     public static CommonProxy proxy;
// 
//     @Instance("ExoticPower")
//     public static ExoticPower instance;
// 
//     @EventHandler
//     public void preInit(FMLPreInitializationEvent event) {
//         proxy.preInit(event);
//     }
// 
//     @EventHandler
//     public void init(FMLInitializationEvent event) {
//         proxy.init(event);
//     }
// 
//     @EventHandler
//     public void postInit(FMLPostInitializationEvent event) {
//         proxy.postInit(event);
//     }
// 
// }
// 
// Path: src/main/java/infstudio/exoticpower/api/item/IToolWrench.java
// public interface IToolWrench {
// 
//     /***
//      * Called to ensure that the wrench can be used. To get the ItemStack that is used, check player.inventory.getCurrentItem()
//      *
//      * @param player - The player doing the wrenching
//      * @param bp     - The coordinates for the block being wrenched
//      * @return true if wrenching is allowed, false if not
//      */
//     boolean canWrench(EntityPlayer player, BlockPos bp);
// 
//     /***
//      * Callback after the wrench has been used. This can be used to decrease durability or for other purposes. To get the ItemStack that was used, check
//      * player.inventory.getCurrentItem()
//      *
//      * @param player - The player doing the wrenching
//      * @param bp     - The coordinates of the block being wrenched
//      */
//     void wrenchUsed(EntityPlayer player, BlockPos bp);
// 
// }


import infstudio.exoticpower.ExoticPower;
import infstudio.exoticpower.api.item.IToolWrench;
import net.minecraft.block.Block;
import net.minecraft.block.BlockButton;
import net.minecraft.block.BlockChest;
import net.minecraft.block.BlockLever;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import java.util.HashSet;
import java.util.Set;
package infstudio.exoticpower.item;



public class ItemWrench extends Item implements IToolWrench {

    private final Set<Class<? extends Block>> shiftRotations = new HashSet<Class<? extends Block>>();

    public ItemWrench() {
        super();
        this.setCreativeTab(ExoticPower.ept);
        this.setUnlocalizedName("epwrench");
        setFull3D();
        setMaxStackSize(1);
        shiftRotations.add(BlockLever.class);
        shiftRotations.add(BlockButton.class);
        shiftRotations.add(BlockChest.class);
        setHarvestLevel("wrench", 0);
        EPItems.itemList.add(this);
    }

    private boolean isShiftRotation(Class<? extends Block> class1) {
        for (Class<? extends Block> shift : shiftRotations) {
            if (shift.isAssignableFrom(class1)) {
                return true;
            }
        }
        return false;
    }

    @Override
    public boolean onItemUse(ItemStack stack, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) {
        Block block = worldIn.getBlockState(pos).getBlock();

// Path: src/main/java/infstudio/exoticpower/ExoticPower.java
// @Mod(modid = "ExoticPower", name = "ExoticPower", version = "1.0.0")
// public class ExoticPower {
// 
//     public static final NormalExoticPowerTab NEPTab = new NormalExoticPowerTab();
//     public static final MageExoticPowerTab MEPTab = new MageExoticPowerTab();
// 
//     @SidedProxy(clientSide = "infstudio.exoticpower.proxy.ClientProxy",
//             serverSide = "infstudio.exoticpower.proxy.CommonProxy")
//     public static CommonProxy proxy;
// 
//     @Instance("ExoticPower")
//     public static ExoticPower instance;
// 
//     @EventHandler
//     public void preInit(FMLPreInitializationEvent event) {
//         proxy.preInit(event);
//     }
// 
//     @EventHandler
//     public void init(FMLInitializationEvent event) {
//         proxy.init(event);
//     }
// 
//     @EventHandler
//     public void postInit(FMLPostInitializationEvent event) {
//         proxy.postInit(event);
//     }
// 
// }
// 
// Path: src/main/java/infstudio/exoticpower/api/item/IToolWrench.java
// public interface IToolWrench {
// 
//     /***
//      * Called to ensure that the wrench can be used. To get the ItemStack that is used, check player.inventory.getCurrentItem()
//      *
//      * @param player - The player doing the wrenching
//      * @param bp     - The coordinates for the block being wrenched
//      * @return true if wrenching is allowed, false if not
//      */
//     boolean canWrench(EntityPlayer player, BlockPos bp);
// 
//     /***
//      * Callback after the wrench has been used. This can be used to decrease durability or for other purposes. To get the ItemStack that was used, check
//      * player.inventory.getCurrentItem()
//      *
//      * @param player - The player doing the wrenching
//      * @param bp     - The coordinates of the block being wrenched
//      */
//     void wrenchUsed(EntityPlayer player, BlockPos bp);
// 
// }


// Path: src/main/java/infstudio/exoticpower/item/ItemWrench.java
import infstudio.exoticpower.ExoticPower;
import infstudio.exoticpower.api.item.IToolWrench;
import net.minecraft.block.Block;
import net.minecraft.block.BlockButton;
import net.minecraft.block.BlockChest;
import net.minecraft.block.BlockLever;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import java.util.HashSet;
import java.util.Set;

package infstudio.exoticpower.item;



public class ItemWrench extends Item implements IToolWrench {

    private final Set<Class<? extends Block>> shiftRotations = new HashSet<Class<? extends Block>>();

    public ItemWrench() {
        super();
        this.setCreativeTab(ExoticPower.ept);
        this.setUnlocalizedName("epwrench");
        setFull3D();
        setMaxStackSize(1);
        shiftRotations.add(BlockLever.class);
        shiftRotations.add(BlockButton.class);
        shiftRotations.add(BlockChest.class);
        setHarvestLevel("wrench", 0);
        EPItems.itemList.add(this);
    }

    private boolean isShiftRotation(Class<? extends Block> class1) {
        for (Class<? extends Block> shift : shiftRotations) {
            if (shift.isAssignableFrom(class1)) {
                return true;
            }
        }
        return false;
    }

    @Override
    public boolean onItemUse(ItemStack stack, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) {
        Block block = worldIn.getBlockState(pos).getBlock();

        if (block == null) {