128 lines
3 KiB
Java
128 lines
3 KiB
Java
package resonantinduction.electrical.armbot.command;
|
|
|
|
import java.util.List;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import resonantinduction.electrical.armbot.TaskBaseArmbot;
|
|
import resonantinduction.electrical.armbot.TaskBaseProcess;
|
|
import resonantinduction.old.api.IArmbot;
|
|
import resonantinduction.old.api.IArmbotUseable;
|
|
import resonantinduction.old.api.coding.IProcessTask;
|
|
import resonantinduction.old.api.coding.args.ArgumentIntData;
|
|
|
|
import com.builtbroken.common.science.units.UnitHelper;
|
|
|
|
public class TaskUse extends TaskBaseArmbot
|
|
{
|
|
|
|
protected int times, curTimes;
|
|
|
|
public TaskUse()
|
|
{
|
|
super("use");
|
|
this.args.add(new ArgumentIntData("repeat", 1, Integer.MAX_VALUE, 1));
|
|
}
|
|
|
|
@Override
|
|
public ProcessReturn onMethodCalled()
|
|
{
|
|
if (super.onMethodCalled() == ProcessReturn.CONTINUE)
|
|
{
|
|
this.curTimes = 0;
|
|
this.times = UnitHelper.tryToParseInt(this.getArg("repeat"));
|
|
return ProcessReturn.CONTINUE;
|
|
}
|
|
return ProcessReturn.GENERAL_ERROR;
|
|
}
|
|
|
|
@Override
|
|
public ProcessReturn onUpdate()
|
|
{
|
|
if (super.onUpdate() == ProcessReturn.CONTINUE)
|
|
{
|
|
Block block = Block.blocksList[((IArmbot) this.program.getMachine()).getHandPos().getBlockID(this.program.getMachine().getLocation().left())];
|
|
TileEntity targetTile = ((IArmbot) this.program.getMachine()).getHandPos().getTileEntity(this.program.getMachine().getLocation().left());
|
|
|
|
if (targetTile != null)
|
|
{
|
|
if (targetTile instanceof IArmbotUseable)
|
|
{
|
|
((IArmbotUseable) targetTile).onUse(((IArmbot) this.program.getMachine()), this.getArgs());
|
|
}
|
|
|
|
}
|
|
else if (block != null)
|
|
{
|
|
try
|
|
{
|
|
boolean f = block.onBlockActivated(this.program.getMachine().getLocation().left(), ((IArmbot) this.program.getMachine()).getHandPos().intX(), ((IArmbot) this.program.getMachine()).getHandPos().intY(), ((IArmbot) this.program.getMachine()).getHandPos().intZ(), null, 0, 0, 0, 0);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
|
|
e.printStackTrace();
|
|
}
|
|
|
|
}
|
|
|
|
this.curTimes++;
|
|
|
|
if (this.curTimes >= this.times)
|
|
{
|
|
return ProcessReturn.DONE;
|
|
}
|
|
|
|
return ProcessReturn.CONTINUE;
|
|
}
|
|
return ProcessReturn.GENERAL_ERROR;
|
|
}
|
|
|
|
@Override
|
|
public String toString()
|
|
{
|
|
return "USE " + Integer.toString(this.times);
|
|
}
|
|
|
|
@Override
|
|
public void load(NBTTagCompound taskCompound)
|
|
{
|
|
super.load(taskCompound);
|
|
this.times = taskCompound.getInteger("useTimes");
|
|
}
|
|
|
|
@Override
|
|
public void save(NBTTagCompound taskCompound)
|
|
{
|
|
super.save(taskCompound);
|
|
taskCompound.setInteger("useTimes", this.times);
|
|
}
|
|
|
|
@Override
|
|
public IProcessTask loadProgress(NBTTagCompound nbt)
|
|
{
|
|
this.curTimes = nbt.getInteger("useCurTimes");
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public NBTTagCompound saveProgress(NBTTagCompound nbt)
|
|
{
|
|
nbt.setInteger("useCurTimes", this.curTimes);
|
|
return nbt;
|
|
}
|
|
|
|
@Override
|
|
public TaskBaseProcess clone()
|
|
{
|
|
return new TaskUse();
|
|
}
|
|
|
|
@Override
|
|
public void getToolTips(List<String> list)
|
|
{
|
|
super.getToolTips(list);
|
|
list.add(" Repeat: " + this.times);
|
|
}
|
|
}
|