luaMethods.add(new LuaMethod("setSensor"){
@Override
public Object[] call(IComputerAccess computer, ILuaContext context, Object[] args) throws LuaException, InterruptedException{
if(args.length == 1) {
ISensorSetting sensor = null;
if(args[0] instanceof String) {
sensor = SensorHandler.instance().getSensorForName((String)args[0]);
} else {
sensor = SensorHandler.instance().getSensorByIndex(((Double)args[0]).intValue() - 1);
}
if(sensor != null) return new Object[]{setSensorSetting(sensor)};
throw new IllegalArgumentException("Invalid sensor name/index: " + args[0]);
} else if(args.length == 0) {
setSensorSetting("");
return new Object[]{true};
} else {
throw new IllegalArgumentException("setSensor needs one argument(a number as index, or a sensor name).");
}
}
});
luaMethods.add(new LuaMethod("getSensor"){
@Override
public Object[] call(IComputerAccess computer, ILuaContext context, Object[] args) throws LuaException, InterruptedException{
if(args.length == 0) {
ISensorSetting curSensor = SensorHandler.instance().getSensorFromPath(getSensorSetting());
return curSensor == null ? null : new Object[]{getSensorSetting().substring(getSensorSetting().lastIndexOf('/') + 1)};
} else {
throw new IllegalArgumentException("getSensor doesn't take any arguments!");
}
}
});
luaMethods.add(new LuaMethod("setTextfield"){
@Override
public Object[] call(IComputerAccess computer, ILuaContext context, Object[] args) throws LuaException, InterruptedException{
if(args.length == 1) {
setText(0, (String)args[0]);
return null;
} else {
throw new IllegalArgumentException("setTextfield takes one argument (string)");
}
}
});
luaMethods.add(new LuaMethod("getTextfield"){
@Override
public Object[] call(IComputerAccess computer, ILuaContext context, Object[] args) throws LuaException, InterruptedException{
if(args.length == 0) {
return new Object[]{getText(0)};
} else {
throw new IllegalArgumentException("getTextfield takes no arguments");
}
}
});
luaMethods.add(new LuaMethod("isSensorEventBased"){
@Override
public Object[] call(IComputerAccess computer, ILuaContext context, Object[] args) throws LuaException, InterruptedException{
if(args.length == 0) {
return new Object[]{SensorHandler.instance().getSensorFromPath(getSensorSetting()) instanceof IEventSensorSetting};
} else {
throw new IllegalArgumentException("isSensorEventBased takes no arguments");
}
}
});
luaMethods.add(new LuaMethod("getSensorValue"){
@Override
public Object[] call(IComputerAccess computer, ILuaContext context, Object[] args) throws LuaException, InterruptedException{
if(args.length == 0) {
ISensorSetting s = SensorHandler.instance().getSensorFromPath(getSensorSetting());
if(s instanceof IPollSensorSetting) {
requestPollPullEvent = true;
return new Object[]{redstoneStrength};
} else if(s != null) {
throw new IllegalArgumentException("The selected sensor is pull event based. You can't poll the value.");