in Minecraft/src/main/java/com/microsoft/Malmo/MissionHandlers/InventoryCommandsImplementation.java [390:480]
private boolean getParameters(String parameter, List<Object> parsedParams)
{
String[] params = parameter.split(" ");
if (params.length != 2)
{
System.out.println("Malformed parameter string (" + parameter + ") - expected <x> <y>");
return false; // Error - incorrect number of parameters.
}
String[] lhsParams = params[0].split(":");
String[] rhsParams = params[1].split(":");
Integer lhsIndex, rhsIndex;
String lhsName, rhsName, lhsStrIndex, rhsStrIndex;
boolean checkContainers = false;
if (lhsParams.length == 2)
{
lhsName = lhsParams[0];
lhsStrIndex = lhsParams[1];
checkContainers = true;
}
else if (lhsParams.length == 1)
{
lhsName = "inventory";
lhsStrIndex = lhsParams[0];
}
else
{
System.out.println("Malformed parameter string (" + params[0] + ")");
return false;
}
if (rhsParams.length == 2)
{
rhsName = rhsParams[0];
rhsStrIndex = rhsParams[1];
checkContainers = true;
}
else if (rhsParams.length == 1)
{
rhsName = "inventory";
rhsStrIndex = rhsParams[0];
}
else
{
System.out.println("Malformed parameter string (" + params[1] + ")");
return false;
}
try
{
lhsIndex = Integer.valueOf(lhsStrIndex);
rhsIndex = Integer.valueOf(rhsStrIndex);
}
catch (NumberFormatException e)
{
System.out.println("Malformed parameter string (" + parameter + ") - " + e.getMessage());
return false;
}
if (lhsIndex == null || rhsIndex == null)
{
System.out.println("Malformed parameter string (" + parameter + ")");
return false; // Error - incorrect parameters.
}
BlockPos containerPos = null;
if (checkContainers)
{
String containerName = "";
RayTraceResult rtr = Minecraft.getMinecraft().objectMouseOver;
if (rtr != null && rtr.typeOfHit == RayTraceResult.Type.BLOCK)
{
containerPos = rtr.getBlockPos();
TileEntity te = Minecraft.getMinecraft().world.getTileEntity(containerPos);
if (te instanceof TileEntityLockableLoot)
containerName = ObservationFromFullInventoryImplementation.getInventoryName((IInventory)te);
else if (te instanceof TileEntityEnderChest)
containerName = ObservationFromFullInventoryImplementation.getInventoryName(Minecraft.getMinecraft().player.getInventoryEnderChest());
}
boolean containerMatches = (lhsName.equals("inventory") || lhsName.equals(containerName)) && (rhsName.equals("inventory") || rhsName.equals(containerName));
if (!containerMatches)
{
System.out.println("Missing container requested in parameter string (" + parameter + ")");
return false;
}
}
parsedParams.add(lhsName);
parsedParams.add(lhsIndex);
parsedParams.add(rhsName);
parsedParams.add(rhsIndex);
if (containerPos != null)
parsedParams.add(containerPos);
return true;
}