package com.austinv11.peripheralsplusplus.turtles;
import com.austinv11.peripheralsplusplus.reference.Config;
import com.austinv11.peripheralsplusplus.reference.Reference;
import com.austinv11.peripheralsplusplus.utils.FakeTurtlePlayer;
import com.austinv11.peripheralsplusplus.utils.TurtleUtil;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import dan200.computercraft.api.peripheral.IPeripheral;
import dan200.computercraft.api.turtle.*;
import net.minecraft.entity.Entity;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraftforge.common.IShearable;
import java.util.List;
public class TurtleShear implements ITurtleUpgrade {
@Override
public int getUpgradeID() {
return Reference.SHEAR_UPGRADE;
}
@Override
public String getUnlocalisedAdjective() {
return "peripheralsplusplus.turtleUpgrade.shears";
}
@Override
public TurtleUpgradeType getType() {
return TurtleUpgradeType.Tool;
}
@Override
public ItemStack getCraftingItem() {
if (Config.enableShearTurtle)
return new ItemStack(Items.shears);
return null;
}
@Override
public IPeripheral createPeripheral(ITurtleAccess turtle, TurtleSide side) {
return null;
}
@Override
public TurtleCommandResult useTool(ITurtleAccess turtle, TurtleSide side, TurtleVerb verb, int direction) {
if (!Config.enableShearTurtle)
return TurtleCommandResult.failure("Shearing turtles have been disabled");
FakeTurtlePlayer player = new FakeTurtlePlayer(turtle);
switch (verb) {
case Attack:
List<Entity> entities = TurtleUtil.getEntitiesNearTurtle(turtle, player, direction);
Entity ent = TurtleUtil.getClosestShearableEntity(entities, player);
if (ent != null)
if (((IShearable) ent).isShearable(new ItemStack(Items.shears), ent.worldObj, (int) ent.posX, (int) ent.posY, (int) ent.posZ)) {
TurtleUtil.addItemListToInv(((IShearable) ent).onSheared(new ItemStack(Items.shears), ent.worldObj, (int) ent.posX, (int) ent.posY, (int) ent.posZ, 0), turtle);
return TurtleCommandResult.success();
}
return TurtleCommandResult.failure();
case Dig:
List<ItemStack> items = TurtleUtil.harvestBlock(turtle, player, direction, new ItemStack(Items.shears));
if (items != null) {
TurtleUtil.addItemListToInv(items, turtle);
return TurtleCommandResult.success();
}
return TurtleCommandResult.failure();
}
return TurtleCommandResult.failure("An unknown error has occurred, please tell the mod author");
}
@SideOnly(Side.CLIENT)
@Override
public IIcon getIcon(ITurtleAccess turtle, TurtleSide side) {
return Items.shears.getIconIndex(new ItemStack(Items.shears));
}
@Override
public void update(ITurtleAccess turtle, TurtleSide side) {}
}