public static Logic readFile(InputStream is, boolean close) throws IOException { DataInputStream dis; if (is instanceof DataInputStream) dis = (DataInputStream) is; else dis = new DataInputStream(is); Logic logic = new Logic(); logic.setUnknown1(dis.readInt()); int numControllers = dis.readInt(); for (int i = 0; i < numControllers; i++) { ControllerEntry controller = new ControllerEntry(); controller.setPosition(IOLogic.readPoint3s(dis)); int numGroups = dis.readInt(); for (int j = 0; j < numGroups; j++) { GroupEntry group = new GroupEntry(); group.setBlockID(dis.readShort()); int numBlocks = dis.readInt(); for (int k = 0; k < numBlocks; k++) group.getBlocks().add(IOLogic.readPoint3s(dis)); controller.getGroups().add(group); } logic.getControllers().add(controller); } if (close) dis.close(); return logic; }