package miscperipherals.peripheral; import miscperipherals.core.LuaManager; import miscperipherals.core.MiscPeripherals; import miscperipherals.safe.Reflector; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import dan200.computer.api.IComputerAccess; import dan200.computer.api.IHostedPeripheral; import dan200.turtle.api.ITurtleAccess; public class PeripheralOreScanner implements IHostedPeripheral { private final ITurtleAccess turtle; private final boolean advanced; public PeripheralOreScanner(ITurtleAccess turtle, boolean advanced) { this.turtle = turtle; this.advanced = advanced; } @Override public String getType() { return "oreScanner"; } @Override public String[] getMethodNames() { return new String[] {"scan"}; } @Override public Object[] callMethod(IComputerAccess computer, int method, Object[] arguments) throws Exception { switch (method) { case 0: { float energyConsume = advanced ? 250 : 50; if (!turtle.consumeFuel((int)Math.ceil(energyConsume / MiscPeripherals.instance.fuelEU))) return new Object[] {null}; Vec3 pos = turtle.getPosition(); Integer scan = Reflector.invoke("ic2.core.item.tool.ItemScanner", "valueOfArea", Integer.class, turtle.getWorld(), (int)Math.floor(pos.xCoord), (int)Math.floor(pos.yCoord), (int)Math.floor(pos.zCoord), advanced); return new Object[] {scan == null ? 0 : scan}; } } return new Object[0]; } @Override public boolean canAttachToSide(int side) { return false; } @Override public void attach(IComputerAccess computer) { LuaManager.mount(computer); } @Override public void detach(IComputerAccess computer) { } @Override public void update() { } @Override public void readFromNBT(NBTTagCompound nbttagcompound) { } @Override public void writeToNBT(NBTTagCompound nbttagcompound) { } }