package crazypants.enderio.tool;
import java.lang.reflect.Method;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import buildcraft.api.tools.IToolWrench;
import crazypants.enderio.api.tool.ITool;
public class BuildCraftToolProvider implements IToolProvider, IToolImpl {
private BCWrench wrench = new BCWrench();
public BuildCraftToolProvider() throws Exception {
//Do a check for so we throw an exception in the constructor if we dont have the
// wrench class
Class.forName("buildcraft.api.tools.IToolWrench");
}
@Override
public ITool getTool(ItemStack stack) {
if(MpsUtil.instance.isPowerFistEquiped(stack) && !MpsUtil.instance.isOmniToolActive(stack)) {
return null;
}
if(stack.getItem() instanceof IToolWrench) {
return wrench;
}
return null;
}
@Override
public Class<?> getInterface() {
return IToolWrench.class;
}
@Override
public Object handleMethod(ITool yetaWrench, Method method, Object[] args) {
if("canWrench".equals(method.getName())) {
return true;
} else if("wrenchUsed".equals(method.getName())) {
return null;
}
return null;
}
public static class BCWrench implements ITool {
@Override
public boolean canUse(ItemStack stack, EntityPlayer player, int x, int y, int z) {
return ((IToolWrench) stack.getItem()).canWrench(player, x, y, z);
}
@Override
public void used(ItemStack stack, EntityPlayer player, int x, int y, int z) {
((IToolWrench) stack.getItem()).wrenchUsed(player, x, y, z);
}
@Override
public boolean shouldHideFacades(ItemStack stack, EntityPlayer player) {
return true;
}
}
}